From ae9faa12e8cc7984dfba8631a17e32b216a86508 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Mon, 26 Feb 2024 10:41:37 +0800
Subject: [PATCH] 抽奖

---
 src/test/java/cc/mrbird/febs/ProfitTest.java |  295 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 289 insertions(+), 6 deletions(-)

diff --git a/src/test/java/cc/mrbird/febs/ProfitTest.java b/src/test/java/cc/mrbird/febs/ProfitTest.java
index ab1abe5..f40d7c3 100644
--- a/src/test/java/cc/mrbird/febs/ProfitTest.java
+++ b/src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -1,11 +1,39 @@
 package cc.mrbird.febs;
 
+import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
+import cc.mrbird.febs.common.enumerates.MemberLevelEnum;
+import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
+import cc.mrbird.febs.common.enumerates.PerkEnum;
+import cc.mrbird.febs.common.utils.AppContants;
+import cc.mrbird.febs.common.utils.MallUtils;
+import cc.mrbird.febs.mall.entity.AdminAgentInfo;
+import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
+import cc.mrbird.febs.mall.entity.MallMember;
+import cc.mrbird.febs.mall.entity.MallOrderItem;
+import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
+import cc.mrbird.febs.mall.mapper.MallMemberMapper;
+import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
+import cc.mrbird.febs.mall.mapper.MallOrderItemMapper;
+import cc.mrbird.febs.mall.quartz.OrderSettlementJob;
 import cc.mrbird.febs.mall.service.IAgentService;
+import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
+import cc.mrbird.febs.mall.service.IMallAchieveService;
 import cc.mrbird.febs.mall.service.IMemberProfitService;
+import cc.mrbird.febs.pay.model.*;
+import cc.mrbird.febs.pay.service.UnipayService;
 import cc.mrbird.febs.rabbit.consumer.AgentConsumer;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
