diff --git a/epdc-cloud-user/src/main/java/com/elink/esua/epdc/controller/EpdcAppUserController.java b/epdc-cloud-user/src/main/java/com/elink/esua/epdc/controller/EpdcAppUserController.java index 250eead..adeb99b 100644 --- a/epdc-cloud-user/src/main/java/com/elink/esua/epdc/controller/EpdcAppUserController.java +++ b/epdc-cloud-user/src/main/java/com/elink/esua/epdc/controller/EpdcAppUserController.java @@ -420,4 +420,33 @@ public class EpdcAppUserController { public Result needCachingUserInfoByUserId(@PathVariable("userId") String userId) { return userService.cachingUserInfoByUserId(userId); } + + /** + * 积分排名接口: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); + } + + /** + * 积分中心页面-积分等级排名 + * 返回当前用户的排名 和 当前街道的前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/epdc-cloud-user/src/main/java/com/elink/esua/epdc/controller/UserController.java b/epdc-cloud-user/src/main/java/com/elink/esua/epdc/controller/UserController.java index bf38abb..770ab60 100644 --- a/epdc-cloud-user/src/main/java/com/elink/esua/epdc/controller/UserController.java +++ b/epdc-cloud-user/src/main/java/com/elink/esua/epdc/controller/UserController.java @@ -29,6 +29,7 @@ import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup; import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup; import com.elink.esua.epdc.dto.PartyMemberModifyFormDTO; import com.elink.esua.epdc.dto.UserDTO; +import com.elink.esua.epdc.dto.UserPointsDTO; import com.elink.esua.epdc.dto.epdc.form.EpdcUserPointsFormDTO; import com.elink.esua.epdc.enums.AppUserStatesEnum; import com.elink.esua.epdc.excel.*; @@ -343,4 +344,17 @@ public class UserController { PageData page = userService.authenticatedpage(params); return new Result>().ok(page); } + + /** + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @Description 用户积分统计列表 + * @Author songyunpeng + * @Date 2020/6/9 + * @Param [params] + **/ + @GetMapping("pageForPoints") + public Result> pageForPoints(@RequestParam Map params) { + PageData page = userService.pageForPoints(params); + return new Result>().ok(page); + } } diff --git a/epdc-cloud-user/src/main/java/com/elink/esua/epdc/dao/UserDao.java b/epdc-cloud-user/src/main/java/com/elink/esua/epdc/dao/UserDao.java index 2373c48..fb62598 100644 --- a/epdc-cloud-user/src/main/java/com/elink/esua/epdc/dao/UserDao.java +++ b/epdc-cloud-user/src/main/java/com/elink/esua/epdc/dao/UserDao.java @@ -20,10 +20,8 @@ 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.EpdcAppQueryUserInfoFormDTO; -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.UserPointsDTO; +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; @@ -249,5 +247,52 @@ public interface UserDao extends BaseDao { */ List selectWaitAuthenticatedListUserDto(Map params); + /** + * @return java.util.List + * @Description 用户积分列表 + * @Author songyunpeng + * @Date 2020/6/9 + * @Param [params] + **/ + List selectListUserPoints(Map params); + /** + * 获取网格/街道 下的积分排名 + * + * @param formDto + * @return java.util.List + * @Author zhangyong + * @Date 13:52 2020-06-01 + **/ + List selectListUsersRanking(EpdcAppUserRankingFormDTO formDto); + + /** + * 获取街道 下的用户等级排名 + * + * @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.EpdcAppRankingUserDTO + * @Author zhangyong + * @Date 14:56 2020-06-01 + **/ + EpdcAppRankingUserDTO selectCurrentUserRanking(EpdcAppUserRankingFormDTO 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/epdc-cloud-user/src/main/java/com/elink/esua/epdc/dao/UserGridRelationDao.java b/epdc-cloud-user/src/main/java/com/elink/esua/epdc/dao/UserGridRelationDao.java index c390766..4e28bd7 100644 --- a/epdc-cloud-user/src/main/java/com/elink/esua/epdc/dao/UserGridRelationDao.java +++ b/epdc-cloud-user/src/main/java/com/elink/esua/epdc/dao/UserGridRelationDao.java @@ -72,4 +72,14 @@ public interface UserGridRelationDao extends BaseDao { * @since 2020/3/7 1:20 */ void updateGridByDeptId(String newDeptName, Long deptId); + + /** + * 根据deptId,查询用户网格关系表,有多少用户在同一个网格/街道 + * + * @param deptId + * @return java.util.List + * @Author zhangyong + * @Date 17:08 2020-06-04 + **/ + List selectListUserIdByDeptId(Long deptId); } \ No newline at end of file diff --git a/epdc-cloud-user/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java b/epdc-cloud-user/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java index 7655e32..ebecc40 100644 --- a/epdc-cloud-user/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java +++ b/epdc-cloud-user/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java @@ -7,6 +7,7 @@ import com.elink.esua.epdc.feign.fallback.AdminFeignClientFallback; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; import java.util.List; @@ -39,4 +40,17 @@ public interface AdminFeignClient { */ @GetMapping("/sys/dept/getParentAndAllDept/{deptId}") Result getParentAndAllDept(@PathVariable("deptId") String deptId); + + + /** + * 根据部门id,获取某部门指定类型的上级机构 + * + * @param typeKeys 上级机构类型 + * @param deptId 某部门id + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author work@yujt.net.cn + * @date 2020/7/7 09:22 + */ + @GetMapping("sys/optimize/deptlevel/listParentId/{deptId}") + Result> listParentIdByDeptId(@PathVariable("deptId") Long deptId, String... typeKeys); } diff --git a/epdc-cloud-user/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java b/epdc-cloud-user/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java index 7ec1c52..901c52f 100644 --- a/epdc-cloud-user/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java +++ b/epdc-cloud-user/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java @@ -26,4 +26,9 @@ public class AdminFeignClientFallback implements AdminFeignClient { public Result getParentAndAllDept(String depId) { return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getParentAndAllDept", depId); } + + @Override + public Result> listParentIdByDeptId(Long deptId, String... typeKeys) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "listParentIdByDeptId", typeKeys); + } } diff --git a/epdc-cloud-user/src/main/java/com/elink/esua/epdc/service/UserGridRelationService.java b/epdc-cloud-user/src/main/java/com/elink/esua/epdc/service/UserGridRelationService.java index 591c438..4768223 100644 --- a/epdc-cloud-user/src/main/java/com/elink/esua/epdc/service/UserGridRelationService.java +++ b/epdc-cloud-user/src/main/java/com/elink/esua/epdc/service/UserGridRelationService.java @@ -195,4 +195,14 @@ public interface UserGridRelationService extends BaseService + * @Author zhangyong + * @Date 17:08 2020-06-04 + **/ + List listUserIdByDeptId(Long deptId); } diff --git a/epdc-cloud-user/src/main/java/com/elink/esua/epdc/service/UserService.java b/epdc-cloud-user/src/main/java/com/elink/esua/epdc/service/UserService.java index 489766e..2cb6910 100644 --- a/epdc-cloud-user/src/main/java/com/elink/esua/epdc/service/UserService.java +++ b/epdc-cloud-user/src/main/java/com/elink/esua/epdc/service/UserService.java @@ -20,10 +20,7 @@ package com.elink.esua.epdc.service; import com.elink.esua.epdc.commons.mybatis.service.BaseService; import com.elink.esua.epdc.commons.tools.page.PageData; import com.elink.esua.epdc.commons.tools.utils.Result; -import com.elink.esua.epdc.dto.PartyMemberModifyFormDTO; -import com.elink.esua.epdc.dto.PartyMembersDTO; -import com.elink.esua.epdc.dto.CachingUserInfoDTO; -import com.elink.esua.epdc.dto.UserDTO; +import com.elink.esua.epdc.dto.*; import com.elink.esua.epdc.dto.epdc.form.*; import com.elink.esua.epdc.dto.epdc.result.*; import com.elink.esua.epdc.entity.UserEntity; @@ -44,11 +41,10 @@ public interface UserService extends BaseService { PageData page(Map params); /** - * * 待认证党员列表 * - * @params [params] * @return com.elink.esua.epdc.commons.tools.page.PageData + * @params [params] * @author liuchuang * @since 2020/3/23 15:57 */ @@ -57,11 +53,10 @@ public interface UserService extends BaseService { List list(Map params); /** - * * 待认证党员导出 * - * @params [params] * @return java.util.List + * @params [params] * @author liuchuang * @since 2020/3/23 16:25 */ @@ -78,33 +73,30 @@ public interface UserService extends BaseService { void audit(UserDTO dto); /** - * * 党员认证 * - * @params [dto] * @return void + * @params [dto] * @author liuchuang * @since 2020/3/23 17:56 */ Result> partyReview(UserDTO dto); /** - * * 党员认证通过并更新党员库信息 * - * @params [dto] * @return com.elink.esua.epdc.commons.tools.utils.Result + * @params [dto] * @author liuchuang * @since 2020/3/24 19:46 */ Result modifyPartyInfo(PartyMemberModifyFormDTO dto); /** - * * 新增党员信息并认证通过 * - * @params [dto] * @return com.elink.esua.epdc.commons.tools.utils.Result + * @params [dto] * @author liuchuang * @since 2020/3/25 14:33 */ @@ -377,11 +369,10 @@ public interface UserService extends BaseService { UserDTO updateWxInfo(UserDTO userDto); /** - * * 事件修改组织机构信息 * - * @params [dto] * @return void + * @params [dto] * @author liuchuang * @since 2020/3/7 1:23 */ @@ -416,4 +407,35 @@ public interface UserService extends BaseService { */ List authenticatedExport(Map params); + /** + * @return com.elink.esua.epdc.commons.tools.page.PageData + * @Description 积分模块用户列表 + * @Author songyunpeng + * @Date 2020/6/9 + * @Param [params] + **/ + PageData pageForPoints(Map params); + + /** + * 积分排名接口: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); + + /** + * 积分中心页面-积分等级排名 + * 返回当前用户的排名 和 当前街道的前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/epdc-cloud-user/src/main/java/com/elink/esua/epdc/service/impl/UserGridRelationServiceImpl.java b/epdc-cloud-user/src/main/java/com/elink/esua/epdc/service/impl/UserGridRelationServiceImpl.java index 5d61cc3..bbb98b2 100644 --- a/epdc-cloud-user/src/main/java/com/elink/esua/epdc/service/impl/UserGridRelationServiceImpl.java +++ b/epdc-cloud-user/src/main/java/com/elink/esua/epdc/service/impl/UserGridRelationServiceImpl.java @@ -277,4 +277,9 @@ public class UserGridRelationServiceImpl extends BaseServiceImpl listUserIdByDeptId(Long deptId) { + return baseDao.selectListUserIdByDeptId(deptId); + } } diff --git a/epdc-cloud-user/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java b/epdc-cloud-user/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java index 95c800c..183d7fe 100644 --- a/epdc-cloud-user/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java +++ b/epdc-cloud-user/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java @@ -31,6 +31,7 @@ import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; import com.elink.esua.epdc.commons.mybatis.utils.DeptEntityUtils; import com.elink.esua.epdc.commons.tools.constant.FieldConstant; import com.elink.esua.epdc.commons.tools.constant.NumConstant; +import com.elink.esua.epdc.commons.tools.constant.OrganizationTypeConstant; import com.elink.esua.epdc.commons.tools.constant.StrConstant; import com.elink.esua.epdc.commons.tools.enums.UserAuthTypeEnum; import com.elink.esua.epdc.commons.tools.enums.UserSexEnum; @@ -1074,11 +1075,11 @@ public class UserServiceImpl extends BaseServiceImpl implem // 已认证待审核列表 workUserFromDto.setAuthenticatedFlag(AppUserStatesEnum.STATE_COMPLETED_INFORMATION_PENDING_REVIEW.value()); // 党员认证失败(用户状态为待认证) - if(YesOrNoEnum.YES.value().equals(partyFlag)){ + if (YesOrNoEnum.YES.value().equals(partyFlag)) { // 用户认证状态 实为 居民 workUserFromDto.setPartyFlag(YesOrNoEnum.NO.value()); return new Result().ok(baseDao.selectPartyAuthenticationFailedList(workUserFromDto)); - }else { + } else { // 已认证居民待审核 列表 return new Result().ok(baseDao.selectListAuthenticatedUserForWork(workUserFromDto)); } @@ -1582,6 +1583,136 @@ public class UserServiceImpl extends BaseServiceImpl implem } } + @Override + public PageData pageForPoints(Map params) { + // 查询当前用户所具有的的数据权限 + List deptIdList = SecurityUser.getUser().getDeptIdList(); + params.put("deptIdList", deptIdList); + IPage page = getPage(params); + List list = baseDao.selectListUserPoints(params); + return new PageData<>(list, page.getTotal()); + } + + @Override + public EpdcAppUserRankingResultDTO listUserPointsRanking(EpdcAppUserRankingFormDTO formDto) { + int pageIndex = (formDto.getPageIndex() - NumConstant.ONE) * formDto.getPageSize(); + formDto.setPageIndex(pageIndex); + + // 获取 用户网格关系表 中的 用户id,做网格/街道 积分排行的源用户数据 + List listUser = this.getActRankingUserId(formDto); + formDto.setAllUserIdByDept(listUser); + + // 积分相同,排名相同 + EpdcAppUserRankingResultDTO rangking = new EpdcAppUserRankingResultDTO(); + // 获取排好序的 排行榜数据数据 + rangking.setRank(this.sortListUsersRank(formDto)); + // 查询当前用户积分记录 + EpdcAppRankingUserDTO currentUserDTO = baseDao.selectCurrentUserRanking(formDto); + // 返回当前登录用户积分排名 + if (null != currentUserDTO) { + currentUserDTO.setUserId(formDto.getUserId()); + currentUserDTO.setRealName(formDto.getRealName()); + rangking.setCurrentUser(currentUserDTO); + } + return rangking; + } + + @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; + 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; + } + + /** + * 获取【排好序】的排行榜数据 + * + * @param formDto + * @return java.util.List + * @Author zhangyong + * @Date 13:50 2020-06-01 + **/ + private List sortListUsersRank(EpdcAppUserRankingFormDTO formDto) { + List listPointsRank; + 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; + } + + /** + * 返回本次 积分排行 用户网格关系表中的用户id + * + * @param formDto + * @return java.util.List + * @Author zhangyong + * @Date 17:25 2020-06-04 + **/ + private List getActRankingUserId(EpdcAppUserRankingFormDTO formDto) { + if (NumConstant.ZERO == formDto.getRankingType()) { + // 根据网格查询排行榜 + formDto.setDeptId(formDto.getDeptId()); + } else if (NumConstant.ONE == formDto.getRankingType()) { + // 根据街道查询排行榜 + Result> deptDto = adminFeignClient.listParentIdByDeptId(formDto.getDeptId(), OrganizationTypeConstant.ORG_TYPE_STREET_PARTY); + if (deptDto.success()) { + formDto.setDeptId(deptDto.getData().get(NumConstant.ZERO)); + } + } + // 根据从 用户网格关系表中查询到的用户id,做积分排名比较 + List listUser = userGridRelationService.listUserIdByDeptId(formDto.getDeptId()); + return listUser; + } + /** * 用户信息校验 * diff --git a/epdc-cloud-user/src/main/resources/mapper/UserDao.xml b/epdc-cloud-user/src/main/resources/mapper/UserDao.xml index 0261163..c55b891 100644 --- a/epdc-cloud-user/src/main/resources/mapper/UserDao.xml +++ b/epdc-cloud-user/src/main/resources/mapper/UserDao.xml @@ -677,4 +677,156 @@ WHERE 1 = 1 u.register_time desc + + + + + + + + + diff --git a/epdc-cloud-user/src/main/resources/mapper/UserGridRelationDao.xml b/epdc-cloud-user/src/main/resources/mapper/UserGridRelationDao.xml index 43049cb..e7c43ae 100644 --- a/epdc-cloud-user/src/main/resources/mapper/UserGridRelationDao.xml +++ b/epdc-cloud-user/src/main/resources/mapper/UserGridRelationDao.xml @@ -51,4 +51,14 @@ CREATED_TIME LIMIT 1 + + \ No newline at end of file