Browse Source

Merge remote-tracking branch 'origin/dev_group0329' into dev_group0329

dev_shibei_match
sunyuchao 4 years ago
parent
commit
d608a89c87
  1. 11
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java
  2. 4
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/GroupConstant.java
  3. 21
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/UserInfosResultDTO.java
  4. 35
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/form/CandidateListFormDTO.java
  5. 57
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/result/CandidateListResultDTO.java
  6. 29
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/ResiGroupController.java
  7. 14
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/UserBaseInfoDao.java
  8. 12
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/resigroup/ResiGroupDao.java
  9. 47
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/redis/ResiGroupRedis.java
  10. 13
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java
  11. 19
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java
  12. 10
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/ResiGroupService.java
  13. 52
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/impl/ResiGroupServiceImpl.java
  14. 19
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/UserBaseInfoDao.xml
  15. 12
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/resigroup/ResiGroupDao.xml

11
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java

@ -206,6 +206,17 @@ public class RedisUtils {
}).collect(Collectors.toList());
}
/**
* @Description 获取缓存List
* @Param key
* @author zxc
* @date 2021/3/30 下午3:33
*/
public List<Object> getListLrange(String key){
List<Object> range = redisTemplate.opsForList().range(key, 0, -1);
return range;
}
/**
* @Description Redis lrem :
* 根据参数 count 的值移除列表中与参数 value 相等的元素

4
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/GroupConstant.java

@ -5,4 +5,8 @@ package com.epmet.dataaggre.constant;
* @DateTime 2020/12/25 上午10:55
*/
public interface GroupConstant {
String BADGE_ICON = "badgeIcon";
String BADGE_KEY = "epmet:badge:user:";
}

21
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/UserInfosResultDTO.java

@ -0,0 +1,21 @@
package com.epmet.dataaggre.dto.epmetuser.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/3/30 上午11:04
* @DESC
*/
@Data
public class UserInfosResultDTO implements Serializable {
private static final long serialVersionUID = 7129564173128153335L;
private String userId;
private String userShowName;
private String headPhoto;
}

35
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/form/CandidateListFormDTO.java

@ -0,0 +1,35 @@
package com.epmet.dataaggre.dto.resigroup.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/3/30 上午9:34
* @DESC
*/
@Data
public class CandidateListFormDTO implements Serializable {
private static final long serialVersionUID = 6184071611057671961L;
public interface CandidateListForm{}
/**
* 小组ID
*/
@NotBlank(message = "小组ID不能为空",groups = CandidateListForm.class)
private String groupId;
@NotNull(message = "pageNo不能为空",groups = CandidateListForm.class)
private Integer pageNo;
@NotNull(message = "pageSize不能为空",groups = CandidateListForm.class)
private Integer pageSize;
private String customerId;
}

57
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/result/CandidateListResultDTO.java

@ -0,0 +1,57 @@
package com.epmet.dataaggre.dto.resigroup.result;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* @Author zxc
* @DateTime 2021/3/30 上午9:15
* @DESC
*/
@Data
public class CandidateListResultDTO implements Serializable {
private static final long serialVersionUID = 4720936429310456924L;
/**
* resi_group_member.id: 成员id
*/
private String memberId;
/**
* 组员的用户id
*/
private String userId;
/**
* 成员头像
*/
private String headPhoto;
/**
* 成员的显示名称
*/
private String userShowName;
/**
* 徽章Url集合
*/
private String leaderFlag;
/**
* leader群主member成员
*/
private List<String> badgeList;
public CandidateListResultDTO() {
this.memberId = "";
this.userId = "";
this.headPhoto = "";
this.userShowName = "";
this.leaderFlag = "";
this.badgeList = new ArrayList<>();
}
}

29
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/ResiGroupController.java

@ -1,8 +1,20 @@
package com.epmet.dataaggre.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dataaggre.dto.resigroup.form.CandidateListFormDTO;
import com.epmet.dataaggre.dto.resigroup.result.CandidateListResultDTO;
import com.epmet.dataaggre.service.resigroup.ResiGroupService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @Author zxc
* @DateTime 2020/12/25 上午9:45
@ -10,4 +22,21 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("resigroup")
public class ResiGroupController {
@Autowired
private ResiGroupService resiGroupService;
/**
* @Description 可胜任组长-组员列表(工作端通用)
* @Param formDTO
* @author zxc
* @date 2021/3/30 上午9:45
*/
@PostMapping("candidatelist")
public Result<List<CandidateListResultDTO>> candidateList(@RequestBody CandidateListFormDTO formDTO, @LoginUser TokenDto tokenDto){
ValidatorUtils.validateEntity(formDTO, CandidateListFormDTO.CandidateListForm.class);
formDTO.setCustomerId(tokenDto.getCustomerId());
return new Result<List<CandidateListResultDTO>>().ok(resiGroupService.candidateList(formDTO));
}
}

