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.mall.vo.MallOrderInfoTestVo;
|
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;
|
import java.util.stream.Collectors;
|
|
/**
|
* @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;
|
|
@Autowired
|
private IApiMallMemberWalletService walletService;
|
|
@Autowired
|
private MallMemberWalletMapper mallMemberWalletMapper;
|
|
@Test
|
public void retrunOrder(){
|
/**
|
* 查询出当天下过单的人数
|
* 比对单数是否超过最大值,超过最大值的订单回退资金,删除数据
|
*/
|
String dateStr = "2023-04-01";
|
//获取某一天下单人的全部单数
|
List<MallOrderInfoTestVo> mallOrderInfoTestVos = mallOrderInfoMapper.selectOrderCntByDate(dateStr);
|
if(CollUtil.isNotEmpty(mallOrderInfoTestVos)){
|
List<MallOrderInfoTestVo> collect = mallOrderInfoTestVos
|
.stream()
|
.filter(mallOrderInfoTestVo -> mallOrderInfoTestVo.getOrderCnt() > 2)
|
.collect(Collectors.toList());
|
List<Long> collectMemberId = collect.stream().map(MallOrderInfoTestVo::getMemberId).collect(Collectors.toList());
|
if(CollUtil.isNotEmpty(collectMemberId)){
|
for(Long memberId : collectMemberId){
|
List<MallOrderInfo> mallOrderInfos = mallOrderInfoMapper.selectByMemberIdAndDate(memberId,dateStr);
|
if(CollUtil.isNotEmpty(mallOrderInfos)){
|
int size = mallOrderInfos.size();
|
for(int i = 2; i < size; i++){
|
MallOrderInfo mallOrderInfo = mallOrderInfos.get(i);
|
String orderNo = mallOrderInfo.getOrderNo();
|
List<MallMoneyFlow> mallMoneyFlows = mallMoneyFlowMapper.selectMoneyFlowByOrderNo(orderNo);
|
for(MallMoneyFlow mallMoneyFlow : mallMoneyFlows){
|
Long rtMemberId = mallMoneyFlow.getRtMemberId();
|
BigDecimal amount = mallMoneyFlow.getAmount();
|
MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(rtMemberId);
|
if(mallMemberWallet.getBalance().compareTo(amount) >= 0){
|
walletService.reduceBalance(amount, rtMemberId);
|
}
|
}
|
mallMoneyFlowMapper.deleteByOrderNo(orderNo);
|
mallOrderInfoMapper.deleteById(mallOrderInfo.getId());
|
}
|
}
|
}
|
}
|
}
|
}
|
|
@Test
|
public void retrunOrderMemberId(){
|
String dateStr = "2023-04-02";
|
Long memberId = 702L;
|
List<MallOrderInfo> mallOrderInfos = mallOrderInfoMapper.selectByMemberIdAndDate(memberId,dateStr);
|
if(CollUtil.isNotEmpty(mallOrderInfos)){
|
int size = mallOrderInfos.size();
|
for(int i = 2; i < size; i++){
|
MallOrderInfo mallOrderInfo = mallOrderInfos.get(i);
|
String orderNo = mallOrderInfo.getOrderNo();
|
List<MallMoneyFlow> mallMoneyFlows = mallMoneyFlowMapper.selectMoneyFlowByOrderNo(orderNo);
|
for(MallMoneyFlow mallMoneyFlow : mallMoneyFlows){
|
Long rtMemberId = mallMoneyFlow.getRtMemberId();
|
BigDecimal amount = mallMoneyFlow.getAmount();
|
MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(rtMemberId);
|
if(mallMemberWallet.getBalance().compareTo(amount) >= 0){
|
walletService.reduceBalance(amount, rtMemberId);
|
}
|
}
|
mallMoneyFlowMapper.deleteByOrderNo(orderNo);
|
mallOrderInfoMapper.deleteById(mallOrderInfo.getId());
|
}
|
}
|
}
|
|
@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(BigInteger.valueOf(26737044), baseCoinService);
|
// ChainService.wssContractEventListener2(BigInteger.valueOf(26739725), bscUsdtContractEvent, ChainEnum.BSC_USDT.name());
|
|
|
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 = (BigInteger) incrementObj;
|
}
|
|
|
// ChainService.wssBaseCoinEventListener(block, baseCoinService);
|
// ChainService.wssBaseCoinEventListener(block, bscUsdtContractEvent);
|
// ChainService.wssContractEventListener(block, bscUsdtContractEvent, ChainEnum.BSC_USDT.name());
|
// ChainService.wssContractEventListener2(block, bscUsdtContractEvent, ChainEnum.BSC_USDT.name());
|
|
BigInteger section = BigInteger.valueOf(5000);
|
while (newest.subtract(block).compareTo(section) > -1) {
|
BigInteger end = block.add(section);
|
ChainService.contractEventListener(block, end, bscUsdtContractEvent, ChainEnum.BSC_USDT.name());
|
|
block = block.add(section);
|
if (block.compareTo(newest) > 0) {
|
block = newest;
|
}
|
}
|
ChainService.contractEventListener(block, bscUsdtContractEvent, ChainEnum.BSC_USDT.name());
|
long end = System.currentTimeMillis();
|
}
|
//
|
// @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);
|
// }
|
}
|