From 35abdc263a311f97d0b5adaaa4aa3616a34195d8 Mon Sep 17 00:00:00 2001 From: xhxu Date: Mon, 27 Sep 2021 17:05:23 +0800 Subject: [PATCH] =?UTF-8?q?update=20--=E6=A0=B8=E9=94=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxCouponOrderController.java | 2 +- .../controller/WxCouponOrderController.java | 94 +++++++++- .../iformall/service/impl/PosServiceImpl.java | 2 +- .../po/msg/FmInsideCouponVerifyMsg.java | 4 +- .../iformall/enums/EnumCouponVerifyType.java | 2 + .../service/WxCouponOrderService.java | 21 ++- .../impl/WxCouponOrderServiceImpl.java | 173 ++++++++++++++++-- .../service/impl/WxPayOrderServiceImpl.java | 4 +- .../FmInsideCouponVerifyMsgServiceImpl.java | 13 +- 9 files changed, 270 insertions(+), 45 deletions(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java index 26e1ce68b..60f4b3fb1 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java @@ -318,7 +318,7 @@ public class WxCouponOrderController extends BaseController { } if (couponOrder != null) { - wxCouponOrderService.sendInsideCouponVerifyMsg(couponOrder, couponOrderId, wxMerchantBUser.getId()); + wxCouponOrderService.sendInsideCouponVerifyMsg(couponOrder, couponOrderId, wxMerchantBUser.getMerchantId()); } return new ResultData(couponOrder); diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java index a26c79bf8..7e161f7f2 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java @@ -5,19 +5,14 @@ import com.iformall.annotation.RedisCache; import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; -import com.iformall.domain.po.WxCUser; -import com.iformall.domain.po.WxCUserBasicInfo; -import com.iformall.domain.po.WxCoupon; +import com.iformall.domain.po.*; import com.iformall.domain.po.base.BaseEntity; -import com.iformall.domain.po.WxCouponOrder; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.WxCardCVo; import com.iformall.domain.vo.WxCouponCVo; import com.iformall.domain.vo.WxCouponOrderCVo; -import com.iformall.enums.EnumCouponChannelActivityStatus; -import com.iformall.enums.EnumCouponOrderStatus; -import com.iformall.enums.EnumCouponOrderValidStatus; -import com.iformall.enums.EnumCouponType; +import com.iformall.enums.*; +import com.iformall.exception.MallinkException; import com.iformall.service.MemCouponFromDspService; import com.iformall.service.WxCouponOrderService; import com.iformall.service.WxCouponService; @@ -409,4 +404,87 @@ public class WxCouponOrderController extends BaseController { return new ResultData(); } + @ApiOperation(value = "核销接口", notes = "{\"couponOrderId\":\"string\"}") + @PostMapping("verify") + public ResultData verify(@RequestBody Map paramMap) { + logger.info("couponOrderController.verify:" + paramMap.toString()); + String couponOrderIdStr = paramMap.get("couponOrderId"); + if (StringUtils.isBlank(couponOrderIdStr)) { + logger.error("couponOrderId不能为空: " + paramMap.toString()); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + Long couponOrderId = 0L; + try { + couponOrderId = Long.valueOf(couponOrderIdStr); + } catch (NumberFormatException e) { + couponOrderId = 0L; + logger.error("couponOrderId参数不正确: " + paramMap.toString()); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + + WxCouponOrderCVo wxCouponOrderCVo = wxCouponOrderService.detailCUserVo(couponOrderIdStr,getTenantInfo()); + + if (wxCouponOrderCVo == null) + return new ResultData(ErrorCode.COUPON_ORDER_IS_NULL); + + WxCUserBasicInfo member; + try { + member = getCacheMember(); + } catch (Exception e) { + return new ResultData(Result.ERROR,e.getMessage()); + } + + Date now = new Date(); + if (wxCouponOrderCVo.getValidType().equals(EnumCouponValidType.BETWEEN_TWO_TIME.getCode())){ +// && !wxCouponOrderCVo.getType().equals(EnumCouponType.COUPON_PREORDER.getCode())) { + if(wxCouponOrderCVo.getType().equals(EnumCouponType.COUPON_PREORDER.getCode())){ + if (wxCouponOrderCVo.getPickStartDate().after(now)) { + logger.error("此券有效期未开始:" + couponOrderIdStr); + return new ResultData(ErrorCode.COUPON_ORDER_IS_EARLIER_THAN_VALIDDATE); + } + if (wxCouponOrderCVo.getPickEndDate().before(now)) { + logger.error("此券有效期已结束:" + couponOrderIdStr); + return new ResultData(ErrorCode.COUPON_ORDER_IS_LATER_THAN_VALIDDATE); + } + }else{ + if (wxCouponOrderCVo.getValidStartDate().after(now)) { + logger.error("此券有效期未开始:" + couponOrderIdStr); + return new ResultData(ErrorCode.COUPON_ORDER_IS_EARLIER_THAN_VALIDDATE); + } + if (wxCouponOrderCVo.getValidEndDate().before(now)) { + logger.error("此券有效期已结束:" + couponOrderIdStr); + return new ResultData(ErrorCode.COUPON_ORDER_IS_LATER_THAN_VALIDDATE); + } + } + + } else { + if (wxCouponOrderCVo.getExpiredTime().before(now)) { + logger.error("此券已过期:" + couponOrderIdStr); + return new ResultData(ErrorCode.COUPON_IS_EXPIRED); + } + } + + WxCouponOrder wxCouponOrder = wxCouponOrderService.getById(couponOrderId,getTenantInfo().getTenantId()); + if (wxCouponOrder == null) { + logger.error("券ID不存在:" + couponOrderId); + return new ResultData(ErrorCode.COUPON_ORDER_IS_NULL); + } + if(!member.getId().equals(wxCouponOrder.getCUserId())){ + logger.error("此券不属于此人:" + member.getId()); + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); + } + WxCouponOrder couponOrder = null; + try { + couponOrder = wxCouponOrderService.verify(wxCouponOrder); + } catch (MallinkException e) { + logger.error("核销异常: " + e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); + } catch (Exception e) { + logger.error("核销异常: " + e.getMessage()); + return new ResultData(ErrorCode.VERIFY_ERROR, e.getMessage()); + } + + return new ResultData(couponOrder); + } + } diff --git a/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java b/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java index 3268e2704..38093ca11 100644 --- a/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java +++ b/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java @@ -2214,7 +2214,7 @@ public class PosServiceImpl implements PosService { logger.error("交易核销积分异常:" + e.getMessage()); } // 3. 核销后处理 - couponOrderService.sendInsideCouponVerifyMsg(merchantBUser, couponOrderId, merchantBUser.getId()); + couponOrderService.sendInsideCouponVerifyMsg(merchantBUser, couponOrderId, merchantBUser.getMerchantId()); } return payOrder; } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideCouponVerifyMsg.java b/mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideCouponVerifyMsg.java index 9e1d107d5..27078d885 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideCouponVerifyMsg.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideCouponVerifyMsg.java @@ -16,6 +16,6 @@ public class FmInsideCouponVerifyMsg extends BaseMsg{ private String parentTenantId; @io.swagger.annotations.ApiModelProperty(value = "券包ID", name = "couponOrderId") private Long couponOrderId; - @io.swagger.annotations.ApiModelProperty(value = "B端用户ID", name = "bUserId") - private Long bUserId; + @io.swagger.annotations.ApiModelProperty(value = "B端商户ID", name = "merchantId") + private Long merchantId; } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCouponVerifyType.java b/mallinkService/src/main/java/com/iformall/enums/EnumCouponVerifyType.java index 5bb47c5e0..764183525 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumCouponVerifyType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCouponVerifyType.java @@ -14,6 +14,8 @@ public enum EnumCouponVerifyType { VERIFY_POS_INDEPENDENT(1, "POS独立核销"), VERIFY_POS_PAY(2, "POS交易核销"), + + VERIFY_C(3,"用户自主核销"), ; 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 65289aeb7..c82ef5e39 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java @@ -57,25 +57,32 @@ public interface WxCouponOrderService { */ WxCouponOrder verify(WxCouponOrder couponOrder, WxMerchantBUser bUser); + /** + * 根据主键couponOrderId(券码)核销 + * C端自主核销 + * + * @param couponOrder + */ + WxCouponOrder verify(WxCouponOrder couponOrder); + /** * 核销后发送消息 */ - void sendInsideCouponVerifyMsg(TenantEntity tenantEntity, Long couponOrderId, Long buUserId); + void sendInsideCouponVerifyMsg(TenantEntity tenantEntity, Long couponOrderId, Long merchantId); /** * 核销后处理 * * @param couponOrder - * @param bUser 核销人(登录用户) + * @param */ - void actionAfterVerify(WxCouponOrder couponOrder, WxMerchantBUser bUser); + void actionAfterVerify(WxCouponOrder couponOrder, WxMerchant merchant); /** * 核销发券 * @param couponOrder - * @param bUser */ - boolean sendCouponAfterVerify(WxCouponOrder couponOrder, WxMerchantBUser bUser); + boolean sendCouponAfterVerify(WxCouponOrder couponOrder); /** * B端刷卡支付发券 @@ -99,9 +106,9 @@ public interface WxCouponOrderService { /** * 核销模板消息 * @param couponOrder - * @param bUser + * @param merchant */ - void sendVerifyMsg(WxCouponOrder couponOrder, WxMerchantBUser bUser, boolean hadSentCoupon); + void sendVerifyMsg(WxCouponOrder couponOrder, WxMerchant merchant, boolean hadSentCoupon); /** * 根据日期 b用户查券list 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 97207d1a0..19924b954 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -475,12 +475,103 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { 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); + } + + // 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); + } + + // 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); + } + + //如果开启了分账,就必须要配置分账账号 + 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()); + 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); + } + doAfterVerify(couponOrder, wxCoupon, cm.getMerchantId()); + this.sendInsideCouponVerifyMsg(couponOrder, couponOrder.getId(), cm.getMerchantId()); + return couponOrder; + } + /** + * B端核销卷增加成长值,积分 + * @param couponOrder + * @param bUser + * @param wxCoupon + */ private void doAfterVerify(WxCouponOrder couponOrder, WxMerchantBUser bUser, WxCoupon wxCoupon) { // 成长值 try { WxOrder order = wxOrderMapper.selectById(couponOrder.getOrderId(),couponOrder.getTenantId()); - wxScoreRulesService.addScore2(bUser,EnumScoreType.CONSUMPTION, order, wxCoupon.getBusiness()); + wxScoreRulesService.addScore2(couponOrder,EnumScoreType.CONSUMPTION, order, wxCoupon.getBusiness()); } catch (Exception e) { logger.error("成长值:" + e.getMessage()); } @@ -511,6 +602,12 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } } + /** + * 核销停车劵增加成长值,积分 + * @param couponOrder + * @param wxCoupon + * @param cuUser + */ private void doAfterVerify(WxCouponOrder couponOrder, WxCoupon wxCoupon, WxCUserBasicInfo cuUser) { // 成长值 try { @@ -542,18 +639,56 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } } + /** + * 自主核销商品加成长值 积分 + * @param couponOrder + * @param wxCoupon + */ + private void doAfterVerify(WxCouponOrder couponOrder, WxCoupon wxCoupon,Long merchantId) { + // 成长值 + try { + WxOrder order = wxOrderMapper.selectById(couponOrder.getOrderId(),couponOrder.getTenantId()); + wxScoreRulesService.addScore2(couponOrder,EnumScoreType.CONSUMPTION, order, wxCoupon.getBusiness()); + } catch (Exception e) { + logger.error("成长值:" + e.getMessage()); + } + + // 积分 + try { + //-------此处为【现金支付】记录增加积分操作------- + WxCreditHistory creditHistory = new WxCreditHistory(); + creditHistory.setOperatorType(EnumUserType.CUSERBASIC.getCode()); + creditHistory.setOperatorId(couponOrder.getCUserId()); + creditHistory.setCUserId(couponOrder.getCUserId()); + creditHistory.setCreateDate(new Date()); +// creditHistory.updateTenantInfo(couponOrder); + creditHistory.setTenantId(couponOrder.getFinalTenantId()); + creditHistory.setFinalTenantId(couponOrder.getFinalTenantId()); + creditHistory.setCreditType(EnumScoreType.CONSUMPTION.getCode()); + creditHistory.setCouponId(wxCoupon.getId()); + creditHistory.setBusinessId(wxCoupon.getBusiness()); + creditHistory.setSpend(couponOrder.getCouponPrice()); + //如果券与商户一对一 则直接将消费商户更新为此商户 若一对多 则消费商户显示多商户 + creditHistory.setMerchantId(merchantId); + creditHistory.setChangePurpose("用户自主核销增加积分:券名称["+wxCoupon.getTitle()+"("+creditHistory.getSpendStr()+"元)] "); + wxCreditHistoryService.saveOrUpdate(creditHistory,couponOrder.getTenantId()); + } catch (Exception e) { + logger.error("积分值:" + e.getMessage()); + } + } + @Override - public void sendInsideCouponVerifyMsg(TenantEntity tenantEntity, Long couponOrderId, Long buUserId) { + public void sendInsideCouponVerifyMsg(TenantEntity tenantEntity, Long couponOrderId, Long merchantId) { FmInsideCouponVerifyMsg verifyMsg = new FmInsideCouponVerifyMsg(); verifyMsg.setMsgType(EnumMsgRecordType.INSIDE_COUPON_VERIFY.getCode()); verifyMsg.updateTenantInfo(tenantEntity); verifyMsg.setCouponOrderId(couponOrderId); - verifyMsg.setBUserId(buUserId); + verifyMsg.setMerchantId(merchantId); mqBaseProducer.sendMessage(verifyMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); } @Override - public void actionAfterVerify(WxCouponOrder couponOrder, WxMerchantBUser bUser) { + public void actionAfterVerify(WxCouponOrder couponOrder, WxMerchant merchant) { WxPayAccount wxPayAccountQuery = new WxPayAccount(); wxPayAccountQuery.updateTenantInfo(couponOrder); @@ -562,7 +697,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { try { // 核销记账,并且往账户里面记帐 if (couponOrder.getCouponPrice() > 0) { - recordAfterVerified(couponOrder, bUser.getMerchantId()); + recordAfterVerified(couponOrder, merchant.getId()); } } catch (Exception e) { logger.error("核销记账失败"+e.getMessage(),e); @@ -572,14 +707,14 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { if (EnumComposeOrder.isSingle(couponOrder.getComposeOrderType())) { try { // 核销分账 - shareAfterVerify(couponOrder, bUser.getMerchantId(),couponOrder.getPayVendor(),false); + shareAfterVerify(couponOrder, merchant.getId(),couponOrder.getPayVendor(),false); } catch (Exception e) { logger.error("核销记账失败"+e.getMessage(),e); } }else { try { // 核销分账 - shareAfterVerify(couponOrder, bUser.getMerchantId(),couponOrder.getPayVendor(),true); + shareAfterVerify(couponOrder, merchant.getId(),couponOrder.getPayVendor(),true); } catch (Exception e) { logger.error("核销记账失败"+e.getMessage(),e); } @@ -588,7 +723,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { try { // 核销补贴 - subsidyAfterVerify(couponOrder, bUser.getMerchantId()); + subsidyAfterVerify(couponOrder, merchant.getId()); } catch (Exception e) { logger.error("核销记账失败"+e.getMessage(),e); } @@ -597,14 +732,14 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { // 核销发券 try { - bSentCoupon = sendCouponAfterVerify(couponOrder, bUser); + bSentCoupon = sendCouponAfterVerify(couponOrder); } catch (Exception e) { logger.error("核销记账失败"+e.getMessage(),e); } // 核销发模板消息 try { - sendVerifyMsg(couponOrder, bUser, bSentCoupon); + sendVerifyMsg(couponOrder, merchant, bSentCoupon); } catch (Exception e) { logger.error("核销发送消息发生错误:" + e.getMessage(),e); } @@ -800,7 +935,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } @Override - public boolean sendCouponAfterVerify(WxCouponOrder couponOrder, WxMerchantBUser bUser) { + public boolean sendCouponAfterVerify(WxCouponOrder couponOrder) { // 核销发券 WxOrder wxOrder = wxOrderMapper.selectById(couponOrder.getOrderId(),couponOrder.getTenantId()); if (wxOrder != null) { @@ -833,7 +968,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { * @param couponOrder, bUser */ @Override - public void sendVerifyMsg(WxCouponOrder couponOrder, WxMerchantBUser bUser, boolean hadSentCoupon) { + public void sendVerifyMsg(WxCouponOrder couponOrder, WxMerchant merchant, boolean hadSentCoupon) { // 1. get order info WxOrder order = wxOrderMapper.selectById(couponOrder.getOrderId(),couponOrder.getTenantId()); if (order == null) { @@ -846,18 +981,18 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { logger.error("找不到券信息"); throw new MallinkException(ErrorCode.COUPON_IS_EMPTY); } - // 3. merchant info - WxMerchant merchant = wxMerchantMapper.selectById(bUser.getMerchantId()); - if (merchant == null) { - logger.error("找不到商户信息"); - throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND); - } +// // 3. merchant info +// WxMerchant merchant = wxMerchantMapper.selectById(merchant.getId()); +// if (merchant == null) { +// logger.error("找不到商户信息"); +// throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND); +// } // 4. get user info WxCUser user = null; WxCUser wcuQ = new WxCUser(); - wcuQ.updateTenantInfo(bUser); + wcuQ.updateTenantInfo(couponOrder); wcuQ.setUserId(couponOrder.getCUserId()); List list = wxCUserMapper.findList(wcuQ); if(list != null && list.size() > 0){ diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index 58bff9d1f..fabc0e7f5 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -981,7 +981,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { logger.error(e.getMessage()); } // 更新后处理 - wxCouponOrderService.sendInsideCouponVerifyMsg(unPayOrder, unPayOrder.getPosPayOrderId(), user.getId()); + wxCouponOrderService.sendInsideCouponVerifyMsg(unPayOrder, unPayOrder.getPosPayOrderId(), user.getMerchantId()); } } } catch (Exception e) { @@ -1105,7 +1105,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { logger.error(e.getMessage()); } // 更新后处理 - wxCouponOrderService.sendInsideCouponVerifyMsg(unPayOrder, unPayOrder.getPosPayOrderId(), user.getId()); + wxCouponOrderService.sendInsideCouponVerifyMsg(unPayOrder, unPayOrder.getPosPayOrderId(), user.getMerchantId()); } } } catch (Exception e) { diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideCouponVerifyMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideCouponVerifyMsgServiceImpl.java index 0e479558a..740678eba 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideCouponVerifyMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideCouponVerifyMsgServiceImpl.java @@ -28,6 +28,9 @@ public class FmInsideCouponVerifyMsgServiceImpl implements MsgSendService { @Autowired private WxMerchantBUserService merchantBUserService; + @Autowired + private WxMerchantService merchantService; + @Override public void send(BaseMsg baseMsg) throws Exception{ FmInsideCouponVerifyMsg msg = (FmInsideCouponVerifyMsg)baseMsg; @@ -37,12 +40,12 @@ public class FmInsideCouponVerifyMsgServiceImpl implements MsgSendService { throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL.getCode(), "券包ID未找到" + msg.getCouponOrderId()); } - WxMerchantBUser user = merchantBUserService.getById(msg.getBUserId()); - if(user == null) { - logger.error("用户未找到: " + msg.getBUserId()); - throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), "用户未找到" + msg.getBUserId()); + WxMerchant merchant = merchantService.selectById(msg.getMerchantId()); + if(merchant == null) { + logger.error("门店未找到: " + msg.getMerchantId()); + throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), "门店未找到" + msg.getMerchantId()); } - couponOrderService.actionAfterVerify(couponOrder, user); + couponOrderService.actionAfterVerify(couponOrder, merchant); } }