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