package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.utils.LoginUserUtil; import cc.mrbird.febs.mall.chain.service.EthService; import cc.mrbird.febs.mall.chain.service.Trc20Service; import cc.mrbird.febs.mall.entity.MallMember; import cc.mrbird.febs.mall.entity.MemberCoinAddressEntity; import cc.mrbird.febs.mall.mapper.MallMemberMapper; import cc.mrbird.febs.mall.mapper.MemberCoinAddressDao; import cc.mrbird.febs.mall.service.BlockSerive; import cc.mrbird.febs.rabbit.producter.AgentProducer; 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 MallMemberMapper memberDao; @Resource MemberCoinAddressDao memberCoinAddressDao; @Resource private AgentProducer agentProducer; @Override public FebsResponse findBlockAddress(String symbol, String lable) { //获取用户ID Long mId = LoginUserUtil.getLoginUser().getId(); MallMember member = memberDao.selectById(mId); if (member == null) { return new FebsResponse().fail().message("用户不存在"); } 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 = memberCoinAddressDao.selectBlockAddressWithTag(mId, symbol, lable); } else { memberCoinAddress = memberCoinAddressDao.selectBlockAddress(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 = EthService.createEth(); // Map usdtMap = Trc20Service.createAddress(); address = usdtMap.get("address"); key = usdtMap.get("privateKey"); map.put("address", address); // 发送新增的地址到监听集合 agentProducer.sendAddressMsg(address+","+"ERC20"); MemberCoinAddressEntity coinAddress = new MemberCoinAddressEntity(); coinAddress.setAddress(address); coinAddress.setIsBiyict(MemberCoinAddressEntity.IS_BIYICT_YES); coinAddress.setMemberId(mId); coinAddress.setPrivateKey(key); coinAddress.setSymbol(symbol); coinAddress.setLabel(uuid); if (symbol.equals("USDT")) { coinAddress.setTag(lable); } memberCoinAddressDao.insert(coinAddress); result.data(map); } } catch (Exception e) { e.printStackTrace(); } return result; } }