package com.gkhy.safePlatform.account.service.impl;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.gkhy.safePlatform.account.entity.enterprise.DepartmentInfo;
|
import com.gkhy.safePlatform.account.entity.schedule.*;
|
import com.gkhy.safePlatform.account.entity.user.UserInfo;
|
import com.gkhy.safePlatform.account.entity.user.UserInfoDO;
|
import com.gkhy.safePlatform.account.enums.DepartmentStatusEnum;
|
import com.gkhy.safePlatform.account.enums.UserStatusEnum;
|
import com.gkhy.safePlatform.account.enums.schedule.GroupStatusEnum;
|
import com.gkhy.safePlatform.account.enums.schedule.TimeTypeEnum;
|
import com.gkhy.safePlatform.account.model.bo.GroupInfoBO;
|
import com.gkhy.safePlatform.account.model.bo.GroupInfoPageBO;
|
import com.gkhy.safePlatform.account.model.dto.req.GroupAddDTO;
|
import com.gkhy.safePlatform.account.model.dto.req.GroupModDTO;
|
import com.gkhy.safePlatform.account.model.dto.resp.*;
|
import com.gkhy.safePlatform.account.model.query.GroupMemberPageQuery;
|
import com.gkhy.safePlatform.account.model.query.GroupPageQuery;
|
import com.gkhy.safePlatform.account.model.query.GroupQuery;
|
import com.gkhy.safePlatform.account.model.query.GroupScheduleQuery;
|
import com.gkhy.safePlatform.account.model.query.db.GroupDBQuery;
|
import com.gkhy.safePlatform.account.model.query.db.GroupMemberPageDBQuery;
|
import com.gkhy.safePlatform.account.model.query.db.GroupPageDBQuery;
|
import com.gkhy.safePlatform.account.model.query.db.GroupScheduleDBQuery;
|
import com.gkhy.safePlatform.account.service.GroupService;
|
import com.gkhy.safePlatform.account.service.GroupStrategyTimeTableService;
|
import com.gkhy.safePlatform.account.service.baseService.*;
|
import com.gkhy.safePlatform.account.utils.DateUtil;
|
import com.gkhy.safePlatform.commons.co.ContextCacheUser;
|
import com.gkhy.safePlatform.commons.enums.E;
|
import com.gkhy.safePlatform.commons.enums.ResultCodes;
|
import com.gkhy.safePlatform.commons.exception.AusinessException;
|
import com.gkhy.safePlatform.commons.exception.BusinessException;
|
import com.gkhy.safePlatform.commons.query.PageQuery;
|
import com.gkhy.safePlatform.commons.utils.StringUtils;
|
import com.gkhy.safePlatform.commons.vo.ResultVO;
|
import com.gkhy.safePlatform.commons.vo.SearchResultVO;
|
import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;
|
import org.checkerframework.checker.units.qual.A;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.awt.*;
|
import java.security.acl.Group;
|
import java.time.LocalDate;
|
import java.util.*;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
@Service("groupService")
|
public class GroupServiceImpl implements GroupService {
|
|
@Autowired
|
private GroupInfoService groupInfoService;
|
@Autowired
|
private GroupMemberInfoService groupMemberInfoService;
|
@Autowired
|
private UserInfoService userInfoService;
|
@Autowired
|
private DepartmentInfoService departmentInfoService;
|
@Autowired
|
private GroupStrategyTimeTableInfoService groupStrategyTimeTableInfoService;
|
|
|
@Override
|
@Transactional
|
public void saveGroupInfo(ContextCacheUser currentUser, GroupAddDTO groupAddDTO) {
|
;
|
if (groupAddDTO.getDepId() == null) {
|
throw new BusinessException(ResultCodes.CLIENT_PARAM_NULL);
|
}
|
if (StringUtils.isBlank(groupAddDTO.getGroupName())) {
|
throw new AusinessException(E.DATA_PARAM_NULL, "班组名称不能为空");
|
}
|
String name = groupAddDTO.getGroupName().trim();
|
// 班组成员
|
List<Long> groupMemberIds = groupAddDTO.getGroupMemberIds();
|
if (groupMemberIds == null || groupMemberIds.size() < 1) {
|
throw new AusinessException(E.DATA_PARAM_NULL, "班组成员不能为空");
|
}
|
// 部门是否存在
|
DepartmentInfo department = departmentInfoService.getDepartmentInfoById(groupAddDTO.getDepId());
|
if (department == null) {
|
throw new BusinessException(ResultCodes.CLIENT_DEP_NOT_EXIST);
|
}
|
assert department.getStatus() != null;
|
if (!department.getStatus().equals(DepartmentStatusEnum.ENABLED.getCode())) {
|
throw new AusinessException(E.DATA_DATABASE_EXIST_BUT_NOT_VALID, "部门不存在");
|
}
|
|
|
// 班组成员成分判断
|
List<UserInfoDO> userInfoDOList = userInfoService.listUserByUids(groupAddDTO.getGroupMemberIds());
|
// 校验用户id
|
for (Long uid : groupAddDTO.getGroupMemberIds()) {
|
boolean flag = false;
|
for (UserInfoDO userInfoDO : userInfoDOList) {
|
// todo 可以加入用户类型type判断
|
if (userInfoDO.getUid().equals(uid)) {
|
flag = true;
|
}
|
}
|
if (!flag) {
|
throw new AusinessException(E.DATA_DATABASE_NO_EXISTENT, "用户成员不存在:" + uid);
|
}
|
}
|
// 判断用户部门是否是当前所选部门
|
for (UserInfoDO userInfoDO : userInfoDOList) {
|
if (!userInfoDO.getDepId().equals(groupAddDTO.getDepId())) {
|
throw new AusinessException(E.DATA_PARAM_CHECK_INVALID, "所选用户不在当前部门下");
|
}
|
}
|
// 校验用户所属班组都得在同一个部门下
|
List<GroupInfoDO> groupInfoDOs = groupMemberInfoService.listGroupDOByUids(groupAddDTO.getGroupMemberIds());
|
for (GroupInfoDO groupInfoDO : groupInfoDOs) {
|
if (!groupInfoDO.getDepId().equals(groupAddDTO.getDepId())) {
|
throw new AusinessException(E.DATA_PARAM_CHECK_INVALID, "数据内部错误,用户所属班组不在部门下");
|
}
|
}
|
|
// 1.班组插入
|
GroupInfo groupInfo = new GroupInfo();
|
groupInfo.setName(name);
|
groupInfo.setInfo(groupAddDTO.getGroupInfo());
|
groupInfo.setCreateBy(currentUser.getRealName());
|
groupInfo.setCreateUid(currentUser.getUid());
|
groupInfo.setGmtCreate(new Date());
|
groupInfo.setStatus(GroupStatusEnum.ENABLED.getCode());
|
groupInfo.setDepId(department.getId());
|
groupInfoService.save(groupInfo);
|
// 2.班组成员插入
|
List<GroupMemberInfo> groupMembers = new ArrayList<>();
|
GroupMemberInfo groupMemberInfo;
|
for (Long uid : groupMemberIds) {
|
groupMemberInfo = new GroupMemberInfo();
|
groupMemberInfo.setGroupId(groupInfo.getId());
|
groupMemberInfo.setUid(uid);
|
groupMembers.add(groupMemberInfo);
|
}
|
groupMemberInfoService.saveGroupMembers(groupMembers);
|
|
}
|
|
@Override
|
@Transactional
|
public void modGroupInfo(ContextCacheUser currentUser, GroupModDTO groupModDTO) {
|
if (groupModDTO.getDepId() == null) {
|
throw new BusinessException(ResultCodes.CLIENT_PARAM_NULL);
|
}
|
if (groupModDTO.getGroupId() == null) {
|
throw new BusinessException(ResultCodes.CLIENT_PARAM_NULL);
|
}
|
|
if (StringUtils.isBlank(groupModDTO.getGroupName())) {
|
throw new AusinessException(E.DATA_PARAM_NULL, "班组名称不能为空");
|
}
|
String name = groupModDTO.getGroupName().trim();
|
// 班组成员
|
List<Long> groupMemberIds = groupModDTO.getGroupMemberIds();
|
if (groupMemberIds == null || groupMemberIds.size() < 1) {
|
throw new AusinessException(E.DATA_PARAM_NULL, "班组成员不能为空");
|
}
|
// 获取班组
|
GroupInfoDO groupInfoDO = groupInfoService.getGroupInfoById(groupModDTO.getGroupId());
|
if (groupInfoDO == null ) {
|
throw new AusinessException(E.DATA_DATABASE_NO_EXISTENT, "班组不存在");
|
}
|
if (!groupInfoDO.getStatus().equals(GroupStatusEnum.ENABLED.getCode())) {
|
throw new AusinessException(E.DATA_DATABASE_EXIST_BUT_NOT_VALID, "班组不存在");
|
}
|
|
// 部门是否存在
|
DepartmentInfo department = departmentInfoService.getDepartmentInfoById(groupModDTO.getDepId());
|
if (department == null) {
|
throw new BusinessException(ResultCodes.CLIENT_DEP_NOT_EXIST);
|
}
|
assert department.getStatus() != null;
|
if (!department.getStatus().equals(DepartmentStatusEnum.ENABLED.getCode())) {
|
throw new AusinessException(E.DATA_DATABASE_EXIST_BUT_NOT_VALID, "部门不存在");
|
}
|
|
// 1.获取绑定人员
|
List<Long> groupMembersIdsOrigin = groupMemberInfoService.getGroupMembersIdsByGroupId(groupInfoDO.getId());
|
// original - now
|
List<Long> toDelMemberIds = groupMembersIdsOrigin.stream()
|
// 不包含
|
.filter(id -> !groupModDTO.getGroupMemberIds().contains(id))
|
// 集合
|
.collect(Collectors.toList());
|
// now - original
|
List<Long> toAddMemberIds = groupModDTO.getGroupMemberIds().stream()
|
// 不包含
|
.filter(id -> !groupMembersIdsOrigin.contains(id))
|
// 集合
|
.collect(Collectors.toList());
|
// 2.新增人员成分判断
|
List<Long> toOperateIds = new ArrayList<>(toAddMemberIds.size() + toDelMemberIds.size());
|
toOperateIds.addAll(toAddMemberIds);
|
toOperateIds.addAll(toDelMemberIds);
|
List<UserInfoDO> userInfoDOs= userInfoService.listUserByUids(toOperateIds);
|
|
// 3.uid校验
|
for (Long uid : toOperateIds) {
|
boolean flag = false;
|
for (UserInfoDO userInfoDO : userInfoDOs) {
|
if (userInfoDO.getUid().equals(uid)) {
|
flag = true;
|
}
|
}
|
if (!flag) {
|
throw new AusinessException(E.DATA_DATABASE_NO_EXISTENT, "用户成员不存在:" + uid);
|
}
|
}
|
|
// 4.用户部门的校验
|
for (UserInfoDO userInfoDO : userInfoDOs) {
|
if (!userInfoDO.getDepId().equals(groupModDTO.getDepId())) {
|
throw new AusinessException(E.DATA_PARAM_CHECK_INVALID, "所选用户不在当前部门下:" + userInfoDO.getUid());
|
}
|
}
|
// 校验用户所属班组都得在同一个部门下
|
List<GroupInfoDO> groupInfoDOs = groupMemberInfoService.listGroupDOByUids(groupModDTO.getGroupMemberIds());
|
for (GroupInfoDO groupInfo : groupInfoDOs) {
|
if (!groupInfo.getDepId().equals(groupModDTO.getDepId())) {
|
throw new AusinessException(E.DATA_PARAM_CHECK_INVALID, "数据内部错误,用户所属班组不在部门下");
|
}
|
}
|
|
|
// 5.更新班组
|
GroupInfo groupInfo = new GroupInfo();
|
groupInfo.setId(groupInfoDO.getId());
|
groupInfo.setName(name);
|
groupInfo.setInfo(groupInfoDO.getInfo());
|
groupInfo.setGmtModified(new Date());
|
groupInfo.setEditBy(currentUser.getRealName());
|
groupInfo.setEditUid(currentUser.getUid());
|
groupInfo.setDepId(groupModDTO.getDepId());
|
groupInfoService.updateById(groupInfo);
|
// 6.更新成员
|
// 6.1新增成员
|
if (toAddMemberIds.size() > 0) {
|
List<GroupMemberInfo> groupMembers = new ArrayList<>();
|
GroupMemberInfo groupMemberInfo;
|
for (Long uid : toAddMemberIds) {
|
groupMemberInfo = new GroupMemberInfo();
|
groupMemberInfo.setGroupId(groupInfo.getId());
|
groupMemberInfo.setUid(uid);
|
groupMembers.add(groupMemberInfo);
|
}
|
groupMemberInfoService.saveGroupMembers(groupMembers);
|
}
|
// 6.2 解绑成员
|
if (toDelMemberIds.size() > 0) {
|
groupMemberInfoService.unbindGroupMembersByUids(groupInfoDO.getId(),toDelMemberIds);
|
}
|
|
|
}
|
|
@Override
|
@Transactional
|
public void delGroupInfo(ContextCacheUser currentUser, Long groupId) {
|
;
|
if (groupId == null) {
|
throw new BusinessException(ResultCodes.CLIENT_PARAM_NULL);
|
}
|
GroupInfoDO groupInfoDO = groupInfoService.getGroupInfoById(groupId);
|
if (groupInfoDO == null) {
|
throw new AusinessException(E.DATA_DATABASE_NO_EXISTENT, "分组不存在");
|
}
|
assert groupInfoDO.getStatus() != null;
|
GroupStatusEnum status = GroupStatusEnum.parse(groupInfoDO.getStatus());
|
if (status != GroupStatusEnum.ENABLED) {
|
throw new AusinessException(E.DATA_DATABASE_EXIST_BUT_NOT_VALID, "分组不存在");
|
}
|
// 1.组成员关系解绑
|
groupMemberInfoService.unbindGroupByGroupId(groupInfoDO.getId());
|
// 2.删除分组 && 部门班组关系解绑(体现在xml中)
|
GroupInfo groupInfo = new GroupInfo();
|
groupInfo.setId(groupInfoDO.getId());
|
groupInfo.setStatus(GroupStatusEnum.ABANDONED.getCode());
|
groupInfo.setGmtModified(new Date());
|
groupInfo.setEditBy(currentUser.getRealName());
|
groupInfo.setEditUid(currentUser.getUid());
|
groupInfoService.deleteGroupInfo(groupInfo);
|
|
}
|
|
|
@Override
|
public List<GroupRespDTO> listGroupInfo(ContextCacheUser currentUser, GroupQuery query) {
|
;
|
GroupDBQuery groupDBQuery = new GroupDBQuery();
|
groupDBQuery.setDepId(query.getDepId());
|
groupDBQuery.setGroupName(query.getGroupName());
|
|
// 0.返回准备
|
List<GroupRespDTO> result = new ArrayList<>();
|
// 1.查找分组
|
List<GroupInfoBO> groups = groupInfoService.listGroupInfoBO(groupDBQuery);
|
GroupRespDTO groupRespDTO;
|
GroupStatusEnum statusEnum;
|
boolean containGroupMemberEnable = query.getContainGroupMemberEnable();
|
for (GroupInfoBO groupInfoBO : groups) {
|
groupRespDTO = new GroupRespDTO();
|
groupRespDTO.setId(groupInfoBO.getId());
|
groupRespDTO.setGroupName(groupInfoBO.getName());
|
groupRespDTO.setGroupInfo(groupInfoBO.getInfo());
|
groupRespDTO.setStatus(groupInfoBO.getStatus());
|
groupRespDTO.setGroupStrategyId(groupInfoBO.getGroupStrategyId());
|
groupRespDTO.setDepId(groupInfoBO.getDepId());
|
groupRespDTO.setDepartment(groupInfoBO.getDepartment());
|
statusEnum = GroupStatusEnum.parse(groupInfoBO.getStatus());
|
if (statusEnum != null) {
|
groupRespDTO.setStatusDesc(statusEnum.getValue());
|
}
|
|
// 2.是否包含人员
|
if (containGroupMemberEnable) {
|
List<GroupMemberInfoDO> groupMembersDO = groupMemberInfoService.getGroupMembersByGroupId(groupInfoBO.getId());
|
GroupMemberRespDTO groupMemberRespDTO;
|
List<GroupMemberRespDTO> groupMembersRespDTO = new ArrayList<>();
|
for (GroupMemberInfoDO groupMemberDO : groupMembersDO) {
|
groupMemberRespDTO = new GroupMemberRespDTO();
|
groupMemberRespDTO.setUid(groupMemberDO.getUid());
|
groupMemberRespDTO.setRealName(groupMemberDO.getRealName());
|
groupMemberRespDTO.setUsername(groupMemberDO.getUsername());
|
groupMemberRespDTO.setStatus(groupMemberDO.getStatus());
|
UserStatusEnum userStatusEnum = UserStatusEnum.parse(groupMemberDO.getStatus());
|
if (userStatusEnum != null) {
|
groupMemberRespDTO.setStatusDesc(userStatusEnum.getValue());
|
}
|
groupMembersRespDTO.add(groupMemberRespDTO);
|
}
|
groupRespDTO.setGroupMembers(groupMembersRespDTO);
|
}
|
|
result.add(groupRespDTO);
|
}
|
|
return result;
|
}
|
|
|
|
@Override
|
public GroupTimeTableRespDTO getTimeTableInfo(ContextCacheUser currentUser, GroupScheduleQuery groupScheduleQuery) {
|
;
|
if (groupScheduleQuery.getStartTime() == null || groupScheduleQuery.getEndTime() == null) {
|
throw new AusinessException(E.DATA_PARAM_NULL,"时间不能为空");
|
}
|
if (groupScheduleQuery.getStartTime().after(groupScheduleQuery.getEndTime())) {
|
throw new AusinessException(E.DATA_PARAM_CHECK_INVALID,"时间区间非法");
|
}
|
if (groupScheduleQuery.getGroupId() == null) {
|
throw new BusinessException(ResultCodes.CLIENT_PARAM_NULL);
|
}
|
GroupInfoDO groupInfo = groupInfoService.getGroupInfoById(groupScheduleQuery.getGroupId());
|
if (groupInfo == null) {
|
throw new AusinessException(E.DATA_DATABASE_NO_EXISTENT, "班组不存在");
|
}
|
if (!groupInfo.getStatus().equals(GroupStatusEnum.ENABLED.getCode())) {
|
throw new AusinessException(E.DATA_DATABASE_EXIST_BUT_NOT_VALID, "班组不存在");
|
}
|
|
|
// 查询
|
GroupScheduleDBQuery groupScheduleDBQuery = new GroupScheduleDBQuery();
|
groupScheduleDBQuery.setStartTime(groupScheduleQuery.getStartTime());
|
groupScheduleDBQuery.setEndTime(groupScheduleQuery.getEndTime());
|
groupScheduleDBQuery.setType(groupScheduleQuery.getType());
|
groupScheduleDBQuery.setGroupId(groupScheduleQuery.getGroupId());
|
List<GroupStrategyTimeTableInfoDO> groupTableTableInfos = groupStrategyTimeTableInfoService.getGroupTableTableInfo(groupScheduleDBQuery);
|
|
// 返回结果
|
GroupTimeTableRespDTO result = new GroupTimeTableRespDTO();
|
result.setGroupId(groupInfo.getId());
|
result.setGroupInfo(groupInfo.getInfo());
|
result.setGroupName(groupInfo.getName());
|
result.setDays(Collections.emptyList());
|
// 处理
|
if (groupTableTableInfos.size() > 0) {
|
// 日期池
|
Map<LocalDate, GroupTimeTableDayRespDTO> dayPool = new HashMap<>();
|
TimeTypeEnum typeEnum;
|
GroupStrategyTimeTableInfoDO timeTableInfoDO;
|
GroupTimeTableDayRespDTO day;
|
GroupTimeTableTimeDetailRespDTO timeDetail;
|
for (int i = 0; i < groupTableTableInfos.size(); i++) {
|
timeTableInfoDO = groupTableTableInfos.get(i);
|
timeDetail = new GroupTimeTableTimeDetailRespDTO();
|
timeDetail.setStartTime(timeTableInfoDO.getStartTime());
|
timeDetail.setEndTime(timeTableInfoDO.getEndTime());
|
timeDetail.setType(timeTableInfoDO.getType());
|
typeEnum = TimeTypeEnum.parse(timeTableInfoDO.getType());
|
if (typeEnum != null) {
|
timeDetail.setTypeDesc(typeEnum.getValue());
|
}
|
|
if (!dayPool.containsKey(timeTableInfoDO.getSpecificDate())) {
|
day = new GroupTimeTableDayRespDTO();
|
day.setDay(timeTableInfoDO.getSpecificDate());
|
day.setTimeDetails(Collections.singletonList(timeDetail));
|
dayPool.put(timeTableInfoDO.getSpecificDate(), day);
|
}else{
|
day = dayPool.get(timeTableInfoDO.getSpecificDate());
|
day.getTimeDetails().add(timeDetail);
|
}
|
}
|
// Map无需变有序
|
List<GroupTimeTableDayRespDTO> sortedDays = dayPool.values().stream()
|
.sorted(Comparator.comparing(GroupTimeTableDayRespDTO::getDay)).collect(Collectors.toList());
|
result.setDays(sortedDays);
|
}
|
return result;
|
|
}
|
|
|
/**
|
* @Description: rpc内部调用
|
*/
|
@Override
|
public GroupInfoRespDTO getGroupInfoByGroupId(Long groupId) {
|
if (groupId == null) {
|
throw new BusinessException(ResultCodes.SERVER_PARAM_NULL);
|
}
|
GroupInfoRespDTO respDTO = null;
|
GroupInfoDO groupInfoDO = groupInfoService.getGroupInfoById(groupId);
|
if (groupInfoDO != null) {
|
respDTO = new GroupInfoRespDTO();
|
respDTO.setGroupId(groupInfoDO.getId());
|
respDTO.setGroupName(groupInfoDO.getName());
|
respDTO.setGroupInfo(groupInfoDO.getInfo());
|
respDTO.setGroupStrategyId(groupInfoDO.getGroupStrategyId());
|
respDTO.setStatus(groupInfoDO.getStatus());
|
GroupStatusEnum groupStatusEnum = GroupStatusEnum.parse(groupInfoDO.getStatus());
|
if (groupStatusEnum != null) {
|
respDTO.setStatusDesc(groupStatusEnum.getValue());
|
}
|
}
|
return respDTO;
|
}
|
|
@Override
|
public SearchResultVO<List<GroupPageRespDTO>> listGroupInfoByPage(ContextCacheUser currentUser, PageQuery<GroupPageQuery> query) {
|
;
|
// 查询参数
|
GroupPageDBQuery dbQuery = new GroupPageDBQuery();
|
if (query.getSearchParams() != null) {
|
dbQuery.setDepId(query.getSearchParams().getDepId());
|
dbQuery.setGroupName(query.getSearchParams().getGroupName());
|
}
|
// 查询分页对象
|
Page<GroupInfo> page = new Page<>(query.getPageIndex(), query.getPageSize());
|
List<GroupInfoPageBO> dbData = groupInfoService.listGroupInfo(page, dbQuery);
|
List<GroupPageRespDTO> resPageData = new ArrayList<>(dbData.size());
|
if (dbData.size() > 0) {
|
GroupPageRespDTO respDTO;
|
for (GroupInfoPageBO groupInfo : dbData) {
|
respDTO = new GroupPageRespDTO();
|
respDTO.setGroupId(groupInfo.getId());
|
respDTO.setGroupName(groupInfo.getName());
|
respDTO.setGroupInfo(groupInfo.getInfo());
|
respDTO.setCreateBy(groupInfo.getCreateBy());
|
respDTO.setGroupStrategyId(groupInfo.getGroupStrategyId());
|
respDTO.setGmtCreate(groupInfo.getGmtCreate());
|
respDTO.setCreateBy(groupInfo.getCreateBy());
|
respDTO.setGmtModified(groupInfo.getGmtModified());
|
respDTO.setEditBy(groupInfo.getEditBy());
|
respDTO.setStatus(groupInfo.getStatus());
|
respDTO.setDepId(groupInfo.getDepId());
|
respDTO.setDepartment(groupInfo.getDepartment());
|
GroupStatusEnum groupStatusEnum = GroupStatusEnum.parse(groupInfo.getStatus());
|
if (groupStatusEnum != null) {
|
respDTO.setStatusDesc(groupStatusEnum.getValue());
|
}
|
// 成员
|
List<GroupMemberRespDTO> members = Collections.emptyList();
|
if (query.getSearchParams().isContainGroupMemberEnable()) {
|
List<GroupMemberInfoDO> groupMemberDOs = groupMemberInfoService.getGroupMembersByGroupId(groupInfo.getId());
|
members = new ArrayList<>(groupMemberDOs.size());
|
GroupMemberRespDTO memberRespDTO;
|
for (GroupMemberInfoDO groupMemberInfoDO : groupMemberDOs) {
|
memberRespDTO = new GroupMemberRespDTO();
|
memberRespDTO.setUid(groupMemberInfoDO.getUid());
|
memberRespDTO.setUsername(groupMemberInfoDO.getUsername());
|
memberRespDTO.setRealName(groupMemberInfoDO.getRealName());
|
memberRespDTO.setStatus(groupMemberInfoDO.getStatus());
|
UserStatusEnum userStatusEnum = UserStatusEnum.parse(groupMemberInfoDO.getStatus());
|
if (userStatusEnum != null) {
|
memberRespDTO.setStatusDesc(userStatusEnum.getValue());
|
}
|
members.add(memberRespDTO);
|
}
|
|
}
|
|
respDTO.setGroupMembers(members);
|
resPageData.add(respDTO);
|
}
|
}
|
return new SearchResultVO<>(
|
true,
|
page.getCurrent(),
|
page.getSize(),
|
page.getPages(),
|
page.getTotal(),
|
resPageData,
|
ResultCodes.OK);
|
}
|
|
|
@Override
|
public List<GroupMemberRespDTO> listGroupMembersByGroupId(ContextCacheUser currentUser,Long groupId) {
|
;
|
List<GroupMemberRespDTO> result = Collections.emptyList();
|
List<GroupMemberInfoDO> dbMembers = groupMemberInfoService.getGroupMembersByGroupId(groupId);
|
if (dbMembers.size() > 0) {
|
GroupMemberRespDTO member;
|
result = new ArrayList<>(dbMembers.size());
|
for (GroupMemberInfoDO groupMemberInfoDO : dbMembers) {
|
member = new GroupMemberRespDTO();
|
member.setUsername(groupMemberInfoDO.getUsername());
|
member.setRealName(groupMemberInfoDO.getRealName());
|
member.setUid(groupMemberInfoDO.getUid());
|
member.setStatus(groupMemberInfoDO.getStatus());
|
UserStatusEnum userStatusEnum = UserStatusEnum.parse(groupMemberInfoDO.getStatus());
|
if (userStatusEnum != null) {
|
member.setStatusDesc(userStatusEnum.getValue());
|
}
|
result.add(member);
|
}
|
|
}
|
return result;
|
}
|
|
|
@Override
|
public ResultVO<List<GroupMemberPageRespDTO>> listGroupMembersByPage(ContextCacheUser currentUser, PageQuery<GroupMemberPageQuery> query) {
|
;
|
GroupMemberPageDBQuery dbQuery = new GroupMemberPageDBQuery();
|
if (query.getSearchParams() != null) {
|
dbQuery.setGroupId(query.getSearchParams().getGroupId());
|
dbQuery.setRealName(query.getSearchParams().getRealName());
|
}
|
Page<GroupMemberInfoDO> page = new Page<>(query.getPageIndex(),query.getPageSize());
|
List<GroupMemberPageRespDTO> resPageData = Collections.emptyList();
|
List<GroupMemberInfoDO> dbData = groupMemberInfoService.listGroupMemberDO(page, dbQuery);
|
if (dbData.size() > 0) {
|
resPageData = new ArrayList<>(dbData.size());
|
GroupMemberPageRespDTO respDTO;
|
for (GroupMemberInfoDO groupMemberInfoDO : dbData) {
|
respDTO = new GroupMemberPageRespDTO();
|
respDTO.setUid(groupMemberInfoDO.getUid());
|
respDTO.setRealName(groupMemberInfoDO.getRealName());
|
respDTO.setUsername(groupMemberInfoDO.getUsername());
|
respDTO.setStatus(groupMemberInfoDO.getStatus());
|
UserStatusEnum userStatusEnum = UserStatusEnum.parse(groupMemberInfoDO.getStatus());
|
if (userStatusEnum != null) {
|
respDTO.setStatusDesc(userStatusEnum.getValue());
|
}
|
resPageData.add(respDTO);
|
}
|
|
}
|
return new SearchResultVO<>(
|
true,
|
page.getCurrent(),
|
page.getSize(),
|
page.getPages(),
|
page.getTotal(),
|
resPageData,ResultCodes.OK);
|
}
|
|
|
@Override
|
public List<GroupInfoRespDTO> listGroupInfoByUid(Long uid) {
|
if (uid == null) {
|
throw new BusinessException(ResultCodes.SERVER_PARAM_NULL);
|
}
|
List<GroupInfoRespDTO> result = Collections.emptyList();
|
List<GroupInfoDO> groupInfoDOs = groupMemberInfoService.listGroupInfoByUserId(uid);
|
if (groupInfoDOs.size() > 0) {
|
result = new ArrayList<>(groupInfoDOs.size());
|
GroupInfoRespDTO respDTO ;
|
for (GroupInfoDO groupInfoDO : groupInfoDOs) {
|
respDTO = new GroupInfoRespDTO();
|
respDTO.setGroupInfo(groupInfoDO.getInfo());
|
respDTO.setGroupName(groupInfoDO.getName());
|
respDTO.setGroupId(groupInfoDO.getId());
|
respDTO.setStatus(groupInfoDO.getStatus());
|
respDTO.setGroupStrategyId(groupInfoDO.getGroupStrategyId());
|
GroupStatusEnum groupStatusEnum = GroupStatusEnum.parse(groupInfoDO.getStatus());
|
if (groupStatusEnum != null) {
|
respDTO.setStatusDesc(groupStatusEnum.getValue());
|
}
|
result.add(respDTO);
|
}
|
}
|
return result;
|
}
|
|
@Override
|
public List<GroupInfoRespDTO> listGroupInfoByGroupIds(Collection<Long> groupIds) {
|
List<GroupInfoRespDTO> result = Collections.emptyList();
|
if (groupIds != null && groupIds.size() != 0) {
|
List<GroupInfoDO> groupInfoDOS = groupInfoService.listGroupDOByGroupIds(groupIds);
|
if (groupInfoDOS.size() > 0) {
|
result = new ArrayList<>(groupInfoDOS.size());
|
GroupInfoRespDTO respDTO;
|
GroupStatusEnum groupStatusEnum;
|
for (GroupInfoDO groupInfoDO : groupInfoDOS) {
|
respDTO = new GroupInfoRespDTO();
|
respDTO.setGroupId(groupInfoDO.getId());
|
respDTO.setGroupName(groupInfoDO.getName());
|
respDTO.setGroupInfo(groupInfoDO.getInfo());
|
respDTO.setStatus(groupInfoDO.getStatus());
|
groupStatusEnum = GroupStatusEnum.parse(groupInfoDO.getStatus());
|
respDTO.setStatusDesc(groupStatusEnum.getValue());
|
respDTO.setGroupStrategyId(groupInfoDO.getGroupStrategyId());
|
result.add(respDTO);
|
}
|
}
|
}
|
return result;
|
}
|
|
}
|