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 4ea45e3d..3806ccbb 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 @@ -6,10 +6,7 @@ import com.elink.esua.epdc.commons.tools.enums.BehaviorEnum; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; import com.elink.esua.epdc.dto.epdc.form.*; -import com.elink.esua.epdc.dto.epdc.result.EpdcAppVolunteerListResultDTO; -import com.elink.esua.epdc.dto.epdc.result.EpdcUserGridResultDTO; -import com.elink.esua.epdc.dto.epdc.result.EpdcUserInfoResultDTO; -import com.elink.esua.epdc.dto.epdc.result.UserInvitationRecordResultDTO; +import com.elink.esua.epdc.dto.epdc.result.*; import com.elink.esua.epdc.dto.form.*; import com.elink.esua.epdc.dto.result.EpdcAppRegisterCallbackDTO; import com.elink.esua.epdc.dto.result.EpdcAppAuthorizationDTO; @@ -343,4 +340,19 @@ public class ApiAppUserController { ValidatorUtils.validateEntity(dto); return appUserService.listVolunteer(tokenDto, dto); } + + /** + * 积分排名接口:0-网格,1-街道 + * 根据用户表积分做排行 + * @param userDetail + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @Author zhangyong + * @Date 13:35 2020-06-01 + **/ + @GetMapping("userPointsRanking/list") + public Result listUserPointsRanking(@LoginUser TokenDto userDetail, EpdcAppUserRankingFormDTO formDto) { + ValidatorUtils.validateEntity(formDto); + return appUserService.listUserPointsRanking(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 b7425375..37ec810f 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 @@ -7,6 +7,7 @@ import com.elink.esua.epdc.dto.epdc.form.*; import com.elink.esua.epdc.dto.epdc.form.v2.EpdcCompleteVolunteerInfoV2FormDTO; import com.elink.esua.epdc.dto.epdc.result.*; import com.elink.esua.epdc.dto.epdc.result.EpdcWorkUserResultDTO; +import com.elink.esua.epdc.dto.epdc.form.EpdcAppUserRankingFormDTO; import com.elink.esua.epdc.feign.fallback.UserFeignClientFallback; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; @@ -398,4 +399,15 @@ public interface UserFeignClient { **/ @GetMapping(value = "app-user/volunteerinfo/getVolunteerInfoDTOByUserId/{userId}") Result selectUserVolunteerInfo(@PathVariable("userId") String userId); + + /** + * 积分排名接口:0-网格,1-街道 + * 根据用户表积分做排行 + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @Author zhangyong + * @Date 13:35 2020-06-01 + **/ + @GetMapping(value = "app-user/epdc-app/user/listUserPointsRanking/list", consumes = MediaType.APPLICATION_JSON_VALUE) + Result selectListUserPointsRanking(EpdcAppUserRankingFormDTO 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 2d63a9fc..454d926d 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 @@ -7,6 +7,7 @@ import com.elink.esua.epdc.dto.*; import com.elink.esua.epdc.dto.epdc.form.*; import com.elink.esua.epdc.dto.epdc.form.v2.EpdcCompleteVolunteerInfoV2FormDTO; import com.elink.esua.epdc.dto.epdc.result.*; +import com.elink.esua.epdc.dto.epdc.form.EpdcAppUserRankingFormDTO; import com.elink.esua.epdc.feign.UserFeignClient; import org.springframework.stereotype.Component; @@ -193,4 +194,9 @@ public class UserFeignClientFallback implements UserFeignClient { public Result selectUserVolunteerInfo(String userId) { return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "selectUserVolunteerInfo", "userId"); } + + @Override + public Result selectListUserPointsRanking(EpdcAppUserRankingFormDTO formDto) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "selectListUserPointsRanking", "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 675ebb90..31fc1987 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 @@ -4,10 +4,7 @@ import com.elink.esua.epdc.common.token.dto.TokenDto; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.epdc.form.*; import com.elink.esua.epdc.dto.epdc.form.v2.EpdcCompleteVolunteerInfoV2FormDTO; -import com.elink.esua.epdc.dto.epdc.result.EpdcAppVolunteerListResultDTO; -import com.elink.esua.epdc.dto.epdc.result.EpdcUserGridResultDTO; -import com.elink.esua.epdc.dto.epdc.result.EpdcUserInfoResultDTO; -import com.elink.esua.epdc.dto.epdc.result.UserInvitationRecordResultDTO; +import com.elink.esua.epdc.dto.epdc.result.*; import com.elink.esua.epdc.dto.form.*; import com.elink.esua.epdc.dto.form.v2.EpdcCompleteUserInfoFormV2DTO; import com.elink.esua.epdc.dto.result.EpdcAppRegisterCallbackDTO; @@ -281,4 +278,15 @@ public interface AppUserService { * @Date 09:49 2020-05-26 **/ Result volunteerV2Authenticate(TokenDto tokenDto, EpdcCompleteVolunteerInfoV2FormDTO formDto); + + /** + * 积分排名接口:0-网格,1-街道 + * 根据用户表积分做排行 + * @param userDetail + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @Author zhangyong + * @Date 13:35 2020-06-01 + **/ + Result listUserPointsRanking(TokenDto userDetail, EpdcAppUserRankingFormDTO 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 71e1b936..74a9176a 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 @@ -16,9 +16,6 @@ import com.elink.esua.epdc.commons.tools.enums.UserTagEnum; import com.elink.esua.epdc.commons.tools.enums.YesOrNoEnum; import com.elink.esua.epdc.commons.tools.exception.RenException; import com.elink.esua.epdc.commons.tools.redis.RedisUtils; -import com.elink.esua.epdc.commons.tools.redis.UserDetailRedis; -import com.elink.esua.epdc.commons.tools.security.user.SecurityUser; -import com.elink.esua.epdc.commons.tools.security.user.UserDetail; import com.elink.esua.epdc.commons.tools.utils.*; import com.elink.esua.epdc.dto.*; import com.elink.esua.epdc.dto.enums.GroupUserStateEnum; @@ -1484,4 +1481,24 @@ public class AppUserServiceImpl implements AppUserService { return new Result().ok(authorizationDto); } + + @Override + public Result listUserPointsRanking(TokenDto userDetail, EpdcAppUserRankingFormDTO formDto) { + formDto.setUserId(userDetail.getUserId()); + formDto.setRealName(userDetail.getRealName()); + formDto.setPoints(userDetail.getPoints()); + + if (NumConstant.ZERO == formDto.getRankingType()){ + // 根据网格查询排行榜 + formDto.setDeptId(userDetail.getGridId()); + } else if (NumConstant.ONE == formDto.getRankingType()) { + // 根据街道查询排行榜 + Result deptDto = adminFeignClient.getCompleteDept(userDetail.getGridId()); + if (deptDto.success()) { + formDto.setDeptId(deptDto.getData().getStreetId()); + } + } + + return userFeignClient.selectListUserPointsRanking(formDto); + } } diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcAppUserRankingFormDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcAppUserRankingFormDTO.java new file mode 100644 index 00000000..b4f90303 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcAppUserRankingFormDTO.java @@ -0,0 +1,63 @@ +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-01 + */ +@Data +public class EpdcAppUserRankingFormDTO 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; + + /** + * 排名方式:0-网格,1-街道 + */ + @NotNull(message = "排名方式:0-网格,1-街道不能为空") + private Integer rankingType; + + /** + * 用户ID + */ + private String userId; + + /** + * 用户真实姓名 + */ + private String realName; + + /** + * 网格id / 街道id + */ + private Long deptId; + + /** + * 用户积分 + */ + private Integer points; +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcAppRankingUserDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcAppRankingUserDTO.java new file mode 100644 index 00000000..4fc7a6ce --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcAppRankingUserDTO.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-01 + */ +@Data +public class EpdcAppRankingUserDTO implements Serializable { + + private static final long serialVersionUID = 3908231797102233188L; + + /** + * 用户ID + */ + private String userId; + + /** + * 真实姓名 + */ + private String realName; + + /** + * 积分 + */ + private Integer points; + + /** + * 用户个人排名 + */ + private Integer rank; +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcAppUserRankingResultDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcAppUserRankingResultDTO.java new file mode 100644 index 00000000..5e475872 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcAppUserRankingResultDTO.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-01 + */ +@Data +public class EpdcAppUserRankingResultDTO implements Serializable { + + private static final long serialVersionUID = 3908231797102233188L; + + /** + * 积分排行接口返回值 - 前十列表 + */ + private List rank; + + /** + * 积分排行接口返回值 -用户排名 + */ + private EpdcAppRankingUserDTO currentUser; + + + +} 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 729747fd..69e24504 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 @@ -413,4 +413,18 @@ public class EpdcAppUserController { public Result needCachingUserInfo(@RequestBody EpdcAppQueryUserInfoFormDTO formDTO) { return userService.queryCachingUserInfo(formDTO); } + + /** + * 积分排名接口:0-网格,1-街道 + * 根据用户表积分做排行 + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @Author zhangyong + * @Date 13:35 2020-06-01 + **/ + @GetMapping("listUserPointsRanking/list") + public Result listUserPointsRanking(@RequestBody EpdcAppUserRankingFormDTO formDto) { + EpdcAppUserRankingResultDTO list = userService.listUserPointsRanking(formDto); + return new Result().ok(list); + } } 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 35558f90..043cf3a7 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 @@ -20,6 +20,7 @@ package com.elink.esua.epdc.dao; 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.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; @@ -196,4 +197,22 @@ public interface UserDao extends BaseDao { * @Date 2019/12/18 14:12 **/ CachingUserInfoDTO selectCachingUserInfoDTO(@Param("openId") String openId, @Param("unionId") String unionId); + + /** + * 获取网格/街道 下的积分排名 + * @param formDto + * @return java.util.List + * @Author zhangyong + * @Date 13:52 2020-06-01 + **/ + List selectListUsersRanking(EpdcAppUserRankingFormDTO formDto); + + /** + * 获取当前用户的积分情况 + * @param formDto + * @return com.elink.esua.epdc.dto.epdc.result.EpdcAppRankingUserDTO + * @Author zhangyong + * @Date 14:56 2020-06-01 + **/ + EpdcAppRankingUserDTO selectCurrentUserRanking(EpdcAppUserRankingFormDTO 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 54a26440..a9bcd2b8 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 @@ -306,4 +306,14 @@ public interface UserService extends BaseService { * @Date 2019/12/18 14:01 **/ Result queryCachingUserInfo(EpdcAppQueryUserInfoFormDTO formDTO); + + /** + * 积分排名接口:0-网格,1-街道 + * 根据用户表积分做排行 + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @Author zhangyong + * @Date 13:35 2020-06-01 + **/ + EpdcAppUserRankingResultDTO listUserPointsRanking(EpdcAppUserRankingFormDTO 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 215d7bea..d7804ee9 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 @@ -1015,4 +1015,45 @@ public class UserServiceImpl extends BaseServiceImpl implem return new Result().ok(cachingUserInfoDTO); } + @Override + public EpdcAppUserRankingResultDTO listUserPointsRanking(EpdcAppUserRankingFormDTO formDto) { + int pageIndex = (formDto.getPageIndex() - NumConstant.ONE) * formDto.getPageSize(); + formDto.setPageIndex(pageIndex); + // 积分相同,排名相同 + EpdcAppUserRankingResultDTO rangking = new EpdcAppUserRankingResultDTO(); + // 获取排好序的 排行榜数据数据 + rangking.setRank(this.sortListUsersRank(formDto)); + // 判断当前用户是否产生过积分记录 + EpdcAppRankingUserDTO currentUserDTO = baseDao.selectCurrentUserRanking(formDto); + // 返回当前登录用户积分排名 + currentUserDTO.setUserId(formDto.getUserId()); + currentUserDTO.setRealName(formDto.getRealName()); + rangking.setCurrentUser(currentUserDTO); + return rangking; + } + + /** + * 获取【排好序】的排行榜数据 + * @param formDto + * @return java.util.List + * @Author zhangyong + * @Date 13:50 2020-06-01 + **/ + private List sortListUsersRank(EpdcAppUserRankingFormDTO formDto){ + List listPointsRank = new ArrayList<>(); + listPointsRank = baseDao.selectListUsersRanking(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; + } } 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 1c5bf86e..aaffdcd6 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 @@ -500,4 +500,42 @@ + + +