From 06a8a02c34c24f166a633745494c8176c3854d3f Mon Sep 17 00:00:00 2001 From: xhxu Date: Mon, 27 Sep 2021 11:23:30 +0800 Subject: [PATCH 01/15] update --address --- mallinkService/src/main/resources/mapper/WxOrderMapper.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index 4ed341455..a97d9e3f4 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -258,9 +258,10 @@ - o.id,o.order_number,o.tenant_id,o.parent_tenant_id,o.c_user_id,o.coupon_channel_id,o.product_id,o.payment_type,o.payment,o.payment_time,o.`freight_price`,o.order_status,o.create_date,o.update_date, + o.id,o.order_number,o.tenant_id,o.parent_tenant_id,o.c_user_id,o.coupon_channel_id,o.product_id,o.payment_type,o.payment,o.payment_time,o.order_status,o.create_date,o.update_date, c.type,c.cover_img,c.title,c.sub_title,c.sale_price,c.use_price,c.price,c.tail_price,c.orig_price,c.unit,c.detail,c.remark,c.valid_start_date,c.valid_end_date,c.pick_start_date,c.pick_end_date, - co.id as coupon_order_id,co.coupon_order_status,c.support_transfer,c.subsidy_num,o.compose_order_type,o.compose_order_id,o.`shipping_type`,o.`shipping_address` + co.id as coupon_order_id,co.coupon_order_status,c.support_transfer,c.subsidy_num,o.compose_order_type,o.compose_order_id, + co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info` From 35abdc263a311f97d0b5adaaa4aa3616a34195d8 Mon Sep 17 00:00:00 2001 From: xhxu Date: Mon, 27 Sep 2021 17:05:23 +0800 Subject: [PATCH 02/15] =?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); } } From 0fa7006c12f1fd354fa32253d63891ccc527abee Mon Sep 17 00:00:00 2001 From: xhxu Date: Mon, 27 Sep 2021 18:00:06 +0800 Subject: [PATCH 03/15] update --order --- mallinkService/src/main/resources/mapper/WxOrderMapper.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index a97d9e3f4..02bd0dacc 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -261,7 +261,7 @@ o.id,o.order_number,o.tenant_id,o.parent_tenant_id,o.c_user_id,o.coupon_channel_id,o.product_id,o.payment_type,o.payment,o.payment_time,o.order_status,o.create_date,o.update_date, c.type,c.cover_img,c.title,c.sub_title,c.sale_price,c.use_price,c.price,c.tail_price,c.orig_price,c.unit,c.detail,c.remark,c.valid_start_date,c.valid_end_date,c.pick_start_date,c.pick_end_date, co.id as coupon_order_id,co.coupon_order_status,c.support_transfer,c.subsidy_num,o.compose_order_type,o.compose_order_id, - co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info` + o.`freight_price`,o.`shipping_type`,o.`shipping_address`,co.`shipping_status`,co.`delivery_info` @@ -366,7 +366,7 @@ o.id,o.order_number,o.tenant_id,o.parent_tenant_id,o.c_user_id,o.coupon_channel_id,o.product_id,o.payment_type,o.payment,o.payment_time,o.order_status,o.create_date,o.update_date, c.type,c.cover_img,c.title,c.sub_title,c.sale_price,c.use_price,c.price,c.tail_price,c.orig_price,c.unit,c.valid_start_date,c.valid_end_date,c.pick_start_date,c.pick_end_date, o.compose_order_type,o.compose_order_id, - co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info` + o.`freight_price`,o.`shipping_type`,o.`shipping_address`,co.`shipping_status`,co.`delivery_info` + + - select co.id,co.tenant_id,co.parent_tenant_id,co.coupon_id,co.coupon_type,co.c_user_id,co.owner_id,co.b_user_id, co.order_id,co.expired_time,co.coupon_order_status,co.create_date,co.update_date,co.coupon_price,co.verify_type,co.verify_remark, co.pay_vendor, From 2ceb4a7d27d2df266ee67ae8d6c590643f0fc769 Mon Sep 17 00:00:00 2001 From: xhxu Date: Tue, 28 Sep 2021 17:57:08 +0800 Subject: [PATCH 07/15] update couponOrder --- .../controller/WxCouponOrderController.java | 25 +++++++++--- .../controller/WxOrderController.java | 39 +++++++++++++++++++ .../com/iformall/domain/po/WxCouponOrder.java | 4 ++ .../enums/EnumOrderShopingStatus.java | 5 +++ .../iformall/mapper/WxCouponOrderMapper.java | 2 +- .../com/iformall/mapper/WxOrderMapper.java | 3 +- .../service/WxCouponOrderService.java | 2 +- .../com/iformall/service/WxOrderService.java | 1 + .../impl/WxCouponOrderServiceImpl.java | 2 +- .../service/impl/WxOrderServiceImpl.java | 7 +++- .../resources/mapper/WxCouponOrderMapper.xml | 8 +++- .../main/resources/mapper/WxOrderMapper.xml | 24 ++++++++++++ 12 files changed, 111 insertions(+), 11 deletions(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java index 5041bc3fe..def9e4020 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java @@ -25,7 +25,9 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; import java.util.Date; +import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; @@ -74,11 +76,24 @@ public class WxCouponOrderController extends BaseController { @ApiImplicitParams({ @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) - public ResultData goodsList(@ModelAttribute WxCouponOrder wxCouponOrder, Integer pageNum, Integer pageSize) { - if (null == wxCouponOrder) wxCouponOrder = new WxCouponOrder(); - wxCouponOrder.setMerchantId(getLoginBUser().getMerchantId()); - wxCouponOrder.setCouponType(EnumCouponType.COUPON_DISTRIBUTION.getCode()); - final PageInfo page = wxCouponOrderService.goodsListAsPage(wxCouponOrder, pageNum, pageSize); + public ResultData goodsList(@ModelAttribute WxCouponOrderBVo wxCouponOrderBvo, Integer pageNum, Integer pageSize) { + if (null == wxCouponOrderBvo) wxCouponOrderBvo = new WxCouponOrderBVo(); + wxCouponOrderBvo.setMerchantId(getLoginBUser().getMerchantId()); + wxCouponOrderBvo.setCouponType(EnumCouponType.COUPON_DISTRIBUTION.getCode()); + List shippingStatuss = new ArrayList<>(); + if(EnumOrderShopingStatus.WAIT_SENG_GOODS.getCode().equals(wxCouponOrderBvo.getShippingStatus())){ + shippingStatuss.add(EnumOrderShopingStatus.READY_SELF_MENTION.getCode()); + shippingStatuss.add(EnumOrderShopingStatus.READY_DISTRIBUTION.getCode()); + }else if(EnumOrderShopingStatus.SENG_GOODS.getCode().equals(wxCouponOrderBvo.getShippingStatus())){ + shippingStatuss.add(EnumOrderShopingStatus.WAIT_SELF_MENTION.getCode()); + shippingStatuss.add(EnumOrderShopingStatus.WAIT_DISTRIBUTION.getCode()); + }else if(EnumOrderShopingStatus.FINISH_SENG_GOODS.getCode().equals(wxCouponOrderBvo.getShippingStatus())){ + wxCouponOrderBvo.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); + } + if(shippingStatuss.size() > 0){ + wxCouponOrderBvo.setShippingStatuss(shippingStatuss); + } + final PageInfo page = wxCouponOrderService.goodsListAsPage(wxCouponOrderBvo, pageNum, pageSize); return new ResultData(page); } diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index f5359105a..f51827083 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -435,4 +435,43 @@ public class WxOrderController extends BaseController { } + @ApiOperation("分页订单列表接口") + @GetMapping("listGoods") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true), + }) + public ResultData listGoods(@ModelAttribute WxOrder wxOrder, Integer pageNum, Integer pageSize) { + // c端用户应该只能看到自己的订单 + if (wxOrder == null){ + wxOrder = new WxOrder(); + } + Long memberId; + try { + memberId = getMemberId(); + } catch (Exception e) { + return new ResultData(Result.ERROR,e.getMessage()); + } + wxOrder.setCUserId(memberId); + wxOrder.setSortColumns(BaseEntity.SortField.UpdateDate_DESC); + final PageInfo page = wxOrderService.listGoodsCAsPage(wxOrder, pageNum, pageSize); + + Date now = new Date(); + page.getList().stream().forEach(oc->{ + if (oc.getValidStartDate() != null && oc.getValidEndDate() != null ) { + if (oc.getValidStartDate().getTime() > now.getTime()) { + oc.setValidStatus(EnumCouponOrderValidStatus.PREPARED.getCode()); + } else if (oc.getValidEndDate().getTime() < now.getTime()) { + oc.setValidStatus(EnumCouponOrderValidStatus.ENDED.getCode()); + } else { + oc.setValidStatus(EnumCouponChannelActivityStatus.STARTED.getCode()); + } + } + }); + + + return new ResultData(page); + } + + } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java index ef959274b..7ab4c659e 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java @@ -12,6 +12,7 @@ import lombok.ToString; import java.math.BigDecimal; import java.text.DecimalFormat; import java.util.Date; +import java.util.List; @TableName(value = "wx_coupon_order") @Data @@ -156,4 +157,7 @@ public class WxCouponOrder extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="配送信息",name="deliveryInfo") private String deliveryInfo; + @TableField(exist = false) + private List shippingStatuss; + } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumOrderShopingStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumOrderShopingStatus.java index 71b1ce46c..59e9c74da 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumOrderShopingStatus.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumOrderShopingStatus.java @@ -9,6 +9,11 @@ public enum EnumOrderShopingStatus { ONLINE_PURCHASE(0,"线上购买"),//不需要发货 + WAIT_SENG_GOODS(1,"待发货(查询用)"), + SENG_GOODS(2,"已发货(查询用)"), + FINISH_SENG_GOODS(3,"已完成(查询用)"), + + READY_SELF_MENTION(10,"自提商品准备中"), WAIT_SELF_MENTION(14,"已备货,待自提"), ALREADY_SELF_MENTION(15,"已自提"), diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java index e5c04634c..1fe5eba52 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java @@ -95,5 +95,5 @@ public interface WxCouponOrderMapper extends CommonMapper { Integer findWriteOffCount(WxCouponOrder wxCouponOrder); - WxCouponOrderBVo findGoodsList(WxCouponOrder record); + List findGoodsList(WxCouponOrderBVo record); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java index face8ae1f..6d14bab25 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java @@ -66,5 +66,6 @@ public interface WxOrderMapper extends CommonMapper { void updateOrderStatusForGroup(@Param("tenantId")String tenantId); void updateCUserId(WxOrder updateOrder); - + + List listGoodsCAsPage(WxOrder record); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java index 669610531..eeec70312 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java @@ -229,5 +229,5 @@ public interface WxCouponOrderService { Integer findCount(WxCouponOrder wxCouponOrder); - PageInfo goodsListAsPage(WxCouponOrder wxCouponOrder, Integer pageNum, Integer pageSize); + PageInfo goodsListAsPage(WxCouponOrderBVo couponOrderBvo, Integer pageNum, Integer pageSize); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index 48df81196..9842d0848 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -244,4 +244,5 @@ public interface WxOrderService { ResultData composeSaveOrder(boolean allowUnPayOrder,EnumComposeOrder composeOrderType,List composeOrderSaveDto,Long cUserId,EnumPayWay payWay,TenantEntity tenantEntity); + PageInfo listGoodsCAsPage(WxOrder wxOrder, Integer pageNum, Integer pageSize); } 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 4c989b0fa..3f4eaa437 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -1743,7 +1743,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } @Override - public PageInfo goodsListAsPage(WxCouponOrder record, Integer pageIndex, Integer pageSize) { + public PageInfo goodsListAsPage(WxCouponOrderBVo record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponOrderMapper.findGoodsList(record)); } 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 fd4294b38..eeea75c16 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -2519,7 +2519,12 @@ public class WxOrderServiceImpl implements WxOrderService { } - + + @Override + public PageInfo listGoodsCAsPage(WxOrder record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxOrderMapper.listGoodsCAsPage(record)); + } + private WxCoupon singleOrderCheck(OrderSaveDto orderSaveDto,int productCount,WxCUserBasicInfo wxCUserBasicInfo,EnumPayWay payWay,TenantEntity tenantEntity,int curindex,boolean singleProduct) { logger.info("OrderSave: " + orderSaveDto); String premsg = ""; diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index d0f4b2031..a0e07c4c7 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -993,7 +993,7 @@ - select co.id,co.tenant_id,co.parent_tenant_id,co.coupon_id,co.coupon_type,co.c_user_id,co.owner_id,co.b_user_id, co.order_id,co.expired_time,co.coupon_order_status,co.create_date,co.update_date,co.coupon_price,co.verify_type,co.verify_remark, co.pay_vendor, @@ -1026,6 +1026,12 @@ and co.coupon_order_status = #{couponOrderStatus} + + and co.`shipping_status` in + + #{idItem} + + AND co.create_date > #{startDate,jdbcType=TIMESTAMP} diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index 02bd0dacc..ac33b8d66 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -394,6 +394,30 @@ order by ${sortColumns} + + From fab0b2348ce27efe7c3961a8523ed7eaae00c0dc Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 29 Sep 2021 16:54:21 +0800 Subject: [PATCH 11/15] update couponOrder --- .../controller/WxOrderController.java | 14 -- .../iformall/domain/vo/WxOrderCouponVo.java | 5 + .../com/iformall/enums/EnumComposeOrder.java | 3 +- .../service/impl/WxOrderServiceImpl.java | 11 +- .../main/resources/mapper/WxOrderMapper.xml | 122 ++++++++++++++++-- 5 files changed, 130 insertions(+), 25 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index f51827083..ff4a729c4 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -456,20 +456,6 @@ public class WxOrderController extends BaseController { wxOrder.setSortColumns(BaseEntity.SortField.UpdateDate_DESC); final PageInfo page = wxOrderService.listGoodsCAsPage(wxOrder, pageNum, pageSize); - Date now = new Date(); - page.getList().stream().forEach(oc->{ - if (oc.getValidStartDate() != null && oc.getValidEndDate() != null ) { - if (oc.getValidStartDate().getTime() > now.getTime()) { - oc.setValidStatus(EnumCouponOrderValidStatus.PREPARED.getCode()); - } else if (oc.getValidEndDate().getTime() < now.getTime()) { - oc.setValidStatus(EnumCouponOrderValidStatus.ENDED.getCode()); - } else { - oc.setValidStatus(EnumCouponChannelActivityStatus.STARTED.getCode()); - } - } - }); - - return new ResultData(page); } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java index 976255e97..a7a5c30f3 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxOrderCouponVo.java @@ -22,6 +22,11 @@ public class WxOrderCouponVo extends TenantEntity { @TableField(exist = false) private Integer validStatus; + @TableField(exist = false) + private Integer level; + @TableField(exist = false) + private List orderCouponVoList; + /** 基础购买到的券信息 */ @io.swagger.annotations.ApiModelProperty(value="订单码;正反向交易保持一致。",name="orderNumber") private Long orderNumber; diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java b/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java index 0e0c0b12f..0e35883cf 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumComposeOrder.java @@ -10,7 +10,8 @@ public enum EnumComposeOrder { SINGLE(0, "单个订单类型,如拼团,砍价"), ONE_NUMBER_ORDER_BATCH(1, "购物车式组合下单,1个数量1个订单(针对同样产品)"), MULITY_NUMBER_ORDER_BATCH(2,"购物车式组合下单,多个数量1个订单(针对同样产品)"), - PACKAGECOUPON(3,"券包订单类型") + PACKAGECOUPON(3,"券包订单类型"), + PACKAGECOUPON_SUB(4,"券包子订单类型") ; public static EnumComposeOrder getEnum(Integer code) { 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 eeea75c16..1c0a6ad95 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -2522,7 +2522,16 @@ public class WxOrderServiceImpl implements WxOrderService { @Override public PageInfo listGoodsCAsPage(WxOrder record, Integer pageIndex, Integer pageSize) { - return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxOrderMapper.listGoodsCAsPage(record)); + PageInfo page = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxOrderMapper.listGoodsCAsPage(record)); + page.getList().stream().forEach(oc->{ + if(oc.getLevel().equals(1)){ + record.setComposeOrderId(oc.getComposeOrderId()); + record.setOrderStatus(oc.getOrderStatus()); + oc.setOrderCouponVoList(wxOrderMapper.findListOfCUser(record)); + } + }); + + return page; } private WxCoupon singleOrderCheck(OrderSaveDto orderSaveDto,int productCount,WxCUserBasicInfo wxCUserBasicInfo,EnumPayWay payWay,TenantEntity tenantEntity,int curindex,boolean singleProduct) { diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index 865cde0ee..aca495e0b 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -299,9 +299,12 @@ - + + + + @@ -348,6 +351,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + order by ${sortColumns} - + select * from( + + select 0 level,o.compose_order_type,o.compose_order_id,o.order_status,o.create_date, + o.id,o.order_number,o.tenant_id,o.parent_tenant_id,o.c_user_id,o.coupon_channel_id,o.product_id,o.payment_type,o.payment,o.payment_time,o.update_date, + c.type,c.cover_img,c.title,c.sub_title,c.sale_price,c.use_price,c.price,c.tail_price,c.orig_price,c.unit,c.valid_start_date,c.valid_end_date,c.pick_start_date,c.pick_end_date, + o.`freight_price`,o.`shipping_type`,o.`shipping_address` from wx_coupon c,wx_order o - left join wx_coupon_order co on co.order_id = o.id - where o.product_id = c.id and o.order_status in (0,1,2,3,4,5) + where o.product_id = c.id and o.order_status in (0,2) + and o.compose_order_type in (0,3) + and o.compose_order_id = 0 and o.c_user_id = #{cUserId} @@ -409,13 +468,58 @@ and o.`parent_tenant_id` = #{parentTenantId} - - and o.`compose_order_id` = #{composeOrderId} + + AND o.order_status = #{orderStatus} + + + union all + + select 0 level, o.compose_order_type,o.compose_order_id,o.order_status,o.create_date, + o.id,o.order_number,o.tenant_id,o.parent_tenant_id,o.c_user_id,o.coupon_channel_id,o.product_id,o.payment_type,o.payment,o.payment_time,o.update_date, + c.type,c.cover_img,c.title,c.sub_title,c.sale_price,c.use_price,c.price,c.tail_price,c.orig_price,c.unit,c.valid_start_date,c.valid_end_date,c.pick_start_date,c.pick_end_date, + o.`freight_price`,o.`shipping_type`,o.`shipping_address` + from wx_coupon c,wx_order o + where o.product_id = c.id and o.order_status in (1,3,4,5) + and o.compose_order_type in (0,1,2,3) + + and o.c_user_id = #{cUserId} + + + and o.`tenant_id` = #{tenantId} + + + and o.`parent_tenant_id` = #{parentTenantId} AND o.order_status = #{orderStatus} - order by ${sortColumns} + + union all + + select 1 level,o.compose_order_type,o.compose_order_id,o.order_status,min(create_date) create_date, + null ,null ,null ,null ,null ,null ,null ,null ,null ,null ,null , + null ,null ,null ,null ,null ,null ,null ,null ,null ,null ,null ,null ,null ,null , + null ,null ,null + from wx_order o + where o.order_status in (0,2) + and o.compose_order_type in (1,2) + and o.compose_order_id > 0 + + and o.c_user_id = #{cUserId} + + + and o.`tenant_id` = #{tenantId} + + + and o.`parent_tenant_id` = #{parentTenantId} + + + AND o.order_status = #{orderStatus} + + group by o.compose_order_type,o.compose_order_id + + ) a + order by a.create_date desc @@ -451,10 +453,10 @@