|
|
@ -20,15 +20,35 @@ package com.epmet.modules.member.service.impl; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; |
|
|
|
import com.epmet.commons.tools.constant.EpmetRoleKeyConstant; |
|
|
|
import com.epmet.commons.tools.constant.NumConstant; |
|
|
|
import com.epmet.commons.tools.exception.EpmetErrorCode; |
|
|
|
import com.epmet.commons.tools.page.PageData; |
|
|
|
import com.epmet.commons.tools.utils.ConvertUtils; |
|
|
|
import com.epmet.commons.tools.constant.FieldConstant; |
|
|
|
import com.epmet.commons.tools.utils.Result; |
|
|
|
import com.epmet.dto.form.UserRoleFormDTO; |
|
|
|
import com.epmet.dto.result.UserRoleResultDTO; |
|
|
|
import com.epmet.modules.feign.EpmetUserFeignClient; |
|
|
|
import com.epmet.modules.group.service.ResiGroupService; |
|
|
|
import com.epmet.modules.member.dao.ResiGroupMemberDao; |
|
|
|
import com.epmet.modules.member.entity.ResiGroupMemberEntity; |
|
|
|
import com.epmet.modules.member.redis.ResiGroupMemberRedis; |
|
|
|
import com.epmet.modules.member.service.GroupMemeberOperationService; |
|
|
|
import com.epmet.modules.member.service.ResiGroupMemberService; |
|
|
|
import com.epmet.resi.group.constant.EnterGroupTypeConstant; |
|
|
|
import com.epmet.resi.group.constant.LeaderFlagConstant; |
|
|
|
import com.epmet.resi.group.constant.MemberStateConstant; |
|
|
|
import com.epmet.resi.group.dto.UserRoleDTO; |
|
|
|
import com.epmet.resi.group.dto.group.ResiGroupDTO; |
|
|
|
import com.epmet.resi.group.dto.member.GroupMemeberOperationDTO; |
|
|
|
import com.epmet.resi.group.dto.member.ResiGroupMemberDTO; |
|
|
|
import com.epmet.resi.group.dto.member.form.*; |
|
|
|
import com.epmet.resi.group.dto.member.result.ApplyingMemberResultDTO; |
|
|
|
import com.epmet.resi.group.dto.member.result.GroupMemberListResultDTO; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.slf4j.Logger; |
|
|
|
import org.slf4j.LoggerFactory; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
@ -45,80 +65,233 @@ import java.util.Map; |
|
|
|
*/ |
|
|
|
@Service |
|
|
|
public class ResiGroupMemberServiceImpl extends BaseServiceImpl<ResiGroupMemberDao, ResiGroupMemberEntity> implements ResiGroupMemberService { |
|
|
|
private Logger logger = LoggerFactory.getLogger(getClass()); |
|
|
|
@Autowired |
|
|
|
private ResiGroupMemberRedis resiGroupMemberRedis; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private ResiGroupMemberRedis resiGroupMemberRedis; |
|
|
|
|
|
|
|
@Override |
|
|
|
public PageData<ResiGroupMemberDTO> page(Map<String, Object> params) { |
|
|
|
IPage<ResiGroupMemberEntity> page = baseDao.selectPage( |
|
|
|
getPage(params, FieldConstant.CREATED_TIME, false), |
|
|
|
getWrapper(params) |
|
|
|
); |
|
|
|
return getPageData(page, ResiGroupMemberDTO.class); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<ResiGroupMemberDTO> list(Map<String, Object> params) { |
|
|
|
List<ResiGroupMemberEntity> entityList = baseDao.selectList(getWrapper(params)); |
|
|
|
|
|
|
|
return ConvertUtils.sourceToTarget(entityList, ResiGroupMemberDTO.class); |
|
|
|
} |
|
|
|
|
|
|
|
private QueryWrapper<ResiGroupMemberEntity> getWrapper(Map<String, Object> params){ |
|
|
|
String id = (String)params.get(FieldConstant.ID_HUMP); |
|
|
|
|
|
|
|
QueryWrapper<ResiGroupMemberEntity> wrapper = new QueryWrapper<>(); |
|
|
|
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); |
|
|
|
|
|
|
|
return wrapper; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public ResiGroupMemberDTO get(String id) { |
|
|
|
ResiGroupMemberEntity entity = baseDao.selectById(id); |
|
|
|
return ConvertUtils.sourceToTarget(entity, ResiGroupMemberDTO.class); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public void save(ResiGroupMemberDTO dto) { |
|
|
|
ResiGroupMemberEntity entity = ConvertUtils.sourceToTarget(dto, ResiGroupMemberEntity.class); |
|
|
|
insert(entity); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public void update(ResiGroupMemberDTO dto) { |
|
|
|
ResiGroupMemberEntity entity = ConvertUtils.sourceToTarget(dto, ResiGroupMemberEntity.class); |
|
|
|
updateById(entity); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public void delete(String[] ids) { |
|
|
|
// 逻辑删除(@TableLogic 注解)
|
|
|
|
baseDao.deleteBatchIds(Arrays.asList(ids)); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param groupId |
|
|
|
* @param userId |
|
|
|
* @return com.epmet.resi.group.dto.member.ResiGroupMemberDTO |
|
|
|
* @Author yinzuomei |
|
|
|
* @Description 根据群id, 用户id查询成员信息 |
|
|
|
* @Date 2020/3/29 18:28 |
|
|
|
**/ |
|
|
|
@Override |
|
|
|
public ResiGroupMemberDTO getResiGroupMember(String groupId, String userId) { |
|
|
|
QueryWrapper<ResiGroupMemberEntity> wrapper = new QueryWrapper<>(); |
|
|
|
wrapper.eq(StringUtils.isNotBlank(groupId), "RESI_GROUP_ID", groupId) |
|
|
|
.eq(StringUtils.isNotBlank(userId), "CUSTOMER_USER_ID", userId); |
|
|
|
List<ResiGroupMemberEntity> list = baseDao.selectList(wrapper); |
|
|
|
if (null == list || list.size() == 0) { |
|
|
|
return null; |
|
|
|
} |
|
|
|
return ConvertUtils.sourceToTarget(list.get(0), ResiGroupMemberDTO.class); |
|
|
|
} |
|
|
|
@Autowired |
|
|
|
private GroupMemeberOperationService groupMemeberOperationService; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private ResiGroupService resiGroupService; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private ResiGroupMemberService resiGroupMemberService; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private EpmetUserFeignClient epmetUserFeignClient; |
|
|
|
|
|
|
|
@Override |
|
|
|
public PageData<ResiGroupMemberDTO> page(Map<String, Object> params) { |
|
|
|
IPage<ResiGroupMemberEntity> page = baseDao.selectPage( |
|
|
|
getPage(params, FieldConstant.CREATED_TIME, false), |
|
|
|
getWrapper(params) |
|
|
|
); |
|
|
|
return getPageData(page, ResiGroupMemberDTO.class); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<ResiGroupMemberDTO> list(Map<String, Object> params) { |
|
|
|
List<ResiGroupMemberEntity> entityList = baseDao.selectList(getWrapper(params)); |
|
|
|
|
|
|
|
return ConvertUtils.sourceToTarget(entityList, ResiGroupMemberDTO.class); |
|
|
|
} |
|
|
|
|
|
|
|
private QueryWrapper<ResiGroupMemberEntity> getWrapper(Map<String, Object> params) { |
|
|
|
String id = (String) params.get(FieldConstant.ID_HUMP); |
|
|
|
|
|
|
|
QueryWrapper<ResiGroupMemberEntity> wrapper = new QueryWrapper<>(); |
|
|
|
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); |
|
|
|
|
|
|
|
return wrapper; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public ResiGroupMemberDTO get(String id) { |
|
|
|
ResiGroupMemberEntity entity = baseDao.selectById(id); |
|
|
|
return ConvertUtils.sourceToTarget(entity, ResiGroupMemberDTO.class); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public void save(ResiGroupMemberDTO dto) { |
|
|
|
ResiGroupMemberEntity entity = ConvertUtils.sourceToTarget(dto, ResiGroupMemberEntity.class); |
|
|
|
insert(entity); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public void update(ResiGroupMemberDTO dto) { |
|
|
|
ResiGroupMemberEntity entity = ConvertUtils.sourceToTarget(dto, ResiGroupMemberEntity.class); |
|
|
|
updateById(entity); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public void delete(String[] ids) { |
|
|
|
// 逻辑删除(@TableLogic 注解)
|
|
|
|
baseDao.deleteBatchIds(Arrays.asList(ids)); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param groupId |
|
|
|
* @param userId |
|
|
|
* @return com.epmet.resi.group.dto.member.ResiGroupMemberDTO |
|
|
|
* @Author yinzuomei |
|
|
|
* @Description 根据群id, 用户id查询成员信息 |
|
|
|
* @Date 2020/3/29 18:28 |
|
|
|
**/ |
|
|
|
@Override |
|
|
|
public ResiGroupMemberDTO getResiGroupMember(String groupId, String userId) { |
|
|
|
QueryWrapper<ResiGroupMemberEntity> wrapper = new QueryWrapper<>(); |
|
|
|
wrapper.eq(StringUtils.isNotBlank(groupId), "RESI_GROUP_ID", groupId) |
|
|
|
.eq(StringUtils.isNotBlank(userId), "CUSTOMER_USER_ID", userId); |
|
|
|
List<ResiGroupMemberEntity> list = baseDao.selectList(wrapper); |
|
|
|
if (null == list || list.size() == 0) { |
|
|
|
return null; |
|
|
|
} |
|
|
|
return ConvertUtils.sourceToTarget(list.get(0), ResiGroupMemberDTO.class); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param applyJoinGroupFormDTO |
|
|
|
* @return com.epmet.commons.tools.utils.Result |
|
|
|
* @Author yinzuomei |
|
|
|
* @Description 申请加入小组 |
|
|
|
* @Date 2020/3/29 20:01 |
|
|
|
**/ |
|
|
|
@Override |
|
|
|
public Result applyJoinGroup(ApplyJoinGroupFormDTO applyJoinGroupFormDTO) { |
|
|
|
//校验是否已经注册
|
|
|
|
ResiGroupDTO resiGroupDTO = resiGroupService.get(applyJoinGroupFormDTO.getGroupId()); |
|
|
|
if (null != resiGroupDTO) { |
|
|
|
UserRoleDTO userRoleDTO = this.checkPartyMemberOrWarmHeated(applyJoinGroupFormDTO.getApp(), |
|
|
|
applyJoinGroupFormDTO.getUserId(), |
|
|
|
resiGroupDTO.getCustomerId()); |
|
|
|
if (NumConstant.ZERO_STR.equals(userRoleDTO.getRegisteredResiFlag())) { |
|
|
|
Result errorResult = new Result(); |
|
|
|
errorResult.setCode(EpmetErrorCode.CANNOT_CREATE_GROUP.getValue()); |
|
|
|
errorResult.setMsg(EpmetErrorCode.CANNOT_CREATE_GROUP.getName()); |
|
|
|
return errorResult; |
|
|
|
} |
|
|
|
} |
|
|
|
//插入一条待审核的记录
|
|
|
|
GroupMemeberOperationDTO groupMemeberOperation = new GroupMemeberOperationDTO(); |
|
|
|
groupMemeberOperation.setGroupId(applyJoinGroupFormDTO.getGroupId()); |
|
|
|
groupMemeberOperation.setCustomerUserId(applyJoinGroupFormDTO.getUserId()); |
|
|
|
groupMemeberOperation.setGroupId(applyJoinGroupFormDTO.getGroupId()); |
|
|
|
groupMemeberOperation.setOperateDes(applyJoinGroupFormDTO.getOperateDes()); |
|
|
|
groupMemeberOperation.setOperateStatus(MemberStateConstant.UNDER_AUDITTING); |
|
|
|
groupMemeberOperation.setEnterGroupType(EnterGroupTypeConstant.JOIN); |
|
|
|
groupMemeberOperation.setCreatedBy(applyJoinGroupFormDTO.getUserId()); |
|
|
|
groupMemeberOperationService.save(groupMemeberOperation); |
|
|
|
return new Result(); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param groupMemberListFormDTO |
|
|
|
* @return com.epmet.commons.tools.utils.Result |
|
|
|
* @Author yinzuomei |
|
|
|
* @Description |
|
|
|
* @Date 2020/3/30 21:15 |
|
|
|
**/ |
|
|
|
@Override |
|
|
|
public Result<List<GroupMemberListResultDTO>> getGroupMemberList(GroupMemberListFormDTO groupMemberListFormDTO) { |
|
|
|
int pageIndex = (groupMemberListFormDTO.getPageNo() - NumConstant.ONE) * groupMemberListFormDTO.getPageSize(); |
|
|
|
groupMemberListFormDTO.setPageNo(pageIndex); |
|
|
|
List<GroupMemberListResultDTO> list = baseDao.selectListGroupMember(groupMemberListFormDTO); |
|
|
|
return new Result<List<GroupMemberListResultDTO>>().ok(list); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param applyingMemberFormDTO |
|
|
|
* @return com.epmet.commons.tools.utils.Result<java.util.List < com.epmet.resi.group.dto.member.result.ApplyingMemberResultDTO>> |
|
|
|
* @Author yinzuomei |
|
|
|
* @Description 查看入群待审核列表 |
|
|
|
* @Date 2020/3/30 21:38 |
|
|
|
**/ |
|
|
|
@Override |
|
|
|
public Result<List<ApplyingMemberResultDTO>> getApplyingMember(ApplyingMemberFormDTO applyingMemberFormDTO) { |
|
|
|
int pageIndex = (applyingMemberFormDTO.getPageNo() - NumConstant.ONE) * applyingMemberFormDTO.getPageSize(); |
|
|
|
applyingMemberFormDTO.setPageNo(pageIndex); |
|
|
|
List<ApplyingMemberResultDTO> list = baseDao.selectListApplyingMember(applyingMemberFormDTO); |
|
|
|
return new Result<List<ApplyingMemberResultDTO>>().ok(list); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param agreeApplyFormDTO |
|
|
|
* @return com.epmet.commons.tools.utils.Result |
|
|
|
* @Author yinzuomei |
|
|
|
* @Description 组长同意入群 |
|
|
|
* @Date 2020/3/30 22:07 |
|
|
|
**/ |
|
|
|
@Override |
|
|
|
public Result agreeApply(AgreeApplyFormDTO agreeApplyFormDTO) { |
|
|
|
//修改操作状态
|
|
|
|
GroupMemeberOperationDTO groupMemeberOperationDTO = groupMemeberOperationService.get(agreeApplyFormDTO.getApplyId()); |
|
|
|
groupMemeberOperationDTO.setOperateStatus(MemberStateConstant.APPROVED); |
|
|
|
groupMemeberOperationDTO.setUpdatedBy(agreeApplyFormDTO.getUserId()); |
|
|
|
groupMemeberOperationService.update(groupMemeberOperationDTO); |
|
|
|
//加入群成员关系表
|
|
|
|
ResiGroupMemberDTO resiGroupMemberDTO = new ResiGroupMemberDTO(); |
|
|
|
resiGroupMemberDTO.setCustomerUserId(groupMemeberOperationDTO.getCustomerUserId()); |
|
|
|
resiGroupMemberDTO.setResiGroupId(groupMemeberOperationDTO.getGroupId()); |
|
|
|
resiGroupMemberDTO.setGroupLeaderFlag(LeaderFlagConstant.GROUP_MEMBER); |
|
|
|
resiGroupMemberDTO.setEnterGroupType(groupMemeberOperationDTO.getEnterGroupType()); |
|
|
|
resiGroupMemberDTO.setStatus(MemberStateConstant.APPROVED); |
|
|
|
resiGroupMemberDTO.setCreatedBy(groupMemeberOperationDTO.getCustomerUserId()); |
|
|
|
resiGroupMemberService.save(resiGroupMemberDTO); |
|
|
|
//修改群统计值
|
|
|
|
UserRoleDTO userRoleDTO = checkPartyMemberOrWarmHeated(agreeApplyFormDTO.getApp(), |
|
|
|
groupMemeberOperationDTO.getCustomerUserId(), |
|
|
|
agreeApplyFormDTO.getCustomerId()); |
|
|
|
baseDao.updateResiGroupStatistical(groupMemeberOperationDTO.getGroupId(), userRoleDTO); |
|
|
|
return new Result(); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param disagreeApplyFormDTO |
|
|
|
* @return com.epmet.commons.tools.utils.Result |
|
|
|
* @Author yinzuomei |
|
|
|
* @Description 组长拒绝入群 |
|
|
|
* @Date 2020/3/30 22:07 |
|
|
|
**/ |
|
|
|
@Override |
|
|
|
public Result disAgreeApply(DisagreeApplyFormDTO disagreeApplyFormDTO) { |
|
|
|
GroupMemeberOperationDTO groupMemeberOperationDTO = groupMemeberOperationService.get(disagreeApplyFormDTO.getApplyId()); |
|
|
|
groupMemeberOperationDTO.setOperateStatus(MemberStateConstant.REJECTED); |
|
|
|
groupMemeberOperationDTO.setOperateDes(disagreeApplyFormDTO.getOperateDesc()); |
|
|
|
groupMemeberOperationDTO.setUpdatedBy(disagreeApplyFormDTO.getUserId()); |
|
|
|
groupMemeberOperationService.update(groupMemeberOperationDTO); |
|
|
|
return new Result(); |
|
|
|
} |
|
|
|
|
|
|
|
private UserRoleDTO checkPartyMemberOrWarmHeated(String app, String userId, String customerId) { |
|
|
|
UserRoleDTO userRoleDTO = new UserRoleDTO(); |
|
|
|
UserRoleFormDTO userRoleFormDTO = new UserRoleFormDTO(); |
|
|
|
userRoleFormDTO.setApp(app); |
|
|
|
userRoleFormDTO.setCustomerId(customerId); |
|
|
|
userRoleFormDTO.setUserId(userId); |
|
|
|
Result<List<UserRoleResultDTO>> userRoleListResult = epmetUserFeignClient.getUserRoleInfo(userRoleFormDTO); |
|
|
|
if (!userRoleListResult.success()) { |
|
|
|
logger.info("获取用户角色feign调用失败" + userRoleListResult.getMsg()); |
|
|
|
return userRoleDTO; |
|
|
|
} |
|
|
|
List<UserRoleResultDTO> userRoleList = userRoleListResult.getData(); |
|
|
|
if (null == userRoleList || userRoleList.size() == 0) { |
|
|
|
return userRoleDTO; |
|
|
|
} |
|
|
|
for (UserRoleResultDTO userRoleResultDTO : userRoleList) { |
|
|
|
if (EpmetRoleKeyConstant.PARTYMEMBER.equals(userRoleResultDTO.getRoleKey())) { |
|
|
|
userRoleDTO.setPartymemberFlag(NumConstant.ONE_STR); |
|
|
|
} |
|
|
|
if (EpmetRoleKeyConstant.WARMHEARTED.equals(userRoleResultDTO.getRoleKey())) { |
|
|
|
userRoleDTO.setWarmHeartedFlag(NumConstant.ONE_STR); |
|
|
|
} |
|
|
|
if (EpmetRoleKeyConstant.REGISTERED_RESI.equals(userRoleResultDTO.getRoleKey())) { |
|
|
|
userRoleDTO.setRegisteredResiFlag(NumConstant.ONE_STR); |
|
|
|
} |
|
|
|
} |
|
|
|
return userRoleDTO; |
|
|
|
} |
|
|
|
} |
|
|
|