支付调整

This commit is contained in:
akun 2024-04-19 14:02:31 +08:00
parent 6181876f6c
commit c2d14d1022
5 changed files with 25 additions and 16 deletions

View File

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

View File

@ -36,7 +36,7 @@ public class HuaweiPaymentController {
/**
* 华为购买验证
* 华为购买验证(订购会员)
*/
@PostMapping("/huawei/purchases/verify")
public AjaxResult purchasesVerify(@Validated @RequestBody HuaweiPurchasesVerifyDTO verifyDTO) {

View File

@ -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());

View File

@ -48,7 +48,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="selectGoodsMessagesByCode" parameterType="String" resultMap="GoodsMessagesResult">
<include refid="selectGoodsMessagesVo"/>
where goods_code = #{goodsCode}
where goods_code = #{goodsCode} limit 1
</select>
<insert id="insertGoodsMessages" parameterType="GoodsMessages" useGeneratedKeys="true" keyProperty="id">

View File

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