Browse Source

add points rank

master
yujt 5 years ago
parent
commit
01be83ebd3
  1. 29
      epdc-cloud-user/src/main/java/com/elink/esua/epdc/controller/EpdcAppUserController.java
  2. 14
      epdc-cloud-user/src/main/java/com/elink/esua/epdc/controller/UserController.java
  3. 53
      epdc-cloud-user/src/main/java/com/elink/esua/epdc/dao/UserDao.java
  4. 10
      epdc-cloud-user/src/main/java/com/elink/esua/epdc/dao/UserGridRelationDao.java
  5. 14
      epdc-cloud-user/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java
  6. 5
      epdc-cloud-user/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java
  7. 10
      epdc-cloud-user/src/main/java/com/elink/esua/epdc/service/UserGridRelationService.java
  8. 54
      epdc-cloud-user/src/main/java/com/elink/esua/epdc/service/UserService.java
  9. 5
      epdc-cloud-user/src/main/java/com/elink/esua/epdc/service/impl/UserGridRelationServiceImpl.java
  10. 135
      epdc-cloud-user/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java
  11. 152
      epdc-cloud-user/src/main/resources/mapper/UserDao.xml
  12. 10
      epdc-cloud-user/src/main/resources/mapper/UserGridRelationDao.xml

29
epdc-cloud-user/src/main/java/com/elink/esua/epdc/controller/EpdcAppUserController.java

@ -420,4 +420,33 @@ public class EpdcAppUserController {
public Result<CachingUserInfoDTO> needCachingUserInfoByUserId(@PathVariable("userId") String userId) { public Result<CachingUserInfoDTO> needCachingUserInfoByUserId(@PathVariable("userId") String userId) {
return userService.cachingUserInfoByUserId(userId); return userService.cachingUserInfoByUserId(userId);
} }
/**
* 积分排名接口0-网格1-街道
* 根据用户表积分做排行
*
* @param formDto
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.epdc.result.EpdcAppUserRankingResultDTO>
* @Author zhangyong
* @Date 13:35 2020-06-01
**/
@GetMapping("listUserPointsRanking/list")
public Result<EpdcAppUserRankingResultDTO> listUserPointsRanking(@RequestBody EpdcAppUserRankingFormDTO formDto) {
EpdcAppUserRankingResultDTO list = userService.listUserPointsRanking(formDto);
return new Result<EpdcAppUserRankingResultDTO>().ok(list);
}
/**
* 积分中心页面-积分等级排名
* 返回当前用户的排名 当前街道的前N名用户排名
*
* @param formDTO
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.epdc.result.EpdcAppUserGradeRankingResultDTO>
* @Author zhangyong
* @Date 10:59 2020-06-24
**/
@GetMapping("gradeRanking/list")
public Result<EpdcAppUserGradeRankingResultDTO> listUsersGradeRanking(@RequestBody EpdcAppUserGradeRankingFormDTO formDTO) {
return userService.listUsersGradeRanking(formDTO);
}
} }

14
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.commons.tools.validator.group.UpdateGroup;
import com.elink.esua.epdc.dto.PartyMemberModifyFormDTO; import com.elink.esua.epdc.dto.PartyMemberModifyFormDTO;
import com.elink.esua.epdc.dto.UserDTO; 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.dto.epdc.form.EpdcUserPointsFormDTO;
import com.elink.esua.epdc.enums.AppUserStatesEnum; import com.elink.esua.epdc.enums.AppUserStatesEnum;
import com.elink.esua.epdc.excel.*; import com.elink.esua.epdc.excel.*;
@ -343,4 +344,17 @@ public class UserController {
PageData<UserDTO> page = userService.authenticatedpage(params); PageData<UserDTO> page = userService.authenticatedpage(params);
return new Result<PageData<UserDTO>>().ok(page); return new Result<PageData<UserDTO>>().ok(page);
} }
/**
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.commons.tools.page.PageData < com.elink.esua.epdc.dto.UserPointsDTO>>
* @Description 用户积分统计列表
* @Author songyunpeng
* @Date 2020/6/9
* @Param [params]
**/
@GetMapping("pageForPoints")
public Result<PageData<UserPointsDTO>> pageForPoints(@RequestParam Map<String, Object> params) {
PageData<UserPointsDTO> page = userService.pageForPoints(params);
return new Result<PageData<UserPointsDTO>>().ok(page);
}
} }

