Review代码修改

This commit is contained in:
owen 2023-09-30 23:41:11 +08:00
parent 7d68bdc7c8
commit a04a3a27a9
5 changed files with 19 additions and 61 deletions

View File

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

View File

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

View File

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

View File

@ -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;
}

View File

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