package cc.mrbird.febs.dapp.service.impl; import cc.mrbird.febs.common.configure.i18n.MessageSourceUtils; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.utils.LoginUserUtil; import cc.mrbird.febs.dapp.chain.Trc20Service; import cc.mrbird.febs.dapp.entity.DappMemberEntity; import cc.mrbird.febs.dapp.entity.MemberCoinAddressEntity; import cc.mrbird.febs.dapp.mapper.DappMemberDao; import cc.mrbird.febs.dapp.mapper.MemberCoinAddressDao; import cc.mrbird.febs.dapp.service.BlockSerive; import cc.mrbird.febs.rabbit.producer.UsdtUpdateProducer; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.HashMap; import java.util.Map; @Slf4j @Service public class BlockSeriveImpl implements BlockSerive { @Resource DappMemberDao memberDao; @Resource MemberCoinAddressDao memberMapper; @Resource private UsdtUpdateProducer usdtUpdateProducer; @Override public FebsResponse findBlockAddress(String symbol, String lable) { //获取用户ID String mId = LoginUserUtil.getAppUser().getId().toString(); DappMemberEntity member = memberDao.selectById(mId); if (member == null) { return new FebsResponse().fail().message(MessageSourceUtils.getString("member_service_0003")); } if(StringUtils.isBlank(lable)){ //lable = "ERC20"; lable = "TRC20"; } FebsResponse result = new FebsResponse(); try { Map map = new HashMap(); MemberCoinAddressEntity memberCoinAddress = new MemberCoinAddressEntity(); if ("USDT".equals(symbol)) { memberCoinAddress = memberMapper.selectBlockAddressWithTag(Long.parseLong(mId), symbol, lable); } else { memberCoinAddress = memberMapper.selectBlockAddress(Long.parseLong(mId), symbol); } if (memberCoinAddress != null) { map.put("address", memberCoinAddress.getAddress()); map.put("lable", memberCoinAddress.getLabel()); result.data(map); } else { String address = ""; String key = ""; String uuid = member.getInviteId(); Map usdtMap = Trc20Service.createAddress(); address = usdtMap.get("address"); key = usdtMap.get("privateKey"); map.put("address", address); // 发送新增的地址到监听集合 usdtUpdateProducer.sendAddressMsg(address+","+"TRC20"); MemberCoinAddressEntity coinAddress = new MemberCoinAddressEntity(); coinAddress.setAddress(address); coinAddress.setIsBiyict(MemberCoinAddressEntity.IS_BIYICT_YES); coinAddress.setMemberId(Long.parseLong(mId)); coinAddress.setPrivateKey(key); coinAddress.setSymbol(symbol); coinAddress.setLabel(uuid); if (symbol.equals("USDT")) { coinAddress.setTag(lable); } memberMapper.insert(coinAddress); result.data(map); } } catch (Exception e) { e.printStackTrace(); } return result; } }