From c2d14d1022741c7f01e1cb3d2711d872b9e8ed20 Mon Sep 17 00:00:00 2001 From: akun <957746831@qq.com> Date: Fri, 19 Apr 2024 14:02:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E4=BB=98=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/sf/order/domain/OrderInfo.java | 4 ++-- .../controller/HuaweiPaymentController.java | 2 +- .../impl/HuaweiPaymentServiceImpl.java | 22 ++++++++++--------- .../mapper/service/GoodsMessagesMapper.xml | 2 +- .../java/com/sf/system/domain/UserMember.java | 11 ++++++++-- 5 files changed, 25 insertions(+), 16 deletions(-) diff --git a/sf-order/src/main/java/com/sf/order/domain/OrderInfo.java b/sf-order/src/main/java/com/sf/order/domain/OrderInfo.java index 889350d..5a2ac0c 100644 --- a/sf-order/src/main/java/com/sf/order/domain/OrderInfo.java +++ b/sf-order/src/main/java/com/sf/order/domain/OrderInfo.java @@ -31,9 +31,9 @@ public class OrderInfo extends BaseEntity { private Long orderNo; /** - * 订单状态: 0:待支付 1:已付款待发货 2:配送中 3:待取货 4:支付超时系统结束 5:客户自主取消 6:已完成 + * 订单状态: 订单状态: 0:待支付 1:已付款 2:支付超时系统结束 3:客户自主取消 4:已完成 */ - @Excel(name = "订单状态: 0:待支付 1:已付款待发货 2:配送中 3:待取货 4:支付超时系统结束 5:客户自主取消 6:已完成 ") + @Excel(name = "订单状态: 0:待支付 1:已付款 2:支付超时系统结束 3:客户自主取消 4:已完成") private Long orderStatus; /** diff --git a/sf-payment/src/main/java/com/sf/payment/controller/HuaweiPaymentController.java b/sf-payment/src/main/java/com/sf/payment/controller/HuaweiPaymentController.java index 74650cc..34eafee 100644 --- a/sf-payment/src/main/java/com/sf/payment/controller/HuaweiPaymentController.java +++ b/sf-payment/src/main/java/com/sf/payment/controller/HuaweiPaymentController.java @@ -36,7 +36,7 @@ public class HuaweiPaymentController { /** - * 华为购买验证 + * 华为购买验证(订购会员) */ @PostMapping("/huawei/purchases/verify") public AjaxResult purchasesVerify(@Validated @RequestBody HuaweiPurchasesVerifyDTO verifyDTO) { diff --git a/sf-payment/src/main/java/com/sf/payment/service/impl/HuaweiPaymentServiceImpl.java b/sf-payment/src/main/java/com/sf/payment/service/impl/HuaweiPaymentServiceImpl.java index 1a86679..17f8189 100644 --- a/sf-payment/src/main/java/com/sf/payment/service/impl/HuaweiPaymentServiceImpl.java +++ b/sf-payment/src/main/java/com/sf/payment/service/impl/HuaweiPaymentServiceImpl.java @@ -92,8 +92,6 @@ public class HuaweiPaymentServiceImpl implements IHuaweiPaymentService { @Override @Transactional(rollbackFor = Exception.class) public void purchasesVerify(HuaweiPurchasesVerifyDTO verifyDTO) { - // 待发放会员商品 - PurchaseOrderPayload huaweiQueryResponsePurchaseOrderPayload; // 验证 TODO 证书验签官网未实现 if (GoodsConstants.GOODS_TYPE_CONSUMABLE.equals(verifyDTO.getType()) || GoodsConstants.GOODS_TYPE_NON_CONSUMABLE.equals(verifyDTO.getType())) { @@ -144,28 +142,29 @@ public class HuaweiPaymentServiceImpl implements IHuaweiPaymentService { SubGroupStatusPayload subGroupStatusPayload = JSON.parseObject(decodeHuaweiQueryResponsepayload, SubGroupStatusPayload.class); PurchaseOrderPayload huaweiQueryResponsePurchaseOrderPayload = subGroupStatusPayload.getLastSubscriptionStatus().getLastPurchaseOrder(); // 发货 - return delivery(lastPurchaseOrder, huaweiQueryResponsePurchaseOrderPayload); + return delivery(lastPurchaseOrder, huaweiQueryResponsePurchaseOrderPayload, subGroupStatusPayload.getLastSubscriptionStatus()); } /** * 发货 + * * @param purchaseOrder * @param huaweiQueryResponsePurchaseOrderPayload + * @param lastSubscriptionStatus * @return */ - private PurchaseOrderPayload delivery(PurchaseOrderPayload purchaseOrder, PurchaseOrderPayload huaweiQueryResponsePurchaseOrderPayload) { + private PurchaseOrderPayload delivery(PurchaseOrderPayload purchaseOrder, PurchaseOrderPayload huaweiQueryResponsePurchaseOrderPayload, SubscriptionStatus lastSubscriptionStatus) { Assert.isTrue(purchaseOrder.getPurchaseOrderId().equals(huaweiQueryResponsePurchaseOrderPayload.getPurchaseOrderId()), "订单不一致,发货失败!"); if (2 == huaweiQueryResponsePurchaseOrderPayload.getFinishStatus()) { // 还未发货 // 查询平台是否配置该商品 - // 查询平台是否配置该商品 GoodsMessages goods = goodsMessagesService.selectGoodsMessagesByCode(huaweiQueryResponsePurchaseOrderPayload.getProductId()); Assert.notNull(goods, "未配置此商品,请检查商品配置"); Assert.isTrue(goods.getOriginalPrice().equals(huaweiQueryResponsePurchaseOrderPayload.getPrice()), "商品价格与订单价格不一致,请检查价格配置"); // 创建完成订单 createOrder(huaweiQueryResponsePurchaseOrderPayload, goods); // 发放会员权益 - distributeMembershipBenefits(huaweiQueryResponsePurchaseOrderPayload); + distributeMembershipBenefits(huaweiQueryResponsePurchaseOrderPayload, lastSubscriptionStatus); } else { log.info("华为应用内支付订单已发货!{}", JSON.toJSONString(huaweiQueryResponsePurchaseOrderPayload)); } @@ -210,7 +209,7 @@ public class HuaweiPaymentServiceImpl implements IHuaweiPaymentService { PurchaseOrderPayload huaweiQueryResponsePurchaseOrderPayload = JSON.parseObject(decodehuaweiQueryResponsepayload, PurchaseOrderPayload.class); // 暂时只做简单验证 - return delivery(appPurchaseOrderPayload, huaweiQueryResponsePurchaseOrderPayload); + return delivery(appPurchaseOrderPayload, huaweiQueryResponsePurchaseOrderPayload, null); } private void createOrder(PurchaseOrderPayload appPurchaseOrderPayload, GoodsMessages goods) { @@ -237,17 +236,18 @@ public class HuaweiPaymentServiceImpl implements IHuaweiPaymentService { } - private void distributeMembershipBenefits(PurchaseOrderPayload purchaseOrderPayload) { + private void distributeMembershipBenefits(PurchaseOrderPayload purchaseOrderPayload, SubscriptionStatus lastSubscriptionStatus) { // 发放会员权益 Long userId = SecurityUtils.getUserId(); UserMember userMember = userMemberService.selectUserMemberByUserId(userId); + boolean isSubscription = GoodsConstants.GOODS_TYPE_AUTOMATIC_RENEWAL_SUBSCRIPTION.equals(purchaseOrderPayload.getProductType()); + int subscriptionStatus = isSubscription ? lastSubscriptionStatus.getStatus() : 0; if (userMember == null) { // 添加会员信息 - boolean isSubscription = GoodsConstants.GOODS_TYPE_AUTOMATIC_RENEWAL_SUBSCRIPTION.equals(purchaseOrderPayload.getProductType()); DateTime payTime = DateUtil.date(purchaseOrderPayload.getPurchaseTime()); userMember = new UserMember(); userMember.setMemberLevel(isSubscription ? 1 : 2); - userMember.setSubscriptionStatus(isSubscription ? 1 : 0); + userMember.setSubscriptionStatus(subscriptionStatus); userMember.setUserId(userId); userMember.setIntegration(0L); DateTime expirationTime = DateUtil.offset(payTime, DateField.MONTH, 1); @@ -257,6 +257,8 @@ public class HuaweiPaymentServiceImpl implements IHuaweiPaymentService { userMemberService.insertUserMember(userMember); } else { // 更新 + userMember.setMemberLevel(isSubscription ? 1 : 2); + userMember.setSubscriptionStatus(subscriptionStatus); DateTime expirationTime = DateUtil.offset(userMember.getExpirationTime(), DateField.MONTH, 1); userMember.setExpirationTime(expirationTime); userMember.setUpdateTime(new Date()); diff --git a/sf-service/src/main/resources/mapper/service/GoodsMessagesMapper.xml b/sf-service/src/main/resources/mapper/service/GoodsMessagesMapper.xml index 3e55f20..f564761 100644 --- a/sf-service/src/main/resources/mapper/service/GoodsMessagesMapper.xml +++ b/sf-service/src/main/resources/mapper/service/GoodsMessagesMapper.xml @@ -48,7 +48,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" diff --git a/sf-system/src/main/java/com/sf/system/domain/UserMember.java b/sf-system/src/main/java/com/sf/system/domain/UserMember.java index e298567..fa41ff1 100644 --- a/sf-system/src/main/java/com/sf/system/domain/UserMember.java +++ b/sf-system/src/main/java/com/sf/system/domain/UserMember.java @@ -24,8 +24,15 @@ public class UserMember extends BaseEntity @Excel(name = "用户会员等级", readConverterExp = "0=普通会员,1=订阅会员,2=月度会员") private Integer memberLevel; - /** 会员等级为订阅会员时的订阅状态,未订阅就是取消了(0未订阅 1已订阅) */ - @Excel(name = "会员等级为订阅会员时的订阅状态,未订阅就是取消了", readConverterExp = "0=未订阅,1=已订阅") + /** 会员等级为订阅会员时的订阅状态, + * 订阅状态。 + 0:未订阅 + 1:生效状态 + 2:已到期 + 3:尝试扣费 + 5:撤销 + 6:暂停 */ + @Excel(name = "会员等级为订阅会员时的订阅状态", readConverterExp = "0=未订阅,1=已订阅生效状态") private Integer subscriptionStatus; /** 关联的用户id */