KKSU
2024-09-30 36be00e0f3cbe0d559c646fd2977e6e3a74aa6f9
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,55 @@
            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"));
        }
@@ -311,14 +398,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 +409,81 @@
                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);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
@@ -353,7 +503,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");