快捷餐饮之店家后台评论管理及餐桌管理实现

  • j3_liuliang
  • 上期写了菜品及分类相关的功能,现在我们来实现一下商家的餐桌及评论管理相关内容

项目相关文章导航:

  1. 快捷点餐项目简介
  2. 餐饮系统设计概括
  3. 餐饮系统店家后端基础功能构建
  4. 快捷餐饮之店家后台OSS文件管理实现
  5. 快捷餐饮之店家后台厨艺秀实现
  6. 快捷餐饮之店家后台菜品分类及菜品管理实现
  7. 快捷餐饮之店家后台评论管理及餐桌管理实现
  8. 下期实现订单相关功能

项目Git地址: 点这里哦!

一、评论管理

评论是客户在就完餐之后,对店里的一些服务,菜品及环境的一些评价,所有店家后台这边只能是对评论的查询和删除,不可以对这些评论进行添加和修改相关的功能,那了解了这些,是不是业务流程就清晰了呢!

  1. 客户产生评论数据,他也是不可以修改的
  2. 店家这边可以查询评论和删除这些评论没有修改功能!

1.1 创建查询条件VO

在这里插入图片描述

/**
 * @Package: cn.liuliang.quickdinesysstore.entity.vo
 * @Author: liuliang
 * @CreateTime: 2020/10/29 - 15:54
 * @Description:
 */
@Data
@ApiModel(value="评论查询条件vo", description="")
public class EvaluateQueryConditionVO {

    @ApiModelProperty(value = "评价人身份:游客,用户,会员")
    private String identityType;

    @ApiModelProperty(value = "标识:1,菜品口味;2,服务态度;3,店内环境;4,总体评价")
    private Integer per;

    @ApiModelProperty(value = "星值:1代表一星,依次类推,最高五星")
    private Integer perValue;

    @ApiModelProperty(value = "评价时间(格式:2020-02-20)")
    private String evaluateTime;
}

1.2 创建评论数据展示DTO

在这里插入图片描述

/**
 * <p>
 * 
 * </p>
 *
 * @author j3_liuliang
 * @since 2020-10-24
 */
@Data
@ApiModel(value="评价信息DTO", description="")
public class EvaluateDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "ID")
    private Long id;

    @ApiModelProperty(value = "评价人姓名:(游客就是游客)")
    private String evaluateName;

    @ApiModelProperty(value = "评价人账号:(游客就为空)")
    private String phone;

    @ApiModelProperty(value = "评价人身份:(游客就写游客)")
    private String identityType;

    @ApiModelProperty(value = "店家名称")
    private String storeName;

    @ApiModelProperty(value = "菜品口味:1代表一星,依次类推,最高五星")
    private Integer taste;

    @ApiModelProperty(value = "服务态度:1代表一星,依次类推,最高五星")
    private Integer attitude;

    @ApiModelProperty(value = "店内环境:1代表一星,依次类推,最高五星")
    private Integer environment;

    @ApiModelProperty(value = "总体评价:1代表一星,依次类推,最高五星")
    private Integer overallEvaluation;

    @ApiModelProperty(value = "意见")
    private String opinion;

    @ApiModelProperty(value = "评价时间")
    private Date createTime;
}

1.3 编写controller

在这里插入图片描述

/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author j3_liuliang
 * @since 2020-10-24
 */
@Api(value = "评价管理", tags = "评价管理")
@CrossOrigin
@RestController
@RequestMapping("/evaluate")
public class EvaluateController {

    @Autowired
    private EvaluateService evaluateService;

    @ApiOperation(value = "条件分页查看所有评论信息", notes = "条件分页查看所有评论信息")
    @ApiResponses({@ApiResponse(code = 200, message = "请求成功!", response = EvaluateDTO.class)})
    @GetMapping("/select-all")
    public ResultDTO selectAll(
            EvaluateQueryConditionVO evaluateQueryConditionVO,
            @ApiParam("当前页码") @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum,
            @ApiParam("每页显示条数") @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
        return evaluateService.selectAll(evaluateQueryConditionVO, pageNum, pageSize);
    }

    @ApiOperation(value = "根据评论id删除评论", notes = "根据评论id删除评论")
    @GetMapping("/delete")
    public ResultDTO delete(@ApiParam("评论id") @RequestParam(value = "id", required = true) Long id) {
        evaluateService.removeById(id);
        return ResultDTO.success();
    }

}

1.4 编写service

在这里插入图片描述

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author j3_liuliang
 * @since 2020-10-24
 */
public interface EvaluateService extends IService<Evaluate> {

