xgb пре 1 дан
родитељ
комит
82a2f473dd

+ 28 - 0
fs-company-app/src/main/java/com/fs/app/controller/CommonController.java

@@ -29,6 +29,7 @@ import com.fs.his.service.IFsCityService;
 import com.fs.his.service.OpenImAsyncService;
 import com.fs.im.dto.OpenImMsgCallBackResponse;
 import com.fs.im.util.JsonUtil;
+import com.fs.im.vo.OpenImBeforeCreateGroupVO;
 import com.fs.im.vo.OpenImMsgCallBackVO;
 import com.fs.jpush.service.JpushService;
 
@@ -242,6 +243,33 @@ public class CommonController extends AppBaseController {
         }
     }
 
+	@ApiOperation("openIm创建群组之前的回调")
+	@PostMapping(value = "/callbackBeforeCreateGroupCommand")
+	public OpenImMsgCallBackResponse callbackBeforeCreateGroupCommand(@RequestBody String body) {
+		if (StringUtils.isBlank(body)) {
+			log.warn("OpenIM 回调 body 为空");
+			return OpenImMsgCallBackResponse.fail("body为空");
+		}
+		try {
+			OpenImBeforeCreateGroupVO messageInfo = JsonUtil.fromJson(body, OpenImBeforeCreateGroupVO.class);
+			if (messageInfo == null || StringUtils.isBlank(messageInfo.getCreatorUserID())) {
+				log.warn("OpenIM 回调参数无效: {}", body);
+				return OpenImMsgCallBackResponse.fail("参数无效");
+			}
+
+			if(!messageInfo.getCreatorUserID().startsWith("C")){
+				log.info("非销售不允许创群");
+				return OpenImMsgCallBackResponse.fail("非销售不允许创群");
+			}
+
+			return OpenImMsgCallBackResponse.success();
+		} catch (Exception e) {
+			// 解析失败仍返回成功,避免 OpenIM 反复重试;异常已记录便于排查
+			log.error("OpenIM 回调解析失败, body={}", body, e);
+			return OpenImMsgCallBackResponse.fail("参数异常");
+		}
+	}
+
 	/**
 	 * 手动转码
 	 *

+ 65 - 0
fs-service/src/main/java/com/fs/im/vo/OpenImBeforeCreateGroupVO.java

@@ -0,0 +1,65 @@
+package com.fs.im.vo;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class OpenImBeforeCreateGroupVO {
+
+    private String callbackCommand;
+
+    @JsonProperty("groupID")
+    private String groupID;
+
+    private String groupName;
+
+    private String notification;
+
+    private String introduction;
+
+    private String faceURL;
+
+    @JsonProperty("ownerUserID")
+    private String ownerUserID;
+
+    private Long createTime;
+
+    private Integer memberCount;
+
+    private String ex;
+
+    private Integer status;
+
+    @JsonProperty("creatorUserID")
+    private String creatorUserID;
+
+    private Integer groupType;
+
+    private Integer needVerification;
+
+    private Integer lookMemberInfo;
+
+    private Integer applyMemberFriend;
+
+    private Long notificationUpdateTime;
+
+    @JsonProperty("notificationUserID")
+    private String notificationUserID;
+
+    private List<InitMember> initMemberList;
+
+    private String recvID;
+
+    private String type;
+
+    @Data
+    public static class InitMember {
+
+        @JsonProperty("userID")
+        private String userID;
+
+        private Integer roleLevel;
+    }
+}