From 1baad5a501915c41ebabd0b619cca6470af66bf9 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 06 三月 2024 17:00:50 +0800
Subject: [PATCH] 添加方法

---
 cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/IWorldCupCompetitorService.java             |   10 ++
 cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/controller/WorldCupController.java                  |   12 ++
 cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupCompetitorServiceImpl.java     |   47 ++++++++
 cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java                                       |   19 +++
 cloud-server-account/src/main/java/com/dsh/account/model/AppUserIdsByCityName.java                                         |   19 +++
 cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/mapper/WorldCupCompetitorMapper.java                |   16 ++
 cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/feignclient/account/AppUserClient.java              |   10 ++
 cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/feignclient/account/model/AppUserIdsByCityName.java |   19 +++
 cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/model/WorldCupRecords.java                          |   28 +++++
 cloud-server-communityWorldCup/src/main/resources/mapper/WorldCupCompetitorMapper.xml                                      |   65 +++++++++++++
 10 files changed, 237 insertions(+), 8 deletions(-)

diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java
index 00ad35c..9b520dd 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java
@@ -622,4 +622,23 @@
         List<TAppUser> list = appUserService.list(new QueryWrapper<TAppUser>().eq("cityCode", cityCode).eq("state", 1));
         return list.stream().map(TAppUser::getId).collect(Collectors.toList());
     }
+
+
+    /**
+     * 根据省市名称所有用户
+     * @param appUserIdsByCityName
+     * @return
+     */
+    @PostMapping("/appUser/getAppUserIdsByCityName")
+    public List<Integer> getAppUserIdsByCityName(@RequestBody AppUserIdsByCityName appUserIdsByCityName){
+        QueryWrapper<TAppUser> queryWrapper = new QueryWrapper<TAppUser>().eq("state", 1);
+        if(ToolUtil.isNotEmpty(appUserIdsByCityName.getProvince())){
+            queryWrapper.like("province", appUserIdsByCityName.getProvince());
+        }
+        if(ToolUtil.isNotEmpty(appUserIdsByCityName.getCity())){
+            queryWrapper.like("city", appUserIdsByCityName.getCity());
+        }
+        List<TAppUser> list = appUserService.list(queryWrapper);
+        return list.stream().map(TAppUser::getId).collect(Collectors.toList());
+    }
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/AppUserIdsByCityName.java b/cloud-server-account/src/main/java/com/dsh/account/model/AppUserIdsByCityName.java
new file mode 100644
index 0000000..12d927a
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/AppUserIdsByCityName.java
@@ -0,0 +1,19 @@
+package com.dsh.account.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/3/6 16:46
+ */
+@Data
+public class AppUserIdsByCityName {
+    /**
+     * 省名称
+     */
+    private String province;
+    /**
+     * 市名称
+     */
+    private String city;
+}
diff --git a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/controller/WorldCupController.java b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/controller/WorldCupController.java
index cb1b7b0..91f3a1a 100644
--- a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/controller/WorldCupController.java
+++ b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/controller/WorldCupController.java
@@ -703,4 +703,16 @@
     public Map<String, Object> getRegisteredPersonnel(@RequestBody RegisteredPersonnel registeredPersonnel){
         return worldCupPaymentParticipantService.getRegisteredPersonnel(registeredPersonnel);
     }
+
+
+    /**
+     * 获取比赛排行榜列表数据
+     * @param worldCupRecords
+     * @return
+     */
+    @ResponseBody
+    @PostMapping("/worldCup/worldCupRecordsList")
+    public Map<String, Object> worldCupRecordsList(@RequestBody WorldCupRecords worldCupRecords){
+        return worldCupCompetitorService.worldCupRecordsList(worldCupRecords);
+    }
 }
diff --git a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/feignclient/account/AppUserClient.java b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/feignclient/account/AppUserClient.java
index 7b53d35..3bc7cb8 100644
--- a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/feignclient/account/AppUserClient.java
+++ b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/feignclient/account/AppUserClient.java
@@ -1,6 +1,7 @@
 package com.dsh.communityWorldCup.feignclient.account;
 
 import com.dsh.communityWorldCup.feignclient.account.model.AppUser;
+import com.dsh.communityWorldCup.feignclient.account.model.AppUserIdsByCityName;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 
@@ -47,4 +48,13 @@
     @PostMapping("/appUser/getAppUserIds")
     List<Integer> getAppUserIds(String cityCode);
 
+
+    /**
+     * 根据省市名称获取用户的id集合
+     * @param appUserIdsByCityName
+     * @return
+     */
+    @PostMapping("/appUser/getAppUserIdsByCityName")
+    List<Integer> getAppUserIdsByCityName(AppUserIdsByCityName appUserIdsByCityName);
+
 }
