易课寄在线购课系统开发笔记(十四)–完成课程的增删改功能
课程添加功能
功能分析
请求的 url:/item/save
参数:表单的数据。可以使用 pojo 接收表单的数据,要求 pojo 的属性和 input 的 name 属性要一致。使用 EcoursesItem 对象接收表单的数据。(EcoursesItem item, String desc)
返回值:JSON 数据。应该包含一个 status 的属性。可以使用 ECoursesResult,放到 ecourses-common 中。
业务逻辑:
1、生成课程 id
实现方案:
a) uuid,字符串,不推荐使用。
b) 数值类型,不重复。日期+时间+随机数 20200601151333123123
c) 可以直接去毫秒值+随机数。可以使用。
d) 使用 Redis 的 Incr。推荐使用。
使用 IDUtils 生成课程 id
2、补全 EcoursesItem 对象的属性
3、向 ecourses_item 表插入数据
4、创建一个 EcoursesItemDesc 对象
5、补全 EcoursesItemDesc 的属性
6、向 ecourses_item_desc 表插入数据
7、return ECoursesResult.ok();
Dao 层
向 ecourses_item , ecourses_item_desc 表中插入数据,可以使用逆向工程。
Service 层
参数:EcoursesItem item, String desc
业务逻辑:略,参考上面
返回值:ECoursesResult
@Override
public ECoursesResult addItem(EcoursesItem item, String desc) {
//生成课程id
final long itemId = IDUtils.genItemId();
//补全item的属性
item.setId(itemId);
//1-正常,2-下架,3-删除
item.setStatus((byte) 1);
item.setCreated(new Date());
item.setUpdated(new Date());
//向课程表插入数据
itemMapper.insert(item);
//创建一个课程描述表对应的pojo对象。
EcoursesItemDesc itemDesc = new EcoursesItemDesc();
//补全属性
itemDesc.setItemId(itemId);
itemDesc.setItemDesc(desc);
itemDesc.setCreated(new Date());
itemDesc.setUpdated(new Date());
//向课程描述表插入数据
itemDescMapper.insert(itemDesc);
//发送课程添加消息
jmsTemplate.send(topicDestination, new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
TextMessage textMessage = session.createTextMessage(itemId + "");
return textMessage;
}
});
//返回成功
return ECoursesResult.ok();
}
发布服务
<dubbo:service interface="cn.ecourses.service.ItemService" ref="itemServiceImpl" timeout="600000"/>
表现层
引用服务
<dubbo:reference interface="cn.ecourses.service.ItemService" id="itemService" />
Controller
请求的 url:/item/save
参数:EcoursesItem item, String desc
返回值:ECoursesResult
@RequestMapping(value="/item/save", method=RequestMethod.POST)
@ResponseBody
public ECoursesResult addItem(EcoursesItem item, String desc) {
ECoursesResult result = itemService.addItem(item, desc);
return result;
}
课程修改功能
功能分析
请求的 url:/item/update
参数:EcoursesItem item, String desc
返回值:ECoursesResult
Dao 层
修改 ecourses_item , ecourses_item_desc 表中的数据,可以使用逆向工程。
Service 层
参数:EcoursesItem item, String desc
返回值:ECoursesResult
@Override
public ECoursesResult updateItem(EcoursesItem item, String desc) {
item.setUpdated(new Date());
//向课程表插入数据
itemMapper.updateByPrimaryKeySelective(item);
//创建一个课程描述表对应的pojo对象。
EcoursesItemDesc itemDesc = new EcoursesItemDesc();
//补全属性
itemDesc.setItemDesc(desc);
itemDesc.setUpdated(new Date());
//向课程描述表插入数据
itemDescMapper.updateByPrimaryKeySelective(itemDesc);
//返回成功
return ECoursesResult.ok();
}
表现层
Controller
请求的 url:/item/update
参数:EcoursesItem item, String desc
返回值:ECoursesResult
@RequestMapping(value="/item/update", method=RequestMethod.POST)
@ResponseBody
public ECoursesResult updateItem(EcoursesItem item, String desc) {
ECoursesResult result = itemService.updateItem(item, desc);
return result;
}
课程删除功能
功能分析
请求的 url:/item/delete
参数:String ids
返回值:ECoursesResult
Dao 层
删除 ecourses_item , ecourses_item_desc 表中的数据,可以使用逆向工程。
Service 层
参数:String ids
返回值:ECoursesResult
@Override
public ECoursesResult deleteItemByIds(String ids) {
String[] idArray = ids.split(",");
for (String id : idArray) {
itemMapper.deleteByPrimaryKey(Long.valueOf(id));
}
return ECoursesResult.ok();
}
表现层
Controller
请求的 url:/item/delete
参数:String ids
返回值:ECoursesResult
@RequestMapping("/item/delete")
@ResponseBody
public ECoursesResult deleteParam(@RequestParam("ids") String ids) {
ECoursesResult result = itemService.deleteItemByIds(ids);
return result;
}
课程上架功能
功能分析
请求的 url:/item/reshelf
参数:String ids
返回值:ECoursesResult
Dao 层
修改 ecourses_item 表中的数据,可以使用逆向工程。
Service 层
参数:String ids
返回值:ECoursesResult
@Override
public ECoursesResult reshelfItemByIds(String ids) {
String[] idArray = ids.split(",");
EcoursesItem item = new EcoursesItem();
for (String id : idArray) {
item.setId(Long.valueOf(id));
item.setStatus((byte) 1);
itemMapper.updateByPrimaryKeySelective(item);
}
return ECoursesResult.ok();
}
表现层
Controller
请求的 url:/item/reshelf
参数:String ids
返回值:ECoursesResult
@RequestMapping("/item/reshelf")
@ResponseBody
public ECoursesResult reshelfParamParam(@RequestParam("ids") String ids) {
ECoursesResult result = itemService.reshelfItemByIds(ids);
return result;
}
课程下架功能
功能分析
请求的 url:/item/instock
参数:String ids
返回值:ECoursesResult
Dao 层
修改 ecourses_item 表中的数据,可以使用逆向工程。
Service 层
参数:String ids
返回值:ECoursesResult
@Override
public ECoursesResult instockItemByIds(String ids) {
String[] idArray = ids.split(",");
EcoursesItem item = new EcoursesItem();
for (String id : idArray) {
item.setId(Long.valueOf(id));
item.setStatus((byte) 2);
itemMapper.updateByPrimaryKeySelective(item);
}
return ECoursesResult.ok();
}
表现层
Controller
请求的 url:/item/instock
参数:String ids
返回值:ECoursesResult
@RequestMapping("/item/instock")
@ResponseBody
public ECoursesResult instockParam(@RequestParam("ids") String ids) {
ECoursesResult result = itemService.instockItemByIds(ids);
return result;
}