| | |
| | | package cc.mrbird.febs.dapp.service.impl; |
| | | |
| | | import cc.mrbird.febs.common.contants.AppContants; |
| | | import cc.mrbird.febs.common.entity.FebsResponse; |
| | | import cc.mrbird.febs.common.entity.QueryRequest; |
| | | import cc.mrbird.febs.common.enumerates.FlowTypeEnum; |
| | | import cc.mrbird.febs.common.exception.FebsException; |
| | | import cc.mrbird.febs.common.utils.FebsUtil; |
| | | import cc.mrbird.febs.common.utils.LoginUserUtil; |
| | |
| | | import cc.mrbird.febs.dapp.entity.*; |
| | | import cc.mrbird.febs.dapp.mapper.*; |
| | | import cc.mrbird.febs.dapp.service.DappMemberService; |
| | | import cc.mrbird.febs.dapp.vo.MoneyFlowVo; |
| | | import cc.mrbird.febs.dapp.vo.TeamListVo; |
| | | import cc.mrbird.febs.system.entity.User; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import lombok.RequiredArgsConstructor; |
| | | import okhttp3.*; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.io.IOException; |
| | | import java.math.BigDecimal; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Set; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * @author |
| | |
| | | private final DappTransferRecordDao dappTransferRecordDao; |
| | | private final RedisUtils redisUtils; |
| | | private final DataDictionaryCustomMapper dataDictionaryCustomMapper; |
| | | private final DappAchieveMapper dappAchieveMapper; |
| | | private final DappFundFlowDao dappFundFlowDao; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | @Override |
| | | public void connect(ConnectDto connectDto) { |
| | | DappMemberEntity member = dappMemberDao.selectByAddress(connectDto.getAddress(), null); |
| | | |
| | | if (member == null) { |
| | | if (ObjectUtil.isEmpty(member)) { |
| | | DappMemberEntity parent = dappMemberDao.selectMemberInfoByInviteId(connectDto.getInviteId()); |
| | | if (parent == null) { |
| | | throw new FebsException("邀请人不存在"); |
| | | if (ObjectUtil.isEmpty(parent)) { |
| | | throw new FebsException("邀请码不存在"); |
| | | } |
| | | |
| | | member = insertMember(connectDto.getAddress(), connectDto.getInviteId()); |
| | | } |
| | | |
| | | // if (member.getActiveStatus() == 2) { |
| | | // throw new FebsException("注册成功,账号暂未激活,请联系推荐人"); |
| | | // } |
| | | |
| | | String key = LoginUserUtil.getLoginKey(connectDto.getAddress(), connectDto.getNonce(), connectDto.getSign()); |
| | | redisUtils.set(connectDto.getAddress(), member); |
| | |
| | | if (currentUser.getDeptId() == null) { |
| | | member.setCurrentUser(currentUser.getUserId()); |
| | | } |
| | | return dappMemberDao.selectInPage(member, page); |
| | | IPage<DappMemberEntity> dappMemberEntityIPage = dappMemberDao.selectInPage(member, page); |
| | | List<DappMemberEntity> records = dappMemberEntityIPage.getRecords(); |
| | | if(CollUtil.isNotEmpty(records)){ |
| | | for(DappMemberEntity dappMemberEntity : records){ |
| | | QueryWrapper<DappAchieve> objectQueryWrapper = new QueryWrapper<>(); |
| | | objectQueryWrapper.eq("member_id",dappMemberEntity.getId()); |
| | | List<DappAchieve> dappAchieves = dappAchieveMapper.selectList(objectQueryWrapper); |
| | | |
| | | BigDecimal reduce = dappAchieves.stream().map(DappAchieve::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | dappMemberEntity.setZhiYaAmount(reduce); |
| | | } |
| | | } |
| | | return dappMemberEntityIPage; |
| | | } |
| | | |
| | | @Override |
| | |
| | | member.setChainType(chainType); |
| | | member.setAccountType(accountType); |
| | | member.setActiveStatus(1); |
| | | member.setBalance(ChainService.getInstance(ChainEnum.BSC_TFC.name()).balanceOf(address)); |
| | | member.setUsdtBalance(ChainService.getInstance(ChainEnum.BSC_USDT.name()).balanceOf(address)); |
| | | member.setBalance(BigDecimal.ZERO); |
| | | member.setUsdtBalance(BigDecimal.ZERO); |
| | | |
| | | DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(AppContants.DIC_TYPE_SYSTEM_SETTING, AppContants.DIC_VALUE_SYSTEM_NODE_CNT_LIMIT); |
| | | int nodeCntLimit = Integer.parseInt(dic.getValue()); |
| | | |
| | | List<DappMemberEntity> memberCount = dappMemberDao.selectList(null); |
| | | if (memberCount.size() <= (nodeCntLimit + 4)) { |
| | | member.setNodeType(1); |
| | | } else { |
| | | member.setNodeType(2); |
| | | } |
| | | // DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(AppContants.DIC_TYPE_SYSTEM_SETTING, AppContants.DIC_VALUE_SYSTEM_NODE_CNT_LIMIT); |
| | | // int nodeCntLimit = Integer.parseInt(dic.getValue()); |
| | | // |
| | | // List<DappMemberEntity> memberCount = dappMemberDao.selectList(null); |
| | | // if (memberCount.size() <= (nodeCntLimit + 4)) { |
| | | // member.setNodeType(1); |
| | | // } else { |
| | | // member.setNodeType(2); |
| | | // } |
| | | |
| | | dappMemberDao.insert(member); |
| | | |
| | |
| | | } |
| | | |
| | | @Override |
| | | public List<TeamListVo> findTeamList(TeamListDto teamListDto) { |
| | | public TeamListVo findTeamList() { |
| | | TeamListVo teamListVo = new TeamListVo(); |
| | | DappMemberEntity member = LoginUserUtil.getAppUser(); |
| | | Page<TeamListDto> page = new Page<>(teamListDto.getPageNum(), teamListDto.getPageSize()); |
| | | teamListDto.setInviteId(member.getInviteId()); |
| | | return dappMemberDao.selectTeamListInPage(teamListDto, page).getRecords(); |
| | | List<DappMemberEntity> dappMemberEntities = dappMemberDao.selectChildMemberDirectOrNot(member.getInviteId(), 2); |
| | | teamListVo.setTeamCount(CollUtil.isEmpty(dappMemberEntities) ? 0 : dappMemberEntities.size()); |
| | | if(CollUtil.isNotEmpty(dappMemberEntities)){ |
| | | List<Long> collect = dappMemberEntities.stream().map(DappMemberEntity::getId).collect(Collectors.toList()); |
| | | QueryWrapper<DappAchieve> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.in("member_id",collect); |
| | | List<DappAchieve> dappAchieveSumList = dappAchieveMapper.selectList(queryWrapper); |
| | | |
| | | List<DappAchieve> filteredList = dappAchieveSumList.stream() |
| | | .filter(obj -> obj.getState() == 1) |
| | | .collect(Collectors.toList()); |
| | | Set<Long> collect1 = filteredList.stream().map(DappAchieve::getMemberId).collect(Collectors.toSet()); |
| | | teamListVo.setAvaCount(CollUtil.isEmpty(collect1) ? 0 : collect1.size()); |
| | | |
| | | // BigDecimal teamAchieveMemberSum = dappAchieveSumList.stream().map(DappAchieve::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | BigDecimal teamAchieveMemberSum = dappAchieveSumList.stream().map(item-> item.getAmount().multiply(item.getPrice())).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | // BigDecimal teamAchieveMemberSum = BigDecimal.ZERO; |
| | | // if(CollUtil.isNotEmpty(dappAchieveSumList)){ |
| | | // for(DappAchieve dappAchieve : dappAchieveSumList){ |
| | | // BigDecimal price = dappAchieve.getPrice(); |
| | | // BigDecimal amount = dappAchieve.getAmount(); |
| | | // teamAchieveMemberSum = teamAchieveMemberSum.add(price.multiply(amount)).setScale(2,BigDecimal.ROUND_DOWN); |
| | | // } |
| | | // } |
| | | teamListVo.setTeamAmount(teamAchieveMemberSum); |
| | | |
| | | BigDecimal avaAmount = filteredList.stream().map(DappAchieve::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | // BigDecimal avaAmount = filteredList.stream().map(item-> item.getAmount().multiply(item.getPrice())).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | // BigDecimal avaAmount = BigDecimal.ZERO; |
| | | // if(CollUtil.isNotEmpty(filteredList)){ |
| | | // for(DappAchieve dappAchieve : filteredList){ |
| | | // BigDecimal price = dappAchieve.getPrice(); |
| | | // BigDecimal amount = dappAchieve.getAmount(); |
| | | // avaAmount = avaAmount.add(price.multiply(amount)).setScale(2,BigDecimal.ROUND_DOWN); |
| | | // } |
| | | // } |
| | | teamListVo.setAvaAmount(avaAmount); |
| | | }else{ |
| | | teamListVo.setAvaCount(0); |
| | | teamListVo.setTeamAmount(BigDecimal.ZERO); |
| | | teamListVo.setAvaAmount(BigDecimal.ZERO); |
| | | } |
| | | |
| | | |
| | | teamListVo.setBalance(member.getBalance().setScale(2,BigDecimal.ROUND_DOWN)); |
| | | teamListVo.setUsdtBalance(member.getUsdtBalance().setScale(2,BigDecimal.ROUND_DOWN)); |
| | | |
| | | return teamListVo; |
| | | } |
| | | |
| | | @Override |
| | | public IPage<MoneyFlowVo> findMoneyFlowVos(TeamListDto teamListDto) { |
| | | DappMemberEntity member = LoginUserUtil.getAppUser(); |
| | | teamListDto.setMemberId(member.getId()); |
| | | |
| | | Page<MoneyFlowVo> page = new Page<>(teamListDto.getPageNum(), teamListDto.getPageSize()); |
| | | return dappFundFlowDao.findMoneyFlowVos(page, teamListDto); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse exist(String address) { |
| | | DappMemberEntity member = dappMemberDao.selectByAddress(address, null); |
| | | if(ObjectUtil.isEmpty(member)){ |
| | | return new FebsResponse().success().data(0); |
| | | } |
| | | return new FebsResponse().success().data(1); |
| | | |
| | | } |
| | | } |