作业
完成套餐管理模块所有业务功能,包括:
- 新增套餐
- 套餐分页查询
- 删除套餐
- 修改套餐
- 起售停售套餐
要求:
- 根据产品原型进行需求分析,分析出业务规则
- 设计接口
- 梳理表之间的关系(分类表、菜品表、套餐表、口味表、套餐菜品关系表)
- 根据接口设计进行代码实现
- 分别通过swagger接口文档和前后端联调进行功能测试
新增套餐
1.根据原型进行需求分析与设计(接口文档)
最开始给的json里面有现成的接口信息,直接照做就好了。
看原型:设计选择菜品的接口(回显)
所以,这个需求要写两个接口,一个根据菜品分类回显,一个添加。
2.根据接口设计DTO
setmealDTO满足。
3.编码controller-》service-》mapper
根据菜品分类回显还是比较好实现的。
添加:两个表,一个是setmeal表(返回id),一个是setmeal_dish表(一次设置id,批量插入)。
<insert id="insert" useGeneratedKeys="true" keyProperty="id">
insert into setmeal (category_id, name, price, status, description, image, create_time, update_time, create_user, update_user)
values (#{categoryId}, #{name}, #{price}, #{status}, #{description}, #{image}, #{createTime}, #{updateTime}, #{createUser}, #{updateUser})
</insert>
<insert id="insertBatch">
insert into setmeal_dish (setmeal_id, dish_id, name, price, copies) VALUES
<foreach collection="setmealDishes" item="smd" separator=",">
(#{smd.setmealId}, #{smd.dishId}, #{smd.name}, #{smd.price}, #{smd.copies})
</foreach>
</insert>
回显的答案(用到了builder和考虑到只选择起售中的菜品显示)
public List<Dish> list(Long categoryId) {
Dish dish = Dish.builder()
.categoryId(categoryId)
.status(StatusConstant.ENABLE)
.build();
return dishMapper.list(dish);
}
<select id="list" resultType="Dish" parameterType="Dish">
select * from dish
<where>
<if test="name != null">
and name like concat('%',#{name},'%')
</if>
<if test="categoryId != null">
and category_id = #{categoryId}
</if>
<if test="status != null">
and status = #{status}
</if>
</where>
order by create_time desc
</select>
4.功能测试
Swagger接口测试+前后端联调
5.代码完善
6.commit 和 push
套餐分页查询
1.根据原型进行需求分析与设计(接口文档)
2.根据接口设计DTO
3.编码controller-》service-》mapper
比较常规的分页代码,用PageHelper
4.功能测试
Swagger接口测试+前后端联调
5.代码完善
6.commit 和 push
删除套餐
1.根据原型进行需求分析与设计(接口文档)
2.根据接口设计DTO
3.编码controller-》service-》mapper
主要的问题还是批量删除的动态编码。
4.功能测试
Swagger接口测试+前后端联调
5.代码完善
6.commit 和 push
修改套餐
1.根据原型进行需求分析与设计(接口文档)
首先肯定是回显,然后修改,(删除setmeal_dish,再新加)。
2.根据接口设计DTO
3.编码controller-》service-》mapper
@Transactional 忘记了事件
4.功能测试
Swagger接口测试+前后端联调
5.代码完善
6.commit 和 push
起售停售套餐
1.根据原型进行需求分析与设计(接口文档)
2.根据接口设计DTO
3.编码controller-》service-》mapper
不确定的问题是throw的
答案:SetmealEnableFailedException(MessageConstant.SETMEAL_ENABLE_FAILED);
4.功能测试
Swagger接口测试+前后端联调