From b141df9bf9764db8567efebed48006e12ab1f657 Mon Sep 17 00:00:00 2001 From: wzy <wzy19931122ai@163.com> Date: Sun, 14 Aug 2022 15:52:45 +0800 Subject: [PATCH] fix:jhy 停止下单 --- gc-order/src/main/java/com/xzx/gc/order/service/DistribService.java | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 105 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 8eb7151..b9e8a1f 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 @@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.xzx.gc.common.constant.CommonEnum; +import com.xzx.gc.common.constant.Constants; import com.xzx.gc.entity.*; import com.xzx.gc.order.mapper.*; import lombok.extern.slf4j.Slf4j; @@ -44,7 +45,17 @@ private UserMapper userMapper; @Autowired private ScoreDetailsMapper scoreDetailsMapper; + @Autowired + private UserShareInfoMapper userShareInfoMapper; + @Autowired + private OrderMapper orderMapper; + /** + * 团长积分/环保币返利规则 + * + * @param orderId + * @param userId + */ public void distribRecord(Long orderId, String userId) { UserHeadRelate userHeadRelate = userHeadRelateMapper.selectRelateByUserId(userId); if (userHeadRelate == null) { @@ -57,7 +68,7 @@ } 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())) { @@ -86,7 +97,7 @@ if (StrUtil.isNotBlank(value) && !"0".equals(value)) { // 首单完成后,在value单内,返利积分或者环保币 - if (count - 1 <= Integer.parseInt(value)) { + if (count - 1 < Integer.parseInt(value)) { String scoreStr = getRuleValue(redPaperRule, CommonEnum.返利固定积分.getValue()); String coinStr = getRuleValue(redPaperRule, CommonEnum.返利环保币比例.getValue()); // 根据积分返利固定积分 @@ -99,7 +110,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.divide(new BigDecimal(40), 2, BigDecimal.ROUND_DOWN); + BigDecimal totalCoin = totalScore.divide(new BigDecimal(Constants.PRICE_SCORE_EXCHANGE), 2, BigDecimal.ROUND_DOWN); BigDecimal returnCoin = totalCoin.multiply(coinRatio).setScale(2, BigDecimal.ROUND_DOWN); totalReturnCoin = totalReturnCoin.add(returnCoin); @@ -118,6 +129,10 @@ } } + if (totalReturnCoin.intValue() == 0 && totalReturnScore.intValue() == 0) { + return; + } + UserHeadDetails userHeadDetails = new UserHeadDetails(); userHeadDetails.setHeadUserId(userHeadRelate.getHeadUserId()); userHeadDetails.setUserId(userId); @@ -132,7 +147,6 @@ 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()); @@ -156,11 +170,97 @@ sysMessage.setUserId(userHeadRelate.getHeadUserId()); sysMessage.setMessageType("4"); sysMessage.setMessageSubTypeName("返利消息"); - sysMessage.setMessage("收到用户:" + accountInfo.getAccountName().replaceAll("(\\w{3})\\w*(\\w{4})", "$1****$2") + "的订单返利, 积分:" + totalReturnScore +", 环保币:" + totalReturnCoin); + sysMessage.setMessage("收到用户:" + userInfo.getMobilePhone().replaceAll("(\\w{3})\\w*(\\w{4})", "$1****$2") + "的订单返利, 积分:" + totalReturnScore +", 环保币:" + totalReturnCoin); sysMessage.setFlag("2"); sysMessageMapper.insert(sysMessage); } + /** + * 普通用户邀请用户并下单返利规则 + * + */ + public void inviteAddOrderScore(String userId, String orderId) { + UserInfo userInfo = userMapper.selectByPrimaryKey(userId); + UserShareInfo userShareInfo = userShareInfoMapper.selectUserShareInfoByInvited(userInfo.getMobilePhone()); + + if (userShareInfo == null) { + return; + } + + // 查询当前用户邀请人信息,判断是否为团长,如果是团长,则不返利 + AccountInfo accountInfo = accountMapper.selectAccountInfoByPhone(userShareInfo.getMobilePhone()); + if (AccountInfo.IS_HEAD_Y.equals(accountInfo.getIsHead())) { + log.info("邀请人为团长, 不执行返利"); + return; + } + + if (AccountInfo.IS_PROHIBIT_Y.equals(accountInfo.getIsProhibit())) { + return; + } + + List<RedPaperRule> rules = redPaperRuleMapper.selectRuleByType(10); + if (CollUtil.isEmpty(rules)) { + log.info("没有具体规则"); + return; + } + + RedPaperRule rule = rules.get(0); + if (rule.getStatus() == 0) { + log.info("规则被禁用, 不执行返利"); + return; + } + + List<OrderInfo> riderOrders = orderMapper.selectOrderNoWaitAndCancel(userId); + int riderCnt = 0; + if (CollUtil.isNotEmpty(riderOrders)) { + riderCnt = riderOrders.size(); + } + + List<JhyOrder> jhyOrders = jhyOrderMapper.selectJhyOrderNoWaitAndCancel(userId); + int jhyCnt = 0; + if (CollUtil.isNotEmpty(jhyOrders)) { + jhyCnt = jhyOrders.size(); + } + + // 仅首单返利 + if (jhyCnt + riderCnt > 1) { + return; + } + + String value = getRuleValue(rule, CommonEnum.推荐首单奖励.getValue()); + BigDecimal returnScore = BigDecimal.ZERO; + if (StrUtil.isNotBlank(value)) { + returnScore = new BigDecimal(value); + } + + BigDecimal collectScore = StrUtil.isNotBlank(accountInfo.getCollectScore()) ? new BigDecimal(accountInfo.getCollectScore()) : BigDecimal.ZERO; + accountInfo.setCollectScore(collectScore.add(returnScore).setScale(0, BigDecimal.ROUND_DOWN).toString()); + accountMapper.updateByPrimaryKey(accountInfo); + + if (returnScore.compareTo(BigDecimal.ZERO) > 0) { + ScoreDetails scoreDetails = new ScoreDetails(); + scoreDetails.setCurrentScore(new BigDecimal(accountInfo.getCollectScore())); + scoreDetails.setOriginalScore(collectScore); + scoreDetails.setChangeScore(returnScore); + scoreDetails.setCreatedTime(new Date()); + scoreDetails.setType(ScoreDetails.SCORE_TYPE_INVITE_FIRST_ORDER); + scoreDetails.setUserId(accountInfo.getUserId()); + scoreDetails.setOrderNo(orderId.toString()); + scoreDetailsMapper.insert(scoreDetails); + } + + SysMessage sysMessage = new SysMessage(); + sysMessage.setCreateTime(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")); + sysMessage.setCreateUserId(accountInfo.getUserId()); + sysMessage.setUserId(accountInfo.getUserId()); + sysMessage.setMessageType("4"); + sysMessage.setMessageSubTypeName("返利消息"); + sysMessage.setMessage("收到用户:" + userInfo.getMobilePhone().replaceAll("(\\w{3})\\w*(\\w{4})", "$1****$2") + "的订单返利, 积分:" + returnScore); + sysMessage.setFlag("2"); + sysMessageMapper.insert(sysMessage); + + } + private String getRuleValue(RedPaperRule redPaperRule, String key) { List<String> rules = StrUtil.split(redPaperRule.getSharingProfitType(), ','); List<String> values = StrUtil.split(redPaperRule.getShareRatio(), ','); -- Gitblit v1.9.1