Merge remote-tracking branch 'origin/feature/REQ-3300' into feature/REQ-3300

# Conflicts:
#	visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java
This commit is contained in:
chenwenjian 2025-02-08 10:01:05 +08:00
commit ae7a384cec
7 changed files with 67 additions and 24 deletions

View File

@ -29,7 +29,7 @@ public interface VisaConstant {
/**
* IM 群扩展信息群主 workspaceId
*/
String IM_GROUP_BIZ_INFO_OWNER_WORKSPACE_ID = "ownerWorkspaceId";
String IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID = "initiatorWorkspaceId";
// **************** 业务传入审批的表单项组件的唯一的 KEY *****************
// 单号
String FORM_FIELD_NO = "no";

View File

@ -13,10 +13,10 @@ import lombok.experimental.SuperBuilder;
* @since 2025-02-07 15:39
*/
@EqualsAndHashCode(callSuper = true)
@SuperBuilder
@Data
@AllArgsConstructor
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class ImGroupOperationClearReq extends ImGroupOperationReq{
private Boolean clearAll;

View File

@ -2,9 +2,9 @@ package cn.axzo.nanopart.visa.api.request;
import cn.axzo.nanopart.visa.api.enums.VisaButtonTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import javax.validation.constraints.NotNull;
@ -14,10 +14,10 @@ import javax.validation.constraints.NotNull;
* @author wangli
* @since 2025-02-05 17:30
*/
@Builder
@Data
@AllArgsConstructor
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class ImGroupOperationReq {
/**
* 变洽签 ID

View File

@ -28,7 +28,7 @@ import java.util.Map;
import java.util.Objects;
import static cn.axzo.im.center.api.enums.MqEventType.GROUP_ADD_MEMBERS;
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_INITIATOR_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;
@ -68,7 +68,7 @@ public class ImGroupAddMembersEventHandler implements EventHandler, Initializing
String visaId = (String) group.getBizGroupInfo().getOrDefault(IM_GROUP_BIZ_INFO_VISA_ID, "");
String visaType = (String) group.getBizGroupInfo().getOrDefault(IM_GROUP_BIZ_INFO_VISA_TYPE, "");
Long workspaceId = (Long) group.getBizGroupInfo().getOrDefault(IM_GROUP_BIZ_INFO_OWNER_WORKSPACE_ID, 0L);
Long workspaceId = (Long) group.getBizGroupInfo().getOrDefault(IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID, 0L);
PersonProfileDto memberProfile = profileMap.getOrDefault(member.getPersonId(), null);
PersonProfileDto ownerProfile = profileMap.getOrDefault(group.getOwnerPersonId(), null);

View File

@ -57,13 +57,14 @@ public class ImGroupRemoveMembersEventHandler implements EventHandler, Initializ
private void removeMemberVote(GroupInfo group, GroupMemberInfo member) {
Long visaId = (Long) group.getBizGroupInfo().getOrDefault(IM_GROUP_BIZ_INFO_VISA_ID, "");
ImGroupOperationClearReq build = new ImGroupOperationClearReq();
build.setClearAll(false);
build.setImGroupId(group.getTid());
build.setVisaId(visaId);
build.setOperatorPersonId(member.getPersonId());
build.setOperatorOuId(member.getPersonOuId());
changeRecordRelationService.clearImOperationParticipate(build);
changeRecordRelationService.clearImOperationParticipate(ImGroupOperationClearReq.builder()
.clearAll(false)
.imGroupId(group.getTid())
.visaId(visaId)
.operatorPersonId(member.getPersonId())
.operatorOuId(member.getPersonOuId())
.build());
}
@Override

View File

@ -14,7 +14,16 @@ import cn.axzo.im.center.api.vo.resp.GroupGetOwnerResponse;
import cn.axzo.im.center.common.enums.AppTypeEnum;
import cn.axzo.msg.center.service.dto.PeerPerson;
import cn.axzo.msg.center.service.pending.request.CardSendRequest;
import cn.axzo.nanopart.visa.api.enums.VisaConfirmBizTypeEnum;
import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum;
import cn.axzo.nanopart.visa.server.config.RefreshableConfiguration;
import cn.axzo.nanopart.visa.server.domain.ChangeRecord;
import cn.axzo.nanopart.visa.server.domain.ChangeRecordConfirm;
import cn.axzo.nanopart.visa.server.dto.VisaConfirmDto;
import cn.axzo.nanopart.visa.server.rpc.MsgCenterGateway;
import cn.axzo.nanopart.visa.server.rpc.VisaProfileGateway;
import cn.axzo.nanopart.visa.server.service.ChangeRecordConfirmService;
import cn.axzo.nanopart.visa.server.service.ChangeRecordService;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Sets;
@ -26,12 +35,14 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import static cn.axzo.im.center.api.enums.MqEventType.GROUP_CREATED;
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_INITIATOR_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.MSG_CENTER_APP_CODE;
/**
@ -47,6 +58,14 @@ public class ImGroupsCreatedEventHandler implements EventHandler, InitializingBe
private EventConsumer eventConsumer;
@Resource
private MsgCenterGateway msgCenterGateway;
@Resource
private RefreshableConfiguration refreshableConfiguration;
@Resource
private VisaProfileGateway visaProfileGateway;
@Resource
private ChangeRecordService changeRecordService;
@Resource
private ChangeRecordConfirmService changeRecordConfirmService;
@Override
public void onEvent(Event event, EventConsumer.Context context) {
@ -69,17 +88,38 @@ public class ImGroupsCreatedEventHandler implements EventHandler, InitializingBe
GroupGetOwnerResponse groupOwner = msgCenterGateway.getGroupOwner(ownerRequest);
AssertUtil.isTrue(Objects.nonNull(groupOwner) && Objects.nonNull(groupOwner.getOwner()), "im group owner is null");
GroupMemberInfo owner = groupOwner.getOwner();
Long visaId = (Long) bizGroupInfo.getOrDefault(IM_GROUP_BIZ_INFO_VISA_ID, "");
String visaType = (String) bizGroupInfo.getOrDefault(IM_GROUP_BIZ_INFO_VISA_TYPE, "");
Long ownerWorkspaceId = (Long) bizGroupInfo.getOrDefault(IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID, 0L);
ChangeRecord visa = changeRecordService.getById(visaId);
AssertUtil.notNull(visa, "visa record is null");
List<ChangeRecordConfirm> creators = changeRecordConfirmService.findByCondition(VisaConfirmDto.builder()
.visaId(visaId)
.bizType(VisaConfirmBizTypeEnum.CREATE)
.build());
AssertUtil.notEmpty(creators, "creators is empty");
// 发送卡片
CardSendRequest cardRequest = new CardSendRequest();
cardRequest.setAppCode(MSG_CENTER_APP_CODE);
cardRequest.setTemplateCode("");
Long visaId = (Long) bizGroupInfo.getOrDefault(IM_GROUP_BIZ_INFO_VISA_ID, "");
cardRequest.setTemplateCode(refreshableConfiguration.getImGroupCardTemplateCode());
cardRequest.setBizCode(IM_GROUP_BIZ_INFO_VISA_ID + ":" + visaId);
Long ownerWorkspaceId = (Long) bizGroupInfo.getOrDefault(IM_GROUP_BIZ_INFO_OWNER_WORKSPACE_ID, 0L);
cardRequest.setSender(PeerPerson.create(owner.getPersonId(), owner.getPersonOuId(), ownerWorkspaceId));
cardRequest.setImSenderAccountAppType(AppTypeEnum.CMP);
cardRequest.setImReceiveAccounts(imReceiveAccounts);
cardRequest.setBizParam(new JSONObject(Maps.of("topic", "")));
// TODO
cardRequest.setBizParam(new JSONObject(Maps.of(
"topic", group.getName(),
"reason", visa.getReason(),
"initiatorName", creators.get(0),
"initiatorUnitName", "",
"visaType", VisaTypeEnum.valueOfCode(visaType).getDesc(),
"amountChange", ""
)));
msgCenterGateway.sendCardToCroup(cardRequest);
// 普通群消息

View File

@ -123,7 +123,7 @@ 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_OWNER_WORKSPACE_ID;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_INITIATOR_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;
@ -587,7 +587,7 @@ 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_VISA_ID, visaId,
IM_GROUP_BIZ_INFO_OWNER_WORKSPACE_ID, req.getRelationWorkspaceId(),
IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID, req.getRelationWorkspaceId(),
IM_GROUP_BIZ_INFO_VISA_TYPE, req.getType().getCode()));
GroupCreateResponse imGroup = msgCenterGateway.createImGroup(request);
@ -803,9 +803,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
private LambdaQueryChainWrapper<ChangeRecord> getFilter(VisaChangePageSearchReq filter) {
Set<Long> visaList = changeRecordConfirmService.permissionVisaData("", filter.getCurrentPersonId(), filter.getCurrentWorkspaceId(), filter.getCurrentOuId());
// Set<Long> visaList = changeRecordConfirmService.permissionVisaData("", filter.getCurrentPersonId(), filter.getCurrentWorkspaceId(), filter.getCurrentOuId());
LambdaQueryChainWrapper<ChangeRecord> queryChainWrapper = lambdaQuery()
.in(ChangeRecord::getId, visaList)
// .in(ChangeRecord::getId, visaList)
.eq(NumberUtil.isPositiveNumber(filter.getWorkspaceId()), ChangeRecord::getRelationWorkspaceId, filter.getWorkspaceId())
.eq(Objects.nonNull(filter.getType()), ChangeRecord::getType, filter.getType())
.eq(StringUtils.hasText(filter.getKeyword()), ChangeRecord::getNo, filter.getKeyword())
@ -1188,6 +1188,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
@Override
public Long approveCreateOnlyVisaChangeRecord(VisaChangeApproveOnlyReq req) {
ChangeRecord visa = getById(req.getVisaId());
req.setOperatorWorkspaceId(visa.getRelationWorkspaceId());
validOperationPermission(req.getVisaId(), req.getOperatorPersonId(), req.getOperatorOuId(), req.getOperatorWorkspaceId());
VisaChangeApproveCreateReq createReq = buildVisaChangeApproveCreateReqByVisaId(req.getVisaId());