From b7358e4081a71093a9af42bc381227ffce67cbe7 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 7 Feb 2025 18:02:28 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4=20S?= =?UTF-8?q?uperBuilder=20=E6=B3=A8=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/request/ImGroupOperationReq.java | 2 ++ .../im/ImGroupRemoveMembersEventHandler.java | 15 ++++++++------- .../service/impl/ChangeRecordServiceImpl.java | 2 ++ 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationReq.java index 9b4141d9..8f39d8be 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationReq.java @@ -5,6 +5,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; import javax.validation.constraints.NotNull; @@ -18,6 +19,7 @@ import javax.validation.constraints.NotNull; @Data @AllArgsConstructor @NoArgsConstructor +@SuperBuilder public class ImGroupOperationReq { /** * 变洽签 ID diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupRemoveMembersEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupRemoveMembersEventHandler.java index 16e77ba2..c2ab3bf6 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupRemoveMembersEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupRemoveMembersEventHandler.java @@ -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 diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 21a3b40a..a92cb018 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -1179,6 +1179,8 @@ public class ChangeRecordServiceImpl extends ServiceImpl Date: Fri, 7 Feb 2025 18:15:08 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat(REQ-3300)=20-=20=E8=B0=83=E6=95=B4=20S?= =?UTF-8?q?uperBuilder=20=E6=B3=A8=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nanopart/visa/api/request/ImGroupOperationClearReq.java | 4 ++-- .../axzo/nanopart/visa/api/request/ImGroupOperationReq.java | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationClearReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationClearReq.java index 40133437..16c53bc0 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationClearReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationClearReq.java @@ -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; diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationReq.java index 8f39d8be..53075e8a 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/ImGroupOperationReq.java @@ -2,7 +2,6 @@ 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; @@ -15,11 +14,10 @@ import javax.validation.constraints.NotNull; * @author wangli * @since 2025-02-05 17:30 */ -@Builder @Data -@AllArgsConstructor -@NoArgsConstructor @SuperBuilder +@NoArgsConstructor +@AllArgsConstructor public class ImGroupOperationReq { /** * 变洽签 ID From 15aa6efbb70cc8fc6064b5774770209f898ea7a7 Mon Sep 17 00:00:00 2001 From: xudawei Date: Fri, 7 Feb 2025 18:26:06 +0800 Subject: [PATCH 3/4] feat: (REQ-3300) fix-NPE --- .../visa/server/service/impl/ChangeRecordServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index 21a3b40a..a20c0f15 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -803,10 +803,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl getFilter(VisaChangePageSearchReq filter) { - Set visaList = changeRecordConfirmService.permissionVisaData("", filter.getCurrentPersonId(), filter.getCurrentWorkspaceId(), filter.getCurrentOuId()); +// Set visaList = changeRecordConfirmService.permissionVisaData("", filter.getCurrentPersonId(), filter.getCurrentWorkspaceId(), filter.getCurrentOuId()); return 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()) From cb54953be48e4a607ed9dde241b717060fcec687 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 7 Feb 2025 19:01:22 +0800 Subject: [PATCH 4/4] =?UTF-8?q?feat(REQ-3300)=20-=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E5=8F=91=E9=80=81=E5=8D=A1=E7=89=87=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visa/api/constant/VisaConstant.java | 2 +- .../im/ImGroupAddMembersEventHandler.java | 4 +- .../im/ImGroupsCreatedEventHandler.java | 50 +++++++++++++++++-- .../service/impl/ChangeRecordServiceImpl.java | 4 +- 4 files changed, 50 insertions(+), 10 deletions(-) diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java index 044acc99..37ca9a19 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/constant/VisaConstant.java @@ -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"; diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java index 63bb5a0d..d27d18b1 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupAddMembersEventHandler.java @@ -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); diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java index c00ef1cf..b7fcb97a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/im/ImGroupsCreatedEventHandler.java @@ -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 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); // 普通群消息 diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java index f6624183..58593a04 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordServiceImpl.java @@ -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