xiaoyong931011
2022-03-01 ee64a79830f6bad4107301c31f1fed3d8ab190c4
20222223
4 files added
12 files modified
496 ■■■■ changed files
src/main/java/com/xcong/excoin/modules/coin/controller/ZhiyaController.java 11 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/coin/dao/ZhiYaRecordDao.java 14 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/coin/dao/ZhiyaTeamDao.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/coin/entity/ZhiYaTeam.java 48 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/coin/entity/ZhiyaRewardEntity.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/coin/parameter/dto/ZhiyaRewardRecordsTypePageDto.java 22 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/coin/parameter/vo/ZhiyaRewardVo.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/coin/service/ZhiyaService.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/coin/service/impl/ZhiyaServiceImpl.java 217 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/dao/MemberDao.java 12 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/parameter/vo/MemberTeamVo.java 20 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/parameter/vo/TeamVo.java 25 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java 52 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/quartz/job/ZhiyarRewardJob.java 5 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/member/MemberDao.xml 22 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/walletCoinOrder/ZhiYaRecordDao.xml 31 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/coin/controller/ZhiyaController.java
@@ -107,4 +107,15 @@
    public Result  getZhiyaReward(@RequestBody @Valid ZhiyaRewardRecordsPageDto recordsPageDto) {
        return zhiyaService.getZhiyaReward(recordsPageDto);
    }
    /**
     *  获取质押GUSD奖励返佣记录
     * @return
     */
    @ApiOperation(value="获取质押GUSD奖励返佣记录", notes="获取质押GUSD奖励返佣记录")
    @ApiResponses({@ApiResponse( code = 200, message = "success", response = ZhiyaRewardVo.class)})
    @PostMapping(value="/getZhiyaRewardTypeTo")
    public Result  getZhiyaRewardTypeTo(@RequestBody @Valid ZhiyaRewardRecordsTypePageDto recordsPageDto) {
        return zhiyaService.getZhiyaRewardTypeTo(recordsPageDto);
    }
}
src/main/java/com/xcong/excoin/modules/coin/dao/ZhiYaRecordDao.java
@@ -3,10 +3,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xcong.excoin.modules.coin.entity.OrderCoinsEntity;
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.entity.*;
import com.xcong.excoin.modules.coin.parameter.vo.ZhiyaInfoVo;
import com.xcong.excoin.modules.coin.parameter.vo.ZhiyaRewardVo;
import org.apache.ibatis.annotations.Param;
@@ -32,5 +29,14 @@
    Long selectTotalGusdByStatueAndTime(@Param("orderStatus")int i, @Param("now")Date date);
    ZhiYaTeam selectZhiyaTeamRecordByMemberId(@Param("memberId")Long id);
    List<ZhiyaRewardEntity> selectZhiyaTeamRecordByMemberIdAndOrderNo(@Param("orderNo")String orderNo, @Param("memberId")Long memberId,@Param("now")Date date);
