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