53
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.commons.mybatis.dao.BaseDao;
import com.elink.esua.epdc.dto.CachingUserInfoDTO; import com.elink.esua.epdc.dto.CachingUserInfoDTO;
import com.elink.esua.epdc.dto.UserDTO; import com.elink.esua.epdc.dto.UserDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcAppQueryUserInfoFormDTO; import com.elink.esua.epdc.dto.UserPointsDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcUnauthorizedAmountFromDTO; import com.elink.esua.epdc.dto.epdc.form.*;
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.result.*; import com.elink.esua.epdc.dto.epdc.result.*;
import com.elink.esua.epdc.entity.UserEntity; import com.elink.esua.epdc.entity.UserEntity;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@ -249,5 +247,52 @@ public interface UserDao extends BaseDao<UserEntity> {
*/ */
List<UserDTO> selectWaitAuthenticatedListUserDto(Map<String, Object> params); List<UserDTO> selectWaitAuthenticatedListUserDto(Map<String, Object> params);
/**
* @return java.util.List<com.elink.esua.epdc.dto.UserPointsDTO>
* @Description 用户积分列表
* @Author songyunpeng
* @Date 2020/6/9
* @Param [params]
**/
List<UserPointsDTO> selectListUserPoints(Map<String, Object> params);
/**
* 获取网格/街道 下的积分排名
*
* @param formDto
* @return java.util.List<com.elink.esua.epdc.dto.epdc.result.EpdcAppRankingUserDTO>
* @Author zhangyong
* @Date 13:52 2020-06-01
**/
List<EpdcAppRankingUserDTO> selectListUsersRanking(EpdcAppUserRankingFormDTO formDto);
/**
* 获取街道 下的用户等级排名
*
* @param formDto
* @return java.util.List<com.elink.esua.epdc.dto.epdc.result.UsersGradeRankingDTO>
* @Author zhangyong
* @Date 13:52 2020-06-024
**/
List<UsersGradeRankingDTO> 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);
} }

10
epdc-cloud-user/src/main/java/com/elink/esua/epdc/dao/UserGridRelationDao.java

@ -72,4 +72,14 @@ public interface UserGridRelationDao extends BaseDao<UserGridRelationEntity> {
* @since 2020/3/7 1:20 * @since 2020/3/7 1:20
*/ */
void updateGridByDeptId(String newDeptName, Long deptId); void updateGridByDeptId(String newDeptName, Long deptId);
/**
* 根据deptId查询用户网格关系表有多少用户在同一个网格/街道
*
* @param deptId
* @return java.util.List<java.lang.String>
* @Author zhangyong
* @Date 17:08 2020-06-04
**/
List<String> selectListUserIdByDeptId(Long deptId);
} }

14
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.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List; import java.util.List;
@ -39,4 +40,17 @@ public interface AdminFeignClient {
*/ */
@GetMapping("/sys/dept/getParentAndAllDept/{deptId}") @GetMapping("/sys/dept/getParentAndAllDept/{deptId}")
Result<ParentAndAllDeptDTO> getParentAndAllDept(@PathVariable("deptId") String deptId); Result<ParentAndAllDeptDTO> getParentAndAllDept(@PathVariable("deptId") String deptId);
/**
* 根据部门id获取某部门指定类型的上级机构
*
* @param typeKeys 上级机构类型
* @param deptId 某部门id
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.util.List < java.lang.Long>>
* @author work@yujt.net.cn
* @date 2020/7/7 09:22
*/
@GetMapping("sys/optimize/deptlevel/listParentId/{deptId}")
Result<List<Long>> listParentIdByDeptId(@PathVariable("deptId") Long deptId, String... typeKeys);
} }

5
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<ParentAndAllDeptDTO> getParentAndAllDept(String depId) { public Result<ParentAndAllDeptDTO> getParentAndAllDept(String depId) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getParentAndAllDept", depId); return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getParentAndAllDept", depId);
} }
@Override
public Result<List<Long>> listParentIdByDeptId(Long deptId, String... typeKeys) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "listParentIdByDeptId", typeKeys);
}
} }

10
epdc-cloud-user/src/main/java/com/elink/esua/epdc/service/UserGridRelationService.java