//    void selectZhiYaRewardByStatueAndTime(@Param("orderStatus")int i, @Param("now")Date date);
    Long selectSumZhiyaCntByMemberIdAndOrderStatus(@Param("memberId")Long memberId,@Param("orderStatus") Integer orderStatus);
    Long selectSumRewardCntByMemberId(@Param("memberId")Long zhiShuMemberId);
    IPage<ZhiyaRewardVo> selectZhiyaRewardTypeToByMemberIdInPage(Page<ZhiyaRewardVo> page, @Param("record")ZhiyaRewardEntity zhiyaRewardEntity);
}
src/main/java/com/xcong/excoin/modules/coin/dao/ZhiyaTeamDao.java
New file
@@ -0,0 +1,7 @@
package com.xcong.excoin.modules.coin.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xcong.excoin.modules.coin.entity.ZhiYaTeam;
public interface ZhiyaTeamDao extends BaseMapper<ZhiYaTeam> {
}
src/main/java/com/xcong/excoin/modules/coin/entity/ZhiYaTeam.java
New file
@@ -0,0 +1,48 @@
package com.xcong.excoin.modules.coin.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xcong.excoin.common.system.base.BaseEntity;
import lombok.Data;
import java.math.BigDecimal;
@Data
@TableName("zhiya_Team")
public class ZhiYaTeam extends BaseEntity {
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    /**
     * 会员ID
     */
    private Long memberId;
    /**
     * 是否是代理 1:是   0:否
     */
    private Integer isAgent;
    /**
     * 上级
     */
    private String refererId;
    /**
     * 上级链
     */
    private String refererIds;
    /**
     * 团队委托总量(不包含自己质押的算力)
     */
    private BigDecimal zhiyaCnt;
    /**
     * 团队总收益(不包含自己质押的算力)
     */
    private BigDecimal rewardCnt;
}
src/main/java/com/xcong/excoin/modules/coin/entity/ZhiyaRewardEntity.java
@@ -34,5 +34,9 @@
     * 奖励金额
     */
    private BigDecimal rewardAmout;
    /**
     * 1:返回用户2:返回代理
     */
    private Integer type;
}
src/main/java/com/xcong/excoin/modules/coin/parameter/dto/ZhiyaRewardRecordsTypePageDto.java
New file
@@ -0,0 +1,22 @@
package com.xcong.excoin.modules.coin.parameter.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
@Data
@ApiModel(value = "ZhiyaRewardRecordsTypePageDto", description = "参数接受类")
public class ZhiyaRewardRecordsTypePageDto {
    @NotNull
    @Min(1)
    @ApiModelProperty(value = "第几页", example = "1")
    private int pageNum;
    @NotNull
    @ApiModelProperty(value = "每页数量", example = "10")
    private int pageSize;
}
src/main/java/com/xcong/excoin/modules/coin/parameter/vo/ZhiyaRewardVo.java
@@ -17,6 +17,9 @@
     */
    @ApiModelProperty(value = "质押编号")
    private String recordNo;
    @ApiModelProperty(value = "1:空白  2:返佣")
    private Integer type;
    /**
     * 奖励金额
     */
