一、系统管理
1.1 编写系统数据相关信息DTO
/** * @Package: cn.liuliang.quickdinesysstore.entity.dto * @Author: liuliang * @CreateTime: 2020/11/27 - 8:32 * @Description: */ @Data @ApiModel(value="系统数据相关信息DTO", description="") public class SysDataDTO { @ApiModelProperty(value = "系统客户数量相关信息DTO") private SysUserDataDTO sysUserDataDTO; @ApiModelProperty(value = "系统评论相关数据DTO") private SysDiscussDataDTO sysDiscussDataDTO; @ApiModelProperty(value = "系统交易相关数据DTO") private SysTransactionDataDTO sysTransactionDataDTO; @ApiModelProperty(value = "系统订单相关数据DTO") private SysOrderDataDTO sysOrderDataDTO; }
1.2 编写系统客户数量相关信息DTO
/** * @Package: cn.liuliang.quickdinesysstore.entity.dto * @Author: liuliang * @CreateTime: 2020/11/27 - 8:34 * @Description: */ @Data @ApiModel(value = "系统客户数量相关信息DTO", description = "") public class SysUserDataDTO { @ApiModelProperty(value = "用户总数") private Integer[] userTotal; @ApiModelProperty(value = "会员数") private Integer[] memberNumber; @ApiModelProperty(value = "用户数") private Integer[] userNumber; @ApiModelProperty(value = "游客数") private Integer[] touristNumber; }
1.3 编写系统评论相关数据DTO
/** * @Package: cn.liuliang.quickdinesysstore.entity.dto * @Author: liuliang * @CreateTime: 2020/11/27 - 8:35 * @Description: */ @Data @ApiModel(value="系统评论相关数据DTO", description="") public class SysDiscussDataDTO { @ApiModelProperty(value = "评论总数") private Integer[] discussTotal; @ApiModelProperty(value = "会员评论数") private Integer[] memberDiscussNumber; @ApiModelProperty(value = "用户评论数") private Integer[] userDiscussNumber; @ApiModelProperty(value = "游客评论数") private Integer[] touristDiscussNumber; }
1.4 编写系统交易相关数据DTO
/** * @Package: cn.liuliang.quickdinesysstore.entity.dto * @Author: liuliang * @CreateTime: 2020/11/27 - 8:37 * @Description: */ @Data @ApiModel(value = "系统交易相关数据DTO", description = "") public class SysTransactionDataDTO { @ApiModelProperty(value = "总交易额") private BigDecimal[] transactionAmountTotal; @ApiModelProperty(value = "会员交易额") private BigDecimal[] memberTransactionAmount; @ApiModelProperty(value = "用户交易额") private BigDecimal[] userTransactionAmount; @ApiModelProperty(value = "游客交易额") private BigDecimal[] touristTransactionAmount; }
1.5 编写系统订单相关数据DTO
/** * @Package: cn.liuliang.quickdinesysstore.entity.dto * @Author: liuliang * @CreateTime: 2020/11/27 - 8:41 * @Description: */ @Data @ApiModel(value="系统订单相关数据DTO", description="") public class SysOrderDataDTO { @ApiModelProperty(value = "订单总数") private Integer[] orderTotal; @ApiModelProperty(value = "会员订单数") private Integer[] memberOrderNumber; @ApiModelProperty(value = "用户订单数") private Integer[] userOrderNumber; @ApiModelProperty(value = "游客订单数") private Integer[] touristOrderNumber; }
1.6 编写系统控制器层
/** * @Package: cn.liuliang.quickdinesysstore.controller * @Author: liuliang * @CreateTime: 2020/11/8 - 13:27 * @Description: */ @Api(value = "系统管理", tags = "系统管理") @CrossOrigin @RestController @RequestMapping("/sys") public class SysController { @Autowired private SysService sysService; @ApiOperation(value = "获取系统的结账时积分计算比例", notes = "获取系统的结账时积分计算比例") @GetMapping("/get-integral-ratio") public ResultDTO getIntegralRatio(){ return sysService.getIntegralRatio(); } @ApiOperation(value = "修改结账时积分计算比例", notes = "修改结账时积分计算比例") @GetMapping("/update-integral-ratio") public ResultDTO updateIntegralRatio(@ApiParam("积分比例") @RequestParam(value = "integralRatio", required = true) Integer integralRatio){ return sysService.updateIntegralRatio(integralRatio); } @ApiOperation(value = "获取系统相关数据", notes = "获取系统相关数据") @ApiResponses({@ApiResponse(code = 200, message = "请求成功!", response = SysDataDTO.class)}) @GetMapping("/get-data") public ResultDTO getData(@ApiParam("时间字符串") @RequestParam(value = "strTime", required = false, defaultValue = "") String strTime){ return sysService.getData(strTime); } }
1.7 编写系统业务层
/** * @Package: cn.liuliang.quickdinesysstore.service * @Author: liuliang * @CreateTime: 2020/11/26 - 20:05 * @Description: */ public interface SysService { /** * 获取系统的结账时积分计算比例 * @return */ ResultDTO getIntegralRatio(); /** * 修改结账时积分计算比例 * @param integralRatio * @return */ ResultDTO updateIntegralRatio(Integer integralRatio); /** * 获取系统相关数据 * @param strTime 时间范围字符串 * @return */ ResultDTO getData(String strTime); }
@Service public class SysServiceImpl implements SysService { @Autowired private SysMapper sysMapper; @Override public ResultDTO getIntegralRatio() { Integer proportionIntegral = sysMapper.getIntegralRatio(); return ResultDTO.success().data("data", proportionIntegral); } @Override public ResultDTO updateIntegralRatio(Integer integralRatio) { sysMapper.updateIntegralRatio(integralRatio); return ResultDTO.success(); } @Override public ResultDTO getData(String strTime) { // 查询标识,1:查询所有数据(默认查所有),2:查询对应时间范围内数据 int per = 1; // 开始时间 String startTime = ""; // 结束时间 String endTime = ""; if (!StringUtils.isEmpty(strTime)) { // 查询对应时间范围内数据 per = 2; startTime = strTime.split(";")[0]; endTime = strTime.split(";")[1]; } SysDataDTO sysDataDTO = new SysDataDTO(); // 设置用户相关数据 sysDataDTO.setSysUserDataDTO(userData(per, startTime, endTime)); // 设置评论相关数据 sysDataDTO.setSysDiscussDataDTO(discussData(per, startTime, endTime)); // 设置交易额相关数据 sysDataDTO.setSysTransactionDataDTO(transactionData(per, startTime, endTime)); // 设置订单相关数据 sysDataDTO.setSysOrderDataDTO(orderData(per, startTime, endTime)); return ResultDTO.success("data", sysDataDTO); } private SysOrderDataDTO orderData(int per, String startTime, String endTime) { SysOrderDataDTO sysOrderDataDTO = new SysOrderDataDTO(); Integer[] orderTotal = new Integer[8]; Integer[] memberOrderNumber = new Integer[8]; Integer[] userOrderNumber = new Integer[8]; Integer[] touristOrderNumber = new Integer[8]; // 查询数据 for (int i = 1; i <= 8; i++) { // 查询星期一 到 星期日的数据 及 总数据 orderTotal[i - 1] = sysMapper.getOrderData(i, 1, per, startTime, endTime); memberOrderNumber[i - 1] = sysMapper.getOrderData(i, 2, per, startTime, endTime); userOrderNumber[i - 1] = sysMapper.getOrderData(i, 3, per, startTime, endTime); touristOrderNumber[i - 1] = sysMapper.getOrderData(i, 4, per, startTime, endTime); } sysOrderDataDTO.setOrderTotal(orderTotal); sysOrderDataDTO.setMemberOrderNumber(memberOrderNumber); sysOrderDataDTO.setUserOrderNumber(userOrderNumber); sysOrderDataDTO.setTouristOrderNumber(touristOrderNumber); return sysOrderDataDTO; } private SysDiscussDataDTO discussData(int per, String startTime, String endTime) { SysDiscussDataDTO sysDiscussDataDTO = new SysDiscussDataDTO(); Integer[] discussTotal = new Integer[8]; Integer[] memberDiscussNumber = new Integer[8]; Integer[] userDiscussNumber = new Integer[8]; Integer[] touristDiscussNumber = new Integer[8]; // 查询数据 for (int i = 1; i <= 8; i++) { // 查询星期一 到 星期日的数据 及 总数据 discussTotal[i - 1] = sysMapper.getDiscussData(i, 1, per, startTime, endTime); memberDiscussNumber[i - 1] = sysMapper.getDiscussData(i, 2, per, startTime, endTime); userDiscussNumber[i - 1] = sysMapper.getDiscussData(i, 3, per, startTime, endTime); touristDiscussNumber[i - 1] = sysMapper.getDiscussData(i, 4, per, startTime, endTime); } sysDiscussDataDTO.setDiscussTotal(discussTotal); sysDiscussDataDTO.setMemberDiscussNumber(memberDiscussNumber); sysDiscussDataDTO.setUserDiscussNumber(userDiscussNumber); sysDiscussDataDTO.setTouristDiscussNumber(touristDiscussNumber); return sysDiscussDataDTO; } private SysUserDataDTO userData(int per, String startTime, String endTime) { SysUserDataDTO sysUserDataDTO = new SysUserDataDTO(); Integer[] userData = new Integer[8]; Integer[] memberNumber = new Integer[8]; Integer[] userNumber = new Integer[8]; Integer[] touristNumber = new Integer[8]; // 查询数据 for (int i = 1; i <= 8; i++) { // 查询星期一 到 星期日的数据 及 总数据 userData[i - 1] = sysMapper.getUserData(i, 1, per, startTime, endTime); memberNumber[i - 1] = sysMapper.getUserData(i, 2, per, startTime, endTime); userNumber[i - 1] = sysMapper.getUserData(i, 3, per, startTime, endTime); touristNumber[i - 1] = sysMapper.getUserData(i, 4, per, startTime, endTime); } sysUserDataDTO.setUserTotal(userData); sysUserDataDTO.setMemberNumber(memberNumber); sysUserDataDTO.setUserNumber(userNumber); sysUserDataDTO.setTouristNumber(touristNumber); return sysUserDataDTO; } private SysTransactionDataDTO transactionData(int per, String startTime, String endTime) { SysTransactionDataDTO sysTransactionDataDTO = new SysTransactionDataDTO(); BigDecimal[] transactionAmountTotal = new BigDecimal[8]; BigDecimal[] memberTransactionAmount = new BigDecimal[8]; BigDecimal[] userTransactionAmount = new BigDecimal[8]; BigDecimal[] touristTransactionAmount = new BigDecimal[8]; // 查询数据 for (int i = 1; i <= 8; i++) { // 查询星期一 到 星期日的数据 及 总数据 transactionAmountTotal[i - 1] = sysMapper.getTransactionData(i, 1, per, startTime, endTime); if (null == transactionAmountTotal[i - 1]) { transactionAmountTotal[i - 1] = new BigDecimal(0); } memberTransactionAmount[i - 1] = sysMapper.getTransactionData(i, 2, per, startTime, endTime); if (null == memberTransactionAmount[i - 1]) { memberTransactionAmount[i - 1] = new BigDecimal(0); } userTransactionAmount[i - 1] = sysMapper.getTransactionData(i, 3, per, startTime, endTime); if (null == userTransactionAmount[i - 1]) { userTransactionAmount[i - 1] = new BigDecimal(0); } touristTransactionAmount[i - 1] = sysMapper.getTransactionData(i, 4, per, startTime, endTime); if (null == touristTransactionAmount[i - 1]) { touristTransactionAmount[i - 1] = new BigDecimal(0); } } sysTransactionDataDTO.setTransactionAmountTotal(transactionAmountTotal); sysTransactionDataDTO.setMemberTransactionAmount(memberTransactionAmount); sysTransactionDataDTO.setUserTransactionAmount(userTransactionAmount); sysTransactionDataDTO.setTouristTransactionAmount(touristTransactionAmount); return sysTransactionDataDTO; } }
1.8 编写系统mapper
/** * @Package: cn.liuliang.quickdinesysstore.mapper * @Author: liuliang * @CreateTime: 2020/11/26 - 20:08 * @Description: */ public interface SysMapper { /** * 获取系统的结账时积分计算比例 * * @return */ Integer getIntegralRatio(); /** * 修改结账时积分计算比例 * * @param integralRatio * @return */ void updateIntegralRatio(@Param("integralRatio") Integer integralRatio); /** * 查询用户数据 * * @param weekPer 查询星期几的数据 * @param level 身份:1全部,2会员,3用户,4游客 * @param per 1全查,2时间范围查询 * @param startTime 开始时间 * @param endTime 结束时间 * @return */ Integer getUserData(@Param("weekPer") int weekPer, @Param("level") int level, @Param("per") int per, @Param("startTime") String startTime, @Param("endTime") String endTime); /** * 查询评论数据 * * @param weekPer 查询星期几的数据 * @param level 身份:1全部,2会员,3用户,4游客 * @param per 1全查,2时间范围查询 * @param startTime 开始时间 * @param endTime 结束时间 * @return */ Integer getDiscussData(@Param("weekPer") int weekPer, @Param("level") int level, @Param("per") int per, @Param("startTime") String startTime, @Param("endTime") String endTime); /** * 查询交易数据 * * @param weekPer 查询星期几的数据 * @param level 身份:1全部,2会员,3用户,4游客 * @param per 1全查,2时间范围查询 * @param startTime 开始时间 * @param endTime 结束时间 * @return */ BigDecimal getTransactionData(@Param("weekPer") int weekPer, @Param("level") int level, @Param("per") int per, @Param("startTime") String startTime, @Param("endTime") String endTime); /** * 查询订单数据 * * @param weekPer 查询星期几的数据 * @param level 身份:1全部,2会员,3用户,4游客 * @param per 1全查,2时间范围查询 * @param startTime 开始时间 * @param endTime 结束时间 * @return */ Integer getOrderData(@Param("weekPer") int weekPer, @Param("level") int level, @Param("per") int per, @Param("startTime") String startTime, @Param("endTime") String endTime); }
<?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.SysMapper"> <select id="getIntegralRatio" resultType="java.lang.Integer"> SELECT t_sys.`proportion_integral` FROM t_sys WHERE t_sys.`id` = 1 </select> <update id="updateIntegralRatio"> UPDATE t_sys SET t_sys.`proportion_integral` = #{integralRatio} WHERE t_sys.`id` = 1 </update> <sql id="findCondition"> <where> <if test="per == 1 and level == 1"> AND 1=1 </if> <if test="per == 1 and level == 2"> AND user_info_id = '1321703619577257986' </if> <if test="per == 1 and level == 3"> AND user_info_id = '1321703632667680770' </if> <if test="per == 1 and level == 4"> AND user_info_id = '1321703592666603521' </if> <if test="per == 2 and level == 1"> AND STR_TO_DATE(#{startTime}, '%Y-%m-%d') <= STR_TO_DATE(create_time, '%Y-%m-%d') AND STR_TO_DATE(create_time, '%Y-%m-%d') <= STR_TO_DATE(#{endTime}, '%Y-%m-%d') </if> <if test="per == 2 and level == 2"> AND STR_TO_DATE(#{startTime}, '%Y-%m-%d') <= STR_TO_DATE(create_time, '%Y-%m-%d') AND STR_TO_DATE(create_time, '%Y-%m-%d') <= STR_TO_DATE(#{endTime}, '%Y-%m-%d') AND user_info_id = '1321703619577257986' </if> <if test="per == 2 and level == 3"> AND STR_TO_DATE(#{startTime}, '%Y-%m-%d') <= STR_TO_DATE(create_time, '%Y-%m-%d') AND STR_TO_DATE(create_time, '%Y-%m-%d') <= STR_TO_DATE(#{endTime}, '%Y-%m-%d') AND user_info_id = '1321703632667680770' </if> <if test="per == 2 and level == 4"> AND STR_TO_DATE(#{startTime}, '%Y-%m-%d') <= STR_TO_DATE(create_time, '%Y-%m-%d') AND STR_TO_DATE(create_time, '%Y-%m-%d') <= STR_TO_DATE(#{endTime}, '%Y-%m-%d') AND user_info_id = '1321703592666603521' </if> <if test="weekPer != 8"> AND WEEKDAY(create_time) + 1 = #{weekPer} </if> </where> </sql> <select id="getUserData" resultType="java.lang.Integer"> SELECT COUNT(*) FROM t_user_login <include refid="findCondition"></include> </select> <select id="getDiscussData" resultType="java.lang.Integer"> SELECT COUNT(*) FROM t_evaluate <include refid="findCondition"></include> </select> <sql id="orderFindCondition"> <where> <if test="per == 1 and level == 1"> AND 1=1 </if> <if test="per == 1 and level == 2"> AND t_user_login.`user_info_id` = '1321703619577257986' </if> <if test="per == 1 and level == 3"> AND t_user_login.`user_info_id` = '1321703632667680770' </if> <if test="per == 1 and level == 4"> AND t_user_login.`user_info_id` = '1321703592666603521' </if> <if test="per == 2 and level == 1"> AND STR_TO_DATE(#{startTime}, '%Y-%m-%d') <= STR_TO_DATE(t_order.`create_time`, '%Y-%m-%d') AND STR_TO_DATE(t_order.`create_time`, '%Y-%m-%d') <= STR_TO_DATE(#{endTime}, '%Y-%m-%d') </if> <if test="per == 2 and level == 2"> AND STR_TO_DATE(#{startTime}, '%Y-%m-%d') <= STR_TO_DATE(t_order.`create_time`, '%Y-%m-%d') AND STR_TO_DATE(t_order.`create_time`, '%Y-%m-%d') <= STR_TO_DATE(#{endTime}, '%Y-%m-%d') AND t_user_login.`user_info_id`= '1321703619577257986' </if> <if test="per == 2 and level == 3"> AND STR_TO_DATE(#{startTime}, '%Y-%m-%d') <= STR_TO_DATE(t_order.`create_time`, '%Y-%m-%d') AND STR_TO_DATE(t_order.`create_time`, '%Y-%m-%d') <= STR_TO_DATE(#{endTime}, '%Y-%m-%d') AND t_user_login.`user_info_id` = '1321703632667680770' </if> <if test="per == 2 and level == 4"> AND STR_TO_DATE(#{startTime}, '%Y-%m-%d') <= STR_TO_DATE(t_order.`create_time`, '%Y-%m-%d') AND STR_TO_DATE(t_order.`create_time`, '%Y-%m-%d') <= STR_TO_DATE(#{endTime}, '%Y-%m-%d') AND t_user_login.`user_info_id` = '1321703592666603521' </if> <if test="weekPer != 8"> AND WEEKDAY(t_order.`create_time`) + 1 = #{weekPer} </if> </where> </sql> <select id="getTransactionData" resultType="java.math.BigDecimal"> SELECT SUM(t_order.`actual_money`) FROM t_order LEFT JOIN t_user_login ON t_user_login.`id` = t_order.`user_id` <include refid="orderFindCondition"></include> </select> <select id="getOrderData" resultType="java.lang.Integer"> SELECT COUNT(*) FROM t_order LEFT JOIN t_user_login ON t_user_login.`id` = t_order.`user_id` <include refid="orderFindCondition"></include> </select> </mapper>
1.9 运行项目swager测试
http://localhost:9110/swagger-ui.html#/
结束语
- 由于博主才疏学浅,难免会有纰漏,假如你发现了错误或偏见的地方,还望留言给我指出来,我会对其加以修正。
- 如果你觉得文章还不错,你的转发、分享、点赞、留言就是对我最大的鼓励。
- 感谢您的阅读,十分欢迎并感谢您的关注。