Browse Source

积分记录-锦水-积分排行接口

feature/syp_points
zhangyongzhangyong 5 years ago
parent
commit
17d5a680c1
  1. 20
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAppUserController.java
  2. 12
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java
  3. 6
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java
  4. 16
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AppUserService.java
  5. 23
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java
  6. 63
      esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcAppUserRankingFormDTO.java
  7. 36
      esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcAppRankingUserDTO.java
  8. 30
      esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcAppUserRankingResultDTO.java
  9. 14
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppUserController.java
  10. 19
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/dao/UserDao.java
  11. 10
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserService.java
  12. 41
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java
  13. 38
      esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserDao.xml

20
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<com.elink.esua.epdc.dto.epdc.result.EpdcAppUserRankingResultDTO>
* @Author zhangyong
* @Date 13:35 2020-06-01
**/
@GetMapping("userPointsRanking/list")
public Result<EpdcAppUserRankingResultDTO> listUserPointsRanking(@LoginUser TokenDto userDetail, EpdcAppUserRankingFormDTO formDto) {
ValidatorUtils.validateEntity(formDto);
return appUserService.listUserPointsRanking(userDetail, formDto);
}
}

12
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<VolunteerInfoDTO> selectUserVolunteerInfo(@PathVariable("userId") String 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(value = "app-user/epdc-app/user/listUserPointsRanking/list", consumes = MediaType.APPLICATION_JSON_VALUE)
Result<EpdcAppUserRankingResultDTO> selectListUserPointsRanking(EpdcAppUserRankingFormDTO formDto);
}

6
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<VolunteerInfoDTO> selectUserVolunteerInfo(String userId) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "selectUserVolunteerInfo", "userId");
}
@Override
public Result<EpdcAppUserRankingResultDTO> selectListUserPointsRanking(EpdcAppUserRankingFormDTO formDto) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "selectListUserPointsRanking", "formDto");
}
}

16
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<com.elink.esua.epdc.dto.epdc.result.EpdcAppUserRankingResultDTO>
* @Author zhangyong
* @Date 13:35 2020-06-01
**/
Result<EpdcAppUserRankingResultDTO> listUserPointsRanking(TokenDto userDetail, EpdcAppUserRankingFormDTO formDto);
}

23
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<EpdcAppUserRankingResultDTO> 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<CompleteDeptDTO> deptDto = adminFeignClient.getCompleteDept(userDetail.getGridId());
if (deptDto.success()) {
formDto.setDeptId(deptDto.getData().getStreetId());
}
}
return userFeignClient.selectListUserPointsRanking(formDto);
}
}

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

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

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

14
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<CachingUserInfoDTO> needCachingUserInfo(@RequestBody EpdcAppQueryUserInfoFormDTO formDTO) {
return userService.queryCachingUserInfo(formDTO);
}
/**
* 积分排名接口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);
}
}

19
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<UserEntity> {
* @Date 2019/12/18 14:12
**/
CachingUserInfoDTO selectCachingUserInfoDTO(@Param("openId") String openId, @Param("unionId") String unionId);
/**
* 获取网格/街道 下的积分排名
* @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 com.elink.esua.epdc.dto.epdc.result.EpdcAppRankingUserDTO
* @Author zhangyong
* @Date 14:56 2020-06-01
**/
EpdcAppRankingUserDTO selectCurrentUserRanking(EpdcAppUserRankingFormDTO formDto);
}

10
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<UserEntity> {
* @Date 2019/12/18 14:01
**/
Result<CachingUserInfoDTO> queryCachingUserInfo(EpdcAppQueryUserInfoFormDTO formDTO);
/**
* 积分排名接口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);
}

41
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<UserDao, UserEntity> implem
return new Result<CachingUserInfoDTO>().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<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 = 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;
}
}

38
esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserDao.xml

@ -500,4 +500,42 @@
</if>
</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="deptId != null and deptId != '' ">
AND instr(u.ALL_DEPT_IDS , #{deptId} ) > 0
</if>
ORDER BY u.POINTS 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="deptId != null and deptId != '' ">
AND instr(u.ALL_DEPT_IDS , #{deptId} ) > 0
</if>
GROUP BY IFNULL(u.POINTS, 0)
ORDER BY IFNULL(u.POINTS, 0) DESC
) userRanking
WHERE instr(userRanking.tjid , #{userId}) > 0
</select>
</mapper>

Loading…
Cancel
Save