@ -195,4 +195,14 @@ public interface UserGridRelationService extends BaseService<UserGridRelationEnt
* @Param [userId] * @Param [userId]
**/ **/
UserGridRelationDTO getUserFirstScanGird(String userId); UserGridRelationDTO getUserFirstScanGird(String userId);
/**
* 根据deptId查询用户网格关系表有多少用户在同一个网格/街道
*
* @param deptId
* @return java.util.List<java.lang.String>
* @Author zhangyong
* @Date 17:08 2020-06-04
**/
List<String> listUserIdByDeptId(Long deptId);
} }

54
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.mybatis.service.BaseService;
import com.elink.esua.epdc.commons.tools.page.PageData; import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.PartyMemberModifyFormDTO; import com.elink.esua.epdc.dto.*;
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.epdc.form.*; import com.elink.esua.epdc.dto.epdc.form.*;
import com.elink.esua.epdc.dto.epdc.result.*; import com.elink.esua.epdc.dto.epdc.result.*;
import com.elink.esua.epdc.entity.UserEntity; import com.elink.esua.epdc.entity.UserEntity;
@ -44,11 +41,10 @@ public interface UserService extends BaseService<UserEntity> {
PageData<UserDTO> page(Map<String, Object> params); PageData<UserDTO> page(Map<String, Object> params);
/** /**
*
* 待认证党员列表 * 待认证党员列表
* *
* @params [params]
* @return com.elink.esua.epdc.commons.tools.page.PageData<com.elink.esua.epdc.dto.UserDTO> * @return com.elink.esua.epdc.commons.tools.page.PageData<com.elink.esua.epdc.dto.UserDTO>
* @params [params]
* @author liuchuang * @author liuchuang
* @since 2020/3/23 15:57 * @since 2020/3/23 15:57
*/ */
@ -57,11 +53,10 @@ public interface UserService extends BaseService<UserEntity> {
List<UserDTO> list(Map<String, Object> params); List<UserDTO> list(Map<String, Object> params);
/** /**
*
* 待认证党员导出 * 待认证党员导出
* *
* @params [params]
* @return java.util.List<com.elink.esua.epdc.dto.UserDTO> * @return java.util.List<com.elink.esua.epdc.dto.UserDTO>
* @params [params]
* @author liuchuang * @author liuchuang
* @since 2020/3/23 16:25 * @since 2020/3/23 16:25
*/ */
@ -78,33 +73,30 @@ public interface UserService extends BaseService<UserEntity> {
void audit(UserDTO dto); void audit(UserDTO dto);
/** /**
*
* 党员认证 * 党员认证
* *
* @params [dto]
* @return void * @return void
* @params [dto]
* @author liuchuang * @author liuchuang
* @since 2020/3/23 17:56 * @since 2020/3/23 17:56
*/ */
Result<List<PartyMembersDTO>> partyReview(UserDTO dto); Result<List<PartyMembersDTO>> partyReview(UserDTO dto);
/** /**
*
* 党员认证通过并更新党员库信息 * 党员认证通过并更新党员库信息
* *
* @params [dto]
* @return com.elink.esua.epdc.commons.tools.utils.Result * @return com.elink.esua.epdc.commons.tools.utils.Result
* @params [dto]
* @author liuchuang * @author liuchuang
* @since 2020/3/24 19:46 * @since 2020/3/24 19:46
*/ */
Result modifyPartyInfo(PartyMemberModifyFormDTO dto); Result modifyPartyInfo(PartyMemberModifyFormDTO dto);
/** /**
*
* 新增党员信息并认证通过 * 新增党员信息并认证通过
* *
* @params [dto]
* @return com.elink.esua.epdc.commons.tools.utils.Result * @return com.elink.esua.epdc.commons.tools.utils.Result
* @params [dto]
* @author liuchuang * @author liuchuang
* @since 2020/3/25 14:33 * @since 2020/3/25 14:33
*/ */
@ -377,11 +369,10 @@ public interface UserService extends BaseService<UserEntity> {
UserDTO updateWxInfo(UserDTO userDto); UserDTO updateWxInfo(UserDTO userDto);
/** /**
*
* 事件修改组织机构信息 * 事件修改组织机构信息
* *
* @params [dto]
* @return void * @return void
* @params [dto]
* @author liuchuang * @author liuchuang
* @since 2020/3/7 1:23 * @since 2020/3/7 1:23
*/ */
@ -416,4 +407,35 @@ public interface UserService extends BaseService<UserEntity> {
*/ */
List<UserDTO> authenticatedExport(Map<String, Object> params); List<UserDTO> authenticatedExport(Map<String, Object> params);
/**
* @return com.elink.esua.epdc.commons.tools.page.PageData<com.elink.esua.epdc.dto.UserDTO>
* @Description 积分模块用户列表
* @Author songyunpeng
* @Date 2020/6/9
* @Param [params]
**/
PageData<UserPointsDTO> pageForPoints(Map<String, Object> params);
/**
* 积分排名接口0-网格1-街道
* 根据用户表积分做排行
*
* @param formDto
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.epdc.result.EpdcAppUserRankingResultDTO>
* @Author zhangyong
* @Date 13:35 2020-06-01
**/
EpdcAppUserRankingResultDTO listUserPointsRanking(EpdcAppUserRankingFormDTO formDto);
/**
* 积分中心页面-积分等级排名
* 返回当前用户的排名 当前街道的前N名用户排名
*
* @param formDto
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.epdc.result.EpdcAppUserGradeRankingResultDTO>
* @Author zhangyong
* @Date 10:59 2020-06-24
**/
Result<EpdcAppUserGradeRankingResultDTO> listUsersGradeRanking(EpdcAppUserGradeRankingFormDTO formDto);
} }

5
epdc-cloud-user/src/main/java/com/elink/esua/epdc/service/impl/UserGridRelationServiceImpl.java

@ -277,4 +277,9 @@ public class UserGridRelationServiceImpl extends BaseServiceImpl<UserGridRelatio
return entities; return entities;
} }
@Override
public List<String> listUserIdByDeptId(Long deptId) {
return baseDao.selectListUserIdByDeptId(deptId);
}
} }

