From 07425eeaf3ddc5306fa2e304b1c1e34e45707205 Mon Sep 17 00:00:00 2001
From: Hentua <wangdoubleone@gmail.com>
Date: Fri, 07 Apr 2023 17:36:53 +0800
Subject: [PATCH] fix

---
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java |   91 ++++++++++++++++++++++++++-------------------
 1 files changed, 53 insertions(+), 38 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index 12fa502..023ba52 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -18,6 +18,7 @@
 import cc.mrbird.febs.pay.model.AgreementPayDto;
 import cc.mrbird.febs.pay.model.AgreementSignDto;
 import cc.mrbird.febs.pay.model.UnipayDto;
+import cc.mrbird.febs.pay.service.IAliPayService;
 import cc.mrbird.febs.pay.service.IPayService;
 import cc.mrbird.febs.pay.service.UnipayService;
 import cc.mrbird.febs.rabbit.producter.AgentProducer;
@@ -68,9 +69,10 @@
     private final RedisUtils redisUtils;
 
     private final AgentProducer agentProducer;
-    private final IPayService payService;
+    private final IAliPayService payService;
     private final IMallAchieveService mallAchieveService;
     private final UnipayService unipayService;
+    private final IPayService wechatPayService;
 
     private final MallMemberBankSignMapper mallMemberBankSignMapper;
     private final MallMemberBankMapper mallMemberBankMapper;