    /**
     * 条件分页查看所有评论信息
     * @param evaluateQueryConditionVO  查询条件
     * @param pageNum                   当前页
     * @param pageSize                  每页大小
     * @return
     */
    ResultDTO selectAll(EvaluateQueryConditionVO evaluateQueryConditionVO, Integer pageNum, Integer pageSize);
}
/**
 * <p>
 * 服务实现类
 * </p>
 *
 * @author j3_liuliang
 * @since 2020-10-24
 */
@Service
public class EvaluateServiceImpl extends ServiceImpl<EvaluateMapper, Evaluate> implements EvaluateService {

    @Autowired
    private EvaluateMapper evaluateMapper;

    @Override
    public ResultDTO selectAll(EvaluateQueryConditionVO evaluateQueryConditionVO, Integer pageNum, Integer pageSize) {
        // 构造分页
        Page<Evaluate> evaluatePage = new Page<>(pageNum, pageSize);
        // 执行查询
        List<Evaluate> evaluateList = evaluateMapper.selectAll(evaluatePage, evaluateQueryConditionVO);
        // 构造传输数据
        List<EvaluateDTO> evaluateDTOList = new ArrayList<>(evaluateList.size());
        evaluateList.forEach(evaluate -> {
            EvaluateDTO evaluateDTO = new EvaluateDTO();
            BeanUtils.copyProperties(evaluate, evaluateDTO);
            evaluateDTOList.add(evaluateDTO);
        });
        return ResultDTO.success().data("total", evaluatePage.getTotal()).data("rows", evaluateDTOList);
    }
}

1.5 编写Mapper及Mapper映射文件

在这里插入图片描述

/**
 * <p>
 * Mapper 接口
 * </p>
 *
 * @author j3_liuliang
 * @since 2020-10-24
 */
public interface EvaluateMapper extends BaseMapper<Evaluate> {

    /**
     * 根据条件分页查询评论数据
     *
     * @param evaluatePage             分页对象
     * @param evaluateQueryConditionVO 查询条件对象
     * @return
     */
    List<Evaluate> selectAll(@Param("evaluatePage") Page<Evaluate> evaluatePage, @Param("evaluateQueryConditionVO") EvaluateQueryConditionVO evaluateQueryConditionVO);

}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.liuliang.quickdinesysstore.mapper.EvaluateMapper">


    <resultMap id="evaluate" type="cn.liuliang.quickdinesysstore.entity.Evaluate">
        <result property="id" javaType="long" column="id"/>
        <result property="evaluateName" javaType="string" column="evaluate_name"/>
        <result property="phone" javaType="string" column="phone"/>
        <result property="identityType" javaType="string" column="identity_type"/>
        <result property="storeName" javaType="string" column="store_name"/>
        <result property="taste" javaType="integer" column="taste"/>
        <result property="attitude" javaType="integer" column="attitude"/>
        <result property="environment" javaType="integer" column="environment"/>
        <result property="overallEvaluation" javaType="integer" column="overall_evaluation"/>
        <result property="opinion" javaType="string" column="opinion"/>
        <result property="createTime" javaType="date" column="create_time"/>
    </resultMap>
    <select id="selectAll" resultMap="evaluate">
        SELECT
        t_evaluate.`id`,
        t_evaluate.`evaluate_name`,
        t_evaluate.`phone`,
        t_evaluate.`identity_type`,
        t_evaluate.`store_name`,
        t_evaluate.`taste`,
        t_evaluate.`attitude`,
        t_evaluate.`environment`,
        t_evaluate.`overall_evaluation`,
        t_evaluate.`opinion`,
        t_evaluate.`create_time`
        FROM t_evaluate
        WHERE
        t_evaluate.`store_name` = '鲲鹏膳'
        <if test="evaluateQueryConditionVO.identityType != null and evaluateQueryConditionVO.identityType != ''">
            AND t_evaluate.`identity_type` = #{evaluateQueryConditionVO.identityType}
        </if>
        <if test="evaluateQueryConditionVO.per != null and evaluateQueryConditionVO.per == 1">
            AND t_evaluate.`taste` = #{evaluateQueryConditionVO.perValue}
        </if>
        <if test="evaluateQueryConditionVO.per != null and evaluateQueryConditionVO.per == 2">
            AND t_evaluate.`attitude` = #{evaluateQueryConditionVO.perValue}
        </if>
        <if test="evaluateQueryConditionVO.per != null and evaluateQueryConditionVO.per == 3">
            AND t_evaluate.`environment` = #{evaluateQueryConditionVO.perValue}
        </if>
        <if test="evaluateQueryConditionVO.per != null and evaluateQueryConditionVO.per == 4">
            AND t_evaluate.`overall_evaluation` = #{evaluateQueryConditionVO.perValue}
        </if>
    </select>
