package cc.mrbird.febs; 
 | 
  
 | 
import cc.mrbird.febs.common.entity.FebsResponse; 
 | 
import cc.mrbird.febs.common.enumerates.*; 
 | 
import cc.mrbird.febs.common.exception.FebsException; 
 | 
import cc.mrbird.febs.common.utils.AppContants; 
 | 
import cc.mrbird.febs.common.utils.LoginUserUtil; 
 | 
import cc.mrbird.febs.common.utils.MallUtils; 
 | 
import cc.mrbird.febs.common.utils.RedisUtils; 
 | 
import cc.mrbird.febs.mall.chain.enums.ChainEnum; 
 | 
import cc.mrbird.febs.mall.chain.enums.EthService; 
 | 
import cc.mrbird.febs.mall.chain.service.BaseCoinService; 
 | 
import cc.mrbird.febs.mall.chain.service.ChainService; 
 | 
import cc.mrbird.febs.mall.chain.service.ContractEventService; 
 | 
import cc.mrbird.febs.mall.chain.service.UsdtErc20UpdateService; 
 | 
import cc.mrbird.febs.mall.entity.*; 
 | 
import cc.mrbird.febs.mall.mapper.*; 
 | 
import cc.mrbird.febs.mall.quartz.OrderSettlementJob; 
 | 
import cc.mrbird.febs.mall.service.*; 
 | 
import cc.mrbird.febs.mall.vo.ApiMallSubsidyAmountInfoVo; 
 | 
import cc.mrbird.febs.pay.model.*; 
 | 
import cc.mrbird.febs.pay.service.UnipayService; 
 | 
import cc.mrbird.febs.rabbit.consumer.AgentConsumer; 
 | 
import cc.mrbird.febs.rabbit.producter.AgentProducer; 
 | 
import cn.hutool.core.collection.CollUtil; 
 | 
import cn.hutool.core.date.DateTime; 
 | 
import cn.hutool.core.date.DateUtil; 
 | 
import cn.hutool.core.util.ObjectUtil; 
 | 
import cn.hutool.core.util.StrUtil; 
 | 
import cn.hutool.json.JSON; 
 | 
import cn.hutool.json.JSONUtil; 
 | 
import org.junit.jupiter.api.Test; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.boot.test.context.SpringBootTest; 
 | 
import org.web3j.crypto.Credentials; 
 | 
import org.web3j.crypto.WalletUtils; 
 | 
  
 | 
import javax.annotation.Resource; 
 | 
import java.io.File; 
 | 
import java.math.BigDecimal; 
 | 
import java.math.BigInteger; 
 | 
import java.text.DecimalFormat; 
 | 
import java.text.SimpleDateFormat; 
 | 
import java.util.*; 
 | 
import java.util.concurrent.ExecutionException; 
 | 
  
 | 
/** 
 | 
 * @author wzy 
 | 
 * @date 2022-06-02 
 | 
 **/ 
 | 
@SpringBootTest 
 | 
public class ProfitTest { 
 | 
  
 | 
    @Autowired 
 | 
    private AgentConsumer agentConsumer; 
 | 
  
 | 
    @Autowired 
 | 
    private IAgentService agentService; 
 | 
  
 | 
    @Autowired 
 | 
    private IMemberProfitService memberProfitService; 
 | 
  
 | 
    @Test 
 | 
    public void dynamicProfit() { 
 | 
        memberProfitService.dynamicProfit(21L); 
 | 
    } 
 | 
    @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; 
 | 
  
 | 
    @Autowired 
 | 
    private MallMemberMapper memberMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private MallMoneyFlowMapper mallMoneyFlowMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private IApiMallMemberWalletService memberWalletService; 
 | 
  
 | 
    @Autowired 
 | 
    private IMallMoneyFlowService mallMoneyFlowService; 
 | 
  
 | 
    @Autowired 
 | 
    private AgentProducer agentProducer; 
 | 
  
