diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcAppPointsRankingFormDTO.java b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcAppPointsRankingFormDTO.java index 3a10df22..2f09a1a3 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcAppPointsRankingFormDTO.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcAppPointsRankingFormDTO.java @@ -40,4 +40,14 @@ public class EpdcAppPointsRankingFormDTO implements Serializable { */ @NotNull(message = "排名方式:0-周,1-月不能为空") private Integer rankingType; + + /** + * 用户ID + */ + private String userId; + + /** + * 用户昵称 + */ + private String nickName; } 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 ef6745bc..5a02367d 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 @@ -3,6 +3,7 @@ package com.elink.esua.epdc.dto.result; import lombok.Data; import java.io.Serializable; +import java.util.List; /** * 移动端接口-积分管理模块-积分排行接口返回值 @@ -15,18 +16,15 @@ public class EpdcAppPointsRankingResultDTO implements Serializable { private static final long serialVersionUID = 3908231797102233188L; /** - * 用户ID + * 积分排行接口返回值 - 前十列表 */ - private String userId; + private List pointsRankingTopTen; /** - * 用户昵称 + * 积分排行接口返回值 -用户排名 */ - private String nickName; + private EpdcAppPointsRankingUserDTO pointsRankingUser; + - /** - * 积分 - */ - private Integer points; } 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 new file mode 100644 index 00000000..76fa3e1a --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcAppPointsRankingTopTenDTO.java @@ -0,0 +1,31 @@ +package com.elink.esua.epdc.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 移动端接口-积分管理模块-积分排行接口返回值 - 前十 + * @Author zhangyong + * @Date 2020-05-13 + */ +@Data +public class EpdcAppPointsRankingTopTenDTO implements Serializable { + + private static final long serialVersionUID = 3908231797102233188L; + + /** + * 用户ID + */ + private String userId; + + /** + * 用户昵称 + */ + private String nickName; + + /** + * 积分 + */ + private Integer points; +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcAppPointsRankingUserDTO.java b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcAppPointsRankingUserDTO.java new file mode 100644 index 00000000..9bafd6a8 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcAppPointsRankingUserDTO.java @@ -0,0 +1,36 @@ +package com.elink.esua.epdc.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 移动端接口-积分管理模块-积分排行接口返回值 - 用户排名信息 + * @Author zhangyong + * @Date 2020-05-13 + */ +@Data +public class EpdcAppPointsRankingUserDTO implements Serializable { + + private static final long serialVersionUID = 3908231797102233188L; + + /** + * 用户ID + */ + private String userId; + + /** + * 用户昵称 + */ + private String nickName; + + /** + * 积分 + */ + private Integer points; + + /** + * 用户个人排名 + */ + private Integer rank; +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiPointsController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiPointsController.java index 0733f95f..681ce6fe 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiPointsController.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiPointsController.java @@ -27,14 +27,15 @@ public class ApiPointsController { @Autowired private PointsService pointsService; - - /** - * @Description: 当前登录用户 积分记录接口 - * @Param: [userDetail, dto] - * @return: com.elink.esua.epdc.commons.tools.utils.Result> - * @Author: zy - * @Date: 2020-04-29 - */ + + /** + * 当前登录用户 积分记录接口 + * + * @param: [userDetail, dto] + * @return: com.elink.esua.epdc.commons.tools.utils.Result> + * @Author: zy + * @Date: 2020-04-29 + */ @GetMapping("pointsRecord/list") public Result> listPointsRecord(@LoginUser TokenDto userDetail, EpdcAppPointsRecordFormDTO formDto) { ValidatorUtils.validateEntity(formDto); @@ -42,15 +43,16 @@ public class ApiPointsController { } /** - * @Description: 积分排行接口(0 周排行、1 月排行) - * @Param: [formDto] - * @return: com.elink.esua.epdc.commons.tools.utils.Result> + * 积分排行接口(0 周排行、1 月排行) + * + * @param: [userDetail, formDto] + * @return: com.elink.esua.epdc.commons.tools.utils.Result * @Author: zy * @Date: 2020-04-30 */ @GetMapping("pointsRanking/list") - public Result> listPointsRanking(EpdcAppPointsRankingFormDTO formDto) { + public Result listPointsRanking(@LoginUser TokenDto userDetail, EpdcAppPointsRankingFormDTO formDto) { ValidatorUtils.validateEntity(formDto); - return pointsService.listPointsRanking(formDto); + return pointsService.listPointsRanking(userDetail, formDto); } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/PointsFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/PointsFeignClient.java index fa79a5ef..9265e366 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/PointsFeignClient.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/PointsFeignClient.java @@ -42,10 +42,10 @@ public interface PointsFeignClient { * param pageIndex 必选 页码 * param pageSize 必选 页容量 * param rankingType 必选 排名方式:0-周,1-月 - * @return: com.elink.esua.epdc.commons.tools.utils.Result> + * @return: com.elink.esua.epdc.commons.tools.utils.Result * @Author: zy * @Date: 2020-04-30 */ @GetMapping(value = "points/epdc-app/points/pointsRanking/list", consumes = MediaType.APPLICATION_JSON_VALUE) - Result> listPointsRankingFeignClient(EpdcAppPointsRankingFormDTO formDto); + Result listPointsRankingFeignClient(EpdcAppPointsRankingFormDTO formDto); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/PointsFeignClientFallback.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/PointsFeignClientFallback.java index cb482183..d76807ed 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/PointsFeignClientFallback.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/PointsFeignClientFallback.java @@ -26,7 +26,7 @@ public class PointsFeignClientFallback implements PointsFeignClient { } @Override - public Result> listPointsRankingFeignClient(EpdcAppPointsRankingFormDTO formDto) { + public Result listPointsRankingFeignClient(EpdcAppPointsRankingFormDTO formDto) { return ModuleUtils.feignConError(ServiceConstant.EPDC_POINTS_SERVER, "listPointsRankingFeignClient", formDto); } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/PointsService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/PointsService.java index 7532437e..313a5934 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/PointsService.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/PointsService.java @@ -36,9 +36,10 @@ public interface PointsService { * param pageIndex 必选 页码 * param pageSize 必选 页容量 * param rankingType 必选 排名方式:0-周,1-月 - * @return: com.elink.esua.epdc.commons.tools.utils.Result> + * @param userDetail 必选 获取用户信息 + * @return: com.elink.esua.epdc.commons.tools.utils.Result * @Author: zy * @Date: 2020-04-30 */ - Result> listPointsRanking(EpdcAppPointsRankingFormDTO formDto); + Result listPointsRanking(TokenDto userDetail, EpdcAppPointsRankingFormDTO formDto); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/PointsServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/PointsServiceImpl.java index 86bbd19e..61e3e36c 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/PointsServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/PointsServiceImpl.java @@ -31,7 +31,9 @@ public class PointsServiceImpl implements PointsService { } @Override - public Result> listPointsRanking(EpdcAppPointsRankingFormDTO formDto) { + public Result listPointsRanking(TokenDto userDetail, EpdcAppPointsRankingFormDTO formDto) { + formDto.setUserId(userDetail.getUserId()); + formDto.setNickName(userDetail.getNickname()); return pointsFeignClient.listPointsRankingFeignClient(formDto); } } diff --git a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppPointsController.java b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppPointsController.java index 6739454f..0b06bc64 100644 --- a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppPointsController.java +++ b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppPointsController.java @@ -41,13 +41,13 @@ public class EpdcAppPointsController { /** * @Description: 积分排行接口(0 周排行、1 月排行) * @Param: [formDto] - * @return: com.elink.esua.epdc.commons.tools.utils.Result> + * @return: com.elink.esua.epdc.commons.tools.utils.Result * @Author: zy * @Date: 2020-04-30 */ @GetMapping("pointsRanking/list") - public Result> listPointsRanking(@RequestBody EpdcAppPointsRankingFormDTO formDto) { - List list = pointsLogsService.listPointsRanking(formDto); - return new Result>().ok(list); + public Result listPointsRanking(@RequestBody EpdcAppPointsRankingFormDTO formDto) { + EpdcAppPointsRankingResultDTO list = pointsLogsService.listPointsRanking(formDto); + return new Result().ok(list); } } 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 f1c0f9e8..1d406480 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 @@ -20,10 +20,11 @@ package com.elink.esua.epdc.dao; import com.elink.esua.epdc.commons.mybatis.dao.BaseDao; import com.elink.esua.epdc.dto.PointsLogsDTO; import com.elink.esua.epdc.dto.form.PointsLogsFormDTO; +import com.elink.esua.epdc.dto.result.EpdcAppPointsRankingTopTenDTO; +import com.elink.esua.epdc.dto.result.EpdcAppPointsRankingUserDTO; import com.elink.esua.epdc.dto.result.PointsLogsResultDTO; import com.elink.esua.epdc.dto.form.EpdcAppPointsRankingFormDTO; import com.elink.esua.epdc.dto.form.EpdcAppPointsRecordFormDTO; -import com.elink.esua.epdc.dto.result.EpdcAppPointsRankingResultDTO; import com.elink.esua.epdc.dto.result.EpdcAppPointsRecordResultDTO; import com.elink.esua.epdc.entity.PointsLogsEntity; import org.apache.ibatis.annotations.Mapper; @@ -86,11 +87,11 @@ public interface PointsLogsDao extends BaseDao { * param pageIndex 必选 页码 * param pageSize 必选 页容量 * param rankingType 必选 排名方式:0-周,1-月 - * @return: com.elink.esua.epdc.commons.tools.utils.Result> + * @return: java.util.List * @Author: zy * @Date: 2020-04-30 */ - List selectListPointsRanking(EpdcAppPointsRankingFormDTO formDto); + List selectListPointsRanking(EpdcAppPointsRankingFormDTO formDto); /** * 志愿者管理 积分记录页面分页查询 @@ -101,4 +102,30 @@ public interface PointsLogsDao extends BaseDao { * @Date 15:31 2020-05-12 **/ List selectListVolunteerPointsLog(Map params); + + /** + * 积分排行接口(0 周排行、1 月排行) - 查询用户个人排名 + * + * @param formDto + * param pageIndex 必选 页码 + * param pageSize 必选 页容量 + * param rankingType 必选 排名方式:0-周,1-月 + * @return: com.elink.esua.epdc.dto.result.EpdcAppPointsRankingUserDTO + * @Author: zy + * @Date: 2020-05-13 + */ + EpdcAppPointsRankingUserDTO selectUserPointsRanking(EpdcAppPointsRankingFormDTO formDto); + + /** + * 积分排行接口(0 周排行、1 月排行) - 产生积分记录的总人数 + * + * @param formDto + * param pageIndex 必选 页码 + * param pageSize 必选 页容量 + * param rankingType 必选 排名方式:0-周,1-月 + * @return: int + * @Author: zy + * @Date: 2020-05-13 + */ + int selectCountPointsRanking(EpdcAppPointsRankingFormDTO formDto); } diff --git a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/service/PointsLogsService.java b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/service/PointsLogsService.java index fedccfee..ba47a78b 100755 --- a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/service/PointsLogsService.java +++ b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/service/PointsLogsService.java @@ -159,9 +159,9 @@ public interface PointsLogsService extends BaseService { * param pageIndex 必选 页码 * param pageSize 必选 页容量 * param rankingType 必选 排名方式:0-周,1-月 - * @return: com.elink.esua.epdc.commons.tools.utils.Result> + * @return: com.elink.esua.epdc.dto.result.EpdcAppPointsRankingResultDTO> * @Author: zy * @Date: 2020-04-30 */ - List listPointsRanking(EpdcAppPointsRankingFormDTO formDto); + EpdcAppPointsRankingResultDTO listPointsRanking(EpdcAppPointsRankingFormDTO formDto); } 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 48026cb4..ea6c6441 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 @@ -48,6 +48,7 @@ import com.elink.esua.epdc.redis.PointsLogsRedis; import com.elink.esua.epdc.service.PointsBehaviorService; import com.elink.esua.epdc.service.PointsLogsService; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.formula.functions.Rank; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -232,9 +233,38 @@ public class PointsLogsServiceImpl extends BaseServiceImpl listPointsRanking(EpdcAppPointsRankingFormDTO formDto) { + public EpdcAppPointsRankingResultDTO listPointsRanking(EpdcAppPointsRankingFormDTO formDto) { int pageIndex = (formDto.getPageIndex() - NumConstant.ONE) * formDto.getPageSize(); formDto.setPageIndex(pageIndex); - return baseDao.selectListPointsRanking(formDto); + + EpdcAppPointsRankingResultDTO rangking = new EpdcAppPointsRankingResultDTO(); + rangking.setPointsRankingTopTen(baseDao.selectListPointsRanking(formDto)); + // 判断当前用户是否产生过积分记录 + EpdcAppPointsRankingUserDTO userRang = baseDao.selectUserPointsRanking(formDto); + // 用户产生过积分记录,返回积分排名 + if (userRang != null) { + rangking.setPointsRankingUser(userRang); + } else { + // 未产生过积分排名 总排名+1 + rangking.setPointsRankingUser(this.noPointsRecordIsUserRanking(formDto)); + } + return rangking; + } + + /** + * 查询积分排行接口(0 周排行、1 月排行)如果没有当前登录用户的积分记录,返回 处理(总排名+1) 过的排名信息 + * @param formDto + * @return com.elink.esua.epdc.dto.result.EpdcAppPointsRankingUserDTO + * @Author zhangyong + * @Date 13:35 2020-05-13 + **/ + private EpdcAppPointsRankingUserDTO noPointsRecordIsUserRanking(EpdcAppPointsRankingFormDTO formDto){ + EpdcAppPointsRankingUserDTO userRang = new EpdcAppPointsRankingUserDTO(); + int pointCountRaning = baseDao.selectCountPointsRanking(formDto); + userRang.setUserId(formDto.getUserId()); + userRang.setNickName(formDto.getNickName()); + userRang.setPoints(NumConstant.ZERO); + userRang.setRank(pointCountRaning + NumConstant.ONE); + return userRang; } } 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 53fc1ce1..cf977fa6 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 @@ -79,7 +79,7 @@ and BEHAVIOR_CODE = #{behaviorCode} order by OPERATION_TIME desc limit 1 - SELECT tab.USER_ID userId, ( @@ -128,4 +128,55 @@ ORDER BY l.CREATED_TIME DESC + + + +