| | |
| | | package cc.mrbird.febs.dapp.service.impl; |
| | | |
| | | import cc.mrbird.febs.common.entity.FebsResponse; |
| | | import cc.mrbird.febs.common.entity.QueryRequest; |
| | | import cc.mrbird.febs.common.exception.FebsException; |
| | | import cc.mrbird.febs.common.utils.LoginUserUtil; |
| | |
| | | import cc.mrbird.febs.dapp.dto.*; |
| | | import cc.mrbird.febs.dapp.entity.*; |
| | | import cc.mrbird.febs.dapp.enumerate.DataDictionaryEnum; |
| | | import cc.mrbird.febs.dapp.enumerate.NodeType; |
| | | import cc.mrbird.febs.dapp.mapper.*; |
| | | import cc.mrbird.febs.dapp.service.DappWalletService; |
| | | import cc.mrbird.febs.dapp.vo.MemberNodeVo; |
| | | import cc.mrbird.febs.dapp.vo.NodeTypeVo; |
| | | import cc.mrbird.febs.dapp.vo.WalletInfoVo; |
| | | import cc.mrbird.febs.rabbit.producer.ChainProducer; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import lombok.RequiredArgsConstructor; |
| | |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | |
| | | private final ChainProducer chainProducer; |
| | | private final DappSystemDao dappSystemDao; |
| | | private final DbMemberNodeMapper dbMemberNodeMapper; |
| | | |
| | | @Override |
| | | public WalletInfoVo walletInfo() { |
| | |
| | | |
| | | DappMineDataEntity mineData = dappSystemDao.selectMineDataForOne(); |
| | | walletInfo.setDirectCnt(direct.size()); |
| | | walletInfo.setInviteId(member.getActiveStatus() == 1 ? member.getInviteId() : "-"); |
| | | // walletInfo.setInviteId(member.getActiveStatus() == 1 ? member.getInviteId() : "-"); |
| | | walletInfo.setInviteId(member.getInviteId()); |
| | | walletInfo.setBalance(walletCoin.getAvailableAmount()); |
| | | walletInfo.setHasBuy(memberInfo.getActiveStatus()); |
| | | walletInfo.setOutCnt(memberInfo.getOutCnt()); |
| | |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public Long buyStar(BuyStarDto buyStarDto) { |
| | | DappMemberEntity member = LoginUserUtil.getAppUser(); |
| | | |
| | | String upgrade = redisUtils.getString("APP_UPGRADE"); |
| | | if ("upgrade".equals(upgrade)) { |
| | | throw new FebsException("功能升级中"); |
| | | } |
| | | |
| | | /** |
| | | * 买入先验证当前星团是否已经买入 |
| | | */ |
| | | Integer nodeType = buyStarDto.getNodeType(); |
| | | QueryWrapper<DbMemberNode> nodeQueryWrapper = new QueryWrapper<>(); |
| | | nodeQueryWrapper.eq("member_id",member.getId()); |
| | | nodeQueryWrapper.eq("type", nodeType); |
| | | nodeQueryWrapper.eq("work_state", DbMemberNode.STATE_ONE); |
| | | List<DbMemberNode> dbMemberNodes = dbMemberNodeMapper.selectList(nodeQueryWrapper); |
| | | if(CollUtil.isNotEmpty(dbMemberNodes)){ |
| | | throw new FebsException("已购买"); |
| | | } |
| | | |
| | | if (ObjectUtil.isEmpty(buyStarDto.getId())) {//第一次 |
| | | DappFundFlowEntity fundFlow = new DappFundFlowEntity( |
| | | member.getId(), |
| | | buyStarDto.getAmount().negate(), |
| | | 18, |
| | | 1, |
| | | BigDecimal.ZERO, |
| | | buyStarDto.getTxHash()); |
| | | dappFundFlowDao.insert(fundFlow); |
| | | return fundFlow.getId(); |
| | | } else {//第二次 |
| | | DappFundFlowEntity flow = dappFundFlowDao.selectById(buyStarDto.getId()); |
| | | if(ObjectUtil.isEmpty(flow)){ |
| | | return null; |
| | | } |
| | | if ("success".equals(buyStarDto.getFlag())) { |
| | | flow.setFromHash(buyStarDto.getTxHash()); |
| | | flow.setToHash(buyStarDto.getNodeType().toString()); |
| | | dappFundFlowDao.updateById(flow); |
| | | } else { |
| | | if (flow.getStatus() == 1) { |
| | | dappFundFlowDao.deleteById(buyStarDto.getId()); |
| | | } |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse nodeList() { |
| | | List<NodeType> nodeList = NodeType.NODE_1.getNodeList(); |
| | | List<NodeTypeVo> objects = new ArrayList<>(); |
| | | if(CollUtil.isNotEmpty(nodeList)){ |
| | | for(NodeType nodeType : nodeList){ |
| | | NodeTypeVo nodeTypeVo = new NodeTypeVo(); |
| | | nodeTypeVo.setNodeType(nodeType.getNodeType()); |
| | | nodeTypeVo.setNodeAmount(nodeType.getNodeAmount()); |
| | | nodeTypeVo.setNodePerk(nodeType.getNodePerk()); |
| | | objects.add(nodeTypeVo); |
| | | } |
| | | } |
| | | return new FebsResponse().success().data(objects); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse memberNode(MemberNodeDto memberNodeDto) { |
| | | DappMemberEntity member = LoginUserUtil.getAppUser(); |
| | | Integer type = memberNodeDto.getType(); |
| | | |
| | | QueryWrapper<DbMemberNode> objectQueryWrapper = new QueryWrapper<>(); |
| | | objectQueryWrapper.eq("member_id",member.getId()); |
| | | objectQueryWrapper.eq("type", type); |
| | | objectQueryWrapper.eq("work_state", DbMemberNode.STATE_ONE); |
| | | DbMemberNode dbMemberNode = dbMemberNodeMapper.selectOne(objectQueryWrapper); |
| | | if(ObjectUtil.isEmpty(dbMemberNode)){ |
| | | return null; |
| | | } |
| | | if(ObjectUtil.isNotEmpty(dbMemberNode.getLeftNode())){ |
| | | |
| | | } |
| | | MemberNodeVo memberNodeVo = new MemberNodeVo(); |
| | | memberNodeVo.setLeftNode(getInviteId(dbMemberNode.getLeftNode())); |
| | | memberNodeVo.setRightNode(getInviteId(dbMemberNode.getRightNode())); |
| | | |
| | | return null; |
| | | } |
| | | |
| | | public String getInviteId(Long memberNodeId){ |
| | | MemberNodeVo memberNodeVo = new MemberNodeVo(); |
| | | DbMemberNode dbMemberNode = dbMemberNodeMapper.selectById(memberNodeId); |
| | | Long memberId = dbMemberNode.getMemberId(); |
| | | DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId); |
| | | return dappMemberEntity.getInviteId(); |
| | | } |
| | | } |