| | |
| | | package com.xcong.excoin.modules.member.service.impl; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.RandomUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; |
| | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.xcong.excoin.common.entity.FebsResponse; |
| | | import com.xcong.excoin.common.entity.QueryRequest; |
| | | import com.xcong.excoin.common.utils.RedisUtils; |
| | | import com.xcong.excoin.common.utils.TRC20ApiUtils; |
| | | import com.xcong.excoin.modules.Sms106Send; |
| | | import com.xcong.excoin.modules.member.dto.MemberDetailConfirmDto; |
| | | import com.xcong.excoin.modules.member.entity.*; |
| | |
| | | private final AgentFriendRelationMapper agentFriendRelationMapper; |
| | | |
| | | private final TdFinancialReordDao tdFinancialReordDao; |
| | | |
| | | private final RedisUtils redisUtils; |
| | | |
| | | private final TrcAddressDao trcAddressDao; |
| | | |
| | | @Override |
| | | public IPage<AgentFriendRelationEntity> findAgentInfoListInPage(AgentFriendRelationEntity agentFriendRelationEntity, |
| | |
| | | if ("Y".equals(selectById.getIsInside())) { |
| | | // 查询算力系统中是否存在该地址 |
| | | TdCoinWallet tdCoinWallet = memberWalletCoinMapper.selectTdCoinWalletByAddress(address, "USDT"); |
| | | if (tdCoinWallet != null) { |
| | | // 更新算力系统中用户钱包余额 |
| | | memberWalletCoinMapper.updateTdCoinWalletAvaliable(amount, address); |
| | | TrcAddressEntity trcAddressEntity = trcAddressDao.selectTrcAddressByAddress(address); |
| | | // 判断是否为TRC20地址 |
| | | if (trcAddressEntity == null) { |
| | | if (tdCoinWallet != null) { |
| | | // 更新算力系统中用户钱包余额 |
| | | memberWalletCoinMapper.updateTdCoinWalletAvaliable(amount, address); |
| | | |
| | | TdFinancialReord tdFinancialReord = new TdFinancialReord(); |
| | | tdFinancialReord.setAmount(amount); |
| | | tdFinancialReord.setCreateTime(new Date()); |
| | | tdFinancialReord.setMemId(tdCoinWallet.getMemId()); |
| | | tdFinancialReord.setSymbol("USDT"); |
| | | tdFinancialReord.setTitle("USDT交易所转账"); |
| | | tdFinancialReord.setContent("USDT交易所转账"); |
| | | // 插入算力系统中财务记录 |
| | | tdFinancialReordDao.insert(tdFinancialReord); |
| | | } else { |
| | | Map<String, Object> columnMap = new HashMap<>(); |
| | | columnMap.put("symbol", symbol); |
| | | columnMap.put("address", address); |
| | | // 如果是内部转账 则需要将币加到内部地址 |
| | | List<MemberCoinAddressEntity> selectByMap = memberCoinAddressMapper.selectByMap(columnMap); |
| | | if (selectByMap == null || selectByMap.isEmpty()) { |
| | | return new FebsResponse().fail().message("地址有误,请拒绝!"); |
| | | TdFinancialReord tdFinancialReord = new TdFinancialReord(); |
| | | tdFinancialReord.setAmount(amount); |
| | | tdFinancialReord.setCreateTime(new Date()); |
| | | tdFinancialReord.setMemId(tdCoinWallet.getMemId()); |
| | | tdFinancialReord.setSymbol("USDT"); |
| | | tdFinancialReord.setTitle("USDT交易所转账"); |
| | | tdFinancialReord.setContent("USDT交易所转账"); |
| | | // 插入算力系统中财务记录 |
| | | tdFinancialReordDao.insert(tdFinancialReord); |
| | | } else { |
| | | Map<String, Object> columnMap = new HashMap<>(); |
| | | columnMap.put("symbol", symbol); |
| | | columnMap.put("address", address); |
| | | // 如果是内部转账 则需要将币加到内部地址 |
| | | List<MemberCoinAddressEntity> selectByMap = memberCoinAddressMapper.selectByMap(columnMap); |
| | | if (selectByMap == null || selectByMap.isEmpty()) { |
| | | return new FebsResponse().fail().message("地址有误,请拒绝!"); |
| | | } |
| | | Long aimMemberId = selectByMap.get(0).getMemberId(); |
| | | MemberWalletCoinEntity aimWalletCoin = memberWalletCoinMapper.findWalletCoinByMemberIdAndWalletCode(aimMemberId, symbol); |
| | | |
| | | BigDecimal addTotal = aimWalletCoin.getTotalBalance().add(amount); |
| | | BigDecimal addAvailable = aimWalletCoin.getAvailableBalance().add(amount); |
| | | aimWalletCoin.setTotalBalance(addTotal); |
| | | aimWalletCoin.setAvailableBalance(addAvailable); |
| | | |
| | | memberWalletCoinMapper.updateById(aimWalletCoin); |
| | | |
| | | MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity = new MemberAccountMoneyChangeEntity(); |
| | | memberAccountMoneyChangeEntity.setContent("收款"); |
| | | memberAccountMoneyChangeEntity.setMemberId(aimMemberId); |
| | | memberAccountMoneyChangeEntity.setAmount(amount); |
| | | memberAccountMoneyChangeEntity.setStatus(MemberAccountMoneyChangeEntity.STATUS_SUCCESS_INTEGER); |
| | | memberAccountMoneyChangeEntity.setSymbol(selectById.getSymbol()); |
| | | memberAccountMoneyChangeEntity.setType(MemberAccountMoneyChangeEntity.TYPE_WALLET_COIN); |
| | | memberAccountMoneyChangeEntity.setCreateBy(selectById.getCreateBy()); |
| | | memberAccountMoneyChangeEntity.setCreateTime(new Date()); |
| | | memberAccountMoneyChangeEntity.setUpdateBy(selectById.getCreateBy()); |
| | | memberAccountMoneyChangeEntity.setUpdateTime(new Date()); |
| | | memberAccountMoneyChangeMapper.insert(memberAccountMoneyChangeEntity); |
| | | } |
| | | Long aimMemberId = selectByMap.get(0).getMemberId(); |
| | | MemberWalletCoinEntity aimWalletCoin = memberWalletCoinMapper.findWalletCoinByMemberIdAndWalletCode(aimMemberId, symbol); |
| | | } else { |
| | | if (trcAddressEntity.getSystemFlag().equals(TrcAddressEntity.SYSTEM_FLAG_SL)) { |
| | | memberWalletCoinMapper.updateTdCoinWalletTrc20(amount, trcAddressEntity.getMemberId()); |
| | | |
| | | BigDecimal addTotal = aimWalletCoin.getTotalBalance().add(amount); |
| | | BigDecimal addAvailable = aimWalletCoin.getAvailableBalance().add(amount); |
| | | aimWalletCoin.setTotalBalance(addTotal); |
| | | aimWalletCoin.setAvailableBalance(addAvailable); |
| | | TdFinancialReord tdFinancialReord = new TdFinancialReord(); |
| | | tdFinancialReord.setAmount(amount); |
| | | tdFinancialReord.setCreateTime(new Date()); |
| | | tdFinancialReord.setMemId(trcAddressEntity.getMemberId()); |
| | | tdFinancialReord.setSymbol("USDT"); |
| | | tdFinancialReord.setTitle("USDT交易所转账"); |
| | | tdFinancialReord.setContent("USDT交易所转账"); |
| | | // 插入算力系统中财务记录 |
| | | tdFinancialReordDao.insert(tdFinancialReord); |
| | | } else { |
| | | Long aimMemberId = trcAddressEntity.getMemberId(); |
| | | MemberWalletCoinEntity aimWalletCoin = memberWalletCoinMapper.findWalletCoinByMemberIdAndWalletCode(aimMemberId, symbol); |
| | | |
| | | memberWalletCoinMapper.updateById(aimWalletCoin); |
| | | BigDecimal addTotal = aimWalletCoin.getTotalBalance().add(amount); |
| | | BigDecimal addAvailable = aimWalletCoin.getAvailableBalance().add(amount); |
| | | aimWalletCoin.setTotalBalance(addTotal); |
| | | aimWalletCoin.setAvailableBalance(addAvailable); |
| | | |
| | | MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity = new MemberAccountMoneyChangeEntity(); |
| | | memberAccountMoneyChangeEntity.setContent("收款"); |
| | | memberAccountMoneyChangeEntity.setMemberId(aimMemberId); |
| | | memberAccountMoneyChangeEntity.setAmount(amount); |
| | | memberAccountMoneyChangeEntity.setStatus(MemberAccountMoneyChangeEntity.STATUS_SUCCESS_INTEGER); |
| | | memberAccountMoneyChangeEntity.setSymbol(selectById.getSymbol()); |
| | | memberAccountMoneyChangeEntity.setType(MemberAccountMoneyChangeEntity.TYPE_WALLET_COIN); |
| | | memberAccountMoneyChangeEntity.setCreateBy(selectById.getCreateBy()); |
| | | memberAccountMoneyChangeEntity.setCreateTime(new Date()); |
| | | memberAccountMoneyChangeEntity.setUpdateBy(selectById.getCreateBy()); |
| | | memberAccountMoneyChangeEntity.setUpdateTime(new Date()); |
| | | memberAccountMoneyChangeMapper.insert(memberAccountMoneyChangeEntity); |
| | | memberWalletCoinMapper.updateById(aimWalletCoin); |
| | | |
| | | MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity = new MemberAccountMoneyChangeEntity(); |
| | | memberAccountMoneyChangeEntity.setContent("收款"); |
| | | memberAccountMoneyChangeEntity.setMemberId(aimMemberId); |
| | | memberAccountMoneyChangeEntity.setAmount(amount); |
| | | memberAccountMoneyChangeEntity.setStatus(MemberAccountMoneyChangeEntity.STATUS_SUCCESS_INTEGER); |
| | | memberAccountMoneyChangeEntity.setSymbol(selectById.getSymbol()); |
| | | memberAccountMoneyChangeEntity.setType(MemberAccountMoneyChangeEntity.TYPE_WALLET_COIN); |
| | | memberAccountMoneyChangeEntity.setCreateBy(selectById.getCreateBy()); |
| | | memberAccountMoneyChangeEntity.setCreateTime(new Date()); |
| | | memberAccountMoneyChangeEntity.setUpdateBy(selectById.getCreateBy()); |
| | | memberAccountMoneyChangeEntity.setUpdateTime(new Date()); |
| | | memberAccountMoneyChangeMapper.insert(memberAccountMoneyChangeEntity); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | selectById.setStatus(MemberCoinWithdrawEntity.IS_STATUS_Y); |
| | | memberCoinWithdrawMapper.updateById(selectById); |
| | | |
| | | if (!"Y".equals(selectById.getIsInside())) { |
| | | if ("TRC20".equals(selectById.getLabel())) { |
| | | Thread thread = new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | log.info("远程调用TRC执行:{}", selectById.getId()); |
| | | String orderNo = generateOrderNo(memberId); |
| | | TRC20ApiUtils.coinApply(orderNo, memberId.toString(), selectById.getSymbol(), selectById.getAmount().subtract(selectById.getFeeAmount()).toPlainString(), selectById.getAddress()); |
| | | selectById.setTag(orderNo); |
| | | memberCoinWithdrawMapper.updateById(selectById); |
| | | } |
| | | }); |
| | | thread.start(); |
| | | } |
| | | } |
| | | |
| | | MemberEntity memberEntity = memberMapper.selectById(memberId); |
| | | String phone = memberEntity.getPhone(); |
| | | //String email = memberEntity.getEmail(); |
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
| | | String time = format.format(new Date()); // 将当前时间袼式化为指定的格式 |
| | | |
| | | log.info("---->{}", phone); |
| | | if(StrUtil.isNotBlank(phone)) { |
| | | Sms106Send.sendWithdrawalCoinMsg(phone, time); |
| | | } |
| | |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | public String generateOrderNo(Long mid) { |
| | | StringBuilder orderNo = new StringBuilder(); |
| | | String date = DateUtil.format(new Date(), "yyyyMMdd"); |
| | | orderNo.append(date); |
| | | orderNo.append(mid); |
| | | orderNo.append(RandomUtil.randomNumbers(2)); |
| | | |
| | | Object countObj = redisUtils.get(date); |
| | | if (countObj == null) { |
| | | countObj = 0; |
| | | } |
| | | int count = (int) countObj; |
| | | count++; |
| | | redisUtils.set(date, count, 24 * 60 * 60); |
| | | |
| | | int size = 4; |
| | | for (int i = 0; i < size - String.valueOf(count).length(); i++) { |
| | | orderNo.append("0"); |
| | | } |
| | | orderNo.append(count); |
| | | return orderNo.toString(); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public FebsResponse memberWithdrawCoinCancel(@NotNull(message = "{required}") Long id) { |