14
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/UserBaseInfoDao.java

@ -18,8 +18,12 @@
package com.epmet.dataaggre.dao.epmetuser;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.epmetuser.result.UserInfosResultDTO;
import com.epmet.dataaggre.entity.epmetuser.UserBaseInfoEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 用户基础信息
@ -29,5 +33,13 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface UserBaseInfoDao extends BaseDao<UserBaseInfoEntity> {
/**
* @Description 根据UserIds查询
* @Param userIds
* @author zxc
* @date 2021/3/30 上午11:07
*/
List<UserInfosResultDTO> selectUserInfosByUserIds(@Param("userIds") List<String> userIds);
}

12
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/resigroup/ResiGroupDao.java

@ -18,8 +18,12 @@
package com.epmet.dataaggre.dao.resigroup;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.resigroup.result.CandidateListResultDTO;
import com.epmet.dataaggre.entity.resigroup.ResiGroupEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 群组信息表
@ -29,5 +33,13 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface ResiGroupDao extends BaseDao<ResiGroupEntity> {
/**
* @Description 根据小组ID查询组员信息身份不包括组长
* @Param groupId
* @author zxc
* @date 2021/3/30 上午10:13
*/
List<CandidateListResultDTO> candidateList(@Param("groupId")String groupId);
}

47
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/redis/ResiGroupRedis.java

@ -0,0 +1,47 @@
package com.epmet.dataaggre.redis;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.dataaggre.constant.GroupConstant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @Author zxc
* @DateTime 2021/3/30 下午1:39
* @DESC
*/
@Component
@Slf4j
public class ResiGroupRedis {
@Autowired
private RedisUtils redisUtils;
/**
* @Description 获取用户徽章
* @Param customerId
* @Param userId
* @author zxc
* @date 2021/3/30 下午3:33
*/
public List<String> getBadgeInfoByUserId(String customerId,String userId){
String key = GroupConstant.BADGE_KEY+customerId+":"+userId;
List<Object> result = redisUtils.getListLrange(key);
if (!CollectionUtils.isEmpty(result)){
List<String> icons = new ArrayList<>();
for (Object o : result) {
Map<String,String> map = (Map<String, String>) o;
icons.add(map.get(GroupConstant.BADGE_ICON));
}
return icons;
}
return new ArrayList<>();
}
}

13
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java

@ -1,8 +1,21 @@
package com.epmet.dataaggre.service.epmetuser;
import com.epmet.dataaggre.dto.epmetuser.result.UserInfosResultDTO;
import java.util.List;
/**
* @Author zxc
* @DateTime 2020/12/25 上午9:20
*/
public interface EpmetUserService {
/**
* @Description 根据UserIds查询
* @Param userIds
* @author zxc
* @date 2021/3/30 上午11:07
*/
List<UserInfosResultDTO> selectUserInfosByUserIds(List<String> userIds);
}

19
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java

@ -2,10 +2,15 @@ package com.epmet.dataaggre.service.epmetuser.impl;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.dao.epmetuser.UserBaseInfoDao;
import com.epmet.dataaggre.dto.epmetuser.result.UserInfosResultDTO;
import com.epmet.dataaggre.service.epmetuser.EpmetUserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Author zxc
* @DateTime 2020/12/25 上午9:21
@ -14,4 +19,18 @@ import org.springframework.stereotype.Service;
@DataSource(DataSourceConstant.EPMET_USER)
@Slf4j
public class EpmetUserServiceImpl implements EpmetUserService {
@Autowired
private UserBaseInfoDao userBaseInfoDao;
/**
* @Description 根据UserIds查询
* @Param userIds
* @author zxc
* @date 2021/3/30 上午11:07
*/
@Override
public List<UserInfosResultDTO> selectUserInfosByUserIds(List<String> userIds) {
return userBaseInfoDao.selectUserInfosByUserIds(userIds);
}
}

10
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/ResiGroupService.java

@ -1,6 +1,9 @@
package com.epmet.dataaggre.service.resigroup;
import com.epmet.dataaggre.dto.resigroup.ResiTopicDTO;
import com.epmet.dataaggre.dto.resigroup.form.CandidateListFormDTO;
import com.epmet.dataaggre.dto.resigroup.result.CandidateListResultDTO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -9,5 +12,12 @@ import java.util.List;
* @DateTime 2020/12/25 上午9:21
*/
public interface ResiGroupService {
/**
* @Description 可胜任组长-组员列表(工作端通用)
* @Param formDTO
* @author zxc
* @date 2021/3/30 上午9:45
*/
List<CandidateListResultDTO> candidateList(CandidateListFormDTO formDTO);
List<ResiTopicDTO> selectTopicInfoByIds(List<String> topicIds);
}

