From 4575ae4dbedd7046f4b7aeeb79b49059676e2201 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Mon, 22 Jul 2024 16:18:21 +0800 Subject: [PATCH] 逻辑 --- src/main/java/cc/mrbird/febs/dapp/vo/ApidirectNumVo.java | 20 ++++++++++ src/main/java/cc/mrbird/febs/job/ProfitDailyJob.java | 32 ++++++++++++++- src/main/java/cc/mrbird/febs/dapp/vo/ApiDirectInfoVo.java | 5 ++ src/main/java/cc/mrbird/febs/dapp/mapper/DappStorageMapper.java | 2 + src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java | 16 +++++++ src/main/resources/mapper/dapp/DappStorageMapper.xml | 27 +++++++++++++ 6 files changed, 98 insertions(+), 4 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/dapp/mapper/DappStorageMapper.java b/src/main/java/cc/mrbird/febs/dapp/mapper/DappStorageMapper.java index 06e4b39..740c2f5 100644 --- a/src/main/java/cc/mrbird/febs/dapp/mapper/DappStorageMapper.java +++ b/src/main/java/cc/mrbird/febs/dapp/mapper/DappStorageMapper.java @@ -35,4 +35,6 @@ List<DappStorage> selectListGroupByMemberId(); List<DappStorage> selectSumByAmountDescFiveToFive(@Param("startTime")DateTime startTime, @Param("offset")int offset,@Param("count")int count); + + DappStorage selectNewRecordByRefMemberId(@Param("memberId")Long memberId); } diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java index fadf9f2..d04fc98 100644 --- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java @@ -869,10 +869,24 @@ ApiDirectInfoVo apiDirectInfoVo = new ApiDirectInfoVo(); apiDirectInfoVo.setAddress(dappMemberDao.selectById(memberId).getAddress()); apiDirectInfoVo.setAmount(directCnt); - + DappStorage dappStorage = dappStorageMapper.selectNewRecordByRefMemberId(memberId); + apiDirectInfoVo.setCreateTime(dappStorage.getCreateTime()); apiDirectInfoVos.add(apiDirectInfoVo); } } + if(CollUtil.isNotEmpty(apiDirectInfoVos)){ + apiDirectInfoVos = apiDirectInfoVos.stream() + .sorted((a, b) -> { + // 先按照amount从大到小排序 + int compare = b.getAmount().compareTo(a.getAmount()); + if (compare != 0) { + return compare; + } + // 如果amount相同,则按照createTime从小到大排序 + return a.getCreateTime().compareTo(b.getCreateTime()); + }) + .collect(Collectors.toList()); + } return apiDirectInfoVos; diff --git a/src/main/java/cc/mrbird/febs/dapp/vo/ApiDirectInfoVo.java b/src/main/java/cc/mrbird/febs/dapp/vo/ApiDirectInfoVo.java index e7a4671..ce43153 100644 --- a/src/main/java/cc/mrbird/febs/dapp/vo/ApiDirectInfoVo.java +++ b/src/main/java/cc/mrbird/febs/dapp/vo/ApiDirectInfoVo.java @@ -1,10 +1,12 @@ package cc.mrbird.febs.dapp.vo; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; +import java.util.Date; @Data @ApiModel(value = "ApiDirectInfoVo", description = "排名") @@ -15,4 +17,7 @@ @ApiModelProperty(value = "直推人数") private BigDecimal amount; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; } diff --git a/src/main/java/cc/mrbird/febs/dapp/vo/ApidirectNumVo.java b/src/main/java/cc/mrbird/febs/dapp/vo/ApidirectNumVo.java new file mode 100644 index 0000000..7671440 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/dapp/vo/ApidirectNumVo.java @@ -0,0 +1,20 @@ +package cc.mrbird.febs.dapp.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +@ApiModel(value = "ApidirectNumVo", description = "排名") +public class ApidirectNumVo { + + private Long memberId; + + private BigDecimal directCnt; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; +} diff --git a/src/main/java/cc/mrbird/febs/job/ProfitDailyJob.java b/src/main/java/cc/mrbird/febs/job/ProfitDailyJob.java index 41fb610..7e64049 100644 --- a/src/main/java/cc/mrbird/febs/job/ProfitDailyJob.java +++ b/src/main/java/cc/mrbird/febs/job/ProfitDailyJob.java @@ -11,6 +11,7 @@ import cc.mrbird.febs.dapp.mapper.DappStorageMapper; import cc.mrbird.febs.dapp.mapper.DataDictionaryCustomMapper; import cc.mrbird.febs.dapp.service.DappSystemService; +import cc.mrbird.febs.dapp.vo.ApidirectNumVo; import cc.mrbird.febs.rabbit.producer.ChainProducer; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateTime; @@ -319,11 +320,36 @@ .limit(10) .collect(Collectors.toList()); - int startNum = 1; + List<ApidirectNumVo> apiDirectInfoVos = new ArrayList<>(); for (Map.Entry<Long, BigDecimal> entry : topTenEntries) { - Long memberId = entry.getKey(); - BigDecimal directAchieve = entry.getValue(); + BigDecimal directCnt = entry.getValue(); + ApidirectNumVo apiDirectInfoVo = new ApidirectNumVo(); + apiDirectInfoVo.setMemberId(memberId); + apiDirectInfoVo.setDirectCnt(directCnt); + DappStorage dappStorage = dappStorageMapper.selectNewRecordByRefMemberId(memberId); + apiDirectInfoVo.setCreateTime(dappStorage.getCreateTime()); + apiDirectInfoVos.add(apiDirectInfoVo); + } + + if(CollUtil.isNotEmpty(apiDirectInfoVos)){ + apiDirectInfoVos = apiDirectInfoVos.stream() + .sorted((a, b) -> { + // 先按照amount从大到小排序 + int compare = b.getDirectCnt().compareTo(a.getDirectCnt()); + if (compare != 0) { + return compare; + } + // 如果amount相同,则按照createTime从小到大排序 + return a.getCreateTime().compareTo(b.getCreateTime()); + }) + .collect(Collectors.toList()); + } + + int startNum = 1; + for (ApidirectNumVo numVo : apiDirectInfoVos) { + Long memberId = numVo.getMemberId(); + BigDecimal directAchieve = numVo.getDirectCnt(); //第一名 if(startNum == 1){ BigDecimal bigDecimal = directTotal.multiply(new BigDecimal("0.4")).setScale(2, BigDecimal.ROUND_DOWN); diff --git a/src/main/resources/mapper/dapp/DappStorageMapper.xml b/src/main/resources/mapper/dapp/DappStorageMapper.xml index d00880f..276fadf 100644 --- a/src/main/resources/mapper/dapp/DappStorageMapper.xml +++ b/src/main/resources/mapper/dapp/DappStorageMapper.xml @@ -158,4 +158,31 @@ </select> + <select id="selectNewRecordByRefMemberId" resultType="cc.mrbird.febs.dapp.entity.DappStorage"> + SELECT + * + FROM + dapp_storage + WHERE + member_id IN ( + SELECT + id + FROM + dapp_member + WHERE + referer_id = ( + SELECT + invite_id + FROM + dapp_member + WHERE + member_id = #{memberId} + ) + ) + ORDER BY + create_time DESC + LIMIT 1 + </select> + + </mapper> \ No newline at end of file -- Gitblit v1.9.1