feat(notify): 待办/抄送消息补 jumpApp 页面归属(B0 直批配套补提交)——bizUrl 落地页场景 jumpApp=instance.bizType(接收方按它查基址),未传 bizUrl 回落办理页留空按 bizType;UserMsgClient.sendUserMsg 增 jumpApp 形参;CallbackPushService/ConditionRouteService 跟随 B 系列回调前缀改造;测试补 jumpApp 断言
build / build-push (push) Successful in 49s

This commit is contained in:
chenxing
2026-09-28 19:23:29 +08:00
parent 31476ef707
commit 2f8daa12a5
6 changed files with 68 additions and 28 deletions
@@ -72,14 +72,16 @@ public class UserMsgNotifier {
String title = "您有新的待办:" + safe(instance.getBizTitle());
String content = "「" + safe(instance.getBizTitle()) + "」等待您审批"
+ (task.getNodeName() == null ? "" : "(" + task.getNodeName() + ")");
// 跳转路径:办件自带 bizUrl(应用详情页)优先——应用内审批免跳流程中心;
// 未传 bizUrl 回落流程中心办理页 /task/{taskId}
String jumpPath = instance.getBizUrl() == null || instance.getBizUrl().trim().isEmpty()
? "/task/" + task.getId() : instance.getBizUrl();
// 跳转路径:办件自带 bizUrl(业务方详情页,改造后为裸相对路径)优先——应用内审批免跳
// 流程中心,页面归属=业务方(jumpApp=instance.bizType,接收方按它查基址拼绝对地址);
// 未传 bizUrl 回落流程中心办理页 /task/{taskId},页面属自己(jumpApp 留空按 bizType 回落)
boolean useBizUrl = instance.getBizUrl() != null && !instance.getBizUrl().trim().isEmpty();
String jumpPath = useBizUrl ? instance.getBizUrl() : "/task/" + task.getId();
String jumpApp = useBizUrl ? instance.getBizType() : null;
userMsgClient.sendUserMsg(instance.getSchId().intValue(),
Collections.singletonList(task.getAssigneeId()), 2,
"flow.task", String.valueOf(instance.getId()), title, content,
jumpPath, "task:" + task.getId(), 30);
jumpPath, jumpApp, "task:" + task.getId(), 30);
userMsgClient.todoInc(instance.getSchId().intValue(),
Collections.singletonList(task.getAssigneeId()), 1);
}
@@ -120,7 +122,7 @@ public class UserMsgNotifier {
userMsgClient.sendUserMsg(instance.getSchId().intValue(), targets, 1,
"flow.returned", String.valueOf(instance.getId()),
"办件被退回:" + safe(instance.getBizTitle()), content.toString(),
"/instance/" + instance.getId(),
"/instance/" + instance.getId(), null,
"returned:" + instance.getId() + ":" + instance.getVersion(), 30);
}
@@ -141,13 +143,15 @@ public class UserMsgNotifier {
String content = "「" + bizTitle + "」抄送给您"
+ (nodeName == null || String.valueOf(nodeName).isEmpty()
? "" : "(" + nodeName + ")");
String jumpPath = instance.getBizUrl() == null || instance.getBizUrl().trim().isEmpty()
? "/instance/" + instance.getId() : instance.getBizUrl();
// 跳转与任务到达同策略:bizUrl(业务方详情页,页面归属=业务方)优先,空回落办件详情(属自己)
boolean useBizUrl = instance.getBizUrl() != null && !instance.getBizUrl().trim().isEmpty();
String jumpPath = useBizUrl ? instance.getBizUrl() : "/instance/" + instance.getId();
String jumpApp = useBizUrl ? instance.getBizType() : null;
userMsgClient.sendUserMsg(instance.getSchId().intValue(),
Collections.singletonList((Integer) ccUserId), 1,
"flow.cc", String.valueOf(instance.getId()),
"您有新的抄送:" + bizTitle, content,
jumpPath, "cc:" + ccId, 30);
jumpPath, jumpApp, "cc:" + ccId, 30);
}
private void notifyResult(FlowEvent event) {
@@ -181,7 +185,7 @@ public class UserMsgNotifier {
Collections.singletonList(instance.getSubmitterId()), 1,
"flow.result", String.valueOf(instance.getId()),
"办件状态更新:" + bizTitle, content.toString(),
"/instance/" + instance.getId(),
"/instance/" + instance.getId(), null,
"result:" + instance.getId() + ":" + instance.getVersion(), 30);
}
@@ -199,7 +203,7 @@ public class UserMsgNotifier {
Collections.singletonList(task.getAssigneeId()), 1,
"flow.urge", String.valueOf(instance.getId()),
"催办提醒:" + safe(instance.getBizTitle()), content,
"/task/" + task.getId(), "urge:" + task.getId() + ":" + count, 7);
"/task/" + task.getId(), null, "urge:" + task.getId() + ":" + count, 7);
}
private FlwInstance instanceOf(Long instanceId) {