src/main/java/com/xcong/excoin/modules/coin/service/ZhiyaService.java
@@ -5,6 +5,7 @@
import com.xcong.excoin.modules.coin.entity.ZhiYaEntity;
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 java.math.BigDecimal;
@@ -25,4 +26,6 @@
    void grantZhiyaAmount();
    Result getZhiyaReward(ZhiyaRewardRecordsPageDto recordsPageDto);
    Result getZhiyaRewardTypeTo(ZhiyaRewardRecordsTypePageDto recordsPageDto);
}
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");
src/main/java/com/xcong/excoin/modules/member/dao/MemberDao.java
@@ -3,9 +3,8 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xcong.excoin.modules.coin.parameter.vo.ZhiyaInfoVo;
import com.xcong.excoin.modules.coin.entity.ZhiYaTeam;
import com.xcong.excoin.modules.member.entity.MemberEntity;
import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity;
import com.xcong.excoin.modules.member.parameter.vo.MemberTeamVo;
import com.xcong.excoin.modules.member.parameter.vo.NeedMoneyMemberVo;
import org.apache.ibatis.annotations.Param;
@@ -26,4 +25,13 @@
    public List<NeedMoneyMemberVo> selectAllNeedMoneyMember(@Param("list") List<String> list);
    IPage<MemberTeamVo> selectAllTeamByInviteIdInPage(Page<MemberTeamVo> page, @Param("record")MemberEntity memberEntity);
    List<MemberEntity> selectMemberInfoByRefererId(@Param("inviteId") String inviteId);
    ZhiYaTeam selectZhiYaTeamRecordByMemberId(@Param("memberId")Long zhiShuMemberId);
    int selectMemberCountByInvitedId(@Param("inviteId")String inviteId);
    MemberTeamVo selectAllTeamByInviteIdInPage(@Param("memberId")Long memberId, @Param("inviteId")String inviteId);
}
src/main/java/com/xcong/excoin/modules/member/parameter/vo/MemberTeamVo.java
@@ -1,21 +1,27 @@
package com.xcong.excoin.modules.member.parameter.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.*;
import java.util.Date;
import java.math.BigDecimal;
@Data
@ApiModel(value = "MemberTeamVo", description = "返回参数")
public class MemberTeamVo {
    @ApiModelProperty(value = "账号")
    private String account;
    @ApiModelProperty(value = "团队总人数")
    private Integer teamCnt;
    @ApiModelProperty(value = "注册时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;
    @ApiModelProperty(value = "质押总数")
    private BigDecimal zhiyaCnt;
    @ApiModelProperty(value = "收益总数")
    private BigDecimal rewardCnt;
    @ApiModelProperty(value = "团队详情")
    private List<TeamVo> teamVo;
}
src/main/java/com/xcong/excoin/modules/member/parameter/vo/TeamVo.java
New file
@@ -0,0 +1,25 @@
package com.xcong.excoin.modules.member.parameter.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
@ApiModel(value = "TeamVo", description = "返回参数")
public class TeamVo {
    @ApiModelProperty(value = "账号")
    private String account;
    @ApiModelProperty(value = "团队总人数")
    private Integer teamCnt;
    @ApiModelProperty(value = "质押总数")
    private BigDecimal zhiyaCnt;
    @ApiModelProperty(value = "收益总数")
    private BigDecimal rewardCnt;
}
src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
@@ -17,8 +17,11 @@
import com.xcong.excoin.common.system.service.CommonService;
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.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.ZhiYaTeam;
import com.xcong.excoin.modules.coin.parameter.vo.ZhiyaInfoVo;
import com.xcong.excoin.modules.member.dao.*;
import com.xcong.excoin.modules.member.entity.*;
@@ -39,6 +42,7 @@
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.web3j.abi.datatypes.Int;
import java.math.BigDecimal;
import java.util.ArrayList;
@@ -59,6 +63,9 @@
    @Resource
    private MemberDao memberDao;
    @Resource
    private ZhiYaRecordDao zhiYaRecordDao;
    @Resource
    private MemberWalletAgentDao memberWalletAgentDao;
@@ -1031,12 +1038,45 @@
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberEntity member = memberDao.selectById(memberId);
        Page<MemberTeamVo> page = new Page<>(memberTeamRecordsPageDto.getPageNum(), memberTeamRecordsPageDto.getPageSize());
        MemberEntity memberEntity = new MemberEntity();
        memberEntity.setId(memberId);
        memberEntity.setInviteId(member.getInviteId());
        IPage<MemberTeamVo> lists = memberDao.selectAllTeamByInviteIdInPage(page, memberEntity);
        return Result.ok(lists);
        MemberTeamVo memberTeamVo = memberDao.selectAllTeamByInviteIdInPage(memberId,member.getInviteId());
        List<TeamVo> teamVos = new ArrayList<>();
        if(ObjectUtil.isEmpty(memberTeamVo)){
            MemberTeamVo memberTeamVoNull = new MemberTeamVo();
            Integer teamCnt = memberDao.selectMemberCountByInvitedId(member.getInviteId());
            memberTeamVoNull.setTeamCnt(teamCnt);
            memberTeamVoNull.setZhiyaCnt(BigDecimal.ZERO);
            memberTeamVoNull.setRewardCnt(BigDecimal.ZERO);
            memberTeamVoNull.setTeamVo(teamVos);
            return Result.ok(memberTeamVoNull);
        }
        //直属会员
        List<MemberEntity> memberZhiShu = memberDao.selectMemberInfoByRefererId(member.getInviteId());
        if(CollUtil.isNotEmpty(memberZhiShu)){
            for(MemberEntity zhishu : memberZhiShu){
                Long zhiShuMemberId = zhishu.getId();
                ZhiYaTeam zhiYaTeam = memberDao.selectZhiYaTeamRecordByMemberId(zhiShuMemberId);
                TeamVo teamVo = new TeamVo();
                String phone = zhishu.getPhone();
                if(StrUtil.isNotEmpty(phone)){
                    String result = phone.substring(phone.length()-4,phone.length());
                    teamVo.setAccount(result);
                }
                int memberCnt = memberDao.selectMemberCountByInvitedId(zhishu.getInviteId());
                teamVo.setTeamCnt(memberCnt);
                Long aLong = zhiYaRecordDao.selectSumZhiyaCntByMemberIdAndOrderStatus(zhiShuMemberId, 1);
                Long rLong = zhiYaRecordDao.selectSumRewardCntByMemberId(zhiShuMemberId);
                teamVo.setZhiyaCnt(new BigDecimal(aLong));
                teamVo.setRewardCnt(new BigDecimal(rLong));
                if(ObjectUtil.isNotEmpty(zhiYaTeam)){
                    teamVo.setZhiyaCnt((zhiYaTeam.getZhiyaCnt() == null ? BigDecimal.ZERO : zhiYaTeam.getZhiyaCnt()).add(new BigDecimal(aLong)));
                    teamVo.setRewardCnt(zhiYaTeam.getRewardCnt() == null ?BigDecimal.ZERO : zhiYaTeam.getRewardCnt().add(new BigDecimal(rLong)));
                }
                teamVos.add(teamVo);
            }
            memberTeamVo.setTeamVo(teamVos);
        }
        return Result.ok(memberTeamVo);
    }
}
src/main/java/com/xcong/excoin/quartz/job/ZhiyarRewardJob.java
@@ -21,11 +21,14 @@
    /**
     * 质押奖励计算
     */
    @Scheduled(cron = "0 0 0 * * ? ")
    @Scheduled(cron = "0 * * * * ? ")