+
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
+import java.util.*;
 
 /**
  * @author wzy
@@ -14,17 +42,272 @@
 @SpringBootTest
 public class ProfitTest {
 
-    @Autowired
-    private AgentConsumer agentConsumer;
-
+//    @Autowired
+//    private AgentConsumer agentConsumer;
+//
     @Autowired
     private IAgentService agentService;
+    @Autowired
+    private MallMemberMapper mallMemberMapper;
+//
+//    @Autowired
+//    private IMemberProfitService memberProfitService;
+//
+
 
     @Autowired
-    private IMemberProfitService memberProfitService;
-
+    private IApiMallMemberWalletService walletService;
+    @Autowired
+    private DataDictionaryCustomMapper dataDictionaryCustomMapper;
     @Test
     public void dynamicProfit() {
-        memberProfitService.dynamicProfit(23L);
+        BigDecimal amountTC = new BigDecimal("100");
+        MallMember mallMember = mallMemberMapper.selectById(921L);
+        if(StrUtil.isNotEmpty(mallMember.getReferrerIds())){
+            //团队补贴对象
+            String referrerIds = mallMember.getReferrerIds();
+            List<String> referrerIdList = StrUtil.splitTrim(referrerIds, ",");
+            if(CollUtil.isNotEmpty(referrerIdList)){
+                String levelNormal = MemberLevelEnum.V1.getType();
+                BigDecimal cashPercentNormal = BigDecimal.ZERO;
+                BigDecimal scorePercentNormal = BigDecimal.ZERO;
+
+                DataDictionaryCustom poolScorePriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                        PerkEnum.POOL_SCORE_PRICE.getType(),
+                        PerkEnum.POOL_SCORE_PRICE.getCode());
+                BigDecimal poolScorePrice = new BigDecimal(poolScorePriceDic.getValue() == null ? "1" : poolScorePriceDic.getValue());
+                for(String teamPerkMemberInviteId : referrerIdList){
+                    MallMember teamPerkMember = mallMemberMapper.selectInfoByInviteId(teamPerkMemberInviteId);
+                    String level = teamPerkMember.getLevel();
+                    //比较两个级别的大小,level大于levelNormal返回1
+                    int compareMin = MemberLevelEnum.V1.compareLevel(level, levelNormal);
+                    int compareMax = MemberLevelEnum.V1.compareLevel(MemberLevelEnum.V6.getType(), level);
+                    if(compareMin >= 1 && compareMax >= 1){
+                        Long teamPerkMemberId = teamPerkMember.getId();
+                        DataDictionaryCustom teamPerkMemberDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                                "AGENT_PERK_SET", level);
+
+                        AdminAgentInfo adminAgentInfo = JSONObject.parseObject(teamPerkMemberDic.getValue(), AdminAgentInfo.class);
+                        BigDecimal cashPercent = adminAgentInfo.getCashPercent().multiply(AppContants.PERCENTAGE);
+                        BigDecimal scorePercent = adminAgentInfo.getScorePercent().multiply(AppContants.PERCENTAGE);
+                        //极差
+                        cashPercent = cashPercent.subtract(cashPercentNormal);
+                        scorePercent = scorePercent.subtract(scorePercentNormal);
+
+                        BigDecimal cashAmount = amountTC.multiply(cashPercent).setScale(2, BigDecimal.ROUND_DOWN);
+
+                        //如果是H金劵,除以当前价格,得到数量。
+                        BigDecimal scoreCnt = amountTC.multiply(scorePercent).setScale(2, BigDecimal.ROUND_DOWN);
+                        scoreCnt = scoreCnt.divide(poolScorePrice, 2 ,BigDecimal.ROUND_DOWN);
+                        MallMember mallMember1 = mallMemberMapper.selectById(teamPerkMemberId);
+                        if(cashAmount.compareTo(BigDecimal.ZERO) > 0){
+                            System.out.println(mallMember1.getName()+"获得:" + cashAmount);
+                        }
+                        if(scoreCnt.compareTo(BigDecimal.ZERO) > 0){
+                            System.out.println(mallMember1.getName()+"获得:" + scoreCnt);
+                        }
+                        levelNormal = level;
+                        cashPercentNormal = adminAgentInfo.getCashPercent().multiply(AppContants.PERCENTAGE);
+                        scorePercentNormal = adminAgentInfo.getScorePercent().multiply(AppContants.PERCENTAGE);
+                    }
+                }
+            }
+
+
+        }
+//        List<MallMember> mallMembers = mallMemberMapper.selectList(null);
+//        if(CollUtil.isEmpty(mallMembers)){
+//            return;
+//        }
+//        for(MallMember mallMember : mallMembers){
+//            boolean flag = false;
+//            String parentId = mallMember.getReferrerId();
+//            if (StrUtil.isBlank(parentId)) {
+//                flag = true;
+//            }
+//            String ids = "";
+//            while (!flag) {
+//                if (StrUtil.isBlank(ids)) {
+//                    ids += parentId;
+//                } else {
+//                    ids += ("," + parentId);
+//                }
+//                MallMember parentMember = mallMemberMapper.selectInfoByInviteId(parentId);
+//                if (parentMember == null) {
+//                    break;
+//                }
+//                parentId = parentMember.getReferrerId();
+//                if (StrUtil.isBlank(parentMember.getReferrerId())) {
+//                    flag = true;
+//                }
+//            }
+//
+//            if (StrUtil.isNotBlank(ids)) {
+//                mallMember.setReferrerIds(ids);
+//            }
+//            mallMemberMapper.updateById(mallMember);
+//        }
+
+
+//        walletService.add(new BigDecimal(2000), 1L, "equityLimit");//减少权益积分
+//        agentService.returnMoneyToAgent(3323L);
+//        agentService.autoUpAgentLevel(640L);
     }
+//    @Test
+//    public void agentProfit() {
+//        memberProfitService.agentProfit(null);
+//    }
+//
+//
+////    @Test
+////    public void staticProfit() {
+////        memberProfitService.staticProfit(new Date());
+////    }
+//
+//    @Test
+//    public void thankfulProfit() {
+//        memberProfitService.thankfulProfit(new Date());
+//    }
+//
+//    @Test
+//    public void rankProfit() {
+//        memberProfitService.rankProfit();
+//    }
+//
+//    @Autowired
+//    private MallOrderInfoMapper mallOrderInfoMapper;
+//
+//    @Test
+//    public void directorProfitTest() {
+//        memberProfitService.storeAndDirectorProfit(new Date());
+//    }
+//
+//    @Autowired
+//    private MallOrderItemMapper mallOrderItemMapper;
+//
+//    @Autowired
+//    private IMallAchieveService mallAchieveService;
+//
+//    @Test
+//    public void achieveTest() {
+//        List<MallOrderItem> items = mallOrderItemMapper.selectList(null);
+//        for (MallOrderItem item : items) {
+//            mallAchieveService.add(item.getId());
+//        }
+//    }
+//
+//    @Test
+//    public void paramTest() {
+//        Map<String, Integer> map = new HashMap<>();
+//        BigDecimal amount = new BigDecimal("100");
+//        map.put("amount", 1);
+//        changeAmount(map);
+//        System.out.println(map.get("amount"));
+//    }
+//
+//    public void changeAmount(Map<String, Integer> amount) {
+//        amount.put("amount", 2);
+//    }
+//
+//    @Test
+//    public void scorePool(){
+//        memberProfitService.scorePool();
+//    }
+//
+//    @Test
+//    public void staticProfit(){
+//        memberProfitService.staticProfit(null);
+//    }
+//
+//    @Autowired
+//    private OrderSettlementJob orderSettlementJob;
+//
+//    @Test
+//    public void orderSettlementJobTest() {
+////        orderSettlementJob.normalGoodsSettlementJob();
+//
+//        mallAchieveService.add(83L);
+//    }
+//
+//
+//    @Autowired
+//    private UnipayService unipayService;
+//    @Test
+//    public void unipay(){
+//        UnipayDto unipayDto = new UnipayDto();
+//        unipayDto.setAmount(new BigDecimal("0.01"));
+//        unipayDto.setFrpCode("ALIPAY_H5");
+//        unipayDto.setTradeMerchantNo("777180800385820");
+////        unipayDto.setFrpCode("WEIXIN_APP3");
+//        unipayDto.setOrderNo("2022082316415386395");
+//        unipayDto.setProductName("洗护套装");
+//        unipayService.unipay(unipayDto);
+//    }
+//    @Test
+//    public void getAgreeMentPaySms(){
+//        AgreeMentPaySmsDto agreeMentPaySmsDto = new AgreeMentPaySmsDto();
+//        agreeMentPaySmsDto.setOrderNo("2022082617305930328");
+//
+//        BigDecimal value = new BigDecimal("0.1").setScale(2, BigDecimal.ROUND_DOWN);
+//        DecimalFormat decimalFormat = new DecimalFormat("0.00#");
+//        String strVal = decimalFormat.format(value);
+//        agreeMentPaySmsDto.setOrderAmount(new BigDecimal(strVal));
+//        agreeMentPaySmsDto.setName("肖永");
+//        agreeMentPaySmsDto.setCreatedTime(DateUtil.now());
+//        agreeMentPaySmsDto.setIdType("1");
+//        agreeMentPaySmsDto.setIdCardNum("430321199310113713");
+//        agreeMentPaySmsDto.setBankNo("6222031901002389639");
+//        agreeMentPaySmsDto.setPhone("15274802129");
+//        String agreeMentPaySms = unipayService.getAgreeMentPaySms(agreeMentPaySmsDto);
+//        if("JS000000".equals(agreeMentPaySms)){
+//            System.out.println("获取成功");
+//        }else{
+//            System.out.println(agreeMentPaySms);
+//        }
+//    }
+//
+//    @Test
+//    public void agreementSign(){
+//        AgreementSignDto agreementSignDto = new AgreementSignDto();
+//        agreementSignDto.setOrderNo("2022082614465345250");
+//        agreementSignDto.setSmsCode("841243");
+//        unipayService.agreementSign(agreementSignDto);
+//    }
+//
+//    @Test
+//    public void agreementPay(){
+//        AgreementPayDto agreementPayDto = new AgreementPayDto();
+//        agreementPayDto.setOrderNo("2022082614465345250");
+//
+//        BigDecimal value = new BigDecimal("0.1").setScale(2, BigDecimal.ROUND_DOWN);
+//        DecimalFormat decimalFormat = new DecimalFormat("0.00#");
+//        String strVal = decimalFormat.format(value);
+//        agreementPayDto.setOrderAmount(new BigDecimal(strVal));
+//        agreementPayDto.setOrderTime(DateUtil.now());
+//        agreementPayDto.setOrderDesc("测试");
+//        agreementPayDto.setBankNo("6222031901002389639");
+//        unipayService.agreementPay(agreementPayDto);
+//    }
+//
+//    @Test
+//    public void singlePay(){
+//        /**
+//         * 调用汇聚代付
+//         */
+//        String orderNo = MallUtils.getOrderNum("W");
+//        SinglePayDto singlePayDto = new SinglePayDto();
+//        singlePayDto.setMerchantOrderNo(orderNo);
+//        singlePayDto.setReceiverAccountNoEncBankNo("6222031903210023839639");
+//        singlePayDto.setReceiverAccountNoEncName("肖永");
+//        singlePayDto.setReceiverAccountType("201");
+//        BigDecimal paidAmount = new BigDecimal(1.00);
+//        singlePayDto.setPaidAmount(paidAmount);
+//        singlePayDto.setCurrency("201");
+//        singlePayDto.setIsChecked("202");
+//        singlePayDto.setPaidDesc("用户提现");
+//        singlePayDto.setPaidUse("202");
+//        String singlePayRep = unipayService.singlePay(singlePayDto);
+//
+//        System.out.println(singlePayRep);
+//    }
 }

--
Gitblit v1.9.1