52
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/impl/ResiGroupServiceImpl.java

@ -2,14 +2,25 @@ package com.epmet.dataaggre.service.resigroup.impl;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.dao.resigroup.ResiGroupDao;
import com.epmet.dataaggre.dao.resigroup.ResiTopicDao;
import com.epmet.dataaggre.dto.epmetuser.result.UserInfosResultDTO;
import com.epmet.dataaggre.dto.resigroup.ResiTopicDTO;
import com.epmet.dataaggre.dto.resigroup.form.CandidateListFormDTO;
import com.epmet.dataaggre.dto.resigroup.result.CandidateListResultDTO;
import com.epmet.dataaggre.redis.ResiGroupRedis;
import com.epmet.dataaggre.service.epmetuser.EpmetUserService;
import com.epmet.dataaggre.service.resigroup.ResiGroupService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author zxc
@ -21,9 +32,50 @@ import java.util.List;
public class ResiGroupServiceImpl implements ResiGroupService {
@Autowired
private ResiTopicDao resiTopicDao;
@Autowired
private ResiGroupDao resiGroupDao;
@Autowired
private EpmetUserService epmetUserService;
@Autowired
private ResiGroupRedis resiGroupRedis;
@Override
public List<ResiTopicDTO> selectTopicInfoByIds(List<String> topicIds) {
return resiTopicDao.selectTopicInfoByIds(topicIds);
}
/**
* @Description 可胜任组长-组员列表(工作端通用)
* @Param formDTO
* @author zxc
* @date 2021/3/30 上午9:45
*/
@Override
public List<CandidateListResultDTO> candidateList(CandidateListFormDTO formDTO) {
// 根据小组ID查询组员信息身份【不包括组长自己】
PageInfo<CandidateListResultDTO> pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> resiGroupDao.candidateList(formDTO.getGroupId()));
List<CandidateListResultDTO> result = pageInfo.getList();
// 没有直接返回空集合
if (CollectionUtils.isEmpty(result)){
return new ArrayList<>();
}
// 获取userIds
List<String> userIds = result.stream().map(m -> m.getUserId()).collect(Collectors.toList());
// 查询用户信息【名字 头像】
List<UserInfosResultDTO> userInfos = epmetUserService.selectUserInfosByUserIds(userIds);
result.forEach(r -> {
if (!CollectionUtils.isEmpty(userInfos)){
userInfos.forEach(u -> {
if (r.getUserId().equals(u.getUserId())){
r.setHeadPhoto(u.getHeadPhoto());
r.setUserShowName(u.getUserShowName());
}
});
}
// 徽章赋值
List<String> badgeInfo = resiGroupRedis.getBadgeInfoByUserId(formDTO.getCustomerId(), r.getUserId());
r.setBadgeList(null==badgeInfo ? new ArrayList<>() : badgeInfo);
});
return result;
}
}

19
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/UserBaseInfoDao.xml

@ -3,4 +3,23 @@
<mapper namespace="com.epmet.dataaggre.dao.epmetuser.UserBaseInfoDao">
<!-- 根据UserIds查询 -->
<select id="selectUserInfosByUserIds" resultType="com.epmet.dataaggre.dto.epmetuser.result.UserInfosResultDTO">
SELECT
user_id,
CONCAT(STREET,'-',SURNAME,
CASE WHEN GENDER = '1' THEN '先生'
WHEN GENDER = '2' THEN '女士'
ELSE '先生/女士' END
) AS userShowName,
HEAD_IMG_URL AS headPhoto
FROM user_base_info
WHERE DEL_FLAG = 0
AND
(
<foreach collection="userIds" item="userId" separator=" OR ">
USER_ID = #{userId}
</foreach>
)
</select>
</mapper>

12
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/resigroup/ResiGroupDao.xml

@ -3,4 +3,16 @@
<mapper namespace="com.epmet.dataaggre.dao.resigroup.ResiGroupDao">
<!-- 根据小组ID查询组员信息身份【不包括组长】 -->
<select id="candidateList" resultType="com.epmet.dataaggre.dto.resigroup.result.CandidateListResultDTO">
SELECT
rgm.ID AS memberId,
rgm.CUSTOMER_USER_ID AS userId,
rgm.GROUP_LEADER_FLAG AS leaderFlag
FROM resi_group_member rgm
WHERE rgm.DEL_FLAG = '0'
AND rgm.`STATUS` = 'approved'
AND rgm.GROUP_LEADER_FLAG != 'leader'
AND rgm.RESI_GROUP_ID = #{groupId}
</select>
</mapper>
Loading…
Cancel
Save