//    @Scheduled(cron = "0 0 0 * * ? ")
    public void updateDoingPrice() {
        log.info("#质押奖励计算#");
        try {
            //静态算力
            zhiyaService.grantZhiyaAmount();
            //todo -- 动态算力计算
        } catch (Exception e) {
            log.error("#质押奖励计算错误#", e);
        }
src/main/resources/mapper/member/MemberDao.xml
@@ -45,11 +45,27 @@
        </foreach >
    </select>
    <select id="selectMemberInfoByRefererId" resultType="com.xcong.excoin.modules.member.entity.MemberEntity">
        SELECT m.* FROM member m WHERE m.referer_id = #{inviteId}
    </select>
    <select id="selectZhiYaTeamRecordByMemberId" resultType="com.xcong.excoin.modules.coin.entity.ZhiYaTeam">
        SELECT m.* FROM zhiya_Team m WHERE m.member_id = #{memberId}
    </select>
    <select id="selectMemberCountByInvitedId" resultType="integer">
        SELECT count(*) FROM member m where FIND_IN_SET(#{inviteId}, referer_ids)
    </select>
    <select id="selectAllTeamByInviteIdInPage" resultType="com.xcong.excoin.modules.member.parameter.vo.MemberTeamVo">
        SELECT
        m.phone account,
        m.create_time createTime
        FROM member m where m.referer_id = #{record.inviteId}
            ifnull(m.zhiya_cnt,0) zhiyaCnt,
            ifnull(m.reward_cnt,0) rewardCnt,
            ifnull((SELECT count(*) FROM member b where FIND_IN_SET(#{inviteId}, referer_ids)),0) teamCnt
        FROM zhiya_team m where m.member_id = #{memberId}
        order by m.create_time desc
    </select>
</mapper>
src/main/resources/mapper/walletCoinOrder/ZhiYaRecordDao.xml
@@ -55,4 +55,35 @@
        SELECT ifnull(sum(a.zhiya_cnt),0)  FROM zhiya_record a where a.order_status= #{orderStatus} and #{now} > a.effect_date
    </select>
    <select id="selectZhiyaTeamRecordByMemberId" resultType="com.xcong.excoin.modules.coin.entity.ZhiYaTeam">
        SELECT a.*  FROM zhiya_Team a where a.member_id= #{memberId}
    </select>
    <select id="selectZhiyaTeamRecordByMemberIdAndOrderNo" resultType="com.xcong.excoin.modules.coin.entity.ZhiyaRewardEntity">
        <![CDATA[ SELECT a.*  FROM zhiya_reward a where a.member_id= #{memberId} and type = 1
                                   and DATE_FORMAT(a.create_time, '%Y-%m-%d') = DATE_FORMAT(#{now}, '%Y-%m-%d')]]>
    </select>
    <select id="selectSumZhiyaCntByMemberIdAndOrderStatus" resultType="long">
        SELECT ifnull(sum(a.zhiya_cnt),0)  FROM zhiya_record a where a.member_id= #{memberId} and a.order_status = #{orderStatus}
    </select>
    <select id="selectSumRewardCntByMemberId" resultType="long">
        SELECT ifnull(sum(a.reward_amout),0)  FROM zhiya_reward a where a.member_id= #{memberId} and type= 1
    </select>
    <select id="selectZhiyaRewardTypeToByMemberIdInPage" resultType="com.xcong.excoin.modules.coin.parameter.vo.ZhiyaRewardVo">
        select * from zhiya_reward
        <if test="record != null">
            <where>
            and type = 2
                <if test="record.memberId != null" >
                    and member_id=#{record.memberId}
                </if>
            </where>
        </if>
        order by id desc
    </select>
</mapper>