• Reggie外卖项目 —— 分类管理模块之新增分类功能


    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;
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
    • Mapper接口CategoryMapper

      @Mapper
      public interface CategoryMapper extends BaseMapper<Category> {
      }
      
      • 1
      • 2
      • 3
    • 业务层接口CategoryService

      public interface CategoryService extends IService<Category> {
      }
      
      • 1
      • 2
    • 业务层实现类CategoryServiceImpl

      @Service
      public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> implements CategoryService {
      }
      
      • 1
      • 2
      • 3
    • 控制层CategoryController

      /**
       * 分类管理
       */
      @RestController
      @RequestMapping("/category")
      @Slf4j
      public class CategoryController {
          
          @Autowired
          private CategoryService categoryService;
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11

    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("新增分类成功");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

  • 相关阅读:
    阿里云服务器上安装docker命令记录
    JVM系列金九银十面试必看(至尊典藏版)
    vscode pandas无法使用
    软件设计不是CRUD(17):低耦合模块设计理论——总结
    被开除的ChatGPT之父,又回来了?
    Springboot 整合 xxljob 动态API调度任务(进阶篇)
    为什么方法断点那么慢
    李宏毅机器学习第一课(结尾附作业模型详细分析)
    信号与系统分析《1》
    kafka详解(三)
  • 原文地址:https://blog.csdn.net/kuaixiao0217/article/details/126798041