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 */