Browse Source

Review代码修改

owen 1 year ago
parent
commit
a04a3a27a9

+ 12 - 8
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/coupon/CouponMapper.java

@@ -1,6 +1,6 @@
 package cn.iocoder.yudao.module.promotion.dal.mysql.coupon;
 
-import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
@@ -8,7 +8,6 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.module.promotion.controller.admin.coupon.vo.coupon.CouponPageReqVO;
 import cn.iocoder.yudao.module.promotion.dal.dataobject.coupon.CouponDO;
 import cn.iocoder.yudao.module.promotion.enums.common.PromotionProductScopeEnum;
-import cn.iocoder.yudao.module.promotion.service.coupon.bo.CouponTakeCountBO;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.github.yulichang.toolkit.MPJWrappers;
 import org.apache.ibatis.annotations.Mapper;
@@ -16,9 +15,12 @@ import org.apache.ibatis.annotations.Mapper;
 import java.time.LocalDateTime;
 import java.util.Collection;
 import java.util.List;
+import java.util.Map;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
+import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
+
 /**
  * 优惠劵 Mapper
  *
@@ -70,14 +72,16 @@ public interface CouponMapper extends BaseMapperX<CouponDO> {
         );
     }
 
-    // TODO @疯狂:这个是不是搞个 Map 就可以呀?
-    default List<CouponTakeCountBO> selectCountByUserIdAndTemplateIdIn(Long userId, Collection<Long> templateIds) {
-        return BeanUtil.copyToList(selectMaps(MPJWrappers.lambdaJoin(CouponDO.class)
-                .select(CouponDO::getTemplateId)
-                .selectCount(CouponDO::getId, CouponTakeCountBO::getCount)
+    default Map<Long, Integer> selectCountByUserIdAndTemplateIdIn(Long userId, Collection<Long> templateIds) {
+        String templateIdAlias = "templateId";
+        String countAlias = "count";
+        List<Map<String, Object>> list = selectMaps(MPJWrappers.lambdaJoin(CouponDO.class)
+                .selectAs(CouponDO::getTemplateId, templateIdAlias)
+                .selectCount(CouponDO::getId, countAlias)
                 .eq(CouponDO::getUserId, userId)
                 .in(CouponDO::getTemplateId, templateIds)
-                .groupBy(CouponDO::getTemplateId)), CouponTakeCountBO.class);
+                .groupBy(CouponDO::getTemplateId));
+        return convertMap(list, map -> MapUtil.getLong(map, templateIdAlias), map -> MapUtil.getInt(map, countAlias));
     }
 
     default List<CouponDO> selectListByUserIdAndStatusAndUsePriceLeAndProductScope(

+ 4 - 21
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponService.java

@@ -1,18 +1,16 @@
 package cn.iocoder.yudao.module.promotion.service.coupon;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.map.MapUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.module.promotion.controller.admin.coupon.vo.coupon.CouponPageReqVO;
 import cn.iocoder.yudao.module.promotion.controller.app.coupon.vo.coupon.AppCouponMatchReqVO;
 import cn.iocoder.yudao.module.promotion.dal.dataobject.coupon.CouponDO;
 import cn.iocoder.yudao.module.promotion.dal.dataobject.coupon.CouponTemplateDO;
 import cn.iocoder.yudao.module.promotion.enums.coupon.CouponTakeTypeEnum;
-import cn.iocoder.yudao.module.promotion.service.coupon.bo.CouponTakeCountBO;
 
 import java.util.*;
 
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
-
 /**
  * 优惠劵 Service 接口
  *
@@ -132,23 +130,8 @@ public interface CouponService {
      * @return 领取优惠券的数量
      */
     default Integer getTakeCount(Long templateId, Long userId) {
-        return CollUtil.emptyIfNull(getTakeCountListByTemplateIds(Collections.singleton(templateId), userId))
-                .stream()
-                .findFirst()
-                .map(CouponTakeCountBO::getCount)
-                .orElse(0);
-    }
-
-    /**
-     * 统计会员领取优惠券的数量
-     *
-     * @param templateIds 优惠券模板编号列表
-     * @param userId      用户编号
-     * @return 领取优惠券的数量
-     */
-    default Map<Long, Integer> getTakeCountMapByTemplateIds(Collection<Long> templateIds, Long userId) {
-        return convertMap(getTakeCountListByTemplateIds(templateIds, userId),
-                CouponTakeCountBO::getTemplateId, CouponTakeCountBO::getCount);
+        Map<Long, Integer> map = getTakeCountMapByTemplateIds(Collections.singleton(templateId), userId);
+        return MapUtil.getInt(map, templateId, 0);
     }
 
     /**
@@ -158,7 +141,7 @@ public interface CouponService {
      * @param userId      用户编号
      * @return 领取优惠券的数量
      */
