浏览代码

Merge remote-tracking branch 'origin/dev' into dev

# Conflicts:
#	nightFragrance-massage/src/main/java/com/ylx/order/service/TOrderService.java
#	nightFragrance-massage/src/main/java/com/ylx/order/service/impl/TOrderServiceImpl.java
郭子栋 2 天之前
父节点
当前提交
0080c0748b

+ 27 - 0
nightFragrance-admin/src/main/java/com/ylx/web/controller/massage/PayController.java

@@ -34,6 +34,9 @@ import com.ylx.massage.enums.BillTypeEnum;
 import com.ylx.massage.service.RefundVoucherService;
 import com.ylx.massage.service.TRechargeService;
 import com.ylx.massage.service.TWxUserService;
+import com.ylx.order.domain.TOrder;
+import com.ylx.order.enums.OrderStatusEnum;
+import com.ylx.order.service.TOrderService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -75,6 +78,8 @@ public class PayController {
     private WxPayService wxPayService;
     @Resource
     private IGiftCardOrderService giftCardOrderService;
+    @Resource
+    private TOrderService orderService;
 
     /**
      * 小程序微信支付的第一步,统一下单
@@ -229,6 +234,28 @@ public class PayController {
                     this.giftCardOrderService.processGiftCardPayment(result, wxUser, cardOrder);
                 } else if (WxPayTypeEnum.EMOTION_GOODS.getCode().equals(attach)) {
                     log.info("检测到情感服务商品支付成功,订单号: {}", outTradeNo);
+
+                    // 3.1 更新订单支付状态
+                    LambdaQueryWrapper<TOrder> wrapper = new LambdaQueryWrapper<>();
+                    wrapper.eq(TOrder::getOrderNo, outTradeNo);
+                    TOrder order = this.orderService.getOne(wrapper);
+                    if (ObjectUtil.isNull(order)) {
+                        log.error("订单不存在,订单号: {}", outTradeNo);
+                        resp.put("code", "FAIL");
+                        resp.put("message", "订单不存在");
+                        return resp;
+                    }
+                    // 3.2 检查是否已处理
+                    if (ObjectUtil.equals(OrderStatusEnum.PENDING_DISPATCH.getCode(), order.getStatus())) {
+                        log.warn("订单已处理过:{}", outTradeNo);
+                        resp.put("code", "SUCCESS");
+                        resp.put("message", "OK");
+                        return resp;
+                    }
+
+                    // 3.3 处理订单相关数据
+                    this.orderService.processOrderPayment(result, wxUser, order);
+
                 }
             }
 

+ 1 - 0
nightFragrance-massage/src/main/java/com/ylx/giftCard/service/impl/GiftCardOrderServiceImpl.java

@@ -106,6 +106,7 @@ public class GiftCardOrderServiceImpl extends ServiceImpl<GiftCardOrderMapper, G
         log.info("订单取消成功,订单号:{},购物卡ID:{}", order.getOrderNo(), order.getGiftCardId());
     }
 
+    @Override
     @Transactional(rollbackFor = Exception.class)
     public void processGiftCardPayment(WxPayOrderNotifyV3Result.DecryptNotifyResult result, TWxUser wxUser,GiftCardOrder cardOrder) {
 

+ 3 - 0
nightFragrance-massage/src/main/java/com/ylx/order/service/TOrderService.java

@@ -2,6 +2,7 @@ package com.ylx.order.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyV3Result;
 import com.ylx.common.core.domain.R;
 import com.ylx.order.domain.TOrder;
 import com.ylx.massage.domain.TWxUser;
@@ -168,6 +169,8 @@ public interface TOrderService extends IService<TOrder> {
      */
     void logicDeleteOrder(Long orderId);
 
+    void processOrderPayment(WxPayOrderNotifyV3Result.DecryptNotifyResult result, TWxUser wxUser, TOrder order);
+
     /**
      * 修改订单表状态必须使用此接口(此接口里面会插入订单流转记录表)
      * @param dto

+ 11 - 1
nightFragrance-massage/src/main/java/com/ylx/order/service/impl/TOrderServiceImpl.java

@@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyV3Result;
 import com.ylx.common.core.domain.R;
 import com.ylx.common.core.domain.model.WxLoginUser;
 import com.ylx.common.exception.ServiceException;
@@ -13,7 +14,6 @@ import com.ylx.common.utils.DateUtils;
 import com.ylx.common.utils.SecurityUtils;
 import com.ylx.common.weixinPay.enums.WxPayTypeEnum;
 import com.ylx.common.weixinPay.service.WxPayV3Service;
-import com.ylx.giftCard.domain.GiftCardOrder;
 import com.ylx.massage.domain.MaTechnician;
 import com.ylx.massage.domain.TAddress;
 import com.ylx.massage.domain.TWxUser;
@@ -372,6 +372,16 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
         // 5. 事务成功,返回(Controller中会返回 success 信息)
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void processOrderPayment(WxPayOrderNotifyV3Result.DecryptNotifyResult result, TWxUser wxUser, TOrder order) {
+        // 更新订单状态
+        this.lambdaUpdate()
+                .set(TOrder::getStatus, OrderStatusEnum.PENDING_DISPATCH.getCode())
+                .eq(TOrder::getId, order.getId())
+                .update();
+    }
+
     /**
      *
      * 更新订单状态(修改订单表状态必须使用此接口)