基于SSM的订餐系统 --- 分类管理模块 增加、分页查询、修改模块

分类管理模块

后台系统中可以管理分类信息,分类包括两种类型,分别是菜品分类和套餐分类。我们在后台系统中添加菜品需要选择一个菜品分类,当我们在后台系统添加一个套餐时需要选择一个套餐分类,在客户端也会按照菜品分类和套餐分类来展示对应的菜品和套餐。
在这里插入图片描述
在开发业务功能前,先将需要用到的类和接口基本结构创建完成
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;
    //是否删除
    private Integer isDeleted;
}

2.Mapper接口

@Mapper
public interface CategoryMapper extends BaseMapper<Category> {
}

3.业务层接口

public interface CategoryService extends IService<Category> {
}

4.业务层实现类

Service
public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> implements CategoryService {
}

5.控制层

@Slf4j
@RestController
@RequestMapping("/category")
public class CategoryController {
    @Autowired
    private CategoryService categoryService;
}

新增分类

需求分析:
可以在后台系统的分类管理页面分别添加菜品分类和套餐分类

代码实现:

addClass(st) {
            if (st == 'class') {
              this.classData.title = '新增菜品分类'
              this.type = '1'
            } else {
              this.classData.title = '新增套餐分类'
              this.type = '2'
            }
            this.action = 'add'
            this.classData.name = ''
            this.classData.sort = ''
            this.classData.dialogVisible = true
          }

 if (reg.test(classData.sort)) {
                    addCategory({'name': classData.name,'type':this.type, sort: classData.sort}).then(res => {
                      console.log(res)
                      if (res.code === 1) {
                        this.$message.success('分类添加成功!')
                        if (!st) {
                          this.classData.dialogVisible = false
                        } else {
                          this.classData.name = ''
                          this.classData.sort = ''
                        }
                        this.handleQuery()
                      } else {
                        this.$message.error(res.msg || '操作失败')
                      }
                    }).catch(err => {
                      this.$message.error('请求出错了:' + err)
                    })
                  } 

			// 新增接口
			const addCategory = (params) => {
			  return $axios({
			    url: '/category',
			    method: 'post',
			    data: { ...params }
			  })
			}

Controller:

    /**
     * 增加菜品及套餐分类
     * @param request
     * @param category
     * @return
     */
    @PostMapping()
    public R<String> save(@RequestBody Category category) {
        categoryService.save(category);
        return R.success("添加成功");
    }

分页查询

需求分析:
分页展示列表数据

代码实现:

 async init () {
            await getCategoryPage({'page': this.page, 'pageSize': this.pageSize}).then(res => {
              if (String(res.code) === '1') {
                this.tableData = res.data.records
                this.counts = Number(res.data.total)
              } else {
                this.$message.error(res.msg || '操作失败')
              }
            }).catch(err => {
              this.$message.error('请求出错了:' + err)
            })
          }

// 查询列表接口
const getCategoryPage = (params) => {
  return $axios({
    url: '/category/page',
    method: 'get',
    params
  })
}

Controller:

/**
     * 分页查询
     * @param page
     * @param pageSize
     * @return
     */
    @GetMapping("/page")
    public R<Page> page(int page, int pageSize) {
        log.info("page = {} pagesize={}", page, pageSize);
        //分页构造器
        Page<Category> pageinfo = new Page(page, pageSize);
        //条件构造器
        LambdaQueryWrapper<Category> queryWrapper = new LambdaQueryWrapper<>();
        //根据sort升序排序
        queryWrapper.orderByAsc(Category::getSort);
        categoryService.page(pageinfo,queryWrapper);
        return R.success(pageinfo);
    }

修改模块

 if (reg.test(this.classData.sort)) {
                editCategory({'id':this.classData.id,'name': this.classData.name, sort: this.classData.sort}).then(res => {
                  if (res.code === 1) {
                    this.$message.success('分类修改成功!')
                    this.classData.dialogVisible = false
                    this.handleQuery()
                  } else {
                    this.$message.error(res.msg || '操作失败')
                  }
                }).catch(err => {
                  this.$message.error('请求出错了:' + err)
                })
              } else {
                this.$message.error('排序只能输入数字类型')
              }

			// 修改接口
			const editCategory = (params) => {
			  return $axios({
			    url: '/category',
			    method: 'put',
			    data: { ...params }
			  })
			}
 /**
     * 修改分类信息
     * @param request
     * @param category
     * @return
     */
    @PutMapping()
    public R<String> edit(HttpServletRequest request,@RequestBody Category category) {
        boolean b = categoryService.updateById(category);
        if(b){
            return R.success("修改成功");
        }
        return R.error("修改失败");
    }
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值