| | |
| | | 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; |
| | |
| | | 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 { |
| | |
| | | ZhiyaRewardDao zhiyaRewardDao; |
| | | @Resource |
| | | ZhiYaDao zhiYaDao; |
| | | @Resource |
| | | ZhiyaTeamDao zhiyaTeamDao; |
| | | @Resource |
| | | MemberDao memberdao; |
| | | @Resource |
| | | RedisUtils redisUtils; |
| | | @Override |
| | |
| | | // 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")); |
| | | } |
| | |
| | | zhiya.setFrozenBalance(gusdfrozenBalance.subtract(balance)); |
| | | zhiya.setAvailableBalance(gusdAvailableBalance.add(balance)); |
| | | zhiYaDao.updateById(zhiya); |
| | | //赎回后奖励直接去币币账户 |
| | | Long sumReward = zhiYaDao.selectSumRewardByMemberIdAndRecordIdAndType(memberId,id,1); |
| | | MemberWalletCoinEntity memberWalletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, CoinTypeEnum.GRICE.toString()); |
| | | memberWalletCoinEntity.setAvailableBalance(memberWalletCoinEntity.getAvailableBalance().add(new BigDecimal(sumReward))); |
| | | memberWalletCoinEntity.setTotalBalance(memberWalletCoinEntity.getTotalBalance().add(new BigDecimal(sumReward))); |
| | | memberWalletCoinDao.updateById(memberWalletCoinEntity); |
| | | //更新团队算力表 |
| | | 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")); |
| | | } |
| | | |
| | |
| | | @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){ |
| | | //获取今天之前满足发放奖励的全部质押单 |
| | | //生效时间小于当前时间 |
| | | //状态为生效中 |
| | |
| | | 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 = zhiYaRecordEntity.getZhiyaCnt().multiply(gusdReward); |
| | | 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 = multiplyReward.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.getTotalBalance().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 = multiplyReward.subtract(multiplySSJ); |
| | | |
| | | MemberWalletCoinEntity memberWalletCoinEntitySSJ = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberEntitySSJ.getId(), CoinTypeEnum.GRICE.toString()); |
| | | memberWalletCoinEntitySSJ.setAvailableBalance(memberWalletCoinEntitySSJ.getAvailableBalance().add(multiplySSJ)); |
| | | memberWalletCoinEntitySSJ.setTotalBalance(memberWalletCoinEntitySSJ.getTotalBalance().add(multiplySSJ)); |
| | | 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); |
| | | } |
| | | } |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | 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"); |