135
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.mybatis.utils.DeptEntityUtils;
import com.elink.esua.epdc.commons.tools.constant.FieldConstant; 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.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.constant.StrConstant;
import com.elink.esua.epdc.commons.tools.enums.UserAuthTypeEnum; import com.elink.esua.epdc.commons.tools.enums.UserAuthTypeEnum;
import com.elink.esua.epdc.commons.tools.enums.UserSexEnum; import com.elink.esua.epdc.commons.tools.enums.UserSexEnum;
@ -1074,11 +1075,11 @@ public class UserServiceImpl extends BaseServiceImpl<UserDao, UserEntity> implem
// 已认证待审核列表 // 已认证待审核列表
workUserFromDto.setAuthenticatedFlag(AppUserStatesEnum.STATE_COMPLETED_INFORMATION_PENDING_REVIEW.value()); 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()); workUserFromDto.setPartyFlag(YesOrNoEnum.NO.value());
return new Result().ok(baseDao.selectPartyAuthenticationFailedList(workUserFromDto)); return new Result().ok(baseDao.selectPartyAuthenticationFailedList(workUserFromDto));
}else { } else {
// 已认证居民待审核 列表 // 已认证居民待审核 列表
return new Result().ok(baseDao.selectListAuthenticatedUserForWork(workUserFromDto)); return new Result().ok(baseDao.selectListAuthenticatedUserForWork(workUserFromDto));
} }
@ -1582,6 +1583,136 @@ public class UserServiceImpl extends BaseServiceImpl<UserDao, UserEntity> implem
} }
} }
@Override
public PageData<UserPointsDTO> pageForPoints(Map<String, Object> params) {
// 查询当前用户所具有的的数据权限
List<Long> deptIdList = SecurityUser.getUser().getDeptIdList();
params.put("deptIdList", deptIdList);
IPage<UserPointsDTO> page = getPage(params);
List<UserPointsDTO> 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<String> 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<EpdcAppUserGradeRankingResultDTO> 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<EpdcAppUserGradeRankingResultDTO>().ok(rangking);
}
/**
* 获取排好序 用户等级排行榜数据
*
* @param formDto
* @return java.util.List<com.elink.esua.epdc.dto.epdc.result.UsersGradeRankingDTO>
* @Author zhangyong
* @Date 13:50 2020-06-24
**/
private List<UsersGradeRankingDTO> sortListUsersGradeRank(EpdcAppUserGradeRankingFormDTO formDto) {
List<UsersGradeRankingDTO> 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<com.elink.esua.epdc.dto.epdc.result.EpdcAppRankingUserDTO>
* @Author zhangyong
* @Date 13:50 2020-06-01
**/
private List<EpdcAppRankingUserDTO> sortListUsersRank(EpdcAppUserRankingFormDTO formDto) {
List<EpdcAppRankingUserDTO> 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<java.lang.String>
* @Author zhangyong
* @Date 17:25 2020-06-04
**/
private List<String> getActRankingUserId(EpdcAppUserRankingFormDTO formDto) {
if (NumConstant.ZERO == formDto.getRankingType()) {
// 根据网格查询排行榜
formDto.setDeptId(formDto.getDeptId());
} else if (NumConstant.ONE == formDto.getRankingType()) {
// 根据街道查询排行榜
Result<List<Long>> deptDto = adminFeignClient.listParentIdByDeptId(formDto.getDeptId(), OrganizationTypeConstant.ORG_TYPE_STREET_PARTY);
if (deptDto.success()) {
formDto.setDeptId(deptDto.getData().get(NumConstant.ZERO));
}
}
// 根据从 用户网格关系表中查询到的用户id,做积分排名比较
List<String> listUser = userGridRelationService.listUserIdByDeptId(formDto.getDeptId());
return listUser;
}
/** /**
* 用户信息校验 * 用户信息校验
* *

152
epdc-cloud-user/src/main/resources/mapper/UserDao.xml

@ -677,4 +677,156 @@ WHERE 1 = 1
u.register_time desc u.register_time desc
</select> </select>
<select id="selectListUserPoints" resultType="com.elink.esua.epdc.dto.UserPointsDTO">
select * from(
SELECT u.id,
u.NICKNAME,
u.REAL_NAME,
u.MOBILE,
u.REGISTER_TIME,
ADDRESS,
ug.ALL_DEPT_NAMES AS myGridName,
u.DEL_FLAG,
IF((u.DEPT_ID is null or u.DEPT_ID = '0'), ug.GRID_ID, u.DEPT_ID) as GRID_ID,
IF((u.DEPT_ID is null or u.DEPT_ID = '0'), ug.PARENT_DEPT_IDS, u.PARENT_DEPT_IDS) as PARENT_DEPT_IDS,
IF((u.DEPT_ID is null or u.DEPT_ID = '0'), ug.ALL_DEPT_IDS, u.ALL_DEPT_IDS) as ALL_DEPT_IDS,
IF((u.DEPT_ID is null or u.DEPT_ID = '0'), substring_index(ug.ALL_DEPT_NAMES, '-', -1), substring_index(u.ALL_DEPT_NAMES, '-', -1) ) as gridName,
IF((u.DEPT_ID is null or u.DEPT_ID = '0'), substring_index(substring_index(ug.ALL_DEPT_NAMES,'-',-2), '-', 1) , substring_index(substring_index(u.ALL_DEPT_NAMES,'-',-2), '-', 1) ) as communityName,
u.POINTS,
u.POINTS_TOTLE
FROM epdc_user u
LEFT JOIN ( select * from (select * from epdc_user_grid_relation order by CREATED_TIME)t group by t.USER_ID) ug ON u.ID = ug.USER_ID
)ug
where
ug.del_flag = '0'
<if test="realName != '' and realName != null">and ug.real_name like '%${realName}%' or ug.nickname like '%${realName}%'</if>
<if test="mobile != '' and mobile != null">and ug.mobile like '%${mobile}%'</if>
<if test="streetId != '' and streetId != null">
AND (find_in_set(#{streetId},ug.PARENT_DEPT_IDS)
OR find_in_set(#{streetId},ug.ALL_DEPT_IDS))
</if>
<if test="communityId != '' and communityId != null">
AND (find_in_set(#{communityId},ug.PARENT_DEPT_IDS)
OR find_in_set(#{communityId},ug.ALL_DEPT_IDS))
</if>
<if test="gridId != '' and gridId != null">
and (ug.grid_id = #{gridId}
OR find_in_set(#{gridId},ug.ALL_DEPT_IDS))
</if>
<if test="deptIdList!=null and deptIdList.size()>0">
AND ug.GRID_ID IN
<foreach collection="deptIdList" item="deptId" index="index" open="(" close=")" separator=",">
#{deptId}
</foreach>
</if>
GROUP BY
ug.ID
ORDER BY
ug.POINTS desc,
ug.register_time desc
</select>
<select id="selectListUsersRanking" resultType="com.elink.esua.epdc.dto.epdc.result.EpdcAppRankingUserDTO">
SELECT
u.ID userId,
u.REAL_NAME realName,
u.POINTS points
FROM
epdc_user u
WHERE
u.DEL_FLAG = 0 AND u.STATE != 0
<if test="allUserIdByDept!=null and allUserIdByDept.size()>0">
and u.ID in
<foreach collection="allUserIdByDept" index="index" item="userId" open="(" separator="," close=")">
#{userId}
</foreach>
</if>
ORDER BY u.POINTS DESC, u.CREATED_TIME DESC
LIMIT #{pageIndex}, #{pageSize}
</select>
<select id="selectListUsersGradeRanking" resultType="com.elink.esua.epdc.dto.epdc.result.UsersGradeRankingDTO">
SELECT
userGrade.userId,
userGrade.nickName,
userGrade.grade
FROM(
SELECT
u.ID userId,
u.REAL_NAME nickName,
CASE
WHEN IFNULL(u.POINTS_TOTLE,0) &lt;= 0 THEN 0
ELSE
IFNULL(FLOOR(IFNULL(u.POINTS_TOTLE,0) / IFNULL(g.POINTS,0) * IFNULL(g.GRADE,0)),0)
END grade,
u.CREATED_TIME
FROM
epdc_user u
left join epdc_points_grade g ON 1=1 AND g.DEL_FLAG = 0
WHERE
u.DEL_FLAG = '0' AND u.STATE != '0'
<if test="streetId != null and streetId != '' ">
AND instr(u.PARENT_DEPT_IDS , #{streetId} ) > 0
</if>
) userGrade
ORDER BY userGrade.grade DESC, userGrade.CREATED_TIME DESC
LIMIT #{pageIndex}, #{pageSize}
</select>
<select id="selectCurrentUserRanking" resultType="com.elink.esua.epdc.dto.epdc.result.EpdcAppRankingUserDTO">
SELECT
userRanking.rank,
userRanking.points
FROM(
SELECT
(@i:=@i+1) rank,
u.ID userId,
IFNULL(u.POINTS, 0) points,
GROUP_CONCAT(u.ID SEPARATOR ',') tjid
FROM
epdc_user u ,(select @i:=0) t1
WHERE
u.DEL_FLAG = 0 AND u.STATE != 0
<if test="allUserIdByDept!=null and allUserIdByDept.size()>0">
and u.ID in
<foreach collection="allUserIdByDept" index="index" item="userId" open="(" separator="," close=")">
#{userId}
</foreach>
</if>
GROUP BY IFNULL(u.POINTS, 0)
ORDER BY IFNULL(u.POINTS, 0) DESC
) userRanking
WHERE instr(userRanking.tjid , #{userId}) > 0
</select>
<select id="selectCurrentUserGradeRanking" resultType="com.elink.esua.epdc.dto.epdc.result.UsersGradeRankingDTO">
SELECT
userRanking.rank,
userRanking.grade
FROM(
SELECT
(@i:=@i+1) rank,
tab.USER_ID userId,
GROUP_CONCAT(tab.USER_ID SEPARATOR ',') pdtj, -- 有展示上限,所以不用该字段 删选名次
tab.POINTS_TOTLE,
tab.grade
FROM(
SELECT
u.ID USER_ID,
u.POINTS_TOTLE,
CASE
WHEN IFNULL(u.POINTS_TOTLE,0) &lt;= 0 THEN 0
ELSE
IFNULL(FLOOR(IFNULL(u.POINTS_TOTLE,0) / IFNULL(g.POINTS,0) * IFNULL(g.GRADE,0)),0)
END grade
FROM epdc_user u
LEFT JOIN epdc_points_grade g ON 1=1 AND g.DEL_FLAG = '0'
WHERE u.DEL_FLAG = '0'
AND instr(u.PARENT_DEPT_IDS , #{streetId} ) > 0
) tab ,(select @i:=0) t1
GROUP BY tab.grade
ORDER BY tab.grade DESC
) userRanking
WHERE userRanking.POINTS_TOTLE = #{pointsTotle}
</select>
</mapper> </mapper>

10
epdc-cloud-user/src/main/resources/mapper/UserGridRelationDao.xml

@ -51,4 +51,14 @@
CREATED_TIME CREATED_TIME
LIMIT 1 LIMIT 1
</select> </select>
<select id="selectListUserIdByDeptId" resultType="String">
SELECT
USER_ID userId
FROM
`epdc_user_grid_relation`
WHERE
FIND_IN_SET( #{deptId}, ALL_DEPT_IDS )
AND DEL_FLAG = '0'
</select>
</mapper> </mapper>
Loading…
Cancel
Save