|  | @@ -10,6 +10,7 @@ import com.yonge.cooleshow.biz.dal.entity.CouponInventory;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.entity.CouponIssue;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.entity.SysUser;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.enums.MK;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.enums.coupon.CouponInventoryEnum;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.enums.coupon.CouponUseStateEnum;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.enums.coupon.CouponValidTypeEnum;
 | 
	
	
		
			
				|  | @@ -37,7 +38,6 @@ import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  |  import java.util.List;
 | 
	
		
			
				|  |  |  import java.util.Map;
 | 
	
		
			
				|  |  |  import java.util.Objects;
 | 
	
		
			
				|  |  | -import java.util.Optional;
 | 
	
		
			
				|  |  |  import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
	
		
			
				|  | @@ -106,8 +106,7 @@ public class CouponInfoServiceImp extends ServiceImpl<CouponInfoMapper, CouponIn
 | 
	
		
			
				|  |  |          for (CouponInfoWrapper item : wrappers) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              if (CouponValidTypeEnum.TIME_PERIOD == item.getValidType()
 | 
	
		
			
				|  |  | -                    && Optional.ofNullable(item.getEndTime()).orElse(0L) > 0
 | 
	
		
			
				|  |  | -                    && DateTime.now().getMillis() > item.getEndTime()) {
 | 
	
		
			
				|  |  | +                    && Integer.parseInt(DateTime.now().toString(MK.YYYYMMDD)) > Integer.parseInt(new DateTime(item.getEndTime()).toString(MK.YYYYMMDD))) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  updateIds.add(item.getId());
 | 
	
		
			
				|  |  |                  // 更新显示状态为禁用
 | 
	
	
		
			
				|  | @@ -159,11 +158,12 @@ public class CouponInfoServiceImp extends ServiceImpl<CouponInfoMapper, CouponIn
 | 
	
		
			
				|  |  |       * 新增或更新优惠券信息
 | 
	
		
			
				|  |  |       *
 | 
	
		
			
				|  |  |       * @param couponInfo CouponInfo
 | 
	
		
			
				|  |  | +     * @param stateUpdate 更新标识
 | 
	
		
			
				|  |  |       * @return CouponInfo
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    public CouponInfo saveOrUpdateCouponInfo(CouponInfo couponInfo) {
 | 
	
		
			
				|  |  | +    public CouponInfo saveOrUpdateCouponInfo(CouponInfo couponInfo, Boolean stateUpdate) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (Objects.isNull(couponInfo.getId())) {
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -191,40 +191,51 @@ public class CouponInfoServiceImp extends ServiceImpl<CouponInfoMapper, CouponIn
 | 
	
		
			
				|  |  |                  throw new BizException("无效的优惠券ID");
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            // 优惠券已过期
 | 
	
		
			
				|  |  | -            if (CouponValidTypeEnum.TIME_PERIOD == info.getValidType()
 | 
	
		
			
				|  |  | -                    && Optional.ofNullable(info.getEndTime()).orElse(0L) > 0
 | 
	
		
			
				|  |  | -                    && DateTime.now().getMillis() > info.getEndTime()) {
 | 
	
		
			
				|  |  | +            if (stateUpdate) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                throw new BizException("已过期优惠券不允许修改");
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | +                // 优惠券状态更新
 | 
	
		
			
				|  |  | +                if (EStatus.ENABLE.match(couponInfo.getStatus())
 | 
	
		
			
				|  |  | +                        && CouponValidTypeEnum.TIME_PERIOD == info.getValidType()
 | 
	
		
			
				|  |  | +                        && Integer.parseInt(DateTime.now().toString(MK.YYYYMMDD)) > Integer.parseInt(new DateTime(info.getEndTime()).toString(MK.YYYYMMDD))) {
 | 
	
		
			
				|  |  | +                    throw new BizException("已过期优惠券不允许修改");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            // 优惠券未过期,已发放不允许修复
 | 
	
		
			
				|  |  | -            List<Long> couponIds = Lists.newArrayList(couponInfo.getId());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            int ret = 0;
 | 
	
		
			
				|  |  | -            // 查询优惠券发放人数
 | 
	
		
			
				|  |  | -            ret += getBaseMapper().selectCouponIssueStatInfo(couponIds,
 | 
	
		
			
				|  |  | -                            CouponInfoQuery.IssueStatQuery.builder()
 | 
	
		
			
				|  |  | -                                    .excludeUseState(Lists.newArrayList(CouponUseStateEnum.WITHDRAW)).build()).stream()
 | 
	
		
			
				|  |  | -                    .mapToInt(StatGroupWrapper::getTotal).sum();
 | 
	
		
			
				|  |  | -            if (ret > 0) {
 | 
	
		
			
				|  |  | -                throw new BizException("已发放优惠券不允许修改");
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            // 关联奖品数
 | 
	
		
			
				|  |  | -            ret += getBaseMapper().selectActivityCouponStatInfo(couponIds).stream()
 | 
	
		
			
				|  |  | -                    .mapToInt(StatGroupWrapper::getTotal).sum();
 | 
	
		
			
				|  |  | +                // 优惠券已过期
 | 
	
		
			
				|  |  | +                if (CouponValidTypeEnum.TIME_PERIOD == info.getValidType()
 | 
	
		
			
				|  |  | +                        && Integer.parseInt(DateTime.now().toString(MK.YYYYMMDD)) > Integer.parseInt(new DateTime(info.getEndTime()).toString(MK.YYYYMMDD))) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            if (ret > 0) {
 | 
	
		
			
				|  |  | -                throw new BizException("已关联奖品优惠券不允许修改");
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | +                    throw new BizException("已过期优惠券不允许修改");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                // 优惠券未过期,已发放不允许修复
 | 
	
		
			
				|  |  | +                List<Long> couponIds = Lists.newArrayList(info.getId());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                int ret = 0;
 | 
	
		
			
				|  |  | +                // 查询优惠券发放人数
 | 
	
		
			
				|  |  | +                ret += getBaseMapper().selectCouponIssueStatInfo(couponIds,
 | 
	
		
			
				|  |  | +                                CouponInfoQuery.IssueStatQuery.builder()
 | 
	
		
			
				|  |  | +                                        .excludeUseState(Lists.newArrayList(CouponUseStateEnum.WITHDRAW)).build()).stream()
 | 
	
		
			
				|  |  | +                        .mapToInt(StatGroupWrapper::getTotal).sum();
 | 
	
		
			
				|  |  | +                if (ret > 0) {
 | 
	
		
			
				|  |  | +                    throw new BizException("已发放优惠券不允许修改");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            // 启用状态不允许修改
 | 
	
		
			
				|  |  | -            if (Objects.isNull(couponInfo.getStatus())
 | 
	
		
			
				|  |  | -                    && EStatus.ENABLE.match(info.getStatus())) {
 | 
	
		
			
				|  |  | +                // 关联奖品数
 | 
	
		
			
				|  |  | +                ret += getBaseMapper().selectActivityCouponStatInfo(couponIds).stream()
 | 
	
		
			
				|  |  | +                        .mapToInt(StatGroupWrapper::getTotal).sum();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (ret > 0) {
 | 
	
		
			
				|  |  | +                    throw new BizException("已关联奖品优惠券不允许修改");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                // 启用状态不允许修改
 | 
	
		
			
				|  |  | +                if (EStatus.ENABLE.match(info.getStatus())) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    throw new BizException("已启用优惠券不允许修改");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                throw new BizException("已启用优惠券不允许修改");
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              // 更新优惠券
 | 
	
	
		
			
				|  | @@ -270,11 +281,6 @@ public class CouponInfoServiceImp extends ServiceImpl<CouponInfoMapper, CouponIn
 | 
	
		
			
				|  |  |                  .couponInfos(Lists.newArrayList())
 | 
	
		
			
				|  |  |                  .build();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        if (CollectionUtils.isEmpty(query.getIssueIds())) {
 | 
	
		
			
				|  |  | -            // 直接返回默认数据
 | 
	
		
			
				|  |  | -            return wrapper;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          // 查询用户订单优惠券信息
 | 
	
		
			
				|  |  |          List<CouponOrderWrapper.CouponInfo> couponInfos = getBaseMapper().selectUserOrderCouponInfo(userId, query);
 | 
	
		
			
				|  |  |  
 |