package cc.mrbird.febs.dapp.chain;
|
|
import cc.mrbird.febs.common.utils.RedisUtils;
|
import cc.mrbird.febs.dapp.chain.entity.EthUsdtChargeDto;
|
import cc.mrbird.febs.dapp.entity.*;
|
import cc.mrbird.febs.dapp.enumerate.CoinTypeEnum;
|
import cc.mrbird.febs.dapp.mapper.*;
|
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.date.DatePattern;
|
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.util.StrUtil;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.collections.CollectionUtils;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.math.RoundingMode;
|
import java.text.ParseException;
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* @author wzy
|
* @date 2020-07-02
|
**/
|
@Slf4j
|
@Service
|
public class BlockCoinServiceImpl implements BlockCoinService {
|
|
@Resource
|
private MemberCoinAddressDao memberCoinAddressDao;
|
@Resource
|
private DappMemberDao memberDao;
|
@Resource
|
private MemberCoinChargeDao memberCoinChargeDao;
|
@Resource
|
private DappWalletCoinDao memberWalletCoinDao;
|
@Resource
|
private DappAccountMoneyChangeDao dappAccountMoneyChangeDao;
|
|
private final static String EOS_SEQ_KEY = "eos_seq_key";
|
|
private final static String xrp_update_key = "xrp_update_key";
|
|
private final static String trc20_update_key = "trc20_update_key";
|
|
|
@Override
|
public void updateTrc20(EthUsdtChargeDto dto) {
|
String address = dto.getAddress();
|
BigDecimal amount = dto.getBalance();
|
String hash = dto.getHash();
|
// 判断有无
|
//List<MemberCoinAddressEntity> addressList = memberCoinAddressDao.selectAllBlockAddressBySymbolAndTag(CoinTypeEnum.USDT.name(), "TRC20");
|
Map<String, Object> hashParam = new HashMap<>();
|
// 校验hash是否已同步过
|
hashParam.put("hash", hash);
|
List<MemberCoinChargeEntity> memberCoinChargeEntities = memberCoinChargeDao.selectByMap(hashParam);
|
if (CollectionUtils.isNotEmpty(memberCoinChargeEntities)) {
|
// 若已同步过
|
return;
|
}
|
// 添加钱包余额
|
// 用户ID
|
MemberCoinAddressEntity memberCoinAddress = memberCoinAddressDao.selectCoinAddressByAddressAndSymbolTag(address, CoinTypeEnum.USDT.name(),"TRC20");
|
if (memberCoinAddress == null) {
|
return;
|
}
|
Long memberId = memberCoinAddress.getMemberId();
|
// 查询钱包 并更新
|
DappWalletCoinEntity memberWalletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, CoinTypeEnum.USDT.name());
|
memberWalletCoinDao.updateBlockBalance(memberWalletCoinEntity.getId(), amount, BigDecimal.ZERO, 0);
|
// 添加冲币记录
|
String orderNo = insertCoinCharge(address, memberId, amount, CoinTypeEnum.USDT.name(), "TRC20", BigDecimal.ZERO, hash);
|
|
DappAccountMoneyChangeEntity accountMoneyChange = new DappAccountMoneyChangeEntity(memberId, amount, "充值", 10);
|
dappAccountMoneyChangeDao.insert(accountMoneyChange);
|
// LogRecordUtils.insertMemberAccountMoneyChange(memberId, "转入", amount, CoinTypeEnum.USDT.name(), 1, 1);
|
|
// ThreadPoolUtils.sendDingTalk(5);
|
// DappMemberEntity member = memberDao.selectById(memberId);
|
// if (StrUtil.isNotBlank(member.getPhone())) {
|
// //String amountEos = amount + "XRP";
|
// ZzSmsSend.sendRechargeMsg(member.getPhone(), new Date(), amount+"U", orderNo);
|
// } else {
|
// SubMailSend.sendRechargeMail(member.getEmail(), DateUtil.format(new Date(), DatePattern.NORM_DATETIME_MINUTE_PATTERN), orderNo);
|
// }
|
|
|
}
|
|
|
private String generateNo() {
|
// 生成订单号
|
Long timestamp = System.currentTimeMillis();
|
// 随机数
|
int random = (int) (Math.random() * 10);
|
return String.valueOf(timestamp).substring(2) + random;
|
}
|
|
public String insertCoinCharge(String address, Long memberId, BigDecimal newBalance, String symbol, String tag, BigDecimal lastAmount, String hash) {
|
MemberCoinChargeEntity memberCoinChargeEntity = new MemberCoinChargeEntity();
|
memberCoinChargeEntity.setAddress(address);
|
memberCoinChargeEntity.setMemberId(memberId);
|
memberCoinChargeEntity.setAmount(newBalance);
|
memberCoinChargeEntity.setSymbol(symbol);
|
memberCoinChargeEntity.setTag(tag);
|
memberCoinChargeEntity.setStatus(1);
|
memberCoinChargeEntity.setLastAmount(lastAmount);
|
memberCoinChargeEntity.setHash(hash);
|
String orderNo = generateNo();
|
memberCoinChargeEntity.setOrderCode(orderNo);
|
memberCoinChargeDao.insert(memberCoinChargeEntity);
|
return orderNo;
|
}
|
|
}
|