@@ -277,31 +279,17 @@
         String rcResult = "";
         switch (payOrderDto.getType()) {
             case "1":
-                UnipayDto unipayDtoWx = new UnipayDto();
-//                unipayDto.setAmount(new BigDecimal("0.01"));
-                unipayDtoWx.setAmount(orderInfo.getAmount());
-                unipayDtoWx.setFrpCode("WEIXIN_APP3");
-                unipayDtoWx.setTradeMerchantNo("777180800385820");
-                unipayDtoWx.setOrderNo(orderInfo.getOrderNo());
                 List<MallOrderItem> itemsWx = orderInfo.getItems();
                 if(CollUtil.isEmpty(itemsWx)){
-                    unipayDtoWx.setProductName("商品");
+                    orderInfo.setName("商品");
                 }else{
-                    unipayDtoWx.setProductName(itemsWx.get(0).getGoodsName());
+                    orderInfo.setName(itemsWx.get(0).getGoodsName());
                 }
-                String unipayStrWx = unipayService.unipay(unipayDtoWx);
-                if("fail" == unipayStrWx){
-                    throw new FebsException("支付失败");
-                }else{
-//                    JSONUtil.parseObj(unipayStr);
-                    JSONObject jsonObject = JSONUtil.parseObj(unipayStrWx);
-                    payResultStr = (String) jsonObject.get("r7_TrxNo");
-                    rcResult = (String) jsonObject.get("rc_Result");
-                }
+
+                payResultStr = wechatPayService.pay(orderInfo);
                 orderInfo.setPayOrderNo(payResultStr);
-//                orderInfo.setPayOrderNo(payOrderDto.getPayOrderNo());
-//                orderInfo.setPayImage(payOrderDto.getPayImage());
                 orderInfo.setPayMethod("微信支付");
+                orderInfo.setPayResult("2");
                 break;
             case "2":
 //                if (StrUtil.isNotBlank(orderInfo.getPayOrderNo())) {
@@ -342,6 +330,7 @@
                 orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
                 orderInfo.setPayTime(new Date());
                 orderInfo.setPayResult("1");
+                this.baseMapper.updateById(orderInfo);
 
                 changeWallet(orderInfo.getId());
                 /**
@@ -448,6 +437,7 @@
          * 所有合伙人补贴至消费礼包的三倍额度需要复购一次。
          */
         BigDecimal scoreSum = BigDecimal.ZERO;
+        BigDecimal achieveSum = BigDecimal.ZERO;
         List<MallOrderItem> orderItems = this.baseMapper.getMallOrderItemByOrderId(orderInfo.getId());
         if (CollUtil.isNotEmpty(orderItems)) {
             for (MallOrderItem orderItem : orderItems) {
@@ -467,7 +457,30 @@
 //                                    .multiply(new BigDecimal(orderItem.getCnt()))
 //                                    .abs()
 //                                    .setScale(2,BigDecimal.ROUND_DOWN));
+                    String goodsName = mallGoods.getGoodsName();
+                    /**
+                     * 1-2档投资级别,2.5倍
+                     * 3-4档投资级别,2.8倍
+                     * 5-6档投资级别,3倍
+                     * 目前紧急修改成按照商品名称
+                     */
+                    BigDecimal basePercent = new BigDecimal("3");
+                    if(goodsName.equals("礼包一") || goodsName.equals("礼包二")){
+                        basePercent = new BigDecimal("2.5");
+                    }
+                    if(goodsName.equals("礼包三") || goodsName.equals("礼包四")){
+                        basePercent = new BigDecimal("2.8");
+                    }
+                    if(goodsName.equals("礼包五") || goodsName.equals("礼包六")){
+                        basePercent = new BigDecimal("3");
+                    }
                     scoreSum = scoreSum.add(
+                            new BigDecimal(mallGoods.getPresentPrice())
+                                    .multiply(new BigDecimal(orderItem.getCnt()))
+                                    .multiply(basePercent)
+                                    .abs()
+                                    .setScale(2,BigDecimal.ROUND_DOWN));
+                    achieveSum = achieveSum.add(
                             new BigDecimal(mallGoods.getPresentPrice())
                                     .multiply(new BigDecimal(orderItem.getCnt()))
                                     .abs()
@@ -529,17 +542,17 @@
              * 增加补贴额度
              */
             if (scoreSum.compareTo(BigDecimal.ZERO) > 0) {
-                MallMember mallMember = memberMapper.selectById(memberId);
-                if(MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) >= 5){
-                    scoreSum = scoreSum.multiply(new BigDecimal(3));
-                }
-                if(MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) >= 3
-                &&MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) < 5){
-                    scoreSum = scoreSum.multiply(new BigDecimal(2.8));
-                }
-                if(MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) < 3){
-                    scoreSum = scoreSum.multiply(new BigDecimal(2.5));
-                }
+//                MallMember mallMember = memberMapper.selectById(memberId);
+//                if(MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) >= 5){
+//                    scoreSum = scoreSum.multiply(new BigDecimal(3));
+//                }
+//                if(MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) >= 3
+//                &&MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) < 5){
+//                    scoreSum = scoreSum.multiply(new BigDecimal(2.8));
+//                }
+//                if(MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) < 3){
+//                    scoreSum = scoreSum.multiply(new BigDecimal(2.5));
+//                }
                 memberWalletService.add(scoreSum, memberId, "totalScore");
                 mallMoneyFlowService.addMoneyFlow(
                         memberId,
@@ -590,13 +603,15 @@
         /**
          * 产生一条业绩记录
          */
-        MallAchieveRecord mallAchieveRecord = new MallAchieveRecord();
-        mallAchieveRecord.setMemberId(memberId);
-        mallAchieveRecord.setAchieveTime(new Date());
-        mallAchieveRecord.setAmount(orderInfo.getAmount().subtract(orderInfo.getScoreAmount()));
-        mallAchieveRecord.setOrderId(orderId);
-        mallAchieveRecord.setPayTime(orderInfo.getPayTime());
-        mallAchieveRecordMapper.insert(mallAchieveRecord);
+        if(achieveSum.compareTo(BigDecimal.ZERO) > 0){
+            MallAchieveRecord mallAchieveRecord = new MallAchieveRecord();
+            mallAchieveRecord.setMemberId(memberId);
+            mallAchieveRecord.setAchieveTime(new Date());
+            mallAchieveRecord.setAmount(achieveSum.subtract(orderInfo.getScoreAmount()));
+            mallAchieveRecord.setOrderId(orderId);
+            mallAchieveRecord.setPayTime(orderInfo.getPayTime());
+            mallAchieveRecordMapper.insert(mallAchieveRecord);
+        }
     }
 
     public static void main(String[] args) {

--
Gitblit v1.9.1