Procházet zdrojové kódy

支付完返回积分、身价

Ben před 9 měsíci
rodič
revize
9eb5807f6e

+ 43 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/app/order/AppTradeOrderController.java

@@ -7,6 +7,9 @@ import cn.newfeifan.mall.module.pay.api.notify.dto.PayOrderNotifyReqDTO;
 import cn.newfeifan.mall.module.pay.controller.admin.order.vo.PayOrderRespVO;
 import cn.newfeifan.mall.module.pay.convert.order.PayOrderConvert;
 import cn.newfeifan.mall.module.pay.dal.dataobject.order.PayOrderDO;
+import cn.newfeifan.mall.module.pay.dal.mysql.order.PayOrderMapper;
+import cn.newfeifan.mall.module.pay.enums.order.PayOrderStatusEnum;
+import cn.newfeifan.mall.module.pay.service.order.PayOrderService;
 import cn.newfeifan.mall.module.trade.controller.app.order.vo.*;
 import cn.newfeifan.mall.module.trade.controller.app.order.vo.item.AppTradeOrderItemCommentCreateReqVO;
 import cn.newfeifan.mall.module.trade.controller.app.order.vo.item.AppTradeOrderItemRespVO;
@@ -57,6 +60,46 @@ public class AppTradeOrderController {
     @Resource
     private TradeOrderProperties tradeOrderProperties;
 
+    //add by Ben
+    @Resource
+    private PayOrderMapper payOrderMapper;
+    //add by Ben
+    @Resource
+    private PayOrderService payOrderService;
+
+
+    @GetMapping("/getPayOrderByStatus")
+    @Operation(summary = "获得支付订单")
+    @Parameter(name = "id", description = "支付订单编号", required = true, example = "1024")
+    public CommonResult<PayOrderRespVO> getPayOrderByStatus(@RequestParam("id") Long id) {
+
+        PayOrderDO oldPayOrderDO = payOrderMapper.selectById(id);
+        PayOrderDO newPayOrderDO = payOrderService.getOrderByStatus(oldPayOrderDO);
+
+        CommonResult<PayOrderRespVO> success = success(PayOrderConvert.INSTANCE.convert(newPayOrderDO));
+
+        //如果在上一行代码,把支付订单状态从“待支付”,改为“已支付”,则证明订单支付成功,则改trade_order表状态为待发货,并且分配积分
+        if(oldPayOrderDO.getStatus().equals(PayOrderStatusEnum.WAITING.getStatus())
+                &&
+                newPayOrderDO.getStatus().equals(PayOrderStatusEnum.SUCCESS.getStatus())
+        )
+        {
+            //只有支付订单id参数payOrderId是有用的。
+            List list = tradeOrderUpdateService.updateOrderPaid(id);
+            Object jfObj = list.get(0);
+            Object sjObj = list.get(1);
+
+            Long jf = (Long)jfObj;//待确权积分
+            Double sj = (Double)sjObj;//待确权身价
+
+            success.getData().setJf(jf);
+            success.getData().setSj(sj);
+        }
+
+        return success;
+    }
+
+
 
     /**
      * add by Ben

+ 10 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderUpdateService.java

@@ -11,8 +11,12 @@ import cn.newfeifan.mall.module.trade.controller.app.order.vo.AppTradeOrderSettl
 import cn.newfeifan.mall.module.trade.controller.app.order.vo.AppTradeOrderSettlementRespVO;
 import cn.newfeifan.mall.module.trade.controller.app.order.vo.item.AppTradeOrderItemCommentCreateReqVO;
 import cn.newfeifan.mall.module.trade.dal.dataobject.order.TradeOrderDO;
+import cn.newfeifan.mall.module.trade.enums.order.TradeOrderOperateTypeEnum;
+import cn.newfeifan.mall.module.trade.framework.order.core.annotations.TradeOrderLog;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.validation.constraints.NotNull;
+import java.util.List;
 
 /**
  * 交易订单【写】Service 接口
@@ -42,6 +46,12 @@ public interface TradeOrderUpdateService {
      */
     TradeOrderDO createOrder(Long userId, AppTradeOrderCreateReqVO createReqVO);
 
+    @Transactional(rollbackFor = Exception.class)
+    @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.MEMBER_PAY)
+    //下面的参数中的id1为交易订单TradeOrder表的id,已经没用了,因为一个支付订单对应多个订单。
+    //只有支付订单id参数payOrderId是有用的。
+    List updateOrderPaid(Long payOrderId);
+
     /**
      * 更新交易订单已支付
      *

+ 33 - 4
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderUpdateServiceImpl.java

@@ -106,6 +106,8 @@ import static cn.newfeifan.mall.module.trade.enums.ErrorCodeConstants.*;
 @Slf4j
 public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
 
+
+
     @Resource
     private IntegralMapper integralMapper;//add by ben 20240411
 
@@ -864,15 +866,16 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
         return payOrderId;//返回支付订单ID
     }
 
+
     @Override
-    @Transactional(rollbackFor = Exception.class)
     @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.MEMBER_PAY)
-    //下面的参数中的id1为交易订单TradeOrder表的id,已经没用了,因为一个支付订单对应多个订单。
     //只有支付订单id参数payOrderId是有用的。
-    public void updateOrderPaid(Long id1, Long payOrderId) {
+    public List updateOrderPaid(Long payOrderId) {
 
 //        System.out.println("#########updateOrderPaid####payOrderId:"+payOrderId);
 
+        List rs = new ArrayList();
+
         //查询订单提成比例
         QueryWrapper<OrderPercentageDO> queryWrapper = new QueryWrapper<>();
         OrderPercentageDO orderPercentageDO = orderPercentageMapper.selectOne(queryWrapper);//表中只有一条记录
@@ -881,7 +884,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
          */
         String grossProfitPerc = orderPercentageDO.getGrossProfitPerc();
 