 | 
    @Autowired 
 | 
    private DataDictionaryCustomMapper dataDictionaryCustomMapper; 
 | 
  
 | 
    @Test 
 | 
    public void tetstgetPrikey(){ 
 | 
        Map<String, String> wallet = new HashMap<String, String>(); 
 | 
        try { 
 | 
            String walletPassword = "secr3t"; 
 | 
            // 文件路径 
 | 
            String walletDirectory = "E:\\address"; 
 | 
            String walletName = "UTC--2023-01-13T08-03-47.600000000Z--aec294ac13f0a64c57a7b9ddb3aee5e791cff06a.json"; 
 | 
  
 | 
//            String walletName = WalletUtils.generateNewWalletFile(walletPassword, new File(walletDirectory)); 
 | 
//            System.out.println("wallet location: " + walletDirectory + "/" + walletName); 
 | 
            Credentials credentials = WalletUtils.loadCredentials(walletPassword, walletDirectory + "/" + walletName); 
 | 
            String accountAddress = credentials.getAddress(); 
 | 
            String privateKey = credentials.getEcKeyPair().getPrivateKey().toString(16); 
 | 
            // 钱包地址 
 | 
            wallet.put("address", accountAddress); 
 | 
            // 钱包私钥 
 | 
            wallet.put("privateKey", privateKey); 
 | 
            System.out.println(accountAddress); 
 | 
            System.out.println(privateKey); 
 | 
            // 产生的钱包文件地址 
 | 
            wallet.put("walletLocation", walletDirectory + "/" + walletName); 
 | 
        } catch (Exception e) { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Test 
 | 
    public void directorProfitTest() { 
 | 
        Long directRewardId = 701L; 
 | 
        MallOrderInfo orderInfo = mallOrderInfoMapper.selectById(directRewardId); 
 | 
        if(ObjectUtil.isEmpty(orderInfo)){ 
 | 
            return; 
 | 
        } 
 | 
        Integer status = orderInfo.getStatus(); 
 | 
        if(OrderStatusEnum.FINISH.getValue() != status){ 
 | 
            return; 
 | 
        } 
 | 
        //下单补贴金额 
 | 
        BigDecimal subsidyAmount = orderInfo.getSubsidyAmount(); 
 | 
        //下单人 
 | 
        Long memberId = orderInfo.getMemberId(); 
 | 
        MallMember mallMember = memberMapper.selectById(memberId); 
 | 
        /** 
 | 
         * 生成补贴的流水记录 
 | 
         *  1、待生效 
 | 
         *  2、返利对象,下单人 
 | 
         *  3、金额,补贴金额 
 | 
         */ 
 | 
        Long subsidyAmountFlowId = mallMoneyFlowService.addMoneyFlow( 
 | 
                mallMember.getId(), 
 | 
                orderInfo.getOrderNo(), 
 | 
                subsidyAmount.setScale(4, BigDecimal.ROUND_DOWN), 
 | 
                MallMoneyFlowTypeEnum.MARKET_SUBSIDIES.getCode(), 
 | 
                MallMoneyFlow.STATUS_SUCCESS, 
 | 
                MallMoneyFlow.IS_RETURN_Y, 
 | 
                mallMember.getId(), 
 | 
                FlowTypeEnum.BALANCE.getValue(), 
 | 
                MallMoneyFlowTypeEnum.MARKET_SUBSIDIES.getName() 
 | 
        ); 
 | 
  
 | 
        memberWalletService.addBalance(subsidyAmount.setScale(2, BigDecimal.ROUND_DOWN),mallMember.getId()); 
 | 
  
 | 
        /** 
 | 
         * 生成直推返利的流水记录 
 | 
         *  1、待生效 
 | 
         *  2、返利对象:下单人的直推上级 
 | 
         *  3、金额:返利比例乘以补贴金额 
 | 
         */ 
 | 
        /** 
 | 
         * 生成分享奖励的流水记录 
 | 
         *  1、待生效 
 | 
         *  2、返利对象:下单人的直推上级 10%,直推的直推 5% 
 | 
         *  3、金额:补贴金额乘以分享奖励的比例 
 | 
         */ 
 | 
        if(StrUtil.isEmpty(mallMember.getReferrerId())){ 
 | 
            return; 
 | 
        } 
 | 
        //下单人的直推上级 
 | 
        MallMember mallMemberOne = memberMapper.selectInfoByInviteId(mallMember.getReferrerId()); 
 | 
        //生成直推返利的流水记录 
 | 
        if(ObjectUtil.isNotEmpty(mallMemberOne)){ 
 | 
//            DataDictionaryCustom rewardPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( 
 | 
//                    DataDictionaryEnum.REWARD_PERCENT.getType(), 
 | 
//                    DataDictionaryEnum.REWARD_PERCENT.getCode() 
 | 
//            ); 
 | 
//            BigDecimal rewardPercent = new BigDecimal(rewardPercentDic.getValue()).multiply(new BigDecimal(0.01)).setScale(2,BigDecimal.ROUND_DOWN); 
 | 
//            BigDecimal directRewardAmount = subsidyAmount.multiply(rewardPercent).setScale(4, BigDecimal.ROUND_DOWN); 
 | 
// 
 | 
//            Long marketSubsidyFlowId = mallMoneyFlowService.addMoneyFlow( 
 | 
//                    mallMember.getId(), 
 | 
//                    orderInfo.getOrderNo(), 
 | 
//                    directRewardAmount, 
 | 
//                    MallMoneyFlowTypeEnum.DIRECT_REWARD.getCode(), 
 | 
//                    MallMoneyFlow.STATUS_SUCCESS, 
 | 
//                    MallMoneyFlow.IS_RETURN_Y, 
 | 
//                    mallMemberOne.getId(), 
 | 
//                    FlowTypeEnum.BALANCE.getValue(), 
 | 
//                    MallMoneyFlowTypeEnum.DIRECT_REWARD.getName() 
 | 
//            ); 
 | 
//            memberWalletService.addBalance(directRewardAmount,mallMemberOne.getId()); 
 | 
            DataDictionaryCustom shareOneDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( 
 | 
                    DataDictionaryEnum.LEVEL_ONE.getType(), 
 | 
                    DataDictionaryEnum.LEVEL_ONE.getCode() 
 | 
            ); 
 | 
            //生成分享奖励的流水记录 
 | 
            BigDecimal shareOne = new BigDecimal(shareOneDic.getValue()).multiply(new BigDecimal(0.01)).setScale(2,BigDecimal.ROUND_DOWN); 
 | 
            BigDecimal shareOneAmount = subsidyAmount.multiply(shareOne).setScale(4, BigDecimal.ROUND_DOWN); 
 | 
            Long ShareOneFlowId = mallMoneyFlowService.addMoneyFlow( 
 | 
                    mallMember.getId(), 
 | 
                    orderInfo.getOrderNo(), 
 | 
                    shareOneAmount, 
 | 
                    MallMoneyFlowTypeEnum.SHARE_REWARD_ONE.getCode(), 
 | 
                    MallMoneyFlow.STATUS_SUCCESS, 
 | 
                    MallMoneyFlow.IS_RETURN_Y, 
 | 
                    mallMemberOne.getId(), 
 | 
                    FlowTypeEnum.BALANCE.getValue(), 
 | 
                    MallMoneyFlowTypeEnum.SHARE_REWARD_ONE.getName() 
 | 
            ); 
 | 
            memberWalletService.addBalance(shareOneAmount,mallMemberOne.getId()); 
 | 
        } 
 | 
  
 | 
        if(StrUtil.isEmpty(mallMemberOne.getReferrerId())){ 
 | 
            return; 
 | 
        } 
 | 
        //下单人的直推上级的直推 
 | 
        MallMember mallMemberTwo = memberMapper.selectInfoByInviteId(mallMemberOne.getReferrerId()); 
 | 
        if(ObjectUtil.isNotEmpty(mallMemberTwo)){ 
 | 
            DataDictionaryCustom shareTwoDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( 
 | 
                    DataDictionaryEnum.LEVEL_TWO.getType(), 
 | 
                    DataDictionaryEnum.LEVEL_TWO.getCode() 
 | 
            ); 
 | 
            BigDecimal shareTwo = new BigDecimal(shareTwoDic.getValue()).multiply(new BigDecimal(0.01)).setScale(2,BigDecimal.ROUND_DOWN); 
 | 
            BigDecimal shareTwoAmount = subsidyAmount.multiply(shareTwo).setScale(4, BigDecimal.ROUND_DOWN); 
 | 
            Long shareTwoFlowId = mallMoneyFlowService.addMoneyFlow( 
 | 
                    mallMember.getId(), 
 | 
                    orderInfo.getOrderNo(), 
 | 
                    shareTwoAmount, 
 | 
                    MallMoneyFlowTypeEnum.SHARE_REWARD_TWO.getCode(), 
 | 
                    MallMoneyFlow.STATUS_SUCCESS, 
 | 
                    MallMoneyFlow.IS_RETURN_Y, 
 | 
                    mallMemberTwo.getId(), 
 | 
                    FlowTypeEnum.BALANCE.getValue(), 
 | 
                    MallMoneyFlowTypeEnum.SHARE_REWARD_TWO.getName() 
 | 
            ); 
 | 
            memberWalletService.addBalance(shareTwoAmount,mallMemberTwo.getId()); 
 | 
        } 
 | 
        /** 
 | 
         * 团队管理补贴 
 | 
         */ 
 | 
  
 | 
  
 | 
        if(StrUtil.isEmpty(mallMember.getReferrerIds())){ 
 | 
            return; 
 | 
        } 
 | 
        //下单人所有的上级 
 | 
        String referrerIds = mallMember.getReferrerIds(); 
 | 
        List<String> refererIdList = StrUtil.split(referrerIds, ",", -1, true, true); 
 | 
        //下单人所有符合条件的上级-邀请码 
 | 
        ArrayList<String> refererIdListUp = new ArrayList<>(); 
 | 
        //初始级别即当前下单人的级别 
 | 
        String levelStart = mallMember.getLevel(); 
 | 
        if(CollUtil.isNotEmpty(refererIdList)){ 
 | 
            for(String inviteId : refererIdList){ 
 | 
                MallMember mallMemberUp = memberMapper.selectInfoByInviteId(inviteId); 
 | 
                String levelUp = mallMemberUp.getLevel(); 
 | 
                //团队补贴从区代开始 
 | 
                if(!MemberAgentLevelEnum.AGENT.getName().equals(levelUp)){ 
 | 
                    //比较两个代理级别,同级别或者大于下单人的级别都保留 
 | 
                    int compareLevel = MemberAgentLevelEnum.AGENT_ONE.compareLevel(levelUp,levelStart); 
 | 
                    if(0 < compareLevel){ 
 | 
                        levelStart = levelUp; 
 | 
                        refererIdListUp.add(inviteId); 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        if(CollUtil.isNotEmpty(refererIdListUp)){ 
 | 
            levelStart = mallMember.getLevel(); 
 | 
            for(String inviteId : refererIdList){ 
 | 
                MallMember mallMemberUp = memberMapper.selectInfoByInviteId(inviteId); 
 | 
                String levelUp = mallMemberUp.getLevel(); 
 | 
                //获取团队分享比例 
 | 
                BigDecimal manageSubsidyPercent = getManageSubsidyPercent(levelStart, levelUp); 
 | 
                if(manageSubsidyPercent.compareTo(BigDecimal.ZERO) > 0){ 
 | 
                    BigDecimal teamManageAmount = subsidyAmount.multiply(manageSubsidyPercent).setScale(4, BigDecimal.ROUND_DOWN); 
 | 
                    //生成团队分享流水 
 | 
                    Long teamManageFlowId = mallMoneyFlowService.addMoneyFlow( 
 | 
                            mallMember.getId(), 
 | 
                            orderInfo.getOrderNo(), 
 | 
                            teamManageAmount, 
 | 
                            MallMoneyFlowTypeEnum.TEAM_REWARD.getCode(), 
 | 
                            MallMoneyFlow.STATUS_SUCCESS, 
 | 
                            MallMoneyFlow.IS_RETURN_Y, 
 | 
                            mallMemberUp.getId(), 
 | 
                            FlowTypeEnum.BALANCE.getValue(), 
 | 
                            MallMoneyFlowTypeEnum.TEAM_REWARD.getName() 
 | 
                    ); 
 | 
  
 | 
                    memberWalletService.addBalance(teamManageAmount,mallMemberUp.getId()); 
 | 
                } 
 | 
                levelStart = levelUp; 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 根据传入的两个级别,比较之后获取对应的团队管理奖励比例 
 | 
     * @param levelStart 
 | 
     * @param levelUp 
 | 
     * @return 
 | 
     */ 
 | 
    private BigDecimal getManageSubsidyPercent(String levelStart,String levelUp){ 
 | 
        BigDecimal manageSubsidyPercent = BigDecimal.ZERO; 
 | 
        String agentCodeStart = MemberAgentLevelEnum.AGENT_ONE.getCodeByName(levelStart); 
 | 
        String agentCodeUp = MemberAgentLevelEnum.AGENT_ONE.getCodeByName(levelUp); 
 | 
        int compareLevel = MemberAgentLevelEnum.AGENT_ONE.compareLevel(levelUp, levelStart); 
 | 
        //如果是平级 
 | 
        if(compareLevel == 2){ 
 | 
            manageSubsidyPercent = getDicSubsidyPercent(agentCodeStart); 
 | 
        } 
 | 
        //如果不是平级 
 | 
        if(compareLevel == 1){ 
 | 
            //1、初始级别不能是会员 
 | 
            //2、当前级别的上一个级别是否是levelStart, 
 | 
            // 满足,需要减去levelStart的团队管理奖励 
 | 
            String minLevel = MemberAgentLevelEnum.AGENT_ONE.minLevel(agentCodeUp); 
 | 
            if(levelStart.equals(minLevel) 
 | 
                    && !MemberAgentLevelEnum.AGENT.getName().equals(levelStart)){ 
 | 
                BigDecimal dicManageSubsidyPercentUp = getDicManageSubsidyPercent(agentCodeUp); 
 | 
                BigDecimal dicManageSubsidyPercentStart = getDicManageSubsidyPercent(agentCodeStart); 
 | 
                manageSubsidyPercent = dicManageSubsidyPercentUp.subtract(dicManageSubsidyPercentStart); 
 | 
            }else{ 
 | 
                manageSubsidyPercent = getDicManageSubsidyPercent(agentCodeUp); 
 | 
            } 
 | 
        } 
 | 
        return manageSubsidyPercent; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取对应的团队管理奖励比例 
 | 
     * @param agentCode 
 | 
     * @return 
 | 
     */ 
 | 
    private BigDecimal getDicManageSubsidyPercent(String agentCode){ 
 | 
        BigDecimal manageSubsidyPercent = BigDecimal.ZERO; 
 | 
        DataDictionaryCustom agentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( 
 | 
                DataDictionaryEnum.AGENT_ONE.getType(), 
 | 
                agentCode 
 | 
        ); 
 | 
        cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(agentDic.getValue()); 
 | 
        String manageSubsidyPercentStr = jsonObject.get("manageSubsidyPercent").toString(); 
 | 
        manageSubsidyPercent =  new BigDecimal(manageSubsidyPercentStr) 
 | 
                .multiply(new BigDecimal(0.01)) 
 | 
                .setScale(2,BigDecimal.ROUND_DOWN); 
 | 
        return manageSubsidyPercent; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取对应的平级团队管理奖励比例 
 | 
     * @param agentCode 
 | 
     * @return 
 | 
     */ 
 | 
    private BigDecimal getDicSubsidyPercent(String agentCode){ 
 | 
        BigDecimal subsidyPercent = BigDecimal.ZERO; 
 | 
        DataDictionaryCustom agentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( 
 | 
                DataDictionaryEnum.AGENT_ONE.getType(), 
 | 
                agentCode 
 | 
        ); 
 | 
        cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(agentDic.getValue()); 
 | 
        String subsidyPercentStr = jsonObject.get("manageSubsidyPercent").toString(); 
 | 
        subsidyPercent =  new BigDecimal(subsidyPercentStr) 
 | 
                .multiply(new BigDecimal(0.01)) 
 | 
                .setScale(2,BigDecimal.ROUND_DOWN); 
 | 
        return subsidyPercent; 
 | 
    } 
 | 
  
 | 
    @Autowired 
 | 
    private MallOrderItemMapper mallOrderItemMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private IMallAchieveService mallAchieveService; 
 | 
  
 | 
    @Autowired 
 | 
    private MallMemberStarBuyMapper mallMemberStarBuyMapper; 
 | 
  
 | 
    @Test 
 | 
    public void achieveTest() { 
 | 
        List<MallMemberStarBuy> mallMemberStarBuys = mallMemberStarBuyMapper.selectByStatus(1); 
 | 
        if(CollUtil.isEmpty(mallMemberStarBuys)){ 
 | 
            return; 
 | 
        } 
 | 
        for(MallMemberStarBuy mallMemberStarBuy : mallMemberStarBuys){ 
 | 
            Long memberId = mallMemberStarBuy.getMemberId(); 
 | 
            MallMember mallMember = memberMapper.selectById(memberId); 
 | 
            //用户不存在跳出本次循环 
 | 
            if(ObjectUtil.isEmpty(mallMember)){ 
 | 
                continue; 
 | 
            } 
 | 
            //返还总金额 
 | 
            BigDecimal amount = mallMemberStarBuy.getAmount(); 
 | 
            //剩余返还总金额不足,跳出本次循环 
 | 
            BigDecimal avaAmount = mallMemberStarBuy.getAvaAmount(); 
 | 
            if(avaAmount.compareTo(BigDecimal.ZERO) <= 0){ 
 | 
                continue; 
 | 
            } 
 | 
            //每次返还比例 
 | 
            DataDictionaryCustom returnPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( 
 | 
                    DataDictionaryEnum.RETURN_PERCENT.getType(), 
 | 
                    DataDictionaryEnum.RETURN_PERCENT.getCode() 
 | 
            ); 
 | 
            String returnPercentStr = returnPercentDic.getValue(); 
 | 
            BigDecimal returnPercent = new BigDecimal(returnPercentStr).multiply(new BigDecimal(0.01)).setScale(2,BigDecimal.ROUND_DOWN); 
 | 
            //本次返还金额 
 | 
            BigDecimal returnAmount = amount.multiply(returnPercent).setScale(2,BigDecimal.ROUND_DOWN); 
 | 
            /** 
 | 
             * 如果本次返还金额大于剩余返还总金额 
 | 
             */ 
 | 
            if(returnAmount.compareTo(avaAmount) >= 0){ 
 | 
                returnAmount = avaAmount; 
 | 
                avaAmount = BigDecimal.ZERO; 
 | 
            }else{ 
 | 
                avaAmount = avaAmount.subtract(returnAmount).setScale(2,BigDecimal.ROUND_DOWN); 
 | 
            } 
 | 
            //增加用户金额 
 | 
            memberWalletService.addBalance(returnAmount,mallMember.getId()); 
 | 
            //生成流水记录 
 | 
            Long subsidyAmountFlowId = mallMoneyFlowService.addMoneyFlow( 
 | 
                    mallMember.getId(), 
 | 
                    mallMemberStarBuy.getBuyCode(), 
 | 
                    returnAmount, 
 | 
                    MallMoneyFlowTypeEnum.RETURN_MARKET_STAR.getCode(), 
 | 
                    MallMoneyFlow.STATUS_SUCCESS, 
 | 
                    MallMoneyFlow.IS_RETURN_Y, 
 | 
                    mallMember.getId(), 
 | 
                    FlowTypeEnum.BALANCE.getValue(), 
 | 
                    MallMoneyFlowTypeEnum.RETURN_MARKET_STAR.getName() 
 | 
            ); 
 | 
            //更新记录 
 | 
            mallMemberStarBuyMapper.updateAvaAmountById(avaAmount,mallMemberStarBuy.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); 
 | 
//    } 
 | 
// 
 | 
  
 | 
  
 | 
    @Autowired 
 | 
    private ContractEventService bscUsdtContractEvent; 
 | 
  
 | 
  
 | 
    @Autowired 
 | 
    private BaseCoinService baseCoinService; 
 | 
    @Autowired 
 | 
    private RedisUtils redisUtils; 
 | 
    @Resource 
 | 
    private UsdtErc20UpdateService usdtErc20UpdateService; 
 | 
    @Resource 
 | 
    private MemberCoinAddressDao memberCoinAddressDao; 
 | 
    @Test 
 | 
    public void scorePool(){ 
 | 
  
 | 
//        String next = "0xc1be17a02127e5cc1e6b2298436e8b467531f798"; 
 | 
//        MemberCoinAddressEntity memberCoinAddressEntity = memberCoinAddressDao.selectCoinAddressByAddressAndSymbolTag(next, "USDT", "ERC20"); 
 | 
//        if(ObjectUtil.isEmpty(memberCoinAddressEntity)){ 
 | 
//            return; 
 | 
//        } 
 | 
//        BigDecimal balanceOf = ChainService.getInstance(ChainEnum.BSC_USDT.name()).balanceOf(next); 
 | 
//        if (balanceOf == null || balanceOf.compareTo(new BigDecimal("0.05")) < 1) { 
 | 
//            return; 
 | 
//        } 
 | 
//        //查询手续费 
 | 
//        BigDecimal balanceOfBaseToken = ChainService.getInstance(ChainEnum.BSC_USDT.name()).balanceOfBaseToken(next); 
 | 
// 
 | 
//        String gas = "5"; 
 | 
//        if(balanceOfBaseToken.compareTo(new BigDecimal(gas)) < 0){ 
 | 
//            //转手续费 
 | 
//            ChainService.getInstance(ChainEnum.BSC_USDT.name()).transferBaseToken(next, new BigDecimal(gas)); 
 | 
//        } 
 | 
//        ChainService.getInstance(ChainEnum.BSC_USDT.name()).transfer(memberCoinAddressEntity.getPrivateKey(), 
 | 
//                    memberCoinAddressEntity.getAddress(), 
 | 
//                    AppContants.ERC20_POOL_ADDRESS, 
 | 
//                    balanceOf.toString()); 
 | 
        long start = System.currentTimeMillis(); 
 | 
        Object incrementObj = redisUtils.get(AppContants.REDIS_KEY_BLOCK_ETH_INCREMENT_NUM); 
 | 
        BigInteger newest = ChainService.getInstance(ChainEnum.BSC_USDT.name()).blockNumber(); 
 | 
        BigInteger block; 
 | 
        if (incrementObj == null) { 
 | 
            block = newest; 
 | 
        } else { 
 | 
            block = newest; 
 | 
        } 
 | 
        ChainService.wssBaseCoinEventListener(block, baseCoinService); 
 | 
//        ChainService.wssContractEventListener2(block, bscUsdtContractEvent, ChainEnum.BSC_USDT.name()); 
 | 
    } 
 | 
// 
 | 
//    @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); 
 | 
//    } 
 | 
} 
 |