diff --git a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/feignclient/account/model/AppUserIdsByCityName.java b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/feignclient/account/model/AppUserIdsByCityName.java
new file mode 100644
index 0000000..ad29d5d
--- /dev/null
+++ b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/feignclient/account/model/AppUserIdsByCityName.java
@@ -0,0 +1,19 @@
+package com.dsh.communityWorldCup.feignclient.account.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/3/6 16:46
+ */
+@Data
+public class AppUserIdsByCityName {
+    /**
+     * 省名称
+     */
+    private String province;
+    /**
+     * 市名称
+     */
+    private String city;
+}
diff --git a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/mapper/WorldCupCompetitorMapper.java b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/mapper/WorldCupCompetitorMapper.java
index d638451..aa97433 100644
--- a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/mapper/WorldCupCompetitorMapper.java
+++ b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/mapper/WorldCupCompetitorMapper.java
@@ -2,10 +2,7 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dsh.communityWorldCup.entity.WorldCupCompetitor;
-import com.dsh.communityWorldCup.model.MatchRecord;
-import com.dsh.communityWorldCup.model.MatchRecordList;
-import com.dsh.communityWorldCup.model.WorldCupRank;
-import com.dsh.communityWorldCup.model.WorldCupRankVo;
+import com.dsh.communityWorldCup.model.*;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -39,4 +36,15 @@
      * @return
      */
     List<Map<String, Object>> getWorldCupRank(@Param("item") WorldCupRank worldCupRank, @Param("appUserIds") List<Integer> appUserIds);
+
+
+    /**
+     * 获取比赛排行榜列表数据
+     * @param worldCupRecords
+     * @return
+     */
+    List<Map<String, Object>> worldCupRecordsList(@Param("item") WorldCupRecords worldCupRecords, @Param("appUserIds") List<Integer> appUserIds);
+
+
+    int worldCupRecordsListCount(@Param("appUserIds") List<Integer> appUserIds);
 }
diff --git a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/model/WorldCupRecords.java b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/model/WorldCupRecords.java
new file mode 100644
index 0000000..c1e9e68
--- /dev/null
+++ b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/model/WorldCupRecords.java
@@ -0,0 +1,28 @@
+package com.dsh.communityWorldCup.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/3/6 16:17
+ */
+@Data
+public class WorldCupRecords {
+    /**
+     * 省名称
+     */
+    private String province;
+    /**
+     * 市名称
+     */
+    private String city;
+    /**
+     * 页码
+     */
+    private Integer offset;
+    /**
+     * 页条数
+     */
+    private Integer limit;
+
+}
diff --git a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/IWorldCupCompetitorService.java b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/IWorldCupCompetitorService.java
index f3075be..99de78c 100644
--- a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/IWorldCupCompetitorService.java
+++ b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/IWorldCupCompetitorService.java
@@ -3,8 +3,10 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.dsh.communityWorldCup.entity.WorldCupCompetitor;
 import com.dsh.communityWorldCup.model.*;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author zhibing.pu
@@ -44,4 +46,12 @@
      * @param blue
      */
     void endWorldCupCallback(String custom, Integer red_score, Integer blue);
+
+
+    /**
+     * 获取比赛排行榜列表数据
+     * @param worldCupRecords
+     * @return
+     */
+    Map<String, Object> worldCupRecordsList(WorldCupRecords worldCupRecords);
 }
diff --git a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupCompetitorServiceImpl.java b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupCompetitorServiceImpl.java
index cd03e8a..72eb60e 100644
--- a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupCompetitorServiceImpl.java
+++ b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupCompetitorServiceImpl.java
@@ -8,6 +8,7 @@
 import com.dsh.communityWorldCup.feignclient.account.AppUserClient;
 import com.dsh.communityWorldCup.feignclient.account.StudentClient;
 import com.dsh.communityWorldCup.feignclient.account.model.AppUser;
+import com.dsh.communityWorldCup.feignclient.account.model.AppUserIdsByCityName;
 import com.dsh.communityWorldCup.feignclient.account.model.TStudent;
 import com.dsh.communityWorldCup.feignclient.competition.ParticipantClient;
 import com.dsh.communityWorldCup.feignclient.competition.model.Participant;
@@ -23,10 +24,7 @@
 import java.math.BigDecimal;
 import java.math.MathContext;
 import java.math.RoundingMode;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @author zhibing.pu
@@ -300,4 +298,45 @@
 
         this.updateBatchById(worldCupCompetitors);
     }
