11、新增分类
11.1、需求分析
1、后台系统中可以管理分类信息,分类包括两种类型,分别是菜品分类和套餐分类。当我们在后台系统中添加菜品时需要选择一个菜品分类,当我们在后台系统中添加一个套餐时需要选择一个套餐分类,在移动端也会按照菜品分类和套餐分类来展示对应的菜品和套餐。
2、可以在后台系统的分类管理页面分别添加菜品分类和套餐分类,如下:
11.2、数据模型
新增分类,其实就是将我们新增窗口录入的分类数据插入到category
表,表结构如下:
需要注意,category
表中对name
字段加入了唯一约束,保证分类的名称是唯一的:
11.3、代码开发
11.3.1、页面逻辑
11.3.2、后端开发
1、在开发业务功能前,先将需要用到的类和接口基本结构创建好:
-
实体类
Category
/** * 分类 */ @Data public class Category implements Serializable { private static final long serialVersionUID = 1L; private Long id; //类型 1 菜品分类 2 套餐分类 private Integer type; //分类名称 private String name; //顺序 private Integer sort; //创建时间 @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; //更新时间 @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; //创建人 @TableField(fill = FieldFill.INSERT) private Long createUser; //修改人 @TableField(fill = FieldFill.INSERT_UPDATE) private Long updateUser; }
-
Mapper
接口CategoryMapper
@Mapper public interface CategoryMapper extends BaseMapper<Category> { }
-
业务层接口
CategoryService
public interface CategoryService extends IService<Category> { }
-
业务层实现类
CategoryServiceImpl
@Service public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> implements CategoryService { }
-
控制层
CategoryController
/** * 分类管理 */ @RestController @RequestMapping("/category") @Slf4j public class CategoryController { @Autowired private CategoryService categoryService; }
2、在开发代码之前,需要梳理一下整个程序的执行过程:
1)页面(backend/page/category/list.html
)发送ajax
请求,将新增分类窗口输入的数据以json
形式提交到服务端
2)服务端Controller
接收页面提交的数据并调用Service
将数据进行保存
3)Service
调用Mapper
操作数据库,保存数据
3、可以看到新增菜品分类和新增套餐分类请求的服务端地址和提交的json数据结构相同,所以服务端只需要提供一个方法统一处理即可:
11.4、功能测试
/**
* 新增分类
* @param category
* @return
*/
@PostMapping
public R<String> save(@RequestBody Category category) {
log.info("category:{}", category);
categoryService.save(category);
return R.success("新增分类成功");
}