【项目学习01_2024.05.08_Day06】

学习笔记

  • 5 新增课程
    • 5.1 需求分析
      • 5.1.1 业务流程
      • 5.1.2 数据模型
    • 5.2 接口定义
    • 5.3 接口开发
      • 5.3.1 保存课程基本信息
      • 5.3.2 保存营销信息
    • 5.4 接口测试

5 新增课程

5.1 需求分析

5.1.1 业务流程

5.1.2 数据模型

5.2 接口定义

在这里插入图片描述

5.3 接口开发

根据需求分析,新增课程表单中包括了课程基本信息、课程营销信息,需要分别向课程基本信息表、课程营销表保证数据。

5.3.1 保存课程基本信息

编写service接口实现类,实现向课程基本信息表保存数据

 @Overridepublic CourseBaseInfoDto creatCourseBase(Long companyID, AddCourseDto addCourseDto) {//参数的合法性校验//合法性校验if (StringUtils.isBlank(dto.getName())) {throw new RuntimeException("课程名称为空");}if (StringUtils.isBlank(dto.getMt())) {throw new RuntimeException("课程分类为空");}if (StringUtils.isBlank(dto.getSt())) {throw new RuntimeException("课程分类为空");}if (StringUtils.isBlank(dto.getGrade())) {throw new RuntimeException("课程等级为空");}if (StringUtils.isBlank(dto.getTeachmode())) {throw new RuntimeException("教育模式为空");}if (StringUtils.isBlank(dto.getUsers())) {throw new RuntimeException("适应人群为空");}if (StringUtils.isBlank(dto.getCharge())) {//向课程基本信息表course_base写入数据
//向课程基本信息表course_base写入数据CourseBase courseBaseNew = new CourseBase();//将传入的页面参数dto放到courseBaseNew这个对象中
//        courseBaseNew.setName(dto.getName());
//        courseBaseNew.setMt(dto.getMt());
//        ......//上边的从原始对象中get拿数据向新对象set,属性比较多,麻烦BeanUtils.copyProperties(dto,courseBaseNew); //将前者dto的属性值拷贝给courseBaseNew,拷贝属性名一致的courseBaseNew.setCompanyId(companyID); //不是dto传来的值courseBaseNew.setCreateDate(LocalDateTime.now()); //创建时间//审核状态默认为未提交courseBaseNew.setAuditStatus("202002"); //查看dictionary表未提交对应的码//发布状态为未发布courseBaseNew.setStatus("203001");  //同上//插入数据库int insert = courseBaseMapper.insert(courseBaseNew);if(insert<0){throw new RuntimeException("添加课程失败");}//向课程营销表course_market写入数据//--to doreturn null;}

5.3.2 保存营销信息

 @Overridepublic CourseBaseInfoDto creatCourseBase(Long companyID, AddCourseDto addCourseDto) {
//--------------
//向课程营销表保存课程营销信息//课程营销信息CourseMarket courseMarketNew = new CourseMarket();Long courseId = courseBaseNew.getId();BeanUtils.copyProperties(dto,courseMarketNew);courseMarketNew.setId(courseId);int i = saveCourseMarket(courseMarketNew); //保存课堂营销信息if(i<=0){throw new RuntimeException("保存课堂营销信息失败");}//查询课程基本信息及营销信息并返回return getCourseBaseInfo(courseId);}//保存课堂营销信息private int saveCourseMarket(CourseMarket courseMarketNew){//收费规则String charge = courseMarketNew.getCharge();if(StringUtils.isBlank(charge)){throw new RuntimeException("收费规则没有选择");}//收费规则为收费if(charge.equals("201001")){if(courseMarketNew.getPrice()==null || courseMarketNew.getPrice().floatValue()<=0){throw new RuntimeException("课程收费价格不能为空且必须大于0");}}//根据id从课堂营销查询CourseMarket courseMarketObj = courseMarketMapper.selectById(courseMarketNew.getId());if(courseMarketObj == null){return  courseMarketMapper.insert(courseMarketNew); //插入courseMarketNew的数据}else{BeanUtils.copyProperties(courseMarketNew,courseMarketObj);courseMarketObj.setId(courseMarketNew.getId());return courseMarketMapper.updateById(courseMarketObj);}}//根据课程id查询课程基本信息,包括基本信息和营销信息private CourseBaseInfoDto getCourseBaseInfo(Long courseId){CourseBaseInfoDto courseBaseInfoDto = new CourseBaseInfoDto();CourseBase courseBase = courseBaseMapper.selectById(courseId);if(courseBase == null){return null;}CourseMarket courseMarket = courseMarketMapper.selectById(courseId);BeanUtils.copyProperties(courseBase,courseBaseInfoDto);if(courseMarket !=null){BeanUtils.copyProperties(courseMarket,courseBaseInfoDto);}//查询分类名称并设置CourseCategory courseCategoryBySt = courseCategoryMapper.selectById(courseBase.getSt());courseBaseInfoDto.setStName(courseCategoryBySt.getName());CourseCategory courseCategoryByMt = courseCategoryMapper.selectById(courseBase.getMt());courseBaseInfoDto.setMtName(courseCategoryByMt.getName());return courseBaseInfoDto;}
}

5.4 接口测试

访问:http://localhost:63040/content/swagger-ui.html
在这里插入图片描述
或者xc-content-api.http添加下面的内容
在这里插入图片描述

### 新增课程
POST {{content_host}}/content/content/course
Content-Type: application/json{"charge": "201000","description": "冲冲冲","grade": "204001","mt": "1-1","name": "java网络编程高级","originalPrice": 0,"phone": "18888888","pic": "暂无","price": 0,"qq": "22333","st": "1-1-1","tags": "","teachmode": "200002","users": "初级人员","validDays": 365,"wechat": "223344"
}

2024-05-08T190437.200.json
{
“id”: 125,
“companyId”: 12345678,
“companyName”: null,
“name”: “java网络编程高级”,
“users”: “初级人员”,
“tags”: “”,
“mt”: “1-1”,
“st”: “1-1-1”,
“grade”: “204001”,
“teachmode”: “200002”,
“description”: “冲冲冲”,
“pic”: “暂无”,
“createDate”: “2024-05-08 19:04:37”,
“changeDate”: null,
“createPeople”: null,
“changePeople”: null,
“auditStatus”: “202002”,
“status”: “203001”,
“charge”: “201000”,
“price”: 0.0,
“originalPrice”: 0.0,
“qq”: “22333”,
“wechat”: “223344”,
“phone”: “18888888”,
“validDays”: 365,
“mtName”: “前端开发”,
“stName”: “HTML/CSS”
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/322137.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

模型智能体开发之metagpt-多智能体实践

参考&#xff1a; metagpt环境配置参考模型智能体开发之metagpt-单智能体实践 需求分析 之前有过单智能体的测试case&#xff0c;但是现实生活场景是很复杂的&#xff0c;所以单智能体远远不能满足我们的诉求&#xff0c;所以仍然还需要了解多智能体的实现。通过多个role对动…

NSSCTF中的web

目录 [第五空间 2021]WebFTP [LitCTF 2023]PHP是世界上最好的语言&#xff01;&#xff01; [SWPUCTF 2021 新生赛]PseudoProtocols [LitCTF 2023]导弹迷踪 [NISACTF 2022]easyssrf [第五空间 2021]WebFTP 1.进入页面&#xff0c;发现是登录页面&#xff0c;想到 弱口令&…

《MySQL45讲》读书笔记

重建表 alter table t engine InnoDB&#xff08;也就是recreate&#xff09;&#xff0c;而optimize table t 等于recreateanalyze&#xff0c;让表大小变小 重建表的执行流程 建立一个临时文件&#xff0c;扫描表 t 主键的所有数据页&#xff1b;用数据页中表 t 的记录生…

六步轻松打造创新文化和领导力的技术团队

引言 在当今快速变化的商业环境中&#xff0c;构建一个支持创新的文化和领导力至关重要。通过实施创新激励机制、建立失败的容忍度、领导层的示范作用、开放和透明的沟通、促进多样性和包容性以及持续学习和适应&#xff0c;公司可以培养出一支能够不断创新的员工队伍&#xf…

6层板学习笔记2

说明:笔记基于6层全志H3消费电子0.65MM间距BGA 67、多层板的电源建议直接大面积铺铜,不建议走线,铺铜充分满足其载流能力 68、凡亿推荐表层1OZ的铜厚线宽20MIL能承载1A的电流,内层0.5OZ的铜厚线宽为40MIL能承载1A的电流,过孔直径20MIL(0.5MM)能承载1A左右的电流,实际设…

QT实战百度语音识别

前言 随着学习的深入&#xff0c;感觉愈发缺乏满足感。刚好看到微信语音转文字的功能&#xff0c;经网上查询&#xff0c;发现可以使用 QT 百度语音识别技术 实现这一功能。当然&#xff0c;由于使用的 QT 和 百度语音识别&#xff0c;那么看不到一些具体的底层实现&#xff…

C++初识多态(1)

1.多态要解决的问题&#xff08;引入&#xff09; 任何一种机制的存在&#xff0c;必然是有其存在的意义的&#xff0c;例如我们前面学过的函数重载&#xff0c;运算符重载&#xff0c;以及引用等等&#xff0c;都是解决一些特殊问题的&#xff1b; 下面通过一些具体的例子&a…

Echarts散点图的29个配置项,散点图可以随心所欲啦。

1-9 当使用 ECharts 绘制散点图时&#xff0c;可以配置以下一些常用的选项&#xff1a; 1. tooltip&#xff1a;配置提示框组件&#xff0c;用于显示鼠标悬停在散点上时的提示信息。 2. legend&#xff1a;配置图例组件&#xff0c;用于展示不同散点的标识和名称。 3. xAxis…

目录页码右对齐快速解决

选择目录–段落–制表符&#xff0c;按图中设置即可

merge函数占用内存过大

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

USB3.0接口——(1)基础知识

1.背景 USB 3.0是一种USB规范&#xff0c;该规范由英特尔等公司发起。 USB协议版本 命名约定 USB-IF组织引入命名约定&#xff0c;将端口列为 USB 5 Gbps、USB 10 Gbps、USB 20 Gbps 、USB 40 Gbps&#xff0c;而不使用版本号。获得 USB-IF 认证的 USB 产品的制造商会获得带…

WM Shell多动画场景处理

Shell导致的内存泄漏 基本上都是某个动画未正常结束&#xff0c;执行时间太久导致后续动画堆积或被merge到异常动画导致相关Surface得不到释放导致的。 某个Transition执行时间太久导致后续动画堆积 Visible layers 中有1558 个Transition Root相关layer Visible layers (c…

Java毕业设计 基于SpringBoot vue社区智慧养老监护管理平台

Java毕业设计 基于SpringBoot vue社区智慧养老监护管理平台 SpringBoot 社区智慧养老监护管理平台 功能介绍 登录注册 个人中心 修改密码 个人信息 房间信息管理 房间入住信息管理 反馈信息管理 留言管理 老人信息管理 公告管理 物资申请管理 管理员管理 护工管理 体检员管理…

C++多态(全)

多态 概念 调用函数的多种形态&#xff0c; 多态构成条件 1&#xff09;父子类完成虚函数的重写&#xff08;三同&#xff1a;函数名&#xff0c;参数&#xff0c;返回值相同&#xff09; 2&#xff09;父类的指针或者引用调用虚函数 虚函数 被virtual修饰的类成员函数 …

React:Router-1.BrowserRouter组件式

使用步骤 安装 react-router-dom 依赖 $ npm install react-router-dom6导入 BrowserRouter, Link, Routes, Route 对象 import {BrowserRouter, Link, Routes, Route} from react-router-dom;3.BrowserRouter&#xff1a;history模式路由&#xff1b; HashRouter&#xff1…

代码随想录算法训练营第二十二天|654.最大二叉树 、617.合并二叉树 、700.二叉搜索树中的搜索 、 98.验证二叉搜索树

654.最大二叉树 文档讲解&#xff1a;代码随想录 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 递归的三要素&#xff1a; 第一要素&#xff1a;明确这个函数想要干什么 传入一个数组&#xff0c;针对这个数组构造一个最大二叉树 第二要素&#xff1a;寻…

跟TED演讲学英文:What moral decisions should driverless cars make by Iyad Rahwan

What moral decisions should driverless cars make? Link: https://www.ted.com/talks/iyad_rahwan_what_moral_decisions_should_driverless_cars_make Speaker: Iyad Rahwan Date: September 2016 文章目录 What moral decisions should driverless cars make?Introduct…

kubeflow简单记录

kubeflow 13.7k star 1、Training Operator 包括PytorchJob和XGboostJob&#xff0c;支持部署pytorch的分布式训练 2、KFServing快捷的部署推理服务 3、Jupyter Notebook 基于Web的交互式工具 4、Katib做超参数优化 5、Pipeline 基于Argo Workflow提供机器学习流程的创建、编排…

漏洞挖掘之某厂商OAuth2.0认证缺陷

0x00 前言 文章中的项目地址统一修改为: a.test.com 保护厂商也保护自己 0x01 OAuth2.0 经常出现的地方 1&#xff1a;网站登录处 2&#xff1a;社交帐号绑定处 0x02 某厂商绑定微博请求包 0x02.1 请求包1&#xff1a; Request: GET https://www.a.test.com/users/auth/weibo?…

mysql从入门到起飞+面试基础题

mysql基础 MySQL基础 企业面试题1 代码 select m.id,m.num from ( select t.id as id,count(1) num from ( select ra.requester_id as id from RequestAccepted raunion all select ra.accepter_id as id from RequestAccepted ra ) t group by t.id ) m group by id ord…