-    List<CouponTakeCountBO> getTakeCountListByTemplateIds(Collection<Long> templateIds, Long userId);
+    Map<Long, Integer> getTakeCountMapByTemplateIds(Collection<Long> templateIds, Long userId);
 
     /**
      * 获取用户匹配的优惠券列表

+ 3 - 8
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponServiceImpl.java

@@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.promotion.service.coupon;
 
 import cn.hutool.core.collection.CollStreamUtil;
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
@@ -21,7 +20,6 @@ import cn.iocoder.yudao.module.promotion.dal.mysql.coupon.CouponMapper;
 import cn.iocoder.yudao.module.promotion.enums.coupon.CouponStatusEnum;
 import cn.iocoder.yudao.module.promotion.enums.coupon.CouponTakeTypeEnum;
 import cn.iocoder.yudao.module.promotion.enums.coupon.CouponTemplateValidityTypeEnum;
-import cn.iocoder.yudao.module.promotion.service.coupon.bo.CouponTakeCountBO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -29,10 +27,7 @@ import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -191,9 +186,9 @@ public class CouponServiceImpl implements CouponService {
     }
 
     @Override
-    public List<CouponTakeCountBO> getTakeCountListByTemplateIds(Collection<Long> templateIds, Long userId) {
+    public Map<Long, Integer> getTakeCountMapByTemplateIds(Collection<Long> templateIds, Long userId) {
         if (CollUtil.isEmpty(templateIds)) {
-            return ListUtil.empty();
+            return Collections.emptyMap();
         }
         return couponMapper.selectCountByUserIdAndTemplateIdIn(userId, templateIds);
     }

+ 0 - 22
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/coupon/bo/CouponTakeCountBO.java

@@ -1,22 +0,0 @@
-package cn.iocoder.yudao.module.promotion.service.coupon.bo;
-
-import lombok.Data;
-
-/**
- * 优惠券领取数量 BO
- *
- * @author owen
- */
-@Data
-public class CouponTakeCountBO {
-
-    /**
-     * 优惠劵模板编号
-     */
-    private Long templateId;
-    /**
-     * 领取数量
-     */
-    private Integer count;
-
-}

+ 0 - 2
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/trade/TradeStatisticsController.java

@@ -32,7 +32,6 @@ public class TradeStatisticsController {
     @Resource
     private TradeStatisticsService tradeStatisticsService;
 
-    // TODO @疯狂:要不这个就是 /trend/summary 的特例,前端自己查询两次?
     @GetMapping("/summary")
     @Operation(summary = "获得交易统计")
     @PreAuthorize("@ss.hasPermission('statistics:trade:query')")
@@ -40,7 +39,6 @@ public class TradeStatisticsController {
         return success(tradeStatisticsService.getTradeSummaryComparison());
     }
 
-    // TODO @疯狂:直接 comparison?主要 trend 和 comparison 二选一,一个是数据趋势,一个是数据对比哈;
     @GetMapping("/trend/summary")
     @Operation(summary = "获得交易状况统计")
     @PreAuthorize("@ss.hasPermission('statistics:trade:query')")