|  |  | 
 |  |  | 
 | 
 |  |  | import java.math.BigDecimal;
 | 
 |  |  | import java.util.ArrayList;
 | 
 |  |  | import java.util.Date;
 | 
 |  |  | import java.util.List;
 | 
 |  |  | import java.util.concurrent.ExecutionException;
 | 
 |  |  | 
 | 
 |  |  | import javax.annotation.Resource;
 | 
 |  |  | 
 | 
 |  |  | import com.xcong.excoin.modules.coin.dao.ZhiYaDao;
 | 
 |  |  | import com.xcong.excoin.modules.coin.dao.ZhiYaRecordDao;
 | 
 |  |  | import com.xcong.excoin.modules.coin.dao.ZhiyaRewardDao;
 | 
 |  |  | import com.xcong.excoin.modules.coin.entity.ZhiYaRecordEntity;
 | 
 |  |  | import com.xcong.excoin.modules.coin.entity.ZhiyaRewardEntity;
 | 
 |  |  | import com.xcong.excoin.utils.RedisUtils;
 | 
 |  |  | import org.junit.jupiter.api.Test;
 | 
 |  |  | import org.springframework.boot.test.context.SpringBootTest;
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  | public class GuijiTest {
 | 
 |  |  |    
 | 
 |  |  |    private static final BigDecimal LIMIT = new BigDecimal("50");
 | 
 |  |  |     private static final BigDecimal FEE = new BigDecimal("0.0044");
 | 
 |  |  |     private static final BigDecimal FEE = new BigDecimal("0.005");
 | 
 |  |  | 
 | 
 |  |  |     public static String ETH_FEE = "0.0044";
 | 
 |  |  |     public static String ETH_FEE = "0.005";
 | 
 |  |  | 
 | 
 |  |  |     public static final String TOTAL_ADDRESS = "0x067b4bE5d7B05560AE539Fc8f10597D854ae056D";
 | 
 |  |  |     public static final String TOTAL_PRIVATE = "1fb7288c8c88c37d6f79e9617822bffc8d3635bf2d808c5f6afdee9bb326e49c";
 | 
 |  |  | 
 |  |  |     private MemberCoinAddressDao memberCoinAddressDao;
 | 
 |  |  |     @Resource
 | 
 |  |  |     private MemberWalletCoinDao memberWalletCoinDao;
 | 
 |  |  |     @Resource
 | 
 |  |  |     ZhiYaRecordDao zhiYaRecordDao;
 | 
 |  |  |     @Resource
 | 
 |  |  |     ZhiyaRewardDao zhiyaRewardDao;
 | 
 |  |  |     @Resource
 | 
 |  |  |     ZhiYaDao zhiYaDao;
 | 
 |  |  |     @Resource
 | 
 |  |  |     RedisUtils redisUtils;
 | 
 |  |  | 
 | 
 |  |  |     @Test
 | 
 |  |  |     public void pool() throws ExecutionException, InterruptedException {
 | 
 |  |  |         //List<MemberCoinChargeEntity> list = memberCoinChargeDao.selectAllBySymbolAndTag(CoinTypeEnum.USDT.name(), "ERC20", 1);
 | 
 |  |  |        List<MemberCoinChargeEntity> list = new ArrayList<MemberCoinChargeEntity>();
 | 
 |  |  |        MemberCoinChargeEntity coin = new MemberCoinChargeEntity();
 | 
 |  |  |        coin.setAddress("0x4b859f7ba68e2757ae935f9e7426da0c73f63a68");
 | 
 |  |  |        coin.setMemberId(184L);
 | 
 |  |  |        coin.setLastAmount(new BigDecimal(70.83975901));
 | 
 |  |  |        coin.setAddress("0xdf24223ab4599a47aa9383c5c9914edd68ae63dc");
 | 
 |  |  |        coin.setMemberId(1L);
 | 
 |  |  |        coin.setLastAmount(new BigDecimal(51.01000101));
 | 
 |  |  |        list.add(coin);
 | 
 |  |  |         if (CollUtil.isNotEmpty(list)) {
 | 
 |  |  |             EthService ethService = new EthService();
 | 
 |  |  | 
 |  |  |                             usdtStr = usdtStr.substring(0, usdtStr.lastIndexOf("."));
 | 
 |  |  |                         }
 | 
 |  |  | 
 | 
 |  |  |                         String hash = ethService.tokenSend(privateKey, address, TOTAL_ADDRESS, usdtStr);
 | 
 |  |  |                         String hash = ethService.tokenSend(privateKey, address, TOTAL_ADDRESS, usdtStr,null);
 | 
 |  |  |                         System.out.println("归集:"+hash);
 | 
 |  |  |                         if (StrUtil.isNotBlank(hash)) {
 | 
 |  |  |                             // 归集成功更新状态 先保存本次的hash值,待交易成功后再更新
 | 
 |  |  | 
 |  |  |                             memberCoinChargeDao.updateById(coinCharge);
 | 
 |  |  |                         }
 | 
 |  |  |                     } else {
 | 
 |  |  |                         String hash = ethService.ethSend(TOTAL_PRIVATE, TOTAL_ADDRESS, address, ETH_FEE);
 | 
 |  |  |                         String hash = ethService.ethSend(TOTAL_PRIVATE, TOTAL_ADDRESS, address, ETH_FEE,null);
 | 
 |  |  |                         System.out.println("转手续费:"+hash);
 | 
 |  |  |                     }
 | 
 |  |  |                 }
 | 
 |  |  |             }
 | 
 |  |  |         }
 | 
 |  |  |     }
 | 
 |  |  |      | 
 |  |  |      | 
 |  |  |     /**
 | 
 |  |  |      * 向特定账号转手续费
 | 
 |  |  |      */
 | 
 |  |  |     @Test
 | 
 |  |  |     public void pushFee() {
 | 
 |  |  |        String toAddress = "0xbc6050a2898511bda406660267e6667448070552";
 | 
 |  |  |        EthService ethService = new EthService();
 | 
 |  |  |        try {
 | 
 |  |  |           String hash = ethService.ethSend(TOTAL_PRIVATE, TOTAL_ADDRESS, toAddress, "0.0032",null);
 | 
 |  |  |             System.out.println("转手续费:"+hash);
 | 
 |  |  |       } catch (InterruptedException e) {
 | 
 |  |  |          // TODO Auto-generated catch block
 | 
 |  |  |          e.printStackTrace();
 | 
 |  |  |       } catch (ExecutionException e) {
 | 
 |  |  |          // TODO Auto-generated catch block
 | 
 |  |  |          e.printStackTrace();
 | 
 |  |  |       }
 | 
 |  |  |     }
 | 
 |  |  | 
 | 
 |  |  |     @Test
 | 
 |  |  |     public void reward(){
 | 
 |  |  |         //获取每日总奖励
 | 
 |  |  |         BigDecimal gusdReward = new BigDecimal(redisUtils.getString("GUSDREWARD"));
 | 
 |  |  |         //获取每日质押总数
 | 
 |  |  |         Long totalGusd = zhiYaRecordDao.selectTotalGusdByStatueAndTime(1,new Date());
 | 
 |  |  |         BigDecimal totalGusdBigDecimal = new BigDecimal(totalGusd);
 | 
 |  |  |         if(totalGusdBigDecimal.compareTo(BigDecimal.ZERO) > 0){
 | 
 |  |  |             //平均一个获取奖励数量
 | 
 |  |  |             BigDecimal divide = gusdReward.divide(totalGusdBigDecimal);
 | 
 |  |  |             //获取今天之前满足发放奖励的全部质押单
 | 
 |  |  |             //生效时间小于当前时间
 | 
 |  |  |             //状态为生效中
 | 
 |  |  |             List<ZhiYaRecordEntity> lists = zhiYaRecordDao.selectZhiYaRewardByStatueAndTime(1,new Date());
 | 
 |  |  |             if(CollUtil.isNotEmpty(lists)){
 | 
 |  |  |                 for(ZhiYaRecordEntity zhiYaRecordEntity : lists){
 | 
 |  |  |                     ZhiyaRewardEntity zhiyaRewardEntity = new ZhiyaRewardEntity();
 | 
 |  |  |                     zhiyaRewardEntity.setRecordId(zhiYaRecordEntity.getId());
 | 
 |  |  |                     zhiyaRewardEntity.setRecordNo(zhiYaRecordEntity.getOrderNo());
 | 
 |  |  |                     zhiyaRewardEntity.setMemberId(zhiYaRecordEntity.getMemberId());
 | 
 |  |  |                     zhiyaRewardEntity.setRewardAmout(divide.multiply(zhiYaRecordEntity.getZhiyaCnt()));
 | 
 |  |  |                     zhiyaRewardDao.insert(zhiyaRewardEntity);
 | 
 |  |  |                 }
 | 
 |  |  |             }
 | 
 |  |  |         }
 | 
 |  |  |     }
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  |     
 | 
 |  |  | }
 | 
 |  |  | 
 |