From 0317b976b39c7fb6aa773252066379e60e0df008 Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 15 Oct 2021 15:00:06 +0800 Subject: [PATCH] update gift --- .../controller/WxCouponOrderController.java | 2 +- .../controller/WxCouponOrderController.java | 6 +- .../iformall/enums/EnumCouponVerifyType.java | 2 + .../service/WxCouponOrderService.java | 11 +- .../impl/WxCouponOrderServiceImpl.java | 224 ++++++++---------- .../service/impl/WxOrderServiceImpl.java | 27 ++- .../CouponPackageOrderAdapterService.java | 44 ---- 7 files changed, 128 insertions(+), 188 deletions(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java index 12a8e6e6b..a0d9641fe 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java @@ -338,7 +338,7 @@ public class WxCouponOrderController extends BaseController { WxCouponOrder couponOrder = null; try { wxCouponOrder.setVerifyRemark(verifyRemark); - couponOrder = wxCouponOrderService.verify(wxCouponOrder, wxMerchantBUser); + couponOrder = wxCouponOrderService.verify(wxCouponOrder, wxMerchantBUser, EnumCouponVerifyType.VERIFY_B); } catch (MallinkException e) { logger.error("核销异常: " + e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage()); diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java index 7e161f7f2..895f2221d 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java @@ -475,7 +475,7 @@ public class WxCouponOrderController extends BaseController { } WxCouponOrder couponOrder = null; try { - couponOrder = wxCouponOrderService.verify(wxCouponOrder); + couponOrder = wxCouponOrderService.verify(wxCouponOrder,null,EnumCouponVerifyType.VERIFY_C); } catch (MallinkException e) { logger.error("核销异常: " + e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage()); @@ -484,6 +484,10 @@ public class WxCouponOrderController extends BaseController { return new ResultData(ErrorCode.VERIFY_ERROR, e.getMessage()); } + if (couponOrder != null) { + wxCouponOrderService.sendInsideCouponVerifyMsg(couponOrder, couponOrderId, couponOrder.getMerchantId()); + } + return new ResultData(couponOrder); } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCouponVerifyType.java b/mallinkService/src/main/java/com/iformall/enums/EnumCouponVerifyType.java index 764183525..32eba96d2 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumCouponVerifyType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCouponVerifyType.java @@ -16,6 +16,8 @@ public enum EnumCouponVerifyType { VERIFY_POS_PAY(2, "POS交易核销"), VERIFY_C(3,"用户自主核销"), + + VERIFY_AUTO(4,"系统自动核销"), ; public static EnumCouponVerifyType getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java index eeec70312..94b1e0b70 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java @@ -6,6 +6,7 @@ import com.iformall.common.ResultData; import com.iformall.domain.po.*; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.*; +import com.iformall.enums.EnumCouponVerifyType; import com.iformall.enums.EnumPayWay; import com.iformall.service.order.entity.WxComposeOrder; @@ -55,15 +56,7 @@ public interface WxCouponOrderService { * @param couponOrder * @param bUser 核销人(登录用户) */ - WxCouponOrder verify(WxCouponOrder couponOrder, WxMerchantBUser bUser); - - /** - * 根据主键couponOrderId(券码)核销 - * C端自主核销 - * - * @param couponOrder - */ - WxCouponOrder verify(WxCouponOrder couponOrder); + WxCouponOrder verify(WxCouponOrder couponOrder, WxMerchantBUser bUser, EnumCouponVerifyType couponVerifyType); /** * 核销后发送消息 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java index 610d99558..6bab2bff8 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -1,8 +1,8 @@ package com.iformall.service.impl; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.aliyun.openservices.shade.com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; @@ -392,7 +392,11 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public WxCouponOrder verify(WxCouponOrder couponOrder, WxMerchantBUser bUser) { + public WxCouponOrder verify(WxCouponOrder couponOrder, WxMerchantBUser bUser, EnumCouponVerifyType couponVerifyType) { + if(EnumCouponVerifyType.VERIFY_B.equals(couponVerifyType) && bUser == null){ + logger.error("B端核销未传入门店"); + throw new MallinkException(ErrorCode.VERIFY_ERROR); + } // 1. 获取券信息 WxCoupon wxCoupon = wxCouponMapper.selectById(couponOrder.getCouponId(),couponOrder.getTenantId()); @@ -423,45 +427,82 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } // 2. 检查适用门店 - WxCouponMerchant wxCouponMerchant = new WxCouponMerchant(); - wxCouponMerchant.setProductId(wxCoupon.getId()); - wxCouponMerchant.setStatus(EnumCouponMerchantStatus.COUPON_MERCHANT_STATUS_VALID.getCode()); - List couponMerchantList = wxCouponMerchantMapper.findList(wxCouponMerchant); - if (!couponMerchantList.stream().anyMatch(cm -> cm.getMerchantId().equals(bUser.getMerchantId()))) { - logger.error("券: coupon-" + wxCoupon.getId() + "核销: couponMerchantId-" + bUser.getMerchantId()); - throw new MallinkException(ErrorCode.VERIFY_COUPON_ORDER_MERCHANT_IS_NULL); - } - - //如果开启了分账,就必须要配置分账账号 - WxAppinfo appInfo = getAppinfo(couponOrder,couponOrder.getPayVendor()); - WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); - WxProfitSharingReceiver psReceiverQ = new WxProfitSharingReceiver(); - psReceiverQ.updateTenantInfo(payAccount); - psReceiverQ.setMerchantId(bUser.getMerchantId()); - psReceiverQ.setSharingType(payServiceFactory.getPayShareAdapterService(couponOrder.getPayVendor()).getProfitSharingType()); - psReceiverQ.setStatus(EnumProfitSharingReceiverStatus.PROFIT_SHARING_RECEIVER_STATUS_VALID.getCode()); - List psReceiverList = wxProfitSharingReceiverMapper.findList(psReceiverQ); - if (null == payAccount.getShare()) { - throw new MallinkException(ErrorCode.PROFIT_SHARING_RECEIVER_INVALID.getCode(),"该租户payAccount未设置分账."); - } - if (EnumPayShare.YES.getCode().intValue() == payAccount.getShare().intValue()) { - if (null == psReceiverList || psReceiverList.size() == 0) { - throw new MallinkException(ErrorCode.PROFIT_SHARING_RECEIVER_INVALID.getCode(),"该商户未设置分账账号."); - }else { - for (WxProfitSharingReceiver receiver:psReceiverList) { - if (EnumProfitSharingReceiverType.PROFIT_SHARING_RECEIVER_PERSONAL_WECHATID.getCode().intValue() - == receiver.getReceiverType().intValue()) { - throw new MallinkException(ErrorCode.PROFIT_SHARING_RECEIVER_INVALID.getCode(),"该商户收款账号存在个人微信号方式,微信已停止支持,请重新设置."); - } - } - } + Long merchantId = null; + if(EnumCouponType.COUPON_DISTRIBUTION.getCode().equals(wxCoupon.getType())){ + //可配送商品 + WxCouponMerchant wxCouponMerchant = new WxCouponMerchant(); + wxCouponMerchant.setProductId(wxCoupon.getId()); + wxCouponMerchant.setStatus(EnumCouponMerchantStatus.COUPON_MERCHANT_STATUS_VALID.getCode()); + WxCouponMerchant cm = null; + try{ + cm = wxCouponMerchantMapper.selectOne(new QueryWrapper<>(wxCouponMerchant)); + }catch (Exception e){ + throw new MallinkException(ErrorCode.VERIFY_COUPON_ORDER_MERCHANT_IS_NULL); + } + if(cm == null){ + throw new MallinkException(ErrorCode.VERIFY_COUPON_ORDER_MERCHANT_IS_NULL); + } + if(EnumCouponVerifyType.VERIFY_B.equals(couponVerifyType) && !cm.getId().equals(bUser.getMerchantId())){ + throw new MallinkException(ErrorCode.VERIFY_COUPON_ORDER_MERCHANT_IS_NULL); + } + merchantId = cm.getId(); + }else if(EnumCouponType.COUPON_GIFT.getCode().equals(wxCoupon.getType())){ + if (StringUtils.isBlank(wxCoupon.getGiftList())){ + logger.error("券包: coupon-" + wxCoupon.getId() + "数据异常" + "couponOrder-" + couponOrder.getId()); + throw new MallinkException(ErrorCode.COUPON_ORDER_DATE_ERROR); + } + if(!EnumCouponVerifyType.VERIFY_AUTO.equals(couponVerifyType)){ + throw new MallinkException(ErrorCode.VERIFY_COUPON_TYPE_NOT_SUPPORT); + } + }else{ + if(!EnumCouponVerifyType.VERIFY_B.equals(couponVerifyType)){ + throw new MallinkException(ErrorCode.VERIFY_COUPON_TYPE_NOT_SUPPORT); + } + WxCouponMerchant wxCouponMerchant = new WxCouponMerchant(); + wxCouponMerchant.setProductId(wxCoupon.getId()); + wxCouponMerchant.setStatus(EnumCouponMerchantStatus.COUPON_MERCHANT_STATUS_VALID.getCode()); + List couponMerchantList = wxCouponMerchantMapper.findList(wxCouponMerchant); + if (!couponMerchantList.stream().anyMatch(cm -> cm.getMerchantId().equals(bUser.getMerchantId()))) { + logger.error("券: coupon-" + wxCoupon.getId() + "核销: couponMerchantId-" + bUser.getMerchantId()); + throw new MallinkException(ErrorCode.VERIFY_COUPON_ORDER_MERCHANT_IS_NULL); + } + merchantId = bUser.getId(); + } + + if(merchantId != null){ + //如果开启了分账,就必须要配置分账账号 + WxAppinfo appInfo = getAppinfo(couponOrder,couponOrder.getPayVendor()); + WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); + WxProfitSharingReceiver psReceiverQ = new WxProfitSharingReceiver(); + psReceiverQ.updateTenantInfo(payAccount); + psReceiverQ.setMerchantId(merchantId); + psReceiverQ.setSharingType(payServiceFactory.getPayShareAdapterService(couponOrder.getPayVendor()).getProfitSharingType()); + psReceiverQ.setStatus(EnumProfitSharingReceiverStatus.PROFIT_SHARING_RECEIVER_STATUS_VALID.getCode()); + List psReceiverList = wxProfitSharingReceiverMapper.findList(psReceiverQ); + if (null == payAccount.getShare()) { + throw new MallinkException(ErrorCode.PROFIT_SHARING_RECEIVER_INVALID.getCode(),"该租户payAccount未设置分账."); + } + if (EnumPayShare.YES.getCode().intValue() == payAccount.getShare().intValue()) { + if (null == psReceiverList || psReceiverList.size() == 0) { + throw new MallinkException(ErrorCode.PROFIT_SHARING_RECEIVER_INVALID.getCode(),"该商户未设置分账账号."); + }else { + for (WxProfitSharingReceiver receiver:psReceiverList) { + if (EnumProfitSharingReceiverType.PROFIT_SHARING_RECEIVER_PERSONAL_WECHATID.getCode().intValue() + == receiver.getReceiverType().intValue()) { + throw new MallinkException(ErrorCode.PROFIT_SHARING_RECEIVER_INVALID.getCode(),"该商户收款账号存在个人微信号方式,微信已停止支持,请重新设置."); + } + } + } + } } + int num = 0; try { couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); //1核销 - couponOrder.setBUserId(bUser.getId()); - couponOrder.setVerifyType(EnumCouponVerifyType.VERIFY_B.getCode()); - if(StringUtils.isNotBlank(couponOrder.getVerifyRemark())){ + couponOrder.setBUserId(bUser==null?0l:bUser.getId()); + couponOrder.setVerifyType(couponVerifyType.getCode()); + if(EnumCouponVerifyType.VERIFY_B.equals(couponVerifyType) + && StringUtils.isNotBlank(couponOrder.getVerifyRemark())){ if(couponOrder.getVerifyRemark().equals(EnumCouponVerifyType.VERIFY_B_11.getCode().toString())){ couponOrder.setVerifyRemark(EnumCouponVerifyType.VERIFY_B_11.getMessage()); }else if(couponOrder.getVerifyRemark().equals(EnumCouponVerifyType.VERIFY_B_12.getCode().toString())){ @@ -483,100 +524,24 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { logger.error("核销异常:updatete num " + num); throw new MallinkException(ErrorCode.VERIFY_ERROR.getCode(), "updatete num " + num); } - doAfterVerify(couponOrder, bUser, wxCoupon); - return couponOrder; - } - @Override - @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public WxCouponOrder verify(WxCouponOrder couponOrder) { - - // 1. 获取券信息 - WxCoupon wxCoupon = wxCouponMapper.selectById(couponOrder.getCouponId(),couponOrder.getTenantId()); - if (wxCoupon == null) { - logger.error("券: coupon-" + wxCoupon.getId() + "不存在" + "couponOrder-" + couponOrder.getId()); - throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); - } - // 3. 券包状态检查 - if (couponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode()) { - logger.error("已过期: couponOrder-" + couponOrder.getId()); - throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME); - } - if (couponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode()) { - logger.error("已退款: couponOrder-" + couponOrder.getId()); - throw new MallinkException(ErrorCode.COUPON_ORDER_IS_INVALID); - } - if (couponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()) { - logger.error("已经核销过的券: couponOrder-" + couponOrder.getId()); - throw new MallinkException(ErrorCode.COUPON_ORDER_IS_USED); - } - if (couponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.POS_PRE_VERIFY.getCode()) { - logger.error("券已被预核销: couponOrder-" + couponOrder.getId()); - throw new MallinkException(ErrorCode.COUPON_ORDER_IS_PRE_VERIFY); - } - if(!EnumCouponType.COUPON_DISTRIBUTION.getCode().equals(wxCoupon.getType())){ - logger.error("券类型不支持: couponOrder-" + couponOrder.getId() +"类型:" + wxCoupon.getType()); - throw new MallinkException(ErrorCode.COUPON_ORDER_TYPE_NOT_SUPPORTED); - } - - // 2. 检查适用门店(自主核销有且只有一个门店) - WxCouponMerchant wxCouponMerchant = new WxCouponMerchant(); - wxCouponMerchant.setProductId(wxCoupon.getId()); - wxCouponMerchant.setStatus(EnumCouponMerchantStatus.COUPON_MERCHANT_STATUS_VALID.getCode()); - WxCouponMerchant cm = null; - try{ - cm = wxCouponMerchantMapper.selectOne(new QueryWrapper<>(wxCouponMerchant)); - }catch (Exception e){ - throw new MallinkException(ErrorCode.VERIFY_COUPON_ORDER_MERCHANT_IS_NULL); - } - if(cm == null){ - throw new MallinkException(ErrorCode.VERIFY_COUPON_ORDER_MERCHANT_IS_NULL); - } - - //如果开启了分账,就必须要配置分账账号 - WxAppinfo appInfo = getAppinfo(couponOrder,couponOrder.getPayVendor()); - WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); - WxProfitSharingReceiver psReceiverQ = new WxProfitSharingReceiver(); - psReceiverQ.updateTenantInfo(payAccount); - psReceiverQ.setMerchantId(cm.getMerchantId()); - psReceiverQ.setSharingType(payServiceFactory.getPayShareAdapterService(couponOrder.getPayVendor()).getProfitSharingType()); - psReceiverQ.setStatus(EnumProfitSharingReceiverStatus.PROFIT_SHARING_RECEIVER_STATUS_VALID.getCode()); - List psReceiverList = wxProfitSharingReceiverMapper.findList(psReceiverQ); - if (null == payAccount.getShare()) { - throw new MallinkException(ErrorCode.PROFIT_SHARING_RECEIVER_INVALID.getCode(),"该租户payAccount未设置分账."); - } - if (EnumPayShare.YES.getCode().intValue() == payAccount.getShare().intValue()) { - if (null == psReceiverList || psReceiverList.size() == 0) { - throw new MallinkException(ErrorCode.PROFIT_SHARING_RECEIVER_INVALID.getCode(),"该商户未设置分账账号."); - }else { - for (WxProfitSharingReceiver receiver:psReceiverList) { - if (EnumProfitSharingReceiverType.PROFIT_SHARING_RECEIVER_PERSONAL_WECHATID.getCode().intValue() - == receiver.getReceiverType().intValue()) { - throw new MallinkException(ErrorCode.PROFIT_SHARING_RECEIVER_INVALID.getCode(),"该商户收款账号存在个人微信号方式,微信已停止支持,请重新设置."); - } - } - } - } - int num = 0; - try { - couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); //1核销 - couponOrder.setVerifyType(EnumCouponVerifyType.VERIFY_C.getCode()); - if(EnumOrderShopingType.SELF_MENTION.getCode().equals(couponOrder.getShippingType())){ - couponOrder.setShippingStatus(EnumOrderShopingStatus.ALREADY_SELF_MENTION.getCode()); - }else if(EnumOrderShopingType.DISTRIBUTION.getCode().equals(couponOrder.getShippingType())){ - couponOrder.setShippingStatus(EnumOrderShopingStatus.ALREADY_DISTRIBUTION.getCode()); + if(EnumCouponType.COUPON_GIFT.getCode().equals(wxCoupon.getType())){ + try { + List longs = JSON.parseArray(wxCoupon.getGiftList(), Long.class); + //发券包子券 + wxOrderService.sendSubCouponToUser(couponOrder,longs); + } catch (MallinkException e) { + throw e; + } catch (Exception e){ + throw new MallinkException(ErrorCode.COUPON_ORDER_SEND_ERROR.getCode(), couponOrder.getCouponName() + ErrorCode.COUPON_ORDER_SEND_ERROR.getMessage() ); } - couponOrder.setUpdateDate(new Date()); - num = wxCouponOrderMapper.updateVerifyCouponOrder(couponOrder); - } catch (Exception e) { - logger.error("db failed: couponOrder-" + couponOrder.getId() + ", e:" + e.getMessage()); - throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); } - if (num != 1) { - logger.error("核销异常:updatete num " + num); - throw new MallinkException(ErrorCode.VERIFY_ERROR.getCode(), "updatete num " + num); + + if(EnumCouponVerifyType.VERIFY_B.equals(couponVerifyType)){ + doAfterVerify(couponOrder, bUser, wxCoupon); + }else{ + doAfterVerify(couponOrder, wxCoupon, merchantId); } - doAfterVerify(couponOrder, wxCoupon, cm.getMerchantId()); - this.sendInsideCouponVerifyMsg(couponOrder, couponOrder.getId(), cm.getMerchantId()); + couponOrder.setMerchantId(merchantId); return couponOrder; } @@ -689,7 +654,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { creditHistory.setSpend(couponOrder.getCouponPrice()); //如果券与商户一对一 则直接将消费商户更新为此商户 若一对多 则消费商户显示多商户 creditHistory.setMerchantId(merchantId); - creditHistory.setChangePurpose("用户自主核销增加积分:券名称["+wxCoupon.getTitle()+"("+creditHistory.getSpendStr()+"元)] "); + creditHistory.setChangePurpose("增加积分:券名称["+wxCoupon.getTitle()+"("+creditHistory.getSpendStr()+"元)] "); wxCreditHistoryService.saveOrUpdate(creditHistory,couponOrder.getTenantId()); } catch (Exception e) { logger.error("积分值:" + e.getMessage()); @@ -924,6 +889,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { // 补贴已入库 return; } + subsidyNum = subsidyNum * couponOrder.getCouponNumber(); // 新补贴入库 int iSubChargeFee = OrderHelper.getMallCharge(subsidyNum, payAccount); Integer realSubsidyFee = subsidyNum - iSubChargeFee; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java index 09af77bbc..cb4b2c1ab 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -114,6 +114,9 @@ public class WxOrderServiceImpl implements WxOrderService { @Autowired WxCouponOrderMapper wxCouponOrderMapper; + @Autowired + WxCouponOrderService wxCouponOrderService; + @Autowired WxCUserService wxCUserService; @@ -1538,17 +1541,33 @@ public class WxOrderServiceImpl implements WxOrderService { /** * 下订单后操作 * - * @param updateOrder + * @param order * @param coupon * @param user */ - public void actionAfterCouponOrderSuccess(WxOrder updateOrder, WxCoupon coupon, WxCUserBasicInfo user) { + public void actionAfterCouponOrderSuccess(WxOrder order, WxCoupon coupon, WxCUserBasicInfo user) { + if(EnumCouponType.COUPON_GIFT.getCode().equals(coupon.getType())){ + WxCouponOrder couponOrderQ = new WxCouponOrder(); + couponOrderQ.setOrderId(order.getId()); + couponOrderQ.setCouponId(coupon.getId()); + couponOrderQ.updateTenantInfo(order); + List couponorderlist = wxCouponOrderMapper.findList(couponOrderQ); + if (null != couponorderlist && couponorderlist.size() > 0 ) { + WxCouponOrder couponOrder = couponorderlist.get(0); + try { + wxCouponOrderService.verify(couponOrder,null,EnumCouponVerifyType.VERIFY_AUTO); + } catch (Exception e) { + logger.error("系统券包核销异常:" + e.getMessage()); + } + } + + } /// TODO 晚上会定时打一下tag - wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_BUY, user,updateOrder,null); + wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_BUY, user,order,null); // 交易发券 try { - wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.C_ORDER, updateOrder,EnumPayWay.PAY_WAY_NOT_UNPAY_TRADE); + wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.C_ORDER, order,EnumPayWay.PAY_WAY_NOT_UNPAY_TRADE); } catch (Exception e) { logger.error("订单发券:" + e.getMessage()); } diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/batch/CouponPackageOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/CouponPackageOrderAdapterService.java index 7d7b43419..95fbe28f2 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/impl/batch/CouponPackageOrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/CouponPackageOrderAdapterService.java @@ -57,50 +57,6 @@ public class CouponPackageOrderAdapterService extends BaseBatchOrderAdapterServi @Async @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false, rollbackFor = {Exception.class}) public void doOthersAfterPaySuccess(WxOrder order, WxPayOrder record, WxCouponOrder couponOrder) { - WxCoupon wxCoupon = wxCouponMapper.selectById(couponOrder.getCouponId(), couponOrder.getTenantId()); - if (wxCoupon == null || !EnumCouponType.COUPON_GIFT.getCode().equals(wxCoupon.getType())) { - logger.error("券包: coupon-" + wxCoupon.getId() + "不存在" + "couponOrder-" + couponOrder.getId()); - throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); - } - if (StringUtils.isBlank(wxCoupon.getGiftList())){ - logger.error("券包: coupon-" + wxCoupon.getId() + "数据异常" + "couponOrder-" + couponOrder.getId()); - throw new MallinkException(ErrorCode.COUPON_ORDER_DATE_ERROR); - } - if (couponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode()) { - logger.error("已过期: couponOrder-" + couponOrder.getId()); - throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME); - } - if (couponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode()) { - logger.error("已退款: couponOrder-" + couponOrder.getId()); - throw new MallinkException(ErrorCode.COUPON_ORDER_IS_INVALID); - } - if (couponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()) { - logger.error("已经核销过的券: couponOrder-" + couponOrder.getId()); - throw new MallinkException(ErrorCode.COUPON_ORDER_IS_USED); - } - if (couponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.POS_PRE_VERIFY.getCode()) { - logger.error("券已被预核销: couponOrder-" + couponOrder.getId()); - throw new MallinkException(ErrorCode.COUPON_ORDER_IS_PRE_VERIFY); - } - - //核销券包 - couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); //1核销 - couponOrder.setBUserId(0l); - couponOrder.setVerifyType(EnumCouponVerifyType.VERIFY_C.getCode()); - couponOrder.setUpdateDate(new Date()); - int num = wxCouponOrderMapper.updateVerifyCouponOrder(couponOrder); - if (num != 1) { - throw new MallinkException(ErrorCode.VERIFY_ERROR.getCode(), "updatete num " + num); - } - try { - List longs = JSON.parseArray(wxCoupon.getGiftList(), Long.class); - //发券包子券 - wxOrderService.sendSubCouponToUser(couponOrder,longs); - } catch (MallinkException e) { - throw e; - } catch (Exception e){ - throw new MallinkException(ErrorCode.COUPON_ORDER_SEND_ERROR.getCode(), couponOrder.getCouponName() + ErrorCode.COUPON_ORDER_SEND_ERROR.getMessage() ); - } }