xiaoyong931011
2023-03-24 a4e2632242680c2af350af9ef4498413aa99dd92
src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -1,28 +1,48 @@
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.mall.entity.MallOrderItem;
import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
import cc.mrbird.febs.mall.mapper.MallOrderItemMapper;
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.IAgentService;
import cc.mrbird.febs.mall.service.IMallAchieveService;
import cc.mrbird.febs.mall.service.IMemberProfitService;
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.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.ExecutionException;
/**
 * @author wzy
@@ -68,9 +88,299 @@
    @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() {
        memberProfitService.storeAndDirectorProfit(new Date());
        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
@@ -79,126 +389,224 @@
    @Autowired
    private IMallAchieveService mallAchieveService;
    @Autowired
    private MallMemberStarBuyMapper mallMemberStarBuyMapper;
    @Test
    public void achieveTest() {
        List<MallOrderItem> items = mallOrderItemMapper.selectList(null);
        for (MallOrderItem item : items) {
            mallAchieveService.add(item.getId());
        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);
//    }
//
    @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(){
        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);
//        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(BigInteger.valueOf(26737044), baseCoinService);
        ChainService.wssContractEventListener2(BigInteger.valueOf(26737044), bscUsdtContractEvent, ChainEnum.BSC_USDT.name());
    }
    @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("6222031901002389639");
        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);
    }
//
//    @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);
//    }
}