feat(REQ-3300) - 调整 IM 群成员变动后,需操作对应的投票记录
This commit is contained in:
parent
34bbba9f01
commit
a1f33a364d
@ -1,6 +1,7 @@
|
||||
package cn.axzo.nanopart.visa.server.service;
|
||||
|
||||
import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum;
|
||||
import cn.axzo.nanopart.visa.api.request.ImGroupOperationClearReq;
|
||||
import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq;
|
||||
import cn.axzo.nanopart.visa.api.request.ImGroupTipsQueryReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq;
|
||||
@ -45,7 +46,7 @@ public interface ChangeRecordRelationService extends IService<ChangeRecordRelati
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
Boolean clearImOperationParticipate(ImGroupOperationReq req);
|
||||
Boolean clearImOperationParticipate(ImGroupOperationClearReq req);
|
||||
|
||||
/**
|
||||
* IM 群聊界面,查询当前人的 tips 横条
|
||||
|
||||
@ -1,13 +1,17 @@
|
||||
package cn.axzo.nanopart.visa.server.service.impl;
|
||||
|
||||
import cn.axzo.basics.common.util.AssertUtil;
|
||||
import cn.axzo.basics.profiles.dto.basic.PersonProfileDto;
|
||||
import cn.axzo.basics.common.util.NumberUtil;
|
||||
import cn.axzo.basics.profiles.dto.basic.PersonProfileDto;
|
||||
import cn.axzo.framework.domain.ServiceException;
|
||||
import cn.axzo.im.center.api.vo.PersonAccountAttribute;
|
||||
import cn.axzo.im.center.api.vo.req.SendChatMessageRequest;
|
||||
import cn.axzo.im.center.common.enums.AppTypeEnum;
|
||||
import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum;
|
||||
import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum;
|
||||
import cn.axzo.nanopart.visa.api.enums.VisaRelationVarTypeEnum;
|
||||
import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum;
|
||||
import cn.axzo.nanopart.visa.api.request.ImGroupOperationClearReq;
|
||||
import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq;
|
||||
import cn.axzo.nanopart.visa.api.request.ImGroupTipsQueryReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeTempCreateReq;
|
||||
@ -17,6 +21,7 @@ import cn.axzo.nanopart.visa.server.domain.ChangeRecord;
|
||||
import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation;
|
||||
import cn.axzo.nanopart.visa.server.dto.VisaRelationDto;
|
||||
import cn.axzo.nanopart.visa.server.mapper.ChangeRecordRelationDao;
|
||||
import cn.axzo.nanopart.visa.server.rpc.MsgCenterGateway;
|
||||
import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway;
|
||||
import cn.axzo.nanopart.visa.server.service.ChangeRecordRelationService;
|
||||
import cn.axzo.nanopart.visa.server.service.ChangeRecordService;
|
||||
@ -24,6 +29,7 @@ import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
@ -37,6 +43,7 @@ import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_ID;
|
||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_OWNER_TIPS;
|
||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_PARTICIPATE_TIPS;
|
||||
|
||||
@ -51,6 +58,7 @@ import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_PARTICIPA
|
||||
public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRelationDao, ChangeRecordRelation> implements ChangeRecordRelationService {
|
||||
private final ChangeRecordService changeRecordService;
|
||||
private final VisaProfileGateway visaProfileGateway;
|
||||
private final MsgCenterGateway msgCenterGateway;
|
||||
|
||||
/**
|
||||
* 保存
|
||||
@ -130,6 +138,9 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
|
||||
}
|
||||
return this.lambdaQuery().eq(ChangeRecordRelation::getVisaId, dto.getVisaId())
|
||||
.eq(ChangeRecordRelation::getVarName, dto.getVarName())
|
||||
.eq(StringUtils.hasText(dto.getContent()), ChangeRecordRelation::getContent, dto.getContent())
|
||||
.eq(StringUtils.hasText(dto.getContentExt()), ChangeRecordRelation::getContentExt, dto.getContentExt())
|
||||
.eq(Objects.nonNull(dto.getCreateBy()), ChangeRecordRelation::getCreateBy, dto.getCreateBy())
|
||||
.eq(ChangeRecordRelation::getIsDelete, 0).list();
|
||||
}
|
||||
|
||||
@ -145,23 +156,47 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
|
||||
relation.setVarName(VisaRelationFieldEnum.IM_GROUP_PARTICIPATE.getCode());
|
||||
relation.setVarExt(req.getButtonType().getCode());
|
||||
relation.setVarType(VisaRelationVarTypeEnum.LONG.getType());
|
||||
relation.setContentExt(String.valueOf(req.getOperatorOuId()));
|
||||
relation.setContent(String.valueOf(req.getOperatorWorkspaceId()));
|
||||
relation.setContentExt(String.valueOf(req.getOperatorWorkspaceId()));
|
||||
relation.setContent(String.valueOf(req.getOperatorOuId()));
|
||||
relation.setCreateBy(req.getOperatorPersonId());
|
||||
relation.setUpdateBy(req.getOperatorPersonId());
|
||||
|
||||
save(relation);
|
||||
|
||||
// 发送“同意”、“拒绝”的文案至群内
|
||||
SendChatMessageRequest msgRequest = new SendChatMessageRequest();
|
||||
msgRequest.setAsTextMessage(req.getButtonType().getDesc() + "!");
|
||||
msgRequest.setImReceiveAccounts(Sets.newHashSet(String.valueOf(req.getImGroupId())));
|
||||
msgRequest.setSender(PersonAccountAttribute.builder()
|
||||
.personId(String.valueOf(req.getOperatorPersonId()))
|
||||
.ouId(req.getOperatorOuId())
|
||||
.workspaceId(req.getOperatorWorkspaceId())
|
||||
.appType(AppTypeEnum.CMP)
|
||||
.build());
|
||||
msgRequest.setBizId(IM_GROUP_BIZ_INFO_VISA_ID + ":" + req.getVisaId());
|
||||
msgCenterGateway.sendMsgToGroup(msgRequest);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean clearImOperationParticipate(ImGroupOperationReq req) {
|
||||
public Boolean clearImOperationParticipate(ImGroupOperationClearReq req) {
|
||||
ChangeRecord record = changeRecordService.getById(req.getVisaId());
|
||||
AssertUtil.notNull(record, "未找到变洽签记录");
|
||||
AssertUtil.isTrue(Objects.equals(record.getImGroupId(), req.getImGroupId()), "IM 群信息不匹配");
|
||||
|
||||
deleteByVisaId(req.getVisaId(), Lists.newArrayList(VisaRelationFieldEnum.IM_GROUP_PARTICIPATE));
|
||||
if (Boolean.TRUE.equals(req.getClearAll())) {
|
||||
deleteByVisaId(req.getVisaId(), Lists.newArrayList(VisaRelationFieldEnum.IM_GROUP_PARTICIPATE));
|
||||
} else {
|
||||
List<ChangeRecordRelation> byCondition = findByCondition(VisaRelationDto.builder()
|
||||
.visaId(req.getVisaId())
|
||||
.varName(VisaRelationFieldEnum.IM_GROUP_PARTICIPATE.getCode())
|
||||
.content(String.valueOf(req.getOperatorOuId()))
|
||||
.contentExt(NumberUtil.isPositiveNumber(req.getOperatorWorkspaceId()) ? String.valueOf(req.getOperatorWorkspaceId()) : null)
|
||||
.createBy(req.getOperatorPersonId())
|
||||
.build());
|
||||
removeByIds(byCondition.stream().map(ChangeRecordRelation::getVisaId).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -172,6 +207,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
|
||||
|
||||
ImGroupTipsResp resp = new ImGroupTipsResp();
|
||||
resp.setStatus(record.getStatus());
|
||||
resp.setStatusText(record.getStatus().getDesc());
|
||||
List<ChangeRecordRelation> imGroupParticipate = findByCondition(VisaRelationDto.builder()
|
||||
.visaId(req.getVisaId())
|
||||
.varName(VisaRelationFieldEnum.IM_GROUP_PARTICIPATE.getCode())
|
||||
|
||||
@ -31,7 +31,7 @@ import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum;
|
||||
import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum;
|
||||
import cn.axzo.nanopart.visa.api.request.ChangeRecordButtonOperationReq;
|
||||
import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest;
|
||||
import cn.axzo.nanopart.visa.api.request.ImGroupOperationReq;
|
||||
import cn.axzo.nanopart.visa.api.request.ImGroupOperationClearReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeApproveCreateReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeApproveOnlyReq;
|
||||
import cn.axzo.nanopart.visa.api.request.VisaChangeDiscussCreateReq;
|
||||
@ -123,7 +123,9 @@ import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATIO
|
||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_TASK_ORDER;
|
||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_RELATION_VISA_ORDER;
|
||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_TOPIC;
|
||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_RECORD_ID;
|
||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_OWNER_WORKSPACE_ID;
|
||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_ID;
|
||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_VISA_TYPE;
|
||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_PENDING_TOPIC;
|
||||
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY;
|
||||
|
||||
@ -577,7 +579,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
||||
// 群头像
|
||||
request.setAvatar("https://axzo-obs-public.obs.cn-north-4.myhuaweicloud.com:443/obs-public/obs-public/visa-group.png");
|
||||
request.setMemberLimit(100L);
|
||||
request.setBizGroupInfo(Maps.of(IM_GROUP_BIZ_INFO_RECORD_ID, visaId));
|
||||
request.setBizGroupInfo(Maps.of(IM_GROUP_BIZ_INFO_VISA_ID, visaId,
|
||||
IM_GROUP_BIZ_INFO_OWNER_WORKSPACE_ID, req.getRelationWorkspaceId(),
|
||||
IM_GROUP_BIZ_INFO_VISA_TYPE, req.getType().getCode()));
|
||||
GroupCreateResponse imGroup = msgCenterGateway.createImGroup(request);
|
||||
|
||||
updateImInfo(visaId, imGroup);
|
||||
@ -1182,10 +1186,11 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
|
||||
public void reDecision(ChangeRecordButtonOperationReq req) {
|
||||
validOperationPermission(req.getVisaId(), req.getOperatorPersonId(), req.getOperatorOuId(), req.getOperatorWorkspaceId());
|
||||
|
||||
changeRecordRelationService.clearImOperationParticipate(ImGroupOperationReq.builder()
|
||||
.visaId(req.getVisaId())
|
||||
.imGroupId(req.getImGroupId())
|
||||
.build());
|
||||
ImGroupOperationClearReq build = new ImGroupOperationClearReq();
|
||||
build.setVisaId(req.getVisaId());
|
||||
build.setImGroupId(req.getImGroupId());
|
||||
build.setClearAll(true);
|
||||
changeRecordRelationService.clearImOperationParticipate(build);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Loading…
Reference in New Issue
Block a user