</mapper>

1.6 启动项目用swagger测试

访问:http://localhost:9110/swagger-ui.html#/

二、餐桌管理

餐桌其实也是一个很重要的环节,客户的点餐第一步就是选择餐桌所以店家应该有对餐桌的基本增删改查相关功能,如果后期有什么特殊的功能我们再来补充

2.1 创建餐桌展示信息DTO

在这里插入图片描述

/**
 * <p>
 * 
 * </p>
 *
 * @author j3_liuliang
 * @since 2020-10-24
 */
@Data
@ApiModel(value="餐桌信息DTO", description="")
public class DiningTableDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "ID")
    private Long id;

    @ApiModelProperty(value = "桌号:不为空,唯一")
    private String diningTableNumber;

    @ApiModelProperty(value = "餐桌名称:特色名称,有利于店面文怀")
    private String diningTableName;

    @ApiModelProperty(value = "创建时间")
    private Date createTime;

}

2.2 编写controller

在这里插入图片描述

/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author j3_liuliang
 * @since 2020-10-24
 */
@Api(value = "餐桌管理", tags = "餐桌管理")
@CrossOrigin
@RestController
@RequestMapping("/dining-table")
public class DiningTableController {

    @Autowired
    private DiningTableService diningTableService;

    @ApiOperation(value = "添加餐桌", notes = "添加餐桌")
    @PostMapping("/add-or-update")
    public ResultDTO addOrUpdate(@RequestBody DiningTableVO diningTableVO) {
        return diningTableService.addOrUpdate(diningTableVO);
    }

    @ApiOperation(value = "分页查看所有餐桌信息", notes = "分页查看所有餐桌信息")
    @ApiResponses({@ApiResponse(code = 200, message = "请求成功!", response = DiningTableDTO.class)})
    @GetMapping("/select-all")
    public ResultDTO selectAll(
            @ApiParam("当前页码") @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum,
            @ApiParam("每页显示条数") @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
        return diningTableService.selectAll(pageNum, pageSize);
    }

    @ApiOperation(value = "根据id查询餐桌信息", notes = "根据id查询餐桌信息")
    @ApiResponses({@ApiResponse(code = 200, message = "请求成功!", response = DiningTableDTO.class)})
    @GetMapping("/select-one")
    public ResultDTO selectOne(@ApiParam("餐桌id") @RequestParam(value = "id", required = false, defaultValue = "1") Long id){
        return diningTableService.selectOne(id);
    }

    @ApiOperation(value = "根据id删除餐桌信息", notes = "根据id删除餐桌信息")
    @GetMapping("/delete")
    public ResultDTO delete(@ApiParam("餐桌id") @RequestParam(value = "id", required = false, defaultValue = "1") Long id){
        diningTableService.removeById(id);
        return ResultDTO.success();
    }


}

2.3 编写service

在这里插入图片描述

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author j3_liuliang
 * @since 2020-10-24
 */
public interface DiningTableService extends IService<DiningTable> {

    /**
     * 添加餐桌
     *
     * @param diningTableVO 餐桌信息
     * @return
     */
    ResultDTO addOrUpdate(DiningTableVO diningTableVO);

    /**
     * 分页查看所有餐桌信息
     *
     * @param pageNum  当前页
     * @param pageSize 每页大小
     * @return
     */
    ResultDTO selectAll(Integer pageNum, Integer pageSize);

    /**
     * 根据id查询餐桌信息
     *
     * @param id 餐桌id
     * @return
     */
    ResultDTO selectOne(Long id);
}
/**
 * <p>
 * 服务实现类
 * </p>
 *
 * @author j3_liuliang
 * @since 2020-10-24
 */
@Service
public class DiningTableServiceImpl extends ServiceImpl<DiningTableMapper, DiningTable> implements DiningTableService {

    @Autowired
    private DiningTableMapper diningTableMapper;


