From 3f6f8756dbaa89163d318670daa9f79d9816b5d8 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Fri, 16 Jul 2021 15:20:16 +0800
Subject: [PATCH] fix

---
 gc-order/src/main/java/com/xzx/gc/order/service/DistribService.java |   36 +++++++++++++++++++++++++++++++-----
 1 files changed, 31 insertions(+), 5 deletions(-)

diff --git a/gc-order/src/main/java/com/xzx/gc/order/service/DistribService.java b/gc-order/src/main/java/com/xzx/gc/order/service/DistribService.java
index 05e17a7..8eb7151 100644
--- a/gc-order/src/main/java/com/xzx/gc/order/service/DistribService.java
+++ b/gc-order/src/main/java/com/xzx/gc/order/service/DistribService.java
@@ -42,6 +42,8 @@
     private AccountMapper accountMapper;
     @Autowired
     private UserMapper userMapper;
+    @Autowired
+    private ScoreDetailsMapper scoreDetailsMapper;
 
     public void distribRecord(Long orderId, String userId) {
         UserHeadRelate userHeadRelate = userHeadRelateMapper.selectRelateByUserId(userId);
@@ -55,7 +57,13 @@
         }
 
         Integer count = userHeadDetailsMapper.selectDetailsCount(userId);
-        UserInfo userInfo = userMapper.selectByPrimaryKey(userId);
+//        UserInfo userInfo = userMapper.selectByPrimaryKey(userId);
+        AccountInfo accountInfo = accountMapper.selectAccountInfoByUserId(userHeadRelate.getHeadUserId());
+
+        if (AccountInfo.IS_PROHIBIT_Y.equals(accountInfo.getIsProhibit())) {
+            return;
+        }
+
         List<String> remark = new ArrayList<>();
         BigDecimal totalReturnScore = BigDecimal.ZERO;
         BigDecimal totalReturnCoin = BigDecimal.ZERO;
@@ -68,7 +76,7 @@
             // 首单返利
             if (StrUtil.isNotBlank(value) && !"0".equals(value)) {
                 BigDecimal money = new BigDecimal(value);
-                totalReturnScore = totalReturnScore.add(money);
+                totalReturnCoin = totalReturnCoin.add(money);
                 remark.add("首单返利:" + money);
             }
         }
@@ -91,7 +99,7 @@
                     // 根据订单总积分, 1:40比例,换算成环保币,返对应百分比
                     if (StrUtil.isNotBlank(coinStr) && !"0".equals(coinStr)) {
                         BigDecimal coinRatio = new BigDecimal(coinStr).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_DOWN);
-                        BigDecimal totalCoin = totalScore.multiply(new BigDecimal(40));
+                        BigDecimal totalCoin = totalScore.divide(new BigDecimal(40), 2, BigDecimal.ROUND_DOWN);
 
                         BigDecimal returnCoin = totalCoin.multiply(coinRatio).setScale(2, BigDecimal.ROUND_DOWN);
                         totalReturnCoin = totalReturnCoin.add(returnCoin);
@@ -121,8 +129,26 @@
         userHeadDetailsMapper.insert(userHeadDetails);
 
         userHeadRelate.setAmount(userHeadRelate.getAmount().add(totalReturnCoin));
-        userHeadRelate.setScore(userHeadDetails.getScore().add(totalReturnScore));
+        userHeadRelate.setScore(userHeadRelate.getScore().add(totalReturnScore));
         userHeadRelateMapper.updateByPrimaryKey(userHeadRelate);
+
+        accountInfo.setAccountId(accountInfo.getAccountId());
+        accountInfo.setMoney(new BigDecimal(accountInfo.getMoney()).add(totalReturnCoin).setScale(2, BigDecimal.ROUND_DOWN).toString());
+        BigDecimal collectScore = StrUtil.isNotBlank(accountInfo.getCollectScore()) ? new BigDecimal(accountInfo.getCollectScore()) : BigDecimal.ZERO;
+        accountInfo.setCollectScore(collectScore.add(totalReturnScore).setScale(0, BigDecimal.ROUND_DOWN).toString());
+        accountMapper.updateByPrimaryKey(accountInfo);
+
+        if (totalReturnScore.compareTo(BigDecimal.ZERO) > 0) {
+            ScoreDetails scoreDetails = new ScoreDetails();
+            scoreDetails.setCurrentScore(new BigDecimal(accountInfo.getCollectScore()));
+            scoreDetails.setOriginalScore(collectScore);
+            scoreDetails.setChangeScore(totalReturnScore);
+            scoreDetails.setCreatedTime(new Date());
+            scoreDetails.setType(ScoreDetails.SCORE_TYPE_OTHER);
+            scoreDetails.setUserId(userHeadRelate.getHeadUserId());
+            scoreDetails.setOrderNo(order.getOrderNo());
+            scoreDetailsMapper.insert(scoreDetails);
+        }
 
         SysMessage sysMessage = new SysMessage();
         sysMessage.setCreateTime(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
@@ -130,7 +156,7 @@
         sysMessage.setUserId(userHeadRelate.getHeadUserId());
         sysMessage.setMessageType("4");
         sysMessage.setMessageSubTypeName("返利消息");
-        sysMessage.setMessage("收到用户:" + Base64.decodeStr(userInfo.getNickName()) + "的订单返利, 积分:" + totalReturnScore +", 环保币:" + totalReturnCoin);
+        sysMessage.setMessage("收到用户:" + accountInfo.getAccountName().replaceAll("(\\w{3})\\w*(\\w{4})", "$1****$2") + "的订单返利, 积分:" + totalReturnScore +", 环保币:" + totalReturnCoin);
         sysMessage.setFlag("2");
         sysMessageMapper.insert(sysMessage);
     }

--
Gitblit v1.9.1