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