    @Override
    public ResultDTO addOrUpdate(DiningTableVO diningTableVO) {
        // 判断参数是否为空
        if (StringUtils.isEmpty(diningTableVO.getDiningTableNumber())
                || StringUtils.isEmpty(diningTableVO.getDiningTableName())) {
            throw new QuickException(ResultCodeEnum.PAEAMETER_IS_EMPTY);
        }
        // 判断是添加还是修改
        if (null == diningTableVO.getId()) {
            // 插入
            // 构造数据
            DiningTable diningTable = new DiningTable();
            BeanUtils.copyProperties(diningTableVO, diningTable);
            // 插入
            diningTableMapper.insert(diningTable);
        } else {
            // 修改
            // 根据id查询需要的数据
            QueryWrapper<DiningTable> diningTableQueryWrapper = new QueryWrapper<>();
            diningTableQueryWrapper
                    .select("dining_table_number", "dining_table_name")
                    .eq("id", diningTableVO.getId());
            DiningTable diningTable = diningTableMapper.selectOne(diningTableQueryWrapper);
            BeanUtils.copyProperties(diningTableVO, diningTable);
            diningTableMapper.updateById(diningTable);
        }
        return ResultDTO.success();
    }

    @Override
    public ResultDTO selectAll(Integer pageNum, Integer pageSize) {
        // 构造分页
        Page<DiningTable> diningTablePage = new Page<>(pageNum, pageSize);
        // 分页查询
        IPage<DiningTable> diningTablePageModel = diningTableMapper.selectPage(diningTablePage, null);
        // 构造返回数据
        List<DiningTable> diningTableList = diningTablePageModel.getRecords();
        long total = diningTablePageModel.getTotal();
        return ResultDTO.success().data("total", total).data("rows", diningTableList);
    }

    @Override
    public ResultDTO selectOne(Long id) {
        // 执行查询
        DiningTable diningTable = diningTableMapper.selectById(id);
        // 构造返回数据
        DiningTableDTO diningTableDTO = new DiningTableDTO();
        BeanUtils.copyProperties(diningTable, diningTableDTO);
        return ResultDTO.success().data("data", diningTableDTO);
    }
}

2.4 编写mapper及mapper映射文件

无需编写,使用了MyBatisPlus内置方法,就是这么爽

2.5 启动项目,swagger测试

http://localhost:9110/swagger-ui.html#/

在这里插入图片描述

结束语

  • 由于博主才疏学浅,难免会有纰漏,假如你发现了错误或偏见的地方,还望留言给我指出来,我会对其加以修正。
  • 如果你觉得文章还不错,你的转发、分享、点赞、留言就是对我最大的鼓励。
  • 感谢您的阅读,十分欢迎并感谢您的关注。
    在这里插入图片描述
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
电脑系统 酒楼的档次 明明白白的消费 科学的餐饮管理 快速的前台点菜收银操作 POS机式的点菜输入,仅需小数字键盘即可完成全部工作,收银点菜同时操作,快速有效,对于新手到处有方便的菜肴代码提示。桌位状态及预定和已经营业的数额一目了然,在同一个界面显示,无需来回切换。酒水、菜肴同步输入,无需切换。及时反映各种营业信息。订位、落单(点菜)、导航、浏览查询各台(桌)点菜情况、菜单增补、改单、结帐、取消、转台非常之方便快捷。给客人明明白白的电脑清单,提高酒楼的档次。 多功能的后台管理 各种权限操作如退菜、整台取消、清单打印、操作员、收银机、打印机及一些审批工作等设置。全面的预订管理,预定时间段的设定,可设定的过期自动作废功能。实时的营业监控。消费客户的管理,各种卡的管理。消费统计,各种营业报表,销售数据的对比分析,菜肴消费的同比分析。每个桌位的消费信息,每层楼的消费信息。各个菜肴的销售对比分析排行。经理查询分析模块,及时掌握各种菜肴消费情况,非常利于菜肴的增添进货或减货。另外本系统还有人事管理、员工的考勤管理。 整体及各个单独部门的成本利润分析 结合仓库原料物料的支出,可以进行整体和每个部门的利润计算,可以设定是否含物料支出分析。 科学化的仓库管理 原料、物料的既独立又可合起的管理查询分析。原料或物料的进货管理,各部门的领料管理,原料直拨管理,库存报损报溢,原料物料退货管理。各种单据核对,库存盘点,月末结转。假退料管理,历史库存查询报表,历史单据查询报表,每月库存原料物料进出库情况报表。各部门每月进出货报表,各部门每个月的领料及成本分析,各种原料库存报警。结合餐饮可进行利润的分析。 该系统界面简洁,操作方便,对硬件要求低,能适应WIN9X、Windows2000、WINXP等多种操作系统。配合以上功能模块,系统还有达到菜单级管理的若干高效子功能。管理人员可以通过系统的多种报表分析系统对输入的各种信息进行处理和分析,非常方便您进行酒楼进行营业管理工作。本系统着重于为餐饮业服务,预留充分的空间,可以根据客户的需求为客户进行适合本酒楼营业的修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

J3code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值