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