diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java index 6354f4dc0..3904f093c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java @@ -96,6 +96,9 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { @Autowired private WxProfitSharingReceiverMapper wxProfitSharingReceiverMapper; + @Autowired + private WxCouponMallMapper wxCouponMallMapper; + /** * B端业务端 * @param record @@ -596,11 +599,39 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { - private boolean isCouponMerchantValid(Long couponId,TenantEntity tenantEntity) { - List merchantVoList = wxMerchantService.findMerchantListByProduct(tenantEntity,couponId,false); - if (merchantVoList.stream().anyMatch((cm->cm.getMerchantStatus().equals(EnumMerchantStatus.VALID.getCode())))){ - return true; - } + private boolean isCouponMerchantValid(Long couponId,Integer couponType,TenantEntity couponTenantEntity) { + if (EnumCouponType.isParentCoupon(couponType)) { + WxCouponMall couponMall = new WxCouponMall(); + couponMall.updateTenantInfo(couponTenantEntity); + couponMall.setProductId(couponId); + couponMall.setStatus(EnumCouponMallStatus.FINISED.getCode()) ; + List couponMallList = wxCouponMallMapper.findList(couponMall); + if (null == couponMallList ) { + return false; + } + for (int i = 0 ; i < couponMallList.size(); i++) { + WxCouponMall wcm = couponMallList.get(i); + TenantEntity mallTenantEntity = new TenantEntity(); + mallTenantEntity.setTenantId(wcm.getMallTenantId()); + mallTenantEntity.setParentTenantId(couponTenantEntity.getTenantId()); + List merchantVoList = wxMerchantService.findMerchantListByProduct(mallTenantEntity,couponId,false); + if (null != merchantVoList && merchantVoList.size() > 0 ) { + if (merchantVoList.stream().anyMatch((cm->cm.getMerchantStatus().equals(EnumMerchantStatus.VALID.getCode())))){ + return true; + } + } + } + return false; + + }else { + List merchantVoList = wxMerchantService.findMerchantListByProduct(couponTenantEntity,couponId,false); + if (null == merchantVoList || merchantVoList.size() <=0 ) { + return false; + } + if (merchantVoList.stream().anyMatch((cm->cm.getMerchantStatus().equals(EnumMerchantStatus.VALID.getCode())))){ + return true; + } + } return false; } @@ -653,7 +684,7 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { } if(!EnumCouponType.COUPON_GIFT.getCode().equals(wxCoupon.getType()) - && !isCouponMerchantValid(wxCoupon.getId(),wxCoupon)) { + && !isCouponMerchantValid(wxCoupon.getId(),wxCoupon.getType(),wxCoupon)) { logger.debug(wxCoupon.getId()+couponid+ErrorCode.MERCHANT_INFO_NOT_FOUND.getMessage()); vo.toCouponChannnelVo(wxCoupon,channelId); vo.setErrorMsg(ErrorCode.MERCHANT_INFO_NOT_FOUND.getMessage());