mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 04:08:43 +08:00 
			
		
		
		
	【代码评审】商城:满减送的校验逻辑
This commit is contained in:
		@@ -16,7 +16,7 @@ public interface RewardActivityApi {
 | 
			
		||||
     * 获得当前时间内开启的满减送活动
 | 
			
		||||
     *
 | 
			
		||||
     * @param status   状态
 | 
			
		||||
     * @param dateTime 时间
 | 
			
		||||
     * @param dateTime 当前时间,即筛选 <= dateTime 的满减送活动
 | 
			
		||||
     * @return 满减送活动列表
 | 
			
		||||
     */
 | 
			
		||||
    List<RewardActivityMatchRespDTO> getRewardActivityListByStatusAndNow(Integer status, LocalDateTime dateTime);
 | 
			
		||||
 
 | 
			
		||||
@@ -28,8 +28,8 @@ public interface RewardActivityMapper extends BaseMapperX<RewardActivityDO> {
 | 
			
		||||
    default List<RewardActivityDO> selectListByStatusAndDateTimeLt(Integer status, LocalDateTime dateTime) {
 | 
			
		||||
        return selectList(new LambdaQueryWrapperX<RewardActivityDO>()
 | 
			
		||||
                .eq(RewardActivityDO::getStatus, status)
 | 
			
		||||
                .lt(RewardActivityDO::getStartTime, dateTime)
 | 
			
		||||
                .gt(RewardActivityDO::getEndTime, dateTime)// 开始时间 < 指定时间 < 结束时间,也就是说获取指定时间段的活动
 | 
			
		||||
                // 开始时间 < 指定时间(dateTime) < 结束时间,也就是说获取指定时间段的活动
 | 
			
		||||
                .lt(RewardActivityDO::getStartTime, dateTime).gt(RewardActivityDO::getEndTime, dateTime)
 | 
			
		||||
                .orderByAsc(RewardActivityDO::getStartTime)
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -121,6 +121,8 @@ public class RewardActivityServiceImpl implements RewardActivityService {
 | 
			
		||||
            list.removeIf(activity -> id.equals(activity.getId()));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // TODO @puhui999:这个可能要完整对标有赞的校验。完全不允许重叠。
 | 
			
		||||
        // 例如说,rewardActivity 是全部活动,结果有个 db 里的 activity 是某个分类,它也是冲突的。也就是说,当前时间段内,有且仅有只能有一个活动!
 | 
			
		||||
        for (RewardActivityDO item : list) {
 | 
			
		||||
            // 1.1 校验满减送活动时间是否冲突,如果时段不冲突那么不同的时间段内则可以存在相同的商品范围
 | 
			
		||||
            if (!LocalDateTimeUtil.isOverlap(item.getStartTime(), item.getEndTime(),
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user