Browse Source

积分记录-等级排名列表接口

feature/syp_points
zhangyongzhangyong 5 years ago
parent
commit
e661de76fa
  1. 14
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAppUserController.java
  2. 11
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java
  3. 5
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java
  4. 10
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AppUserService.java
  5. 15
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java
  6. 58
      esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcAppUserGradeRankingFormDTO.java
  7. 30
      esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcAppUserGradeRankingResultDTO.java
  8. 36
      esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/UsersGradeRankingDTO.java
  9. 15
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppUserController.java
  10. 25
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/dao/UserDao.java
  11. 18
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserService.java
  12. 45
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java
  13. 59
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserDao.xml

14
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<com.elink.esua.epdc.dto.epdc.result.EpdcAppUserGradeRankingResultDTO>
* @Author zhangyong
* @Date 10:59 2020-06-24
**/
@GetMapping("user/gradeRanking/list")
public Result<EpdcAppUserGradeRankingResultDTO> listUserGradesRanking(@LoginUser TokenDto userDetail, EpdcAppUserGradeRankingFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO);
return appUserService.listUserGradesRanking(userDetail, formDTO);
}
}

11
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<EpdcAppUserRankingResultDTO> selectListUserPointsRanking(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
**/
@GetMapping(value = "app-user/epdc-app/user/gradeRanking/list", consumes = MediaType.APPLICATION_JSON_VALUE)
Result<EpdcAppUserGradeRankingResultDTO> selectListUserGradesRanking(EpdcAppUserGradeRankingFormDTO formDTO);
}

5
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<EpdcAppUserRankingResultDTO> selectListUserPointsRanking(EpdcAppUserRankingFormDTO formDto) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "selectListUserPointsRanking", "formDto");
}
@Override
public Result<EpdcAppUserGradeRankingResultDTO> selectListUserGradesRanking(EpdcAppUserGradeRankingFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "selectListUserGradesRanking", "formDTO");
}
}

10
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<EpdcAppUserRankingResultDTO> listUserPointsRanking(TokenDto userDetail, EpdcAppUserRankingFormDTO formDto);
/**
* 积分中心页面-积分等级排名
* 返回当前用户的排名 当前街道的前N名用户排名
* @param userDetail, 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> listUserGradesRanking(TokenDto userDetail, EpdcAppUserGradeRankingFormDTO formDTO);
}

15
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<EpdcAppUserGradeRankingResultDTO> listUserGradesRanking(TokenDto userDetail, EpdcAppUserGradeRankingFormDTO formDTO) {
formDTO.setUserId(userDetail.getUserId());
formDTO.setNickName(userDetail.getNickname());
formDTO.setPointsTotle(userDetail.getPointsTotle());
Result<CompleteDeptDTO> deptInfo = adminFeignClient.getCompleteDept(userDetail.getGridId());
if (deptInfo.success()) {
formDTO.setStreetId(deptInfo.getData().getStreetId());
} else {
return new Result<EpdcAppUserGradeRankingResultDTO>().error("当前用户,无所属街道");
}
return userFeignClient.selectListUserGradesRanking(formDTO);
}
}

58
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;
}

30
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<UsersGradeRankingDTO> rank;
/**
* 积分排行-等级排名接口返回值 -用户等级
*/
private UsersGradeRankingDTO currentUser;
}

36
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;
}

15
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<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);
}
}

25
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<UserEntity> {
**/
List<UserDTO> selectListOfWaitPartyUserDto(Map<String, Object> params);
/**
* @Description 工作端待认证居民
* @Description 工作端待认证居民
* @Author songyunpeng
* @Date 2020/6/12
* @Param [workUserFromDto]
* @return java.util.List<com.elink.esua.epdc.dto.epdc.result.EpdcWorkUserResultDTO>
**/
List<EpdcWorkUserResultDTO> selectWorkResidentUserList(EpdcWorkUserFromDTO workUserFromDto);
/**
* 获取街道 下的用户等级排名
* @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.UsersGradeRankingDTO
* @Author zhangyong
* @Date 14:06 2020-06-24
**/
UsersGradeRankingDTO selectCurrentUserGradeRanking(EpdcAppUserGradeRankingFormDTO formDto);
}

18
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<UserEntity> {
**/
PageData<UserPointsDTO> pageForPoints(Map<String, Object> params);
/**
* @Description 待认证党员
* @Description 待认证党员
* @Author songyunpeng
* @Date 2020/6/10
* @Param [params]
@ -343,7 +343,7 @@ public interface UserService extends BaseService<UserEntity> {
**/
PageData<UserDTO> waitPartyPage(Map<String, Object> params);
/**
* @Description 待认证党员导出
* @Description 待认证党员导出
* @Author songyunpeng
* @Date 2020/6/10
* @Param [params]
@ -351,7 +351,7 @@ public interface UserService extends BaseService<UserEntity> {
**/
List<UserDTO> listOfWaitParty(Map<String, Object> params);
/**
* @Description 党员认证通过并更新党员库信息
* @Description 党员认证通过并更新党员库信息
* @Author songyunpeng
* @Date 2020/6/10
* @Param [dto]
@ -359,7 +359,7 @@ public interface UserService extends BaseService<UserEntity> {
**/
Result modifyPartyInfo(PartyMemberModifyFormDTO dto);
/**
* @Description 党员认证
* @Description 党员认证
* @Author songyunpeng
* @Date 2020/6/10
* @Param [dto]
@ -377,4 +377,14 @@ public interface UserService extends BaseService<UserEntity> {
* @since 2020/3/25 14:33
*/
Result addPartyInfo(PartyMemberModifyFormDTO dto);
/**
* 积分中心页面-积分等级排名
* 返回当前用户的排名 当前街道的前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);
}

45
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<UserDao, UserEntity> implem
return new PageData<>(list, page.getTotal());
}
@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 = 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;
}
}

59
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}
</select>
<select id="selectListUsersGradeRanking" resultType="com.elink.esua.epdc.dto.epdc.result.UsersGradeRankingDTO">
SELECT
userGrade.userId,
userGrade.realName,
userGrade.grade
FROM(
SELECT
u.ID userId,
u.REAL_NAME realName,
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="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>

Loading…
Cancel
Save