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>