-
+        Integer allTradeOrderTotalPrice = 0;//所有订单的总金额
+        Long allTradeOrderTotalFreezeAmount = 0l;//所有订单用户总的冻结积分
 
         /**
          * 购物本人自得 百分比
@@ -894,6 +898,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
         for(TradeOrderDO tradeOrderDO:TradeOrderDOList) {
 
             Long tradeOrderId = tradeOrderDO.getId();
+            allTradeOrderTotalPrice+=tradeOrderDO.getTotalPrice();
 
 //            System.out.println("#########updateOrderPaid####tradeOrderId:"+tradeOrderId);
 
@@ -972,12 +977,36 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
             String OrderNum =order.getNo();
             integralService.updateUserIntegral(tradeOrderDO.getUserId(), CaclEnum.ORDER_GET_FREEZE_INTEGRAL, 0l,totalFreezeAmount,tradeOrderId,OrderNum);
 
+            allTradeOrderTotalFreezeAmount+=totalFreezeAmount;//用户获得总的待确权冻结积分
 
             // 发送给微信消息给系统用户待发货消息
             sentWcChatMessage(order);
         }
 
 
+        //自得身价计算
+        double orderUserSocialStatus = Double.parseDouble(orderPercentageDO.getOrderUserSocialStatus());//获得身价百分比
+        Double newSocialStatus = allTradeOrderTotalPrice * orderUserSocialStatus / 100;//用户获取的待确权身价值
+
+
+        rs.add(allTradeOrderTotalFreezeAmount);
+        rs.add(newSocialStatus);
+
+        return rs;
+    }
+
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.MEMBER_PAY)
+    //下面的参数中的id1为交易订单TradeOrder表的id,已经没用了,因为一个支付订单对应多个订单。
+    //只有支付订单id参数payOrderId是有用的。
+    public void updateOrderPaid(Long id1, Long payOrderId) {
+
+        log.error("[TradeOrderUpdateServiceImpl.updateOrderPaid]###微信回调(现在程序什么也没干):[payOrderId({}) ,TradeOrderId({})]"+new Date(),
+                payOrderId, id1);
+
+        //updateOrderPaid( payOrderId);
     }
 
     private void sentWcChatMessage(TradeOrderDO order){

+ 5 - 0
feifan-module-pay/feifan-module-pay-biz/src/main/java/cn/newfeifan/mall/module/pay/controller/admin/order/vo/PayOrderRespVO.java

@@ -19,4 +19,9 @@ public class PayOrderRespVO extends PayOrderBaseVO {
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
     private LocalDateTime createTime;
 
+    @Schema(description = "待确权积分")
+    private Long jf;
+
+    @Schema(description = "待确权身价")
+    private Double sj;
 }

+ 2 - 0
feifan-module-pay/feifan-module-pay-biz/src/main/java/cn/newfeifan/mall/module/pay/service/order/PayOrderService.java

@@ -31,6 +31,8 @@ public interface PayOrderService {
      */
     PayOrderDO getOrder(Long id);
 
+    PayOrderDO getOrderByStatus(PayOrderDO payOrderDO);
+
     /**
      * 获得支付订单
      *

+ 17 - 0
feifan-module-pay/feifan-module-pay-biz/src/main/java/cn/newfeifan/mall/module/pay/service/order/PayOrderServiceImpl.java

@@ -80,6 +80,23 @@ public class PayOrderServiceImpl implements PayOrderService {
         return orderMapper.selectById(id);
     }
 
+
+    @Override
+    public PayOrderDO getOrderByStatus(PayOrderDO payOrderDO) {
+        //添加验证是否支付成功
+        if(payOrderDO.getStatus().equals(PayOrderStatusEnum.WAITING.getStatus())){
+            //修改程序,当微信支付回调的时候再次向微信请求查询pay订单的支付状态
+            log.info("============支付成功查询:支付订单号{}",payOrderDO.getId());
+            log.info("============支付成功查询:支付订单详情{}",payOrderDO);
+            PayOrderExtensionDO payOrderExtensionDO = orderExtensionMapper.selectByPayId(payOrderDO.getId());
+            syncOrder(payOrderExtensionDO);
+        }
+
+        PayOrderDO newPayOrderDO = orderMapper.selectById(payOrderDO.getId());
+
+        return newPayOrderDO;
+    }
+
     @Override
     public PayOrderDO getOrderByStatus(Long id) {
         //添加验证是否支付成功