From ee64a79830f6bad4107301c31f1fed3d8ab190c4 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Tue, 01 Mar 2022 10:46:03 +0800 Subject: [PATCH] 20222223 --- src/main/java/com/xcong/excoin/modules/coin/service/impl/ZhiyaServiceImpl.java | 217 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 188 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/xcong/excoin/modules/coin/service/impl/ZhiyaServiceImpl.java b/src/main/java/com/xcong/excoin/modules/coin/service/impl/ZhiyaServiceImpl.java index b6f8df9..06520d9 100644 --- a/src/main/java/com/xcong/excoin/modules/coin/service/impl/ZhiyaServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/coin/service/impl/ZhiyaServiceImpl.java @@ -9,24 +9,22 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xcong.excoin.common.LoginUserUtils; +import com.xcong.excoin.common.enumerates.CoinTypeEnum; import com.xcong.excoin.common.enumerates.MemberWalletCoinEnum; import com.xcong.excoin.common.response.Result; -import com.xcong.excoin.modules.coin.dao.MemberAccountMoneyChangeDao; -import com.xcong.excoin.modules.coin.dao.ZhiYaDao; -import com.xcong.excoin.modules.coin.dao.ZhiYaRecordDao; -import com.xcong.excoin.modules.coin.dao.ZhiyaRewardDao; -import com.xcong.excoin.modules.coin.entity.MemberAccountMoneyChange; -import com.xcong.excoin.modules.coin.entity.ZhiYaEntity; -import com.xcong.excoin.modules.coin.entity.ZhiYaRecordEntity; -import com.xcong.excoin.modules.coin.entity.ZhiyaRewardEntity; +import com.xcong.excoin.modules.coin.dao.*; +import com.xcong.excoin.modules.coin.entity.*; import com.xcong.excoin.modules.coin.parameter.dto.RecordsPageDto; import com.xcong.excoin.modules.coin.parameter.dto.ZhiyaRewardRecordsPageDto; +import com.xcong.excoin.modules.coin.parameter.dto.ZhiyaRewardRecordsTypePageDto; import com.xcong.excoin.modules.coin.parameter.vo.MemberGusdInfoVo; import com.xcong.excoin.modules.coin.parameter.vo.UsdtToGusdVo; import com.xcong.excoin.modules.coin.parameter.vo.ZhiyaInfoVo; import com.xcong.excoin.modules.coin.parameter.vo.ZhiyaRewardVo; import com.xcong.excoin.modules.coin.service.ZhiyaService; +import com.xcong.excoin.modules.member.dao.MemberDao; import com.xcong.excoin.modules.member.dao.MemberWalletCoinDao; +import com.xcong.excoin.modules.member.entity.MemberEntity; import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity; import com.xcong.excoin.utils.MessageSourceUtils; import com.xcong.excoin.utils.RedisUtils; @@ -36,10 +34,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.GregorianCalendar; -import java.util.List; +import java.util.*; @Service public class ZhiyaServiceImpl extends ServiceImpl<ZhiYaDao, ZhiYaEntity> implements ZhiyaService { @@ -54,6 +49,10 @@ ZhiyaRewardDao zhiyaRewardDao; @Resource ZhiYaDao zhiYaDao; + @Resource + ZhiyaTeamDao zhiyaTeamDao; + @Resource + MemberDao memberdao; @Resource RedisUtils redisUtils; @Override @@ -219,8 +218,47 @@ // zhiYaRecordDao.updateById(zhiYaRecord); // } //更新团队算力表 - //只计算直属团队的算力信息 - + MemberEntity memberEntity = memberdao.selectById(memberId); + String refererIds = memberEntity.getRefererIds(); + if(StrUtil.isNotEmpty(refererIds)){ + BigDecimal gricetoagent = new BigDecimal(redisUtils.getString("GRICETOAGENT")); + String[] split = refererIds.split(","); + List<String> strings = Arrays.asList(split); + if(CollUtil.isNotEmpty(Arrays.asList(split))){ + for(String str : strings){ + if(StrUtil.isNotEmpty(str)){ + BigDecimal isAgent = BigDecimal.ZERO; + MemberEntity memberShangJi = memberdao.selectMemberInfoByInviteId(str); + ZhiYaTeam zhiyaTeamByMemberId = zhiYaRecordDao.selectZhiyaTeamRecordByMemberId(memberShangJi.getId()); + if(ObjectUtil.isNotEmpty(zhiyaTeamByMemberId)){ + //更新数据 + zhiyaTeamByMemberId.setZhiyaCnt(zhiyaTeamByMemberId.getZhiyaCnt().add(balance)); + if(isAgent.compareTo(gricetoagent) >= 0){ + zhiyaTeamByMemberId.setIsAgent(1); + } + zhiyaTeamDao.updateById(zhiyaTeamByMemberId); + }else{ + //新增数据 + ZhiYaTeam zhiYaTeam = new ZhiYaTeam(); + zhiYaTeam.setRefererId(memberShangJi.getRefererId()); + zhiYaTeam.setRefererIds(memberShangJi.getRefererIds()); + zhiYaTeam.setMemberId(memberShangJi.getId()); + if(ObjectUtil.isNotEmpty(zhiyaTeamByMemberId)){ + zhiYaTeam.setZhiyaCnt(zhiyaTeamByMemberId.getZhiyaCnt().add(balance)); + isAgent = zhiyaTeamByMemberId.getZhiyaCnt().add(balance); + }else{ + zhiYaTeam.setZhiyaCnt(balance); + isAgent = balance; + } + if(isAgent.compareTo(gricetoagent) >= 0){ + zhiYaTeam.setIsAgent(1); + } + zhiyaTeamDao.insert(zhiYaTeam); + } + } + } + } + } return Result.ok(MessageSourceUtils.getString("member_service_0024")); } @@ -268,6 +306,49 @@ zhiya.setFrozenBalance(gusdfrozenBalance.subtract(balance)); zhiya.setAvailableBalance(gusdAvailableBalance.add(balance)); zhiYaDao.updateById(zhiya); + //更新团队算力表 + MemberEntity memberEntity = memberdao.selectById(memberId); + String refererIds = memberEntity.getRefererIds(); + if(StrUtil.isNotEmpty(refererIds)){ + BigDecimal gricetoagent = new BigDecimal(redisUtils.getString("GRICETOAGENT")); + String[] split = refererIds.split(","); + List<String> strings = Arrays.asList(split); + if(CollUtil.isNotEmpty(Arrays.asList(split))){ + for(String str : strings){ + if(StrUtil.isNotEmpty(str)){ + BigDecimal isAgent = BigDecimal.ZERO; + MemberEntity memberShangJi = memberdao.selectMemberInfoByInviteId(str); + ZhiYaTeam zhiyaTeamByMemberId = zhiYaRecordDao.selectZhiyaTeamRecordByMemberId(memberShangJi.getId()); + if(ObjectUtil.isNotEmpty(zhiyaTeamByMemberId)){ + //更新数据 + zhiyaTeamByMemberId.setZhiyaCnt(zhiyaTeamByMemberId.getZhiyaCnt().subtract(balance)); + isAgent = zhiyaTeamByMemberId.getZhiyaCnt().subtract(balance); + if(isAgent.compareTo(gricetoagent) >= 0){ + zhiyaTeamByMemberId.setIsAgent(1); + } + zhiyaTeamDao.updateById(zhiyaTeamByMemberId); + }else{ + //新增数据 + ZhiYaTeam zhiYaTeam = new ZhiYaTeam(); + zhiYaTeam.setRefererId(memberShangJi.getRefererId()); + zhiYaTeam.setRefererIds(memberShangJi.getRefererIds()); + zhiYaTeam.setMemberId(memberShangJi.getId()); + if(ObjectUtil.isNotEmpty(zhiyaTeamByMemberId)){ + zhiYaTeam.setZhiyaCnt(zhiyaTeamByMemberId.getZhiyaCnt().subtract(balance)); + isAgent = zhiyaTeamByMemberId.getZhiyaCnt().subtract(balance); + }else{ + zhiYaTeam.setZhiyaCnt(balance); + isAgent = balance; + } + if(isAgent.compareTo(gricetoagent) >= 0){ + zhiYaTeam.setIsAgent(1); + } + zhiyaTeamDao.insert(zhiYaTeam); + } + } + } + } + } return Result.ok(MessageSourceUtils.getString("member_service_0024")); } @@ -311,14 +392,10 @@ @Override @Transactional public void grantZhiyaAmount() { - //获取每日总产出 + //获取GUSD质押比例 BigDecimal gusdReward = new BigDecimal(redisUtils.getString("GUSDREWARD")); - //静态算力 = 每日总产出的80% BigDecimal fixedGusdReward = gusdReward.multiply(new BigDecimal(0.8)); - //获取每日全网总算力 - Long totalGusd = zhiYaRecordDao.selectTotalGusdByStatueAndTime(1,new Date()); - BigDecimal totalGusdBigDecimal = new BigDecimal(totalGusd); - if(totalGusdBigDecimal.compareTo(BigDecimal.ZERO) > 0){ + if(fixedGusdReward.compareTo(BigDecimal.ZERO) > 0){ //获取今天之前满足发放奖励的全部质押单 //生效时间小于当前时间 //状态为生效中 @@ -326,14 +403,83 @@ if(CollUtil.isNotEmpty(lists)){ for(ZhiYaRecordEntity zhiYaRecordEntity : lists){ ZhiyaRewardEntity zhiyaRewardEntity = new ZhiyaRewardEntity(); - zhiyaRewardEntity.setRecordId(zhiYaRecordEntity.getId()); - zhiyaRewardEntity.setRecordNo(zhiYaRecordEntity.getOrderNo()); - zhiyaRewardEntity.setMemberId(zhiYaRecordEntity.getMemberId()); - //(个人算力/每日全网总算力)*静态算力 - BigDecimal divide1 = zhiYaRecordEntity.getZhiyaCnt().divide(totalGusdBigDecimal, 2, BigDecimal.ROUND_HALF_UP); - BigDecimal multiply = divide1.multiply(fixedGusdReward); - zhiyaRewardEntity.setRewardAmout(multiply); - zhiyaRewardDao.insert(zhiyaRewardEntity); + //查询今天有没有发送过了 + String orderNo = zhiYaRecordEntity.getOrderNo(); + Long memberId = zhiYaRecordEntity.getMemberId(); + Date date = new Date(); + List<ZhiyaRewardEntity> zhiyaRewardEntityDone = zhiYaRecordDao.selectZhiyaTeamRecordByMemberIdAndOrderNo(orderNo,memberId,date); + if(ObjectUtil.isEmpty(zhiyaRewardEntityDone)){ + zhiyaRewardEntity.setRecordId(zhiYaRecordEntity.getId()); + zhiyaRewardEntity.setRecordNo(zhiYaRecordEntity.getOrderNo()); + zhiyaRewardEntity.setMemberId(zhiYaRecordEntity.getMemberId()); + zhiyaRewardEntity.setType(1); + MemberEntity member = memberdao.selectById(zhiYaRecordEntity.getMemberId()); + //获取当前人的上两级 + BigDecimal multiplyReward = BigDecimal.ZERO; + MemberEntity memberEntity = memberdao.selectMemberInfoByInviteId(member.getRefererId()); + if(ObjectUtil.isNotEmpty(memberEntity)){ + //以及1代理的比例 + BigDecimal agetShangji = new BigDecimal(redisUtils.getString("GUSDREWARDAGENTONE")); + BigDecimal multiply = zhiYaRecordEntity.getZhiyaCnt().multiply(gusdReward).multiply(agetShangji); + multiplyReward = (zhiYaRecordEntity.getZhiyaCnt().multiply(gusdReward).subtract(multiply)); + ZhiyaRewardEntity zhiyaRewardEntitySJ = new ZhiyaRewardEntity(); + zhiyaRewardEntitySJ.setRecordId(zhiYaRecordEntity.getId()); + zhiyaRewardEntitySJ.setRecordNo(zhiYaRecordEntity.getOrderNo()); + zhiyaRewardEntitySJ.setMemberId(memberEntity.getId()); + zhiyaRewardEntitySJ.setType(2); + zhiyaRewardEntitySJ.setRewardAmout(multiply); + zhiyaRewardDao.insert(zhiyaRewardEntitySJ); + + MemberWalletCoinEntity memberWalletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberEntity.getId(), CoinTypeEnum.GRICE.toString()); + memberWalletCoinEntity.setAvailableBalance(memberWalletCoinEntity.getAvailableBalance().add(multiply)); + memberWalletCoinEntity.setTotalBalance(memberWalletCoinEntity.getAvailableBalance().add(multiply)); + memberWalletCoinDao.updateById(memberWalletCoinEntity); + + MemberEntity memberEntitySSJ = memberdao.selectMemberInfoByInviteId(memberEntity.getRefererId()); + if(ObjectUtil.isNotEmpty(memberEntitySSJ)){ + BigDecimal agetSSJ = new BigDecimal(redisUtils.getString("GUSDREWARDAGENTTWO")); + BigDecimal multiplySSJ = zhiYaRecordEntity.getZhiyaCnt().multiply(gusdReward).multiply(agetSSJ); + multiplyReward = (zhiYaRecordEntity.getZhiyaCnt().multiply(gusdReward).subtract(multiply).subtract(multiplySSJ)); + + MemberWalletCoinEntity memberWalletCoinEntitySSJ = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberEntity.getId(), CoinTypeEnum.GRICE.toString()); + memberWalletCoinEntitySSJ.setAvailableBalance(memberWalletCoinEntitySSJ.getAvailableBalance().add(multiply)); + memberWalletCoinEntitySSJ.setTotalBalance(memberWalletCoinEntitySSJ.getAvailableBalance().add(multiply)); + memberWalletCoinDao.updateById(memberWalletCoinEntitySSJ); + + ZhiyaRewardEntity zhiyaRewardEntitySSJ = new ZhiyaRewardEntity(); + zhiyaRewardEntitySSJ.setRecordId(zhiYaRecordEntity.getId()); + zhiyaRewardEntitySSJ.setRecordNo(zhiYaRecordEntity.getOrderNo()); + zhiyaRewardEntitySSJ.setMemberId(memberEntitySSJ.getId()); + zhiyaRewardEntitySSJ.setType(2); + zhiyaRewardEntitySSJ.setRewardAmout(multiplySSJ); + zhiyaRewardDao.insert(zhiyaRewardEntitySSJ); + } + }else{ + multiplyReward = (zhiYaRecordEntity.getZhiyaCnt().multiply(gusdReward)); + } + zhiyaRewardEntity.setRewardAmout(multiplyReward); + zhiyaRewardDao.insert(zhiyaRewardEntity); + + String refererIds = member.getRefererIds(); + if(StrUtil.isNotEmpty(refererIds)){ + String[] split = refererIds.split(","); + List<String> strings = Arrays.asList(split); + if(CollUtil.isNotEmpty(strings)){ + for(String str : strings){ + if(StrUtil.isNotEmpty(str)){ + MemberEntity memberShangJi = memberdao.selectMemberInfoByInviteId(str); + ZhiYaTeam zhiyaTeamByMemberId = zhiYaRecordDao.selectZhiyaTeamRecordByMemberId(memberShangJi.getId()); + if(ObjectUtil.isNotEmpty(zhiyaTeamByMemberId)){ + //更新数据 + zhiyaTeamByMemberId.setRewardCnt( + (zhiyaTeamByMemberId.getRewardCnt() == null ? BigDecimal.ZERO:zhiyaTeamByMemberId.getRewardCnt()).add(multiplyReward)); + zhiyaTeamDao.updateById(zhiyaTeamByMemberId); + } + } + } + } + } + } } } } @@ -353,7 +499,20 @@ return Result.ok(lists); } - public String generateSimpleSerialno(String userId) { + @Override + public Result getZhiyaRewardTypeTo(ZhiyaRewardRecordsTypePageDto recordsPageDto) { + + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + + Page<ZhiyaRewardVo> page = new Page<>(recordsPageDto.getPageNum(), recordsPageDto.getPageSize()); + ZhiyaRewardEntity zhiyaRewardEntity = new ZhiyaRewardEntity(); + zhiyaRewardEntity.setMemberId(memberId); + IPage<ZhiyaRewardVo> lists = zhiYaRecordDao.selectZhiyaRewardTypeToByMemberIdInPage(page, zhiyaRewardEntity); + return Result.ok(lists); + } + + public String generateSimpleSerialno(String userId) { StringBuilder sb = new StringBuilder(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sd = new SimpleDateFormat("yyyyMMdd"); -- Gitblit v1.9.1