ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MerTotalDto.java
@@ -29,4 +29,7 @@ @ApiModelProperty(value = "商户id集合",hidden = true) private List<Long> shopIdList; @ApiModelProperty(value = "年龄层",hidden = true) private Integer ageType; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerOrderAgeUserVo.java
New file @@ -0,0 +1,23 @@ package com.ruoyi.system.api.domain.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * @ClassName MerOrderAgeUserVo * @Description TODO * @Author jqs * @Date 2023/7/4 9:47 * @Version 1.0 */ @Data public class MerOrderAgeUserVo { @ApiModelProperty(value = "年龄层") private Integer ageType; @ApiModelProperty(value = "用户id列表") private List<Long> userIdList; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java
@@ -112,6 +112,11 @@ return R.fail("更新会员统计失败:" + throwable.getMessage()); } @Override public R<List<MerOrderAgeUserVo>> listOrderAgeUser(MerTotalDto merTotalDto) { return R.fail("获取年龄段userId失败:" + throwable.getMessage()); } }; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java
@@ -162,5 +162,13 @@ public R changeMemberTotal(@RequestBody MemberTotalChangeDto memberTotalChangeDto); /** * @description 获取各年龄层userId * @author jqs * @date 2023/7/4 9:49 * @param merTotalDto * @return R<MerOrderAgeUserVo> */ @PostMapping("/listOrderAgeUser") public R<List<MerOrderAgeUserVo>> listOrderAgeUser(@RequestBody MerTotalDto merTotalDto); } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerTotalController.java
@@ -51,7 +51,7 @@ } @RequestMapping(value = "/getMerMemberSourceTotal", method = RequestMethod.POST) @ApiOperation(value = "获取商户会员人数统计") @ApiOperation(value = "获取商户会员来源统计") public R<MerMemberSourceTotalVo> getMerMemberSourceTotal(@RequestBody MerTotalDto merTotalDto) { Long userId = SecurityUtils.getUserId(); merTotalDto.setUserId(userId); @@ -60,7 +60,7 @@ } @RequestMapping(value = "/getMerMemberRecommendTotal", method = RequestMethod.POST) @ApiOperation(value = "获取商户会员人数统计") @ApiOperation(value = "获取商户会员推荐统计") public R<MerMemberRecommendTotalVo> getMerMemberRecommendTotal(@RequestBody MerTotalDto merTotalDto) { Long userId = SecurityUtils.getUserId(); merTotalDto.setUserId(userId); ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java
@@ -250,4 +250,18 @@ memberService.changeMemberTotal(memberTotalChangeDto); return R.ok(); } /** * @description 获取各年龄层userId * @author jqs * @date 2023/7/4 9:49 * @param merTotalDto * @return R<MerOrderAgeUserVo> */ @PostMapping("/listOrderAgeUser") public R<List<MerOrderAgeUserVo>> listOrderAgeUser(@RequestBody MerTotalDto merTotalDto) { List<MerOrderAgeUserVo> orderAgeUserVoList = memberService.listOrderAgeUser(merTotalDto); return R.ok(orderAgeUserVoList); } } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberMapper.java
@@ -365,6 +365,15 @@ * @return List<MgtMapIntTotalVo> */ List<MgtMapIntTotalVo> getMerMemberRecommendRank(@Param("param") MerTotalDto merTotalDto); /** * @description 获取各年龄层用户 * @author jqs * @date 2023/7/4 9:55 * @param ageType * @return List<Long> */ List<Long> listOrderAgeUser(@Param("param") MerTotalDto merTotalDto); } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -1501,4 +1501,47 @@ } return memberRecommendTotalVo; } /** * @description 获取各年龄层用户 * @author jqs * @date 2023/7/4 9:50 * @param merTotalDto * @return MerOrderAgeUserVo */ @Override public List<MerOrderAgeUserVo> listOrderAgeUser(MerTotalDto merTotalDto){ List<MerOrderAgeUserVo> orderAgeUserVoList = new ArrayList<>(); MerOrderAgeUserVo merOrderAgeUserVo = new MerOrderAgeUserVo(); merTotalDto.setAgeType(1); List<Long> userIdList = memberMapper.listOrderAgeUser(merTotalDto); merOrderAgeUserVo.setAgeType(1); merOrderAgeUserVo.setUserIdList(userIdList); orderAgeUserVoList.add(merOrderAgeUserVo); merOrderAgeUserVo = new MerOrderAgeUserVo(); merTotalDto.setAgeType(2); userIdList = memberMapper.listOrderAgeUser(merTotalDto); merOrderAgeUserVo.setAgeType(2); merOrderAgeUserVo.setUserIdList(userIdList); orderAgeUserVoList.add(merOrderAgeUserVo); merOrderAgeUserVo = new MerOrderAgeUserVo(); merTotalDto.setAgeType(3); userIdList = memberMapper.listOrderAgeUser(merTotalDto); merOrderAgeUserVo.setAgeType(3); merOrderAgeUserVo.setUserIdList(userIdList); orderAgeUserVoList.add(merOrderAgeUserVo); merOrderAgeUserVo = new MerOrderAgeUserVo(); merTotalDto.setAgeType(4); userIdList = memberMapper.listOrderAgeUser(merTotalDto); merOrderAgeUserVo.setAgeType(4); merOrderAgeUserVo.setUserIdList(userIdList); orderAgeUserVoList.add(merOrderAgeUserVo); merOrderAgeUserVo = new MerOrderAgeUserVo(); merTotalDto.setAgeType(5); userIdList = memberMapper.listOrderAgeUser(merTotalDto); merOrderAgeUserVo.setAgeType(4); merOrderAgeUserVo.setUserIdList(userIdList); orderAgeUserVoList.add(merOrderAgeUserVo); return orderAgeUserVoList; } } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java
@@ -312,4 +312,13 @@ * @return MerMemberRecommendTotalVo */ MerMemberRecommendTotalVo getMerMemberRecommendTotal(MerTotalDto merTotalDto); /** * @description 获取各年龄层用户 * @author jqs * @date 2023/7/4 9:50 * @param merTotalDto * @return MerOrderAgeUserVo */ List<MerOrderAgeUserVo> listOrderAgeUser(MerTotalDto merTotalDto); } ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml
@@ -907,4 +907,41 @@ GROUP BY tm.referrer ORDER BY COUNT(tm.user_id) DESC LIMIT 15 </select> <select id="listOrderAgeUser" resultType="java.lang.Long"> SELECT SUM(CASE WHEN gender = 0 THEN 1 ELSE 0 END) manTotal, SUM(CASE WHEN gender = 1 THEN 1 ELSE 0 END) womenTotal, SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 1 AND 20 THEN 1 ELSE 0 END) AS tenAge, SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 30 THEN 1 ELSE 0 END) AS twentyAge, SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 40 THEN 1 ELSE 0 END) AS ThirtyAge, SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 41 AND 50 THEN 1 ELSE 0 END) AS fortyAge, SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) >= 51 THEN 1 ELSE 0 END) AS fiftyAge FROM t_member WHERE del_flag = 0 AND binding_flag = 1 <if test="param.shopId != null and param.shopId != ''"> AND relation_shop_id = #{param.shopId} </if> <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND relation_shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> <if test="param.ageType !=null and param.ageType == 1"> AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 1 AND 20 </if> <if test="param.ageType !=null and param.ageType == 2"> AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 30 </if> <if test="param.ageType !=null and param.ageType == 3"> AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 40 </if> <if test="param.ageType !=null and param.ageType == 4"> AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 41 AND 50 </if> <if test="param.ageType !=null and param.ageType == 5"> AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) >= 51 </if> </select> </mapper> ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerTotalController.java
@@ -2,7 +2,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.order.domain.vo.MerOrderTotalVo; import com.ruoyi.order.domain.vo.*; import com.ruoyi.order.service.order.OrderService; import com.ruoyi.system.api.domain.dto.MerTotalDto; import io.swagger.annotations.Api; @@ -38,6 +38,39 @@ return R.ok(orderTotalVo); } @RequestMapping(value = "/getMerOrderDistributionTotal", method = RequestMethod.POST) @ApiOperation(value = "商户获取订单分布统计") public R<MerOrderDistributionTotalVo> getMerOrderDistributionTotal(@RequestBody MerTotalDto merTotalDto) { Long userId = SecurityUtils.getUserId(); merTotalDto.setUserId(userId); MerOrderDistributionTotalVo orderTotalVo = orderService.MerOrderDistributionTotalVo(merTotalDto); return R.ok(orderTotalVo); } @RequestMapping(value = "/getMerOrderTypeTotal", method = RequestMethod.POST) @ApiOperation(value = "商户获取销售占比统计") public R<MerOrderTypeTotalVo> getMerOrderTypeTotal(@RequestBody MerTotalDto merTotalDto) { Long userId = SecurityUtils.getUserId(); merTotalDto.setUserId(userId); MerOrderTypeTotalVo orderTotalVo = orderService.getMerOrderTypeTotal(merTotalDto); return R.ok(orderTotalVo); } @RequestMapping(value = "/getMerOrderGoodsRank", method = RequestMethod.POST) @ApiOperation(value = "商户获取销售排行") public R<MerOrderGoodsRankVo> getMerOrderGoodsRank(@RequestBody MerTotalDto merTotalDto) { Long userId = SecurityUtils.getUserId(); merTotalDto.setUserId(userId); MerOrderGoodsRankVo orderTotalVo = orderService.getMerOrderGoodsRank(merTotalDto); return R.ok(orderTotalVo); } @RequestMapping(value = "/getMerOrderFromRank", method = RequestMethod.POST) @ApiOperation(value = "商户获取渠道排行") public R<MerOrderFromRankVo> getMerOrderFromRank(@RequestBody MerTotalDto merTotalDto) { Long userId = SecurityUtils.getUserId(); merTotalDto.setUserId(userId); MerOrderFromRankVo orderTotalVo = orderService.getMerOrderFromRank(merTotalDto); return R.ok(orderTotalVo); } } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java
@@ -442,10 +442,47 @@ /** * @description getTotalOrderTotalOrderFrom * @param mgtBaseShopDto * @param merTotalDto * @return MgtTotalOrderTotalVo * @author jqs34 * @date 2023/6/19 22:24 */ MerOrderTotalVo getMerOrderTotalOrderFrom(@Param("param") MgtBaseShopDto mgtBaseShopDto); MerOrderTotalVo getMerOrderTotalOrderFrom(@Param("param")MerTotalDto merTotalDto); /** * @description 获取各年龄层统计 * @author jqs * @date 2023/7/4 10:27 * @param userIdList * @return MgtMapTotalPlusVo */ MgtMapTotalPlusVo listMerOrderDistributionTotal(@Param("userIdList")List<Long> userIdList); /** * @description 商户获取销售占比统计 * @param merTotalDto * @return List<MgtMapIntTotalVo> * @author jqs34 * @date 2023/6/19 22:48 */ List<MgtMapTotalPlusVo> listMerOrderTotalGoodsType(@Param("param")MerTotalDto merTotalDto); /** * @description 商户获取销售排名 * @param merTotalDto * @return List<MgtMapIntTotalVo> * @author jqs34 * @date 2023/6/19 22:48 */ List<MgtMapBigTotalVo> listMerOrderTotalGoodsRank(@Param("param")MerTotalDto merTotalDto); /** * @description listTotalOrderTotalOrderFrom * @param merTotalDto * @return List<MgtMapIntTotalVo> * @author jqs34 * @date 2023/6/19 22:48 */ List<MgtMapBigTotalVo> listMerOrderTotalOrderFrom(@Param("param")MerTotalDto merTotalDto); } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -2053,8 +2053,181 @@ merTotalDto.setShopIdList(shopIdList); merTotalDto.setShopId(null); } MerOrderTotalVo orderTotalVo = new MerOrderTotalVo(); if(merTotalDto.getShopAllFlag()!=null&&merTotalDto.getShopAllFlag()==1){ List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData(); merTotalDto.setShopIdList(shopIdList); merTotalDto.setShopId(null); } MerOrderTotalVo orderTotalVo = orderMapper.getMerOrderTotalOrderFrom(merTotalDto); return orderTotalVo; } /** * @description * @author jqs * @date 2023/7/4 9:29 * @param merTotalDto * @return MerOrderDistributionTotalVo */ @Override public MerOrderDistributionTotalVo MerOrderDistributionTotalVo(MerTotalDto merTotalDto){ if(merTotalDto.getShopAllFlag()!=null&&merTotalDto.getShopAllFlag()==1){ List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData(); merTotalDto.setShopIdList(shopIdList); merTotalDto.setShopId(null); } MerOrderDistributionTotalVo orderDistributionTotalVo = new MerOrderDistributionTotalVo(); // 获取订单年龄用户列表 List<MerOrderAgeUserVo> orderAgeUserVoList = remoteMemberService.listOrderAgeUser(merTotalDto).getData(); // 如果订单年龄用户列表不为空 if (orderAgeUserVoList != null && !orderAgeUserVoList.isEmpty()) { // 定义变量 Integer ageType; List<Long> userIdList; MerOrderAgeUserVo orderAgeUserVo; MgtMapTotalPlusVo mgtMapTotalPlusVo; String[] orderTotalKey = new String[5]; Integer[] orderTotalValue = new Integer[5]; BigDecimal[] orderMoneyValue = new BigDecimal[5]; // 遍历订单年龄用户列表 for (int i = 0; i < orderAgeUserVoList.size(); i++) { orderAgeUserVo = orderAgeUserVoList.get(i); ageType = orderAgeUserVo.getAgeType(); userIdList = orderAgeUserVo.getUserIdList(); // 根据年龄类型设置订单总数键 switch (ageType) { case 1: orderTotalKey[i] = "<20"; break; case 2: orderTotalKey[i] = "21-30"; break; case 3: orderTotalKey[i] = "31-40"; break; case 4: orderTotalKey[i] = "41-50"; break; case 5: orderTotalKey[i] = ">50"; break; } // 如果用户ID列表不为空 if (userIdList != null && !userIdList.isEmpty()) { mgtMapTotalPlusVo = orderMapper.listMerOrderDistributionTotal(userIdList); orderTotalValue[i] = mgtMapTotalPlusVo.getMapValueFirst(); orderMoneyValue[i] = mgtMapTotalPlusVo.getMapValueSecond(); } else { orderTotalValue[i] = 0; orderMoneyValue[i] = BigDecimal.ZERO; } } // 设置订单分布总数对象的属性值 orderDistributionTotalVo.setOrderTotalKey(orderTotalKey); orderDistributionTotalVo.setOrderTotalValue(orderTotalValue); orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue); } // 返回订单分布总数对象 return orderDistributionTotalVo; } /** * @description 商户获取销售占比统计 * @author jqs * @date 2023/7/4 13:58 * @param merTotalDto * @return MerOrderTypeTotalVo */ @Override public MerOrderTypeTotalVo getMerOrderTypeTotal(MerTotalDto merTotalDto){ if(merTotalDto.getShopAllFlag()!=null&&merTotalDto.getShopAllFlag()==1){ List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData(); merTotalDto.setShopIdList(shopIdList); merTotalDto.setShopId(null); } MerOrderTypeTotalVo orderTypeTotalVo = new MerOrderTypeTotalVo(); //获取商品分类销售数据 List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listMerOrderTotalGoodsType(merTotalDto); List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>(); List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>(); if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) { MgtMapIntTotalVo MgtMapIntTotalVo; MgtMapBigTotalVo mgtMapBigTotalVo; // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) { MgtMapIntTotalVo = new MgtMapIntTotalVo(); mgtMapBigTotalVo = new MgtMapBigTotalVo(); MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()); if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) { MgtMapIntTotalVo.setMapKey("周期"); mgtMapBigTotalVo.setMapKey("周期"); } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) { MgtMapIntTotalVo.setMapKey("服务"); mgtMapBigTotalVo.setMapKey("服务"); } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) { MgtMapIntTotalVo.setMapKey("体验"); mgtMapBigTotalVo.setMapKey("体验"); } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) { MgtMapIntTotalVo.setMapKey("单品"); mgtMapBigTotalVo.setMapKey("单品"); } goodsTypeTotalList.add(MgtMapIntTotalVo); goodsTypeMoneyList.add(mgtMapBigTotalVo); } orderTypeTotalVo.setGoodsTypeTotalList(goodsTypeTotalList); orderTypeTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList); } return orderTypeTotalVo; } /** * @description 商户端获取销售排行 * @author jqs * @date 2023/7/4 14:23 * @param merTotalDto * @return MerOrderGoodsRankVo */ @Override public MerOrderGoodsRankVo getMerOrderGoodsRank(MerTotalDto merTotalDto){ if(merTotalDto.getShopAllFlag()!=null&&merTotalDto.getShopAllFlag()==1){ List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData(); merTotalDto.setShopIdList(shopIdList); merTotalDto.setShopId(null); } MerOrderGoodsRankVo orderGoodsRankVo = new MerOrderGoodsRankVo(); List<MgtMapBigTotalVo> goodsRankList = orderMapper.listMerOrderTotalGoodsRank(merTotalDto); if (goodsRankList != null && goodsRankList.size() > 0) { goodsRankList = bigListRemoveNull(goodsRankList); orderGoodsRankVo.setGoodsRankList(goodsRankList); } return orderGoodsRankVo; } /** * @description 商户端获取渠道排行 * @author jqs * @date 2023/7/4 14:51 * @param merTotalDto * @return MerOrderFromRankVo */ @Override public MerOrderFromRankVo getMerOrderFromRank(MerTotalDto merTotalDto){ if(merTotalDto.getShopAllFlag()!=null&&merTotalDto.getShopAllFlag()==1){ List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData(); merTotalDto.setShopIdList(shopIdList); merTotalDto.setShopId(null); } MerOrderFromRankVo merOrderFromRankVo = new MerOrderFromRankVo(); //获取来源销售排名 List<MgtMapBigTotalVo> orderFromList = orderMapper.listMerOrderTotalOrderFrom(merTotalDto); if (orderFromList != null && orderFromList.size() > 0) { orderFromList = bigListRemoveNull(orderFromList); merOrderFromRankVo.setOrderFromRankList(orderFromList); } return merOrderFromRankVo; } } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
@@ -298,11 +298,47 @@ BigDecimal getMemberUnpaidOrder(MerBaseDto merBaseDto); /** * @description 商户获取订单统计 * @description 商户端获取订单统计 * @author jqs * @date 2023/7/3 19:29 * @param merTotalDto * @return MerOrderTotalVo */ MerOrderTotalVo getMerOrderTotal(MerTotalDto merTotalDto); /** * @description 商户端获取订单分布统计 * @author jqs * @date 2023/7/4 9:29 * @param merTotalDto * @return MerOrderDistributionTotalVo */ MerOrderDistributionTotalVo MerOrderDistributionTotalVo(MerTotalDto merTotalDto); /** * @description 商户端获取销售占比统计 * @author jqs * @date 2023/7/4 13:58 * @param merTotalDto * @return MerOrderTypeTotalVo */ MerOrderTypeTotalVo getMerOrderTypeTotal(MerTotalDto merTotalDto); /** * @description 商户端获取销售排行 * @author jqs * @date 2023/7/4 14:23 * @param merTotalDto * @return MerOrderGoodsRankVo */ MerOrderGoodsRankVo getMerOrderGoodsRank(MerTotalDto merTotalDto); /** * @description 商户端获取渠道排行 * @author jqs * @date 2023/7/4 14:51 * @param merTotalDto * @return MerOrderFromRankVo */ MerOrderFromRankVo getMerOrderFromRank(MerTotalDto merTotalDto); } ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -735,7 +735,7 @@ AND toc.create_time <= #{param.endDate} </if> GROUP BY toc.order_from ORDER BY SUM(toc.order_money) DESC LIMIT 10 ORDER BY SUM(toc.order_money) DESC LIMIT 15 </select> <select id="getTotalActivityTotal" resultType="com.ruoyi.order.domain.vo.MgtTotalActivityTotalVo"> @@ -1258,4 +1258,98 @@ AND create_time <= #{param.endDate} </if> </select> <select id="listMerOrderDistributionTotal" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo"> SELECT COUNT(order_id) AS mapValueFirst, IFNULL(SUM(order_money),0) AS mapValueSecond FROM t_order WHERE del_flag = 0 AND user_id IN <foreach collection="userIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </select> <select id="listMerOrderTotalGoodsType" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo"> SELECT tog.goods_type mapKey, COUNT(DISTINCT toc.order_id) AS mapValueFirst, IFNULL(SUM(tog.goods_total_money),0) AS mapValueSecond FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id WHERE toc.del_flag = 0 <if test="param.shopId != null and param.shopId != ''"> AND toc.shop_id = #{param.shopId} </if> <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND toc.shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> <if test="param.startDate!=null and param.startDate!=''"> AND toc.create_time >= #{param.startDate} </if> <if test="param.endDate!=null and param.endDate!=''"> AND toc.create_time <= #{param.endDate} </if> GROUP BY tog.goods_type </select> <select id="listMerOrderTotalGoodsRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapBigTotalVo"> SELECT tog.goods_name mapKey, IFNULL(SUM(tog.goods_total_money),0) mapValue FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id WHERE toc.del_flag = 0 <if test="param.shopId != null and param.shopId != ''"> AND toc.shop_id = #{param.shopId} </if> <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND toc.shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> <if test="param.startDate!=null and param.startDate!=''"> AND toc.create_time >= #{param.startDate} </if> <if test="param.endDate!=null and param.endDate!=''"> AND toc.create_time <= #{param.endDate} </if> GROUP BY tog.goods_name ORDER BY SUM(tog.goods_total_money) DESC LIMIT 10 </select> <select id="listMerOrderTotalOrderFrom" resultType="com.ruoyi.system.api.domain.vo.MgtMapBigTotalVo"> SELECT CASE toc.order_from WHEN 1 THEN "商城订单" WHEN 2 THEN "秒杀活动订单" WHEN 3 THEN "线下创建订单" END mapKey, IFNULL(SUM(toc.order_money),0) mapValue FROM t_order toc WHERE toc.del_flag = 0 <if test="param.shopId != null and param.shopId != ''"> AND toc.shop_id = #{param.shopId} </if> <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND toc.shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> <if test="param.startDate!=null and param.startDate!=''"> AND toc.create_time >= #{param.startDate} </if> <if test="param.endDate!=null and param.endDate!=''"> AND toc.create_time <= #{param.endDate} </if> GROUP BY toc.order_from ORDER BY SUM(toc.order_money) DESC LIMIT 15 </select> </mapper> ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java
@@ -80,17 +80,17 @@ @RequestMapping(value = "/getCustomConfig", method = RequestMethod.POST) @ApiOperation(value = "获取单个配置") public R<MgtCustomConfigVo> getCustomConfig(@RequestBody MgtCustomConfigDto mgtCustomConfigDto) { public R<List<String>> getCustomConfig(@RequestBody MgtCustomConfigDto mgtCustomConfigDto) { Long userId = SecurityUtils.getUserId(); mgtCustomConfigDto.setUserId(userId); MgtCustomConfigVo mgtCustomConfigVo = customConfigService.getCustomConfig(mgtCustomConfigDto); List<String> mgtCustomConfigVo = customConfigService.getCustomConfig(mgtCustomConfigDto); return R.ok(mgtCustomConfigVo); } @RequestMapping(value = "/getActivenessList", method = RequestMethod.POST) @ApiOperation(value = "获取活跃度") public R<List<String>> getActivenessList() { List<String> activenessList = activenessService.getActivenessList(); public R<List<MgtActivenessListVo>> getActivenessList() { List<MgtActivenessListVo> activenessList = activenessService.getActivenessList(); return R.ok(activenessList); } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtActivenessListVo.java
New file @@ -0,0 +1,22 @@ package com.ruoyi.system.domain.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @ClassName MgtActivnessListVo * @Description TODO * @Author jqs * @Date 2023/7/4 14:32 * @Version 1.0 */ @Data public class MgtActivenessListVo { @ApiModelProperty(value = "活跃度id") private Long activenessId; @ApiModelProperty(value = "活跃度") private String activenessName; } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtCustomConfigVo.java
@@ -3,6 +3,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * @ClassName MgtCustomConfigVo * @Description TODO @@ -27,7 +29,7 @@ private String configType; @ApiModelProperty(value = "自定义配置") private String customConfig; private List<String> customConfigList; } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/ActivenessService.java
@@ -4,6 +4,7 @@ import com.ruoyi.system.api.domain.dto.MgtBaseGetDto; import com.ruoyi.system.api.domain.poji.config.Activeness; import com.ruoyi.system.domain.dto.MgtActivenessEditDto; import com.ruoyi.system.domain.vo.MgtActivenessListVo; import java.util.List; @@ -49,7 +50,7 @@ * @param * @return List<String> */ List<String> getActivenessList(); List<MgtActivenessListVo> getActivenessList(); /** * @description 通过名称获取活跃度 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/CustomConfigService.java
@@ -6,7 +6,6 @@ import com.ruoyi.system.domain.dto.*; import com.ruoyi.system.domain.pojo.config.CustomConfig; import com.ruoyi.system.domain.vo.MgtAllCustomConfigVo; import com.ruoyi.system.domain.vo.MgtCustomConfigVo; import com.ruoyi.system.domain.vo.MgtOperLogPageVo; import java.util.List; @@ -93,7 +92,7 @@ * @param mgtCustomConfigDto * @return MgtCustomConfigVo */ MgtCustomConfigVo getCustomConfig(MgtCustomConfigDto mgtCustomConfigDto); List<String> getCustomConfig(MgtCustomConfigDto mgtCustomConfigDto); /** * @description getBulletinBoard ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/ActivenessServiceImpl.java
@@ -1,12 +1,13 @@ package com.ruoyi.system.service.impl.config; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.system.api.domain.dto.MgtBaseGetDto; import com.ruoyi.system.api.domain.poji.config.Activeness; import com.ruoyi.system.domain.dto.MgtActivenessEditDto; import com.ruoyi.system.domain.vo.MgtActivenessListVo; import com.ruoyi.system.mapper.config.ActivenessMapper; import com.ruoyi.system.service.config.ActivenessService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -89,11 +90,13 @@ * @return List<String> */ @Override public List<String> getActivenessList(){ public List<MgtActivenessListVo> getActivenessList(){ List<Activeness> activenessList = activenessMapper.selectList(new LambdaQueryWrapper<Activeness>().eq(Activeness::getDelFlag, 0)); List<String> nameList = activenessList.stream().map(activeness ->{ String name = activeness.getActivenessName(); return name; List<MgtActivenessListVo> nameList = activenessList.stream().map(activeness ->{ MgtActivenessListVo mgtActivenessListVo = new MgtActivenessListVo(); mgtActivenessListVo.setActivenessId(activeness.getActivenessId()); mgtActivenessListVo.setActivenessName(activeness.getActivenessName()); return mgtActivenessListVo; }).collect(Collectors.toList()); return nameList; } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.system.api.constant.ConfigEnum; import com.ruoyi.system.api.domain.poji.config.Activeness; import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo; @@ -15,7 +16,6 @@ import com.ruoyi.system.domain.pojo.config.CustomConfig; import com.ruoyi.system.domain.vo.MgtActivenessVo; import com.ruoyi.system.domain.vo.MgtAllCustomConfigVo; import com.ruoyi.system.domain.vo.MgtCustomConfigVo; import com.ruoyi.system.domain.vo.MgtOperLogPageVo; import com.ruoyi.system.mapper.config.CustomConfigMapper; import com.ruoyi.system.service.config.ActivenessService; @@ -485,14 +485,13 @@ * @return MgtCustomConfigVo */ @Override public MgtCustomConfigVo getCustomConfig(MgtCustomConfigDto mgtCustomConfigDto){ public List<String> getCustomConfig(MgtCustomConfigDto mgtCustomConfigDto){ CustomConfig customConfig = this.getByKey(mgtCustomConfigDto.getConfigType()); MgtCustomConfigVo mgtCustomConfigVo = new MgtCustomConfigVo(); if(customConfig!=null){ mgtCustomConfigVo.setCustomConfig(customConfig.getConfigValue()); mgtCustomConfigVo.setConfigType(mgtCustomConfigDto.getConfigType()); List<String> list = new ArrayList<>(); if(customConfig!=null&&StringUtils.isNotBlank(customConfig.getConfigValue())){ list = Arrays.asList(customConfig.getConfigValue().split(",")); } return mgtCustomConfigVo; return list; } /**