+
+
+    /**
+     * 获取比赛排行榜列表数据
+     * @param worldCupRecords
+     * @return
+     */
+    @Override
+    public Map<String, Object> worldCupRecordsList(WorldCupRecords worldCupRecords) {
+        Map<String, Object> map1 = new HashMap<>();
+        AppUserIdsByCityName appUserIdsByCityName = new AppUserIdsByCityName();
+        appUserIdsByCityName.setProvince(worldCupRecords.getProvince());
+        appUserIdsByCityName.setCity(worldCupRecords.getCity());
+        List<Integer> appUserIds = appUserClient.getAppUserIdsByCityName(appUserIdsByCityName);
+        List<Map<String, Object>> mapList = this.baseMapper.worldCupRecordsList(worldCupRecords, appUserIds);
+        for (int i = 0; i < mapList.size(); i++) {
+            Map<String, Object> map = mapList.get(i);
+            Integer participantType = Integer.valueOf(map.get("participantType").toString());
+            Integer participantId = Integer.valueOf(map.get("participantId").toString());
+            Integer appUserId = Integer.valueOf(map.get("appUserId").toString());
+            Integer totalSession = Integer.valueOf(map.get("totalSession").toString());
+            Integer win = Integer.valueOf(map.get("win").toString());
+            Integer lose = totalSession - win;
+            map.put("lose", lose);
+            AppUser appUser = appUserClient.getAppUser(appUserId);
+            map.put("province", appUser.getProvince() + appUser.getCity());
+            if(1 == participantType){
+                TStudent tStudent = studentClient.queryById(participantId);
+                map.put("name", tStudent.getName());
+                map.put("phone", tStudent.getPhone());
+            }else{
+                Participant participant = participantClient.getParticipant(participantId);
+                map.put("name", participant.getName());
+                map.put("phone", participant.getPhone());
+            }
+        }
+        map1.put("rows", mapList);
+        int count = this.baseMapper.worldCupRecordsListCount(appUserIds);
+        map1.put("total", count);
+        return map1;
+    }
 }
diff --git a/cloud-server-communityWorldCup/src/main/resources/mapper/WorldCupCompetitorMapper.xml b/cloud-server-communityWorldCup/src/main/resources/mapper/WorldCupCompetitorMapper.xml
index 1f15572..903b27a 100644
--- a/cloud-server-communityWorldCup/src/main/resources/mapper/WorldCupCompetitorMapper.xml
+++ b/cloud-server-communityWorldCup/src/main/resources/mapper/WorldCupCompetitorMapper.xml
@@ -94,4 +94,69 @@
         </if>
     </select>
 
+
+    <select id="worldCupRecordsList" resultType="map">
+        select @row_num := @row_num + 1 AS row_num, bb.* from (
+            select * from (
+                select
+                a.participantType,
+                a.participantId,
+                a.appUserId,
+                a.num as totalSession,
+                ifnull(b.num, 0) as win,
+                (ifnull(b.num, 0) / a.num * 100) as winRate
+                from (
+                    select
+                    participantType,
+                    participantId,
+                    appUserId,
+                    count(*) as num
+                    from t_world_cup_competitor
+                    where 1 = 1
+                    <if test="null != appUserIds and appUserIds.size() > 0">
+                        and appUserId in
+                        <foreach collection="appUserIds" item="iten" index="index" open="(" separator="," close=")">
+                            #{iten}
+                        </foreach>
+                    </if>
+                    group by participantType, participantId, appUserId
+                ) as a
+                left join (
+                    select
+                    participantType,
+                    participantId,
+                    appUserId,
+                    count(*) as num
+                    from t_world_cup_competitor
+                    where matchResult = 1
+                    <if test="null != appUserIds and appUserIds.size() > 0">
+                        and appUserId in
+                        <foreach collection="appUserIds" item="iten" index="index" open="(" separator="," close=")">
+                            #{iten}
+                        </foreach>
+                    </if>
+                    group by participantType, participantId, appUserId
+                ) as b on (a.participantId = b.participantId and a.participantType = b.participantType)
+            ) as aa order by aa.totalSession desc
+        ) as bb, (SELECT @row_num := 0) AS r
+    </select>
+
+
+    <select id="worldCupRecordsListCount" resultType="int">
+        select count(*) from {
+            select
+            participantType,
+            participantId,
+            appUserId,
+            from t_world_cup_competitor
+            where 1 = 1
+            <if test="null != appUserIds and appUserIds.size() > 0">
+                and appUserId in
+                <foreach collection="appUserIds" item="iten" index="index" open="(" separator="," close=")">
+                    #{iten}
+                </foreach>
+            </if>
+            group by participantType, participantId, appUserId
+        } as aa
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.7.1