From 01e9c62e555fc5ebc17467e15f7e522ecefb9c94 Mon Sep 17 00:00:00 2001 From: zhangyongzhangyong <2012005003@qq.coom> Date: Wed, 13 May 2020 17:17:16 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=AF=E5=88=86=E6=8E=92=E8=A1=8C=E6=A6=9C?= =?UTF-8?q?=20-=20=E6=8E=92=E8=A1=8C=E8=A7=84=E5=88=99=EF=BC=9A=E7=9B=B8?= =?UTF-8?q?=E5=90=8C=E5=88=86=E6=95=B0=EF=BC=8C=E6=8E=92=E5=90=8D=E7=9B=B8?= =?UTF-8?q?=E5=90=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../result/EpdcAppPointsRankingResultDTO.java | 4 +- .../result/EpdcAppPointsRankingTopTenDTO.java | 5 ++ .../elink/esua/epdc/dao/PointsLogsDao.java | 4 +- .../service/impl/PointsLogsServiceImpl.java | 42 +++++++++++++--- .../main/resources/mapper/PointsLogsDao.xml | 49 ++++++++++--------- 5 files changed, 68 insertions(+), 36 deletions(-) diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcAppPointsRankingResultDTO.java b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcAppPointsRankingResultDTO.java index 5a02367d..e11f3523 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcAppPointsRankingResultDTO.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcAppPointsRankingResultDTO.java @@ -18,12 +18,12 @@ public class EpdcAppPointsRankingResultDTO implements Serializable { /** * 积分排行接口返回值 - 前十列表 */ - private List pointsRankingTopTen; + private List rank; /** * 积分排行接口返回值 -用户排名 */ - private EpdcAppPointsRankingUserDTO pointsRankingUser; + private EpdcAppPointsRankingUserDTO currentUser; diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcAppPointsRankingTopTenDTO.java b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcAppPointsRankingTopTenDTO.java index 76fa3e1a..e6ec61b8 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcAppPointsRankingTopTenDTO.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcAppPointsRankingTopTenDTO.java @@ -28,4 +28,9 @@ public class EpdcAppPointsRankingTopTenDTO implements Serializable { * 积分 */ private Integer points; + + /** + * 取排行榜 名次 + */ + private Integer rank; } diff --git a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/dao/PointsLogsDao.java b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/dao/PointsLogsDao.java index 1d406480..a66b79b5 100755 --- a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/dao/PointsLogsDao.java +++ b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/dao/PointsLogsDao.java @@ -104,7 +104,7 @@ public interface PointsLogsDao extends BaseDao { List selectListVolunteerPointsLog(Map params); /** - * 积分排行接口(0 周排行、1 月排行) - 查询用户个人排名 + * 积分排行接口(0 周排行、1 月排行) - 查询用户个人排名名次 及 积分 * * @param formDto * param pageIndex 必选 页码 @@ -117,7 +117,7 @@ public interface PointsLogsDao extends BaseDao { EpdcAppPointsRankingUserDTO selectUserPointsRanking(EpdcAppPointsRankingFormDTO formDto); /** - * 积分排行接口(0 周排行、1 月排行) - 产生积分记录的总人数 + * 积分排行接口(0 周排行、1 月排行) - 产生积分记录的总人数,相同积分做去重处理 * * @param formDto * param pageIndex 必选 页码 diff --git a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/service/impl/PointsLogsServiceImpl.java b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/service/impl/PointsLogsServiceImpl.java index ea6c6441..96c46a82 100755 --- a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/service/impl/PointsLogsServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/service/impl/PointsLogsServiceImpl.java @@ -53,10 +53,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Arrays; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 积分记录表 积分记录表 @@ -236,21 +233,50 @@ public class PointsLogsServiceImpl extends BaseServiceImpl + * @Author zhangyong + * @Date 16:09 2020-05-13 + **/ + private List sortListPointsRank(EpdcAppPointsRankingFormDTO formDto){ + List listPointsRank = new ArrayList<>(); + listPointsRank = baseDao.selectListPointsRanking(formDto); + int sortNumber = 1; + if (listPointsRank != null){ + for (int i = 1; i < listPointsRank.size(); i++){ + listPointsRank.get(0).setRank(NumConstant.ONE); + if(listPointsRank.get(i - NumConstant.ONE).getPoints().intValue() == listPointsRank.get(i).getPoints().intValue()){ + listPointsRank.get(i).setRank(sortNumber); + } else { + sortNumber = sortNumber + NumConstant.ONE; + listPointsRank.get(i).setRank(sortNumber); + } + } + } + return listPointsRank; + } + /** * 查询积分排行接口(0 周排行、1 月排行)如果没有当前登录用户的积分记录,返回 处理(总排名+1) 过的排名信息 * @param formDto diff --git a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/resources/mapper/PointsLogsDao.xml b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/resources/mapper/PointsLogsDao.xml index cf977fa6..3a8cb302 100755 --- a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/resources/mapper/PointsLogsDao.xml +++ b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/resources/mapper/PointsLogsDao.xml @@ -26,14 +26,13 @@ SELECT userRanking.rank, - userRanking.userId, - userRanking.nickName, userRanking.points FROM( SELECT (@i:=@i+1) rank, tab.USER_ID userId, - (SELECT NICKNAME FROM epdc_points_logs WHERE tab.USER_ID = USER_ID ORDER BY CREATED_TIME DESC limit 0,1) nickName, + GROUP_CONCAT(tab.USER_ID SEPARATOR ',') pdtj, tab.points FROM( - SELECT - USER_ID, - (SUM(case when OPERATION_TYPE = 1 then IFNULL(points,0) else 0 end) - SUM(case when OPERATION_TYPE = 0 then IFNULL(points,0) else 0 end)) points - FROM epdc_points_logs - WHERE DEL_FLAG = 0 + SELECT + USER_ID, + (SUM(case when OPERATION_TYPE = 1 then IFNULL(points,0) else 0 end) - SUM(case when OPERATION_TYPE = 0 then IFNULL(points,0) else 0 end)) points + FROM epdc_points_logs + WHERE DEL_FLAG = 0 AND YEARWEEK(date_format(OPERATION_TIME,'%Y-%m-%d')) = YEARWEEK(now()) @@ -154,8 +151,9 @@ AND DATE_FORMAT( OPERATION_TIME, '%Y%m' ) = DATE_FORMAT( CURDATE() , '%Y%m' ) GROUP BY USER_ID - ORDER BY (SUM(case when OPERATION_TYPE = 1 then IFNULL(points,0) else 0 end) - SUM(case when OPERATION_TYPE = 0 then IFNULL(points,0) else 0 end)) DESC ) tab ,(select @i:=0) t1 + GROUP BY tab.points + ORDER BY tab.points DESC ) userRanking WHERE userRanking.userId = #{userId} @@ -165,18 +163,21 @@ COUNT(1) FROM( SELECT - USER_ID, - SUM(case when OPERATION_TYPE = 0 then IFNULL(points,0) else 0 end) totalPointsDeducted, - SUM(case when OPERATION_TYPE = 1 then IFNULL(points,0) else 0 end) totalPointsAdd - FROM epdc_points_logs - WHERE DEL_FLAG = 0 - - AND YEARWEEK(date_format(OPERATION_TIME,'%Y-%m-%d')) = YEARWEEK(now()) - - - AND DATE_FORMAT( OPERATION_TIME, '%Y%m' ) = DATE_FORMAT( CURDATE() , '%Y%m' ) - - GROUP BY USER_ID + p.points + FROM( + SELECT + USER_ID, + (SUM(case when OPERATION_TYPE = 1 then IFNULL(points,0) else 0 end) - SUM(case when OPERATION_TYPE = 0 then IFNULL(points,0) else 0 end)) points + FROM epdc_points_logs + WHERE DEL_FLAG = 0 + + AND YEARWEEK(date_format(OPERATION_TIME,'%Y-%m-%d')) = YEARWEEK(now()) + + + AND DATE_FORMAT( OPERATION_TIME, '%Y%m' ) = DATE_FORMAT( CURDATE() , '%Y%m' ) + + GROUP BY USER_ID + ) p GROUP BY p.points ) tab