diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAppUserController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAppUserController.java index 3806ccbb..36b2c6ae 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAppUserController.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAppUserController.java @@ -355,4 +355,18 @@ public class ApiAppUserController { ValidatorUtils.validateEntity(formDto); return appUserService.listUserPointsRanking(userDetail, formDto); } + + /** + * 积分中心页面-积分等级排名 + * 返回当前用户的排名 和 当前街道的前N名用户排名 + * @param userDetail, formDTO + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @Author zhangyong + * @Date 10:59 2020-06-24 + **/ + @GetMapping("user/gradeRanking/list") + public Result listUserGradesRanking(@LoginUser TokenDto userDetail, EpdcAppUserGradeRankingFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO); + return appUserService.listUserGradesRanking(userDetail, formDTO); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java index 37ec810f..836f2a14 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java @@ -410,4 +410,15 @@ public interface UserFeignClient { **/ @GetMapping(value = "app-user/epdc-app/user/listUserPointsRanking/list", consumes = MediaType.APPLICATION_JSON_VALUE) Result selectListUserPointsRanking(EpdcAppUserRankingFormDTO formDto); + + /** + * 积分中心页面-积分等级排名 + * 返回当前用户的排名 和 当前街道的前N名用户排名 + * @param formDTO + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @Author zhangyong + * @Date 10:59 2020-06-24 + **/ + @GetMapping(value = "app-user/epdc-app/user/gradeRanking/list", consumes = MediaType.APPLICATION_JSON_VALUE) + Result selectListUserGradesRanking(EpdcAppUserGradeRankingFormDTO formDTO); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java index 454d926d..70604c9b 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java @@ -199,4 +199,9 @@ public class UserFeignClientFallback implements UserFeignClient { public Result selectListUserPointsRanking(EpdcAppUserRankingFormDTO formDto) { return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "selectListUserPointsRanking", "formDto"); } + + @Override + public Result selectListUserGradesRanking(EpdcAppUserGradeRankingFormDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "selectListUserGradesRanking", "formDTO"); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AppUserService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AppUserService.java index 31fc1987..ef236947 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AppUserService.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AppUserService.java @@ -289,4 +289,14 @@ public interface AppUserService { * @Date 13:35 2020-06-01 **/ Result listUserPointsRanking(TokenDto userDetail, EpdcAppUserRankingFormDTO formDto); + + /** + * 积分中心页面-积分等级排名 + * 返回当前用户的排名 和 当前街道的前N名用户排名 + * @param userDetail, formDTO + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @Author zhangyong + * @Date 10:59 2020-06-24 + **/ + Result listUserGradesRanking(TokenDto userDetail, EpdcAppUserGradeRankingFormDTO formDTO); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java index 6727f8ba..2f0134bd 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java @@ -1505,4 +1505,19 @@ public class AppUserServiceImpl implements AppUserService { return userFeignClient.selectListUserPointsRanking(formDto); } + + @Override + public Result listUserGradesRanking(TokenDto userDetail, EpdcAppUserGradeRankingFormDTO formDTO) { + formDTO.setUserId(userDetail.getUserId()); + formDTO.setNickName(userDetail.getNickname()); + formDTO.setPointsTotle(userDetail.getPointsTotle()); + Result deptInfo = adminFeignClient.getCompleteDept(userDetail.getGridId()); + if (deptInfo.success()) { + formDTO.setStreetId(deptInfo.getData().getStreetId()); + } else { + return new Result().error("当前用户,无所属街道"); + } + return userFeignClient.selectListUserGradesRanking(formDTO); + } + } diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcAppUserGradeRankingFormDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcAppUserGradeRankingFormDTO.java new file mode 100644 index 00000000..5b3a74f5 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcAppUserGradeRankingFormDTO.java @@ -0,0 +1,58 @@ +package com.elink.esua.epdc.dto.epdc.form; + +import lombok.Data; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 移动端接口-用户管理模块-积分记录-等级排名接口 入参 + * @Author zhangyong + * @Date 2020-06-24 + */ +@Data +public class EpdcAppUserGradeRankingFormDTO implements Serializable { + + private static final long serialVersionUID = 202029992792275120L; + + /** + * 页码 + */ + @Min(value = 1, message = "页码必须大于0") + private Integer pageIndex; + + /** + * 页容量 + */ + @Min(value = 1, message = "页容量必须大于0") + private Integer pageSize; + + /** + * 第一页查询发起时的时间 + */ + @NotBlank(message = "时间戳不能为空") + private String timestamp; + + /** + * 用户ID + */ + private String userId; + + /** + * 用户昵称 + */ + private String nickName; + + /** + * 街道ID + */ + private Long streetId; + + /** + * 用户累计积分 + */ + private Integer pointsTotle; + +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcAppUserGradeRankingResultDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcAppUserGradeRankingResultDTO.java new file mode 100644 index 00000000..6e5ec6d2 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcAppUserGradeRankingResultDTO.java @@ -0,0 +1,30 @@ +package com.elink.esua.epdc.dto.epdc.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 移动端接口-用户管理模块-积分记录-等级排名接口 返回值 + * @Author zhangyong + * @Date 2020-06-24 + */ +@Data +public class EpdcAppUserGradeRankingResultDTO implements Serializable { + + private static final long serialVersionUID = 3908231797102233188L; + + /** + * 积分排行-等级排名接口返回值 - 前二十列表 + */ + private List rank; + + /** + * 积分排行-等级排名接口返回值 -用户等级 + */ + private UsersGradeRankingDTO currentUser; + + + +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/UsersGradeRankingDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/UsersGradeRankingDTO.java new file mode 100644 index 00000000..2675d46c --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/UsersGradeRankingDTO.java @@ -0,0 +1,36 @@ +package com.elink.esua.epdc.dto.epdc.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 移动端接口-用户管理模块-积分记录-等级排名接口 具体返回值 + * @Author zhangyong + * @Date 2020-06-24 + */ +@Data +public class UsersGradeRankingDTO implements Serializable { + + private static final long serialVersionUID = 3908231797102233188L; + + /** + * 用户ID + */ + private String userId; + + /** + * 用户昵称 + */ + private String nickName; + + /** + * 用户等级 + */ + private Integer grade; + + /** + * 取排行榜 名次 + */ + private Integer rank; +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppUserController.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppUserController.java index 69e24504..16741f28 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppUserController.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppUserController.java @@ -1,8 +1,10 @@ package com.elink.esua.epdc.controller; +import com.elink.esua.epdc.commons.tools.annotation.LoginUser; import com.elink.esua.epdc.commons.tools.constant.Constant; import com.elink.esua.epdc.commons.tools.security.user.SecurityUser; import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; import com.elink.esua.epdc.dto.CachingUserInfoDTO; import com.elink.esua.epdc.dto.UserDTO; import com.elink.esua.epdc.dto.epdc.form.EpdcUserGroupInviteFormDTO; @@ -427,4 +429,17 @@ public class EpdcAppUserController { EpdcAppUserRankingResultDTO list = userService.listUserPointsRanking(formDto); return new Result().ok(list); } + + /** + * 积分中心页面-积分等级排名 + * 返回当前用户的排名 和 当前街道的前N名用户排名 + * @param formDTO + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @Author zhangyong + * @Date 10:59 2020-06-24 + **/ + @GetMapping("gradeRanking/list") + public Result listUsersGradeRanking(@RequestBody EpdcAppUserGradeRankingFormDTO formDTO){ + return userService.listUsersGradeRanking(formDTO); + } } diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/dao/UserDao.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/dao/UserDao.java index 2e739c2a..2c93e927 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/dao/UserDao.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/dao/UserDao.java @@ -21,10 +21,7 @@ import com.elink.esua.epdc.commons.mybatis.dao.BaseDao; import com.elink.esua.epdc.dto.CachingUserInfoDTO; import com.elink.esua.epdc.dto.UserDTO; import com.elink.esua.epdc.dto.UserPointsDTO; -import com.elink.esua.epdc.dto.epdc.form.EpdcAppUserRankingFormDTO; -import com.elink.esua.epdc.dto.epdc.form.EpdcUnauthorizedAmountFromDTO; -import com.elink.esua.epdc.dto.epdc.form.EpdcUserGroupInviteFormDTO; -import com.elink.esua.epdc.dto.epdc.form.EpdcWorkUserFromDTO; +import com.elink.esua.epdc.dto.epdc.form.*; import com.elink.esua.epdc.dto.epdc.result.*; import com.elink.esua.epdc.entity.UserEntity; import org.apache.ibatis.annotations.Mapper; @@ -257,11 +254,29 @@ public interface UserDao extends BaseDao { **/ List selectListOfWaitPartyUserDto(Map params); /** - * @Description 工作端待认证居民 + * @Description 工作端待认证居民 * @Author songyunpeng * @Date 2020/6/12 * @Param [workUserFromDto] * @return java.util.List **/ List selectWorkResidentUserList(EpdcWorkUserFromDTO workUserFromDto); + + /** + * 获取街道 下的用户等级排名 + * @param formDto + * @return java.util.List + * @Author zhangyong + * @Date 13:52 2020-06-024 + **/ + List selectListUsersGradeRanking(EpdcAppUserGradeRankingFormDTO formDto); + + /** + * 获取当前用户的 用户等级排名 + * @param formDto + * @return com.elink.esua.epdc.dto.epdc.result.UsersGradeRankingDTO + * @Author zhangyong + * @Date 14:06 2020-06-24 + **/ + UsersGradeRankingDTO selectCurrentUserGradeRanking(EpdcAppUserGradeRankingFormDTO formDto); } diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserService.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserService.java index 2771a212..f3ad34d1 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserService.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserService.java @@ -335,7 +335,7 @@ public interface UserService extends BaseService { **/ PageData pageForPoints(Map params); /** - * @Description 待认证党员 + * @Description 待认证党员 * @Author songyunpeng * @Date 2020/6/10 * @Param [params] @@ -343,7 +343,7 @@ public interface UserService extends BaseService { **/ PageData waitPartyPage(Map params); /** - * @Description 待认证党员导出 + * @Description 待认证党员导出 * @Author songyunpeng * @Date 2020/6/10 * @Param [params] @@ -351,7 +351,7 @@ public interface UserService extends BaseService { **/ List listOfWaitParty(Map params); /** - * @Description 党员认证通过并更新党员库信息 + * @Description 党员认证通过并更新党员库信息 * @Author songyunpeng * @Date 2020/6/10 * @Param [dto] @@ -359,7 +359,7 @@ public interface UserService extends BaseService { **/ Result modifyPartyInfo(PartyMemberModifyFormDTO dto); /** - * @Description 党员认证 + * @Description 党员认证 * @Author songyunpeng * @Date 2020/6/10 * @Param [dto] @@ -377,4 +377,14 @@ public interface UserService extends BaseService { * @since 2020/3/25 14:33 */ Result addPartyInfo(PartyMemberModifyFormDTO dto); + + /** + * 积分中心页面-积分等级排名 + * 返回当前用户的排名 和 当前街道的前N名用户排名 + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @Author zhangyong + * @Date 10:59 2020-06-24 + **/ + Result listUsersGradeRanking(EpdcAppUserGradeRankingFormDTO formDto); } diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java index b8087c6a..2f08aec6 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java @@ -1299,4 +1299,49 @@ public class UserServiceImpl extends BaseServiceImpl implem return new PageData<>(list, page.getTotal()); } + @Override + public Result listUsersGradeRanking(EpdcAppUserGradeRankingFormDTO formDto) { + int pageIndex = (formDto.getPageIndex() - NumConstant.ONE) * formDto.getPageSize(); + formDto.setPageIndex(pageIndex); + // 等级相同,排名相同 + EpdcAppUserGradeRankingResultDTO rangking = new EpdcAppUserGradeRankingResultDTO(); + // 获取排好序的 排行榜数据数据 + rangking.setRank(this.sortListUsersGradeRank(formDto)); + + // 查询当前用户的排名 + UsersGradeRankingDTO userRang = baseDao.selectCurrentUserGradeRanking(formDto); + // 用户产生过积分记录,返回积分排名 + if (userRang != null) { + userRang.setUserId(formDto.getUserId()); + userRang.setNickName(formDto.getNickName()); + rangking.setCurrentUser(userRang); + } + return new Result().ok(rangking); + } + + /** + * 获取【排好序】的 用户等级排行榜数据 + * @param formDto + * @return java.util.List + * @Author zhangyong + * @Date 13:50 2020-06-24 + **/ + private List sortListUsersGradeRank(EpdcAppUserGradeRankingFormDTO formDto){ + List listPointsRank = new ArrayList<>(); + listPointsRank = baseDao.selectListUsersGradeRanking(formDto); + int sortNumber = NumConstant.ONE; + if (listPointsRank != null){ + for (int i = NumConstant.ONE; i < listPointsRank.size(); i++){ + listPointsRank.get(0).setRank(NumConstant.ONE); + if(listPointsRank.get(i - NumConstant.ONE).getGrade().intValue() == listPointsRank.get(i).getGrade().intValue()){ + listPointsRank.get(i).setRank(sortNumber); + } else { + sortNumber = sortNumber + NumConstant.ONE; + listPointsRank.get(i).setRank(sortNumber); + } + } + } + return listPointsRank; + } + } diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserDao.xml b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserDao.xml index 58f2c16e..74c0b62f 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserDao.xml +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserDao.xml @@ -772,4 +772,63 @@ ORDER BY u.REGISTER_TIME DESC LIMIT #{pageIndex},#{pageSize} + + + +