Jelajahi Sumber

Merge remote-tracking branch 'refs/remotes/origin/master' into develop_rayson

# Conflicts:
#	menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/UserController.java
#	menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/user/ImUserResoVO.java
#	menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/UserTokenReqVO.java
#	menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/WukongApiResp.java
rayson 1 tahun lalu
induk
melakukan
1e0e57100a
43 mengubah file dengan 1256 tambahan dan 601 penghapusan
  1. 1 1
      citu-framework/citu-common/src/main/java/com/citu/framework/common/exception/enums/ServiceErrorCodeRange.java
  2. 3 0
      citu-framework/citu-common/src/main/java/com/citu/framework/common/util/spring/SpringUtils.java
  3. 1 1
      menduner/menduner-im-api/src/main/java/com/citu/module/menduner/im/enums/ApiConstants.java
  4. 3 9
      menduner/menduner-im-api/src/main/java/com/citu/module/menduner/im/enums/ErrorCodeConstants.java
  5. 4 4
      menduner/menduner-im-biz/Dockerfile
  6. 0 2
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/MendunerIMApplication.java
  7. 0 4
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/config/package-info.java
  8. 45 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/UserController.java
  9. 45 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/WuKongMessageController.java
  10. 68 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/WuKongSessionController.java
  11. 19 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/WuKongWebhookController.java
  12. 25 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/user/ImUserInfoVo.java
  13. 44 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/user/ImUserReqVo.java
  14. 53 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/user/ImUserResoVO.java
  15. 49 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/ChannelMessageSyncMessageHeaderVO.java
  16. 135 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/ChannelMessageSyncMessageVO.java
  17. 114 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/ChannelMessageSyncReqVo.java
  18. 67 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/ChannelMessageSyncResp.java
  19. 50 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/ConversationSyncReqVo.java
  20. 123 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/ConversationSyncRespVo.java
  21. 52 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/ConversationsDeleteReqVo.java
  22. 56 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/UserTokenReqVO.java
  23. 22 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/WukongApiResp.java
  24. 31 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/WukongEventBaseVo.java
  25. 7 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/WukongOnlineStatusEventVo.java
  26. 1 1
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/convert/UserConvert.java
  27. 15 5
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/dal/dataobject/UserDO.java
  28. 0 4
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/framework/datapermission/package-info.java
  29. 0 4
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/framework/security/core/package-info.java
  30. 0 4
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/package-info.java
  31. 10 2
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/UserService.java
  32. 62 5
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/UserServiceImpl.java
  33. 15 3
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/wukong/WuKongApiService.java
  34. 8 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/wukong/WuKongMessageService.java
  35. 36 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/wukong/WuKongMessageServiceImpl.java
  36. 11 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/wukong/WuKongSessionService.java
  37. 57 0
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/wukong/WuKongSessionServiceImpl.java
  38. 2 3
      menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/wukong/WuKongUserServiceImpl.java
  39. 0 177
      menduner/menduner-im-biz/src/main/resources/application-dev.yaml
  40. 0 205
      menduner/menduner-im-biz/src/main/resources/application-local.yaml
  41. 0 146
      menduner/menduner-im-biz/src/main/resources/application.yaml
  42. 0 20
      menduner/menduner-im-biz/src/main/resources/bootstrap-local.yaml
  43. 22 1
      menduner/menduner-im-biz/src/main/resources/bootstrap.yaml

+ 1 - 1
citu-framework/citu-common/src/main/java/com/citu/framework/common/exception/enums/ServiceErrorCodeRange.java

@@ -48,6 +48,6 @@ public class ServiceErrorCodeRange {
     // 模块 menduner-reward [1_110_000_000 ~ 1_110_999_999]
 
 
-    // 模块 menduner-im [1_200_000_000 ~ 1_110_999_999]
+    // 模块 menduner-im [1_120_000_000 ~ 1_120_999_999]
 
 }

+ 3 - 0
citu-framework/citu-common/src/main/java/com/citu/framework/common/util/spring/SpringUtils.java

@@ -1,6 +1,7 @@
 package com.citu.framework.common.util.spring;
 
 import cn.hutool.extra.spring.SpringUtil;
+import lombok.extern.slf4j.Slf4j;
 
 import java.util.Objects;
 
@@ -9,6 +10,7 @@ import java.util.Objects;
  *
  * @author 芋道源码
  */
+@Slf4j
 public class SpringUtils extends SpringUtil {
 
     /**
@@ -18,6 +20,7 @@ public class SpringUtils extends SpringUtil {
      */
     public static boolean isProd() {
         String activeProfile = getActiveProfile();
+//        log.info("current activeProfile->{}",activeProfile);
         return Objects.equals("prod", activeProfile);
     }
 

+ 1 - 1
menduner/menduner-im-api/src/main/java/com/citu/module/menduner/im/enums/ApiConstants.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.reward.enums;
+package com.citu.module.menduner.im.enums;
 
 import com.citu.framework.common.enums.RpcConstants;
 

+ 3 - 9
menduner/menduner-im-api/src/main/java/com/citu/module/menduner/im/enums/ErrorCodeConstants.java

@@ -1,15 +1,11 @@
-package com.citu.module.menduner.reward.enums;
+package com.citu.module.menduner.im.enums;
 
 import com.citu.framework.common.exception.ErrorCode;
 import com.citu.framework.common.exception.enums.GlobalErrorCodeConstants;
 import com.citu.framework.common.exception.enums.ServiceErrorCodeRange;
 
 /**
- * 门墩儿 积分 错误码枚举类
- * 错误码增减原则 规范
- * 1、每个模块都有单独的错误码;
- * 2、假设招聘职位模块要效验企业id,则在”招聘职位模块"下新增"企业id不能为空"错误码,不允许引用"企业模块"的"id不能为空";
- * 3、列外,所有模块都可以引用 {公共 1_110_000_000} or {@link GlobalErrorCodeConstants} 的错误码,除此之外不可引用不同业务块的错误码;
+ * 门墩儿 im 错误码枚举类
  * 参见 {@link ServiceErrorCodeRange}
  *
  * @author Rayson
@@ -17,9 +13,7 @@ import com.citu.framework.common.exception.enums.ServiceErrorCodeRange;
 public interface ErrorCodeConstants {
 
     // ========== 公共配置  1_110_000_000 ==========
-    ErrorCode POINT_RULE_CONFIG_STATUS_CAN_NOT_BE_EMPTY = new ErrorCode(1_110_000_001, "状态不能为空");
-    ErrorCode POINT_RULE_CONFIG_ID_CAN_NOT_BE_EMPTY = new ErrorCode(1_110_000_002, "id不能为空");
-    ErrorCode USER_ID_CAN_NOT_BE_EMPTY = new ErrorCode(1_110_000_003, "用户id不能为空");
+    ErrorCode USER_ID_CAN_NOT_BE_EMPTY = new ErrorCode(1_120_000_001, "用户id不能为空");
 
 
 }

+ 4 - 4
menduner/menduner-im-biz/Dockerfile

@@ -3,14 +3,14 @@
 FROM adoptopenjdk/openjdk11
 
 ## 将后端项目的 Jar 文件,复制到镜像中
-ADD target/menduner-system-biz.jar app.jar
+ADD target/menduner-im-biz.jar app.jar
 
 ## 设置 TZ 时区
 ## 设置 JAVA_OPTS 环境变量,可通过 docker run -e "JAVA_OPTS=" 进行覆盖
-ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms512m -Xmx512m"
+ENV TZ=Asia/Shanghai
 
-## 暴露后端项目的 48080 端口
-EXPOSE 48200
+## 暴露后端项目的 48201 端口
+EXPOSE 48201
 
 ## 启动后端项目
 CMD java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar app.jar

+ 0 - 2
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/MendunerIMApplication.java

@@ -8,8 +8,6 @@ import org.springframework.context.ConfigurableApplicationContext;
 
 /**
  * 项目的启动类
- * 门墩儿 招聘模块 启动类
- * @author Rayson
  */
 @SpringBootApplication
 @EnableConfigurationProperties(WuKongConfig.class)

+ 0 - 4
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/config/package-info.java

@@ -1,4 +0,0 @@
-/**
- * @author Rayson
- */
-package com.citu.module.menduner.im.config;

+ 45 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/UserController.java

@@ -0,0 +1,45 @@
+package com.citu.module.menduner.im.controller.app;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.security.core.annotations.PreAuthenticated;
+import com.citu.module.menduner.im.controller.app.base.user.ImUserReqVo;
+import com.citu.module.menduner.im.controller.app.base.user.ImUserResoVO;
+import com.citu.module.menduner.im.service.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+
+/**
+ * @eo.api-type http
+ * @eo.groupName 新门墩儿.聊天.用户信息获取
+ * @eo.path /app-api
+ */
+
+@RestController
+public class UserController {
+
+    UserService userService;
+
+    /**
+     * @eo.name 获取聊天秘钥信息
+     * @eo.url /im/user/get
+     * @eo.method post
+     * @eo.request-type json
+     * @param reqVo
+     * @return CommonResult
+     */
+    @PreAuthenticated
+    @PostMapping("/im/user/get")
+    public CommonResult<ImUserResoVO> getUser(@Valid  @RequestBody ImUserReqVo reqVo){
+        return userService.getUser(reqVo);
+    }
+
+
+    @Autowired
+    public void setUserService(UserService userService) {
+        this.userService = userService;
+    }
+}

+ 45 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/WuKongMessageController.java

@@ -0,0 +1,45 @@
+package com.citu.module.menduner.im.controller.app;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.security.core.annotations.PreAuthenticated;
+import com.citu.module.menduner.im.controller.app.base.wukong.ChannelMessageSyncReqVo;
+import com.citu.module.menduner.im.service.wukong.WuKongMessageService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * @eo.api-type http
+ * @eo.groupName 新门墩儿.聊天.消息相关
+ * @eo.path /app-api/im
+ */
+@RestController
+@RequestMapping("/im")
+public class WuKongMessageController {
+
+    private WuKongMessageService service;
+
+
+
+    /**
+     * @eo.name 拉取频道消息
+     * @eo.url im/channel/messagesync
+     * @eo.method post
+     * @eo.request-type json
+     * @param reqVo
+     * @return CommonResult
+     */
+    @PreAuthenticated
+    @PostMapping("/im/channel/messagesync")
+    public CommonResult channelMessageSync(@RequestBody ChannelMessageSyncReqVo reqVo){
+      return service.channelMessageSync(reqVo);
+    }
+
+    @Autowired
+    public void setService(WuKongMessageService service) {
+        this.service = service;
+    }
+}

+ 68 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/WuKongSessionController.java

@@ -0,0 +1,68 @@
+package com.citu.module.menduner.im.controller.app;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.security.core.annotations.PreAuthenticated;
+import com.citu.module.menduner.im.controller.app.base.wukong.ConversationSyncReqVo;
+import com.citu.module.menduner.im.controller.app.base.wukong.ConversationsDeleteReqVo;
+import com.citu.module.menduner.im.service.wukong.WuKongSessionService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @eo.api-type http
+ * @eo.groupName 新门墩儿.聊天.回话相关
+ * @eo.path /app-api/im
+ */
+
+@RestController
+@RequestMapping("/im")
+public class WuKongSessionController {
+
+    WuKongSessionService service;
+
+    /**
+     * @eo.name 同步最近会话
+     * @eo.url /conversation/sync
+     * @eo.method post
+     * @eo.request-type json
+     * @param reqVo
+     * @return CommonResult
+     */
+    @PreAuthenticated
+    @PostMapping("/conversation/sync")
+    public CommonResult conversatioSync(@RequestBody ConversationSyncReqVo reqVo){
+        return  service.conversatioSync(reqVo);
+    }
+
+    /**
+     * @eo.name 删除最近回话
+     * @eo.url /conversation/delete
+     * @eo.method post
+     * @eo.request-type json
+     * @param reqVo
+     * @return CommonResult
+     */
+    @PreAuthenticated
+    @PostMapping("/conversation/delete")
+    public CommonResult conversatioSyncDelete(@RequestBody ConversationsDeleteReqVo reqVo){
+        return service.conversatioSyncDelete(reqVo);
+    }
+
+
+
+    /**
+     * @eo.name setService
+     * @eo.url
+     * @eo.method get
+     * @eo.request-type formdata
+     * @param service
+     * @return void
+     */
+    @Autowired
+    public void setService(WuKongSessionService service) {
+        this.service = service;
+    }
+}

+ 19 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/WuKongWebhookController.java

@@ -0,0 +1,19 @@
+package com.citu.module.menduner.im.controller.app;
+
+import com.citu.framework.common.pojo.CommonResult;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@RestController
+public class WuKongWebhookController {
+
+
+//    @PostMapping("/wukong/webhook")
+//    public CommonResult wukongWebhook(@RequestParam("event")String event, @RequestParam Map reqVo){
+//
+//    }
+
+}

+ 25 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/user/ImUserInfoVo.java

@@ -0,0 +1,25 @@
+package com.citu.module.menduner.im.controller.app.base.user;
+
+public class ImUserInfoVo {
+
+    private Long userId;
+
+    private String uid;
+
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getUid() {
+        return uid;
+    }
+
+    public void setUid(String uid) {
+        this.uid = uid;
+    }
+}

+ 44 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/user/ImUserReqVo.java

@@ -0,0 +1,44 @@
+package com.citu.module.menduner.im.controller.app.base.user;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+
+import javax.validation.constraints.NotNull;
+import java.util.HashMap;
+import java.util.Map;
+
+public class ImUserReqVo {
+    @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "6824")
+    @NotNull(message = "{1_099_000_006}")
+    private Long userId;
+
+    private Long enterpriseId;
+
+
+//    private Map content=new HashMap();
+
+    public Long getEnterpriseId() {
+        return enterpriseId;
+    }
+
+
+    public void setEnterpriseId(Long enterpriseId) {
+        this.enterpriseId = enterpriseId;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+
+//    public Map getContent() {
+//        return content;
+//    }
+//
+//    public void setContent(Map content) {
+//        this.content = content;
+//    }
+}

+ 53 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/user/ImUserResoVO.java

@@ -0,0 +1,53 @@
+package com.citu.module.menduner.im.controller.app.base.user;
+
+public class ImUserResoVO {
+    private String uid;
+
+    private String token;
+
+    private String tcpUrl;
+
+    private String wsUrl;
+
+    private String wssUrl;
+
+    public String getUid() {
+        return uid;
+    }
+
+    public void setUid(String uid) {
+        this.uid = uid;
+    }
+
+    public String getToken() {
+        return token;
+    }
+
+    public void setToken(String token) {
+        this.token = token;
+    }
+
+    public String getTcpUrl() {
+        return tcpUrl;
+    }
+
+    public void setTcpUrl(String tcpUrl) {
+        this.tcpUrl = tcpUrl;
+    }
+
+    public String getWsUrl() {
+        return wsUrl;
+    }
+
+    public void setWsUrl(String wsUrl) {
+        this.wsUrl = wsUrl;
+    }
+
+    public String getWssUrl() {
+        return wssUrl;
+    }
+
+    public void setWssUrl(String wssUrl) {
+        this.wssUrl = wssUrl;
+    }
+}

+ 49 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/ChannelMessageSyncMessageHeaderVO.java

@@ -0,0 +1,49 @@
+package com.citu.module.menduner.im.controller.app.base.wukong;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ChannelMessageSyncMessageHeaderVO {
+
+
+    /**
+     * 否不存储消息 0.存储 1.不存储
+     */
+    @JsonProperty("no_persist")
+    private Integer noPersist;
+
+    /**
+     * 是否显示红点计数,0.不显示 1.显示
+     */
+    @JsonProperty("red_dot")
+    private Integer redDot;
+
+    /**
+     * 否是写扩散,这里一般是0,只有cmd消息才是1
+     */
+    @JsonProperty("sync_once")
+    private Integer syncOnce;
+
+    public Integer getNoPersist() {
+        return noPersist;
+    }
+
+    public void setNoPersist(Integer noPersist) {
+        this.noPersist = noPersist;
+    }
+
+    public Integer getRedDot() {
+        return redDot;
+    }
+
+    public void setRedDot(Integer redDot) {
+        this.redDot = redDot;
+    }
+
+    public Integer getSyncOnce() {
+        return syncOnce;
+    }
+
+    public void setSyncOnce(Integer syncOnce) {
+        this.syncOnce = syncOnce;
+    }
+}

+ 135 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/ChannelMessageSyncMessageVO.java

@@ -0,0 +1,135 @@
+package com.citu.module.menduner.im.controller.app.base.wukong;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ChannelMessageSyncMessageVO {
+
+    private  ChannelMessageSyncMessageHeaderVO header;
+    /**
+     * 消息设置 消息设置是一个 uint8的数字类型 为1个字节,完全由第三方自定义 比如定义第8位为已读未读回执标记,开启则为0000 0001 = 1
+     */
+    private Integer  setting;
+
+    /**
+     *  消息全局唯一ID
+     */
+    @JsonProperty("message_id")
+    private Long messageId;
+
+    /**
+     * 客户端消息编号,可用此字段去重
+     */
+    @JsonProperty("client_msg_no")
+    private String clientMsgNo;
+    /**
+     *  消息序列号 (用户唯一,有序递增)
+     */
+    @JsonProperty("message_seq")
+    private String messageSeq;
+
+    /**
+     * 发送者用户id
+     */
+    @JsonProperty("from_uid")
+    private String fromUid;
+    /**
+     * 频道ID
+     */
+    @JsonProperty("channel_id")
+    private String channelId;
+    /**
+     * 频道类型 1.个人频道 2.群频道
+     */
+    @JsonProperty("channel_type")
+    private Integer channelType;
+    /**
+     * 消息10位到秒的时间戳
+     */
+    @JsonProperty("timestamp")
+    private Long timestamp;
+    /**
+     * base64编码的消息内容
+     */
+    @JsonProperty("payload")
+    private String payload;
+
+    public ChannelMessageSyncMessageHeaderVO getHeader() {
+        return header;
+    }
+
+    public void setHeader(ChannelMessageSyncMessageHeaderVO header) {
+        this.header = header;
+    }
+
+    public Integer getSetting() {
+        return setting;
+    }
+
+    public void setSetting(Integer setting) {
+        this.setting = setting;
+    }
+
+    public Long getMessageId() {
+        return messageId;
+    }
+
+    public void setMessageId(Long messageId) {
+        this.messageId = messageId;
+    }
+
+    public String getClientMsgNo() {
+        return clientMsgNo;
+    }
+
+    public void setClientMsgNo(String clientMsgNo) {
+        this.clientMsgNo = clientMsgNo;
+    }
+
+    public String getMessageSeq() {
+        return messageSeq;
+    }
+
+    public void setMessageSeq(String messageSeq) {
+        this.messageSeq = messageSeq;
+    }
+
+    public String getFromUid() {
+        return fromUid;
+    }
+
+    public void setFromUid(String fromUid) {
+        this.fromUid = fromUid;
+    }
+
+    public String getChannelId() {
+        return channelId;
+    }
+
+    public void setChannelId(String channelId) {
+        this.channelId = channelId;
+    }
+
+    public Integer getChannelType() {
+        return channelType;
+    }
+
+    public void setChannelType(Integer channelType) {
+        this.channelType = channelType;
+    }
+
+    public Long getTimestamp() {
+        return timestamp;
+    }
+
+    public void setTimestamp(Long timestamp) {
+        this.timestamp = timestamp;
+    }
+
+    public String getPayload() {
+        return payload;
+    }
+
+    public void setPayload(String payload) {
+        this.payload = payload;
+    }
+}

+ 114 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/ChannelMessageSyncReqVo.java

@@ -0,0 +1,114 @@
+package com.citu.module.menduner.im.controller.app.base.wukong;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ChannelMessageSyncReqVo {
+
+    /**
+     *  当前登录用户uid,后台自动填充
+     */
+    @JsonProperty("login_uid")
+    private String  loginUid;
+
+
+    private Long enterpriseId;
+    /**
+     * 频道ID
+     */
+    @JsonProperty("channel_id")
+    private String channelId;
+
+    /**
+     * 频道类型
+     */
+    @JsonProperty("channel_type")
+    private Integer channelType;
+
+    /**
+     * 开始消息列号
+     */
+    @JsonProperty("start_message_seq")
+    private Integer startMessageSeq=1;
+
+    /**
+     * 开始消息列号
+     */
+    @JsonProperty("end_message_seq")
+    private Integer endMessageSeq=100;
+
+    /**
+     * 消息数量限制
+     */
+    @JsonProperty("limit")
+    private Integer limit=100;
+
+    /**
+     * 拉取模式 0:向下拉取 1:向上拉取
+     */
+    @JsonProperty("pull_mode")
+    private Integer pullMode=0;
+
+    public String getLoginUid() {
+        return loginUid;
+    }
+
+    public void setLoginUid(String loginUid) {
+        this.loginUid = loginUid;
+    }
+
+    public String getChannelId() {
+        return channelId;
+    }
+
+    public void setChannelId(String channelId) {
+        this.channelId = channelId;
+    }
+
+    public Integer getChannelType() {
+        return channelType;
+    }
+
+    public void setChannelType(Integer channelType) {
+        this.channelType = channelType;
+    }
+
+    public Integer getStartMessageSeq() {
+        return startMessageSeq;
+    }
+
+    public void setStartMessageSeq(Integer startMessageSeq) {
+        this.startMessageSeq = startMessageSeq;
+    }
+
+    public Integer getEndMessageSeq() {
+        return endMessageSeq;
+    }
+
+    public void setEndMessageSeq(Integer endMessageSeq) {
+        this.endMessageSeq = endMessageSeq;
+    }
+
+    public Integer getLimit() {
+        return limit;
+    }
+
+    public void setLimit(Integer limit) {
+        this.limit = limit;
+    }
+
+    public Integer getPullMode() {
+        return pullMode;
+    }
+
+    public void setPullMode(Integer pullMode) {
+        this.pullMode = pullMode;
+    }
+
+    public Long getEnterpriseId() {
+        return enterpriseId;
+    }
+
+    public void setEnterpriseId(Long enterpriseId) {
+        this.enterpriseId = enterpriseId;
+    }
+}

+ 67 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/ChannelMessageSyncResp.java

@@ -0,0 +1,67 @@
+package com.citu.module.menduner.im.controller.app.base.wukong;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.List;
+
+public class ChannelMessageSyncResp {
+
+
+    /**
+     * 查询的start_message_seq
+     */
+    @JsonProperty("start_message_seq")
+    private Integer   startMessageSeq=0;
+
+
+
+    /**
+     * 查询的end_message_seq
+     */
+    @JsonProperty("end_message_seq")
+    private Integer   endMessageSeq =100;
+
+    /**
+     * 是否有更多  0.无 1.有
+     */
+    private Integer more=1;
+
+
+    private List<ChannelMessageSyncMessageVO> messages;
+
+
+
+
+
+    public Integer getStartMessageSeq() {
+        return startMessageSeq;
+    }
+
+    public void setStartMessageSeq(Integer startMessageSeq) {
+        this.startMessageSeq = startMessageSeq;
+    }
+
+    public Integer getEndMessageSeq() {
+        return endMessageSeq;
+    }
+
+    public void setEndMessageSeq(Integer endMessageSeq) {
+        this.endMessageSeq = endMessageSeq;
+    }
+
+    public Integer getMore() {
+        return more;
+    }
+
+    public void setMore(Integer more) {
+        this.more = more;
+    }
+
+    public List<ChannelMessageSyncMessageVO> getMessages() {
+        return messages;
+    }
+
+    public void setMessages(List<ChannelMessageSyncMessageVO> messages) {
+        this.messages = messages;
+    }
+}

+ 50 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/ConversationSyncReqVo.java

@@ -0,0 +1,50 @@
+package com.citu.module.menduner.im.controller.app.base.wukong;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ConversationSyncReqVo {
+
+    private String uid;
+
+    private Integer version=0;
+
+    private Long enterpriseId;
+
+//    private String last_msg_seqs;
+
+    @JsonProperty("msg_count")
+    private Integer msgCount=20;
+
+
+    public String getUid() {
+        return uid;
+    }
+
+    public void setUid(String uid) {
+        this.uid = uid;
+    }
+
+    public Integer getVersion() {
+        return version;
+    }
+
+    public void setVersion(Integer version) {
+        this.version = version;
+    }
+
+    public Integer getMsgCount() {
+        return msgCount;
+    }
+
+    public void setMsgCount(Integer msgCount) {
+        this.msgCount = msgCount;
+    }
+
+    public Long getEnterpriseId() {
+        return enterpriseId;
+    }
+
+    public void setEnterpriseId(Long enterpriseId) {
+        this.enterpriseId = enterpriseId;
+    }
+}

+ 123 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/ConversationSyncRespVo.java

@@ -0,0 +1,123 @@
+package com.citu.module.menduner.im.controller.app.base.wukong;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.List;
+import java.util.Map;
+
+public class ConversationSyncRespVo {
+
+    /**
+     * 频道ID
+     */
+    @JsonProperty("channel_id")
+    private String channelId;
+
+    /**
+     *  频道类型 1.单聊 2.群聊 3.客服
+     */
+    @JsonProperty("channel_type")
+
+    private String channelType;
+
+    /**
+     * 消息未读数量
+     */
+    @JsonProperty("unread")
+
+    private String unread;
+
+    /**
+     * 10位到秒的时间戳;
+     */
+    @JsonProperty("timestamp")
+
+    private Long  timestamp ;
+
+    /**
+     * last_msg_seq
+     */
+    @JsonProperty("last_msg_seq")
+
+    private Integer lastMsgSeq;
+
+    /**
+     * 最后一条消息的客户端消息编号
+     */
+    @JsonProperty("last_client_msg_no")
+
+    private String lastClientMsgNo;
+    /**
+     * 数据版本编号
+     */
+     private String       version;
+    /**
+     * 最近消息
+     */
+    private List<Map> recents;
+
+
+    public String getChannelId() {
+        return channelId;
+    }
+
+    public void setChannelId(String channelId) {
+        this.channelId = channelId;
+    }
+
+    public String getChannelType() {
+        return channelType;
+    }
+
+    public void setChannelType(String channelType) {
+        this.channelType = channelType;
+    }
+
+    public String getUnread() {
+        return unread;
+    }
+
+    public void setUnread(String unread) {
+        this.unread = unread;
+    }
+
+    public Long getTimestamp() {
+        return timestamp;
+    }
+
+    public void setTimestamp(Long timestamp) {
+        this.timestamp = timestamp;
+    }
+
+    public Integer getLastMsgSeq() {
+        return lastMsgSeq;
+    }
+
+    public void setLastMsgSeq(Integer lastMsgSeq) {
+        this.lastMsgSeq = lastMsgSeq;
+    }
+
+    public String getLastClientMsgNo() {
+        return lastClientMsgNo;
+    }
+
+    public void setLastClientMsgNo(String lastClientMsgNo) {
+        this.lastClientMsgNo = lastClientMsgNo;
+    }
+
+    public String getVersion() {
+        return version;
+    }
+
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+    public List<Map> getRecents() {
+        return recents;
+    }
+
+    public void setRecents(List<Map> recents) {
+        this.recents = recents;
+    }
+}

+ 52 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/ConversationsDeleteReqVo.java

@@ -0,0 +1,52 @@
+package com.citu.module.menduner.im.controller.app.base.wukong;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ConversationsDeleteReqVo {
+
+    /**
+     * 此参数不用传
+     */
+    private String uid;
+
+    private Long enterpriseId;
+
+    @JsonProperty("channel_id")
+    private String channelId;
+
+    @JsonProperty("channel_type")
+    private Integer channelType;
+
+
+    public String getUid() {
+        return uid;
+    }
+
+    public void setUid(String uid) {
+        this.uid = uid;
+    }
+
+    public String getChannelId() {
+        return channelId;
+    }
+
+    public void setChannelId(String channelId) {
+        this.channelId = channelId;
+    }
+
+    public Integer getChannelType() {
+        return channelType;
+    }
+
+    public void setChannelType(Integer channelType) {
+        this.channelType = channelType;
+    }
+
+    public Long getEnterpriseId() {
+        return enterpriseId;
+    }
+
+    public void setEnterpriseId(Long enterpriseId) {
+        this.enterpriseId = enterpriseId;
+    }
+}

+ 56 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/UserTokenReqVO.java

@@ -0,0 +1,56 @@
+package com.citu.module.menduner.im.controller.app.base.wukong;
+
+public class UserTokenReqVO {
+
+    /**
+     * 通信的用户唯一ID,可以随机uuid (建议自己服务端的用户唯一uid) (WuKongIMSDK需要)
+     */
+    private String uid;
+
+    /**
+     * 校验的token,随机uuid(建议使用自己服务端的用户的token)(WuKongIMSDK需要)
+     */
+    private String token;
+
+    /**
+     * 0.app 1.web (相同用户相同设备标记的主设备登录会互相踢,从设备将共存)
+     */
+    private Integer deviceFlag=1;
+
+    /**
+     * 设备等级 0.为从设备 1.为主设备
+     */
+    private Integer deviceLevel=1;
+
+    public String getUid() {
+        return uid;
+    }
+
+    public void setUid(String uid) {
+        this.uid = uid;
+    }
+
+    public String getToken() {
+        return token;
+    }
+
+    public void setToken(String token) {
+        this.token = token;
+    }
+
+    public Integer getDeviceFlag() {
+        return deviceFlag;
+    }
+
+    public void setDeviceFlag(Integer deviceFlag) {
+        this.deviceFlag = deviceFlag;
+    }
+
+    public Integer getDeviceLevel() {
+        return deviceLevel;
+    }
+
+    public void setDeviceLevel(Integer deviceLevel) {
+        this.deviceLevel = deviceLevel;
+    }
+}

+ 22 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/WukongApiResp.java

@@ -0,0 +1,22 @@
+package com.citu.module.menduner.im.controller.app.base.wukong;
+
+public class WukongApiResp {
+
+    private Integer status;
+
+    private Boolean statusBool;
+
+    public Boolean getStatusBool() {
+        return null!=status && 200 == status;
+    }
+
+
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+}

+ 31 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/WukongEventBaseVo.java

@@ -0,0 +1,31 @@
+package com.citu.module.menduner.im.controller.app.base.wukong;
+
+import java.time.LocalDateTime;
+
+public class WukongEventBaseVo {
+
+    /**
+     * 事件名称
+     */
+    private String eventName;
+
+
+
+    private LocalDateTime eventTime=LocalDateTime.now();
+
+    public String getEventName() {
+        return eventName;
+    }
+
+    public void setEventName(String eventName) {
+        this.eventName = eventName;
+    }
+
+    public LocalDateTime getEventTime() {
+        return eventTime;
+    }
+
+    public void setEventTime(LocalDateTime eventTime) {
+        this.eventTime = eventTime;
+    }
+}

+ 7 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/wukong/WukongOnlineStatusEventVo.java

@@ -0,0 +1,7 @@
+package com.citu.module.menduner.im.controller.app.base.wukong;
+
+public class WukongOnlineStatusEventVo extends WukongEventBaseVo{
+
+
+
+}

+ 1 - 1
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/convert/UserConvert.java

@@ -1,6 +1,6 @@
 package com.citu.module.menduner.im.convert;
 
-import com.citu.module.menduner.im.controller.base.user.ImUserResoVO;
+import com.citu.module.menduner.im.controller.app.base.user.ImUserResoVO;
 import com.citu.module.menduner.im.dal.dataobject.UserDO;
 import org.mapstruct.Mapper;
 import org.mapstruct.factory.Mappers;

+ 15 - 5
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/dal/dataobject/UserDO.java

@@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 
 import java.time.LocalDateTime;
+import java.util.Map;
 
 @TableName("im_user")
 public class UserDO {
@@ -13,15 +15,13 @@ public class UserDO {
     @TableId(type= IdType.INPUT)
     private Long userId;
 
-
-
-
-
     private String uid;
 
-
     private String token;
 
+
+    private Long enterpriseId;
+
     private LocalDateTime createTime;
 
     private LocalDateTime updateTime;
@@ -66,4 +66,14 @@ public class UserDO {
     public void setUpdateTime(LocalDateTime updateTime) {
         this.updateTime = updateTime;
     }
+
+    public Long getEnterpriseId() {
+        return enterpriseId;
+    }
+
+    public void setEnterpriseId(Long enterpriseId) {
+        this.enterpriseId = enterpriseId;
+    }
+
+
 }

+ 0 - 4
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/framework/datapermission/package-info.java

@@ -1,4 +0,0 @@
-/**
- * system 模块的数据权限配置
- */
-package com.citu.module.menduner.im.framework.datapermission;

+ 0 - 4
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/framework/security/core/package-info.java

@@ -1,4 +0,0 @@
-/**
- * 占位
- */
-package com.citu.module.menduner.im.framework.security.core;

+ 0 - 4
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/package-info.java

@@ -1,4 +0,0 @@
-/**
- * menduner 招聘模块
- */
-package com.citu.module.menduner.im;

+ 10 - 2
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/UserService.java

@@ -1,9 +1,17 @@
 package com.citu.module.menduner.im.service;
 
 import com.citu.framework.common.pojo.CommonResult;
-import com.citu.module.menduner.im.controller.base.user.ImUserReqVo;
-import com.citu.module.menduner.im.controller.base.user.ImUserResoVO;
+import com.citu.module.menduner.im.controller.app.base.user.ImUserInfoVo;
+import com.citu.module.menduner.im.controller.app.base.user.ImUserReqVo;
+import com.citu.module.menduner.im.controller.app.base.user.ImUserResoVO;
+
+import java.util.List;
+import java.util.Set;
 
 public interface UserService {
     CommonResult<ImUserResoVO> getUser(ImUserReqVo reqVo);
+
+    String getCurrentLoginUid(Long enterpriseId);
+
+    CommonResult<List<ImUserInfoVo>> getUserByUids(Set<String> uids);
 }

+ 62 - 5
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/UserServiceImpl.java

@@ -1,11 +1,14 @@
 package com.citu.module.menduner.im.service;
 
 import cn.hutool.core.util.IdUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.citu.framework.common.exception.enums.GlobalErrorCodeConstants;
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.security.core.util.SecurityFrameworkUtils;
-import com.citu.module.menduner.im.controller.base.user.ImUserReqVo;
-import com.citu.module.menduner.im.controller.base.user.ImUserResoVO;
+import com.citu.module.menduner.common.util.LoginUserContext;
+import com.citu.module.menduner.im.controller.app.base.user.ImUserInfoVo;
+import com.citu.module.menduner.im.controller.app.base.user.ImUserReqVo;
+import com.citu.module.menduner.im.controller.app.base.user.ImUserResoVO;
 import com.citu.module.menduner.im.convert.UserConvert;
 import com.citu.module.menduner.im.dal.dataobject.UserDO;
 import com.citu.module.menduner.im.dal.mysql.UserMapper;
@@ -15,6 +18,10 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
 
 @Service
 public class UserServiceImpl implements UserService{
@@ -24,26 +31,45 @@ public class UserServiceImpl implements UserService{
     WuKongUserService wuKongUserService;
 
 
+    private static final Long DEFAULT_ENTERPRISE_ID = -999L;
+
+
     @Override
     @Transactional()
     public CommonResult<ImUserResoVO> getUser(ImUserReqVo reqVo) {
-        UserDO userDO = mapper.selectById(reqVo.getUserId());
-        Long userLoginId = SecurityFrameworkUtils.getLoginUser().getId();
+
+        if(null==reqVo.getEnterpriseId()){
+            reqVo.setEnterpriseId(DEFAULT_ENTERPRISE_ID);
+        }
+        UserDO userDO = mapper.selectOne(new LambdaQueryWrapper<UserDO>()
+                .eq(UserDO::getUserId,reqVo.getUserId())
+                .eq(UserDO::getEnterpriseId,reqVo.getEnterpriseId())
+        );
+
+        Long userLoginId = LoginUserContext.getUserId();
+        Long loginEnterpriseId = DEFAULT_ENTERPRISE_ID;
+        try{
+            loginEnterpriseId=LoginUserContext.getEnterpriseId();
+        } catch (Exception e){
+
+        }
         if(null == userDO){
             // 开始注册
             userDO =new UserDO();
             userDO.setCreateTime(LocalDateTime.now());
             userDO.setUpdateTime(LocalDateTime.now());
             userDO.setUserId(reqVo.getUserId());
+            userDO.setEnterpriseId(reqVo.getEnterpriseId());
             userDO.setToken(IdUtil.fastSimpleUUID());
             userDO.setUid(IdUtil.fastSimpleUUID());
+//            userDO.setContent(reqVo.getContent());
             mapper.insert(userDO);
             CommonResult<Boolean> booleanCommonResult = wuKongUserService.userToken(userDO.getUid(), userDO.getToken());
             if(!booleanCommonResult.isSuccess()){
                 return CommonResult.error(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR);
             }
         }
-        if(userLoginId!=reqVo.getUserId()){
+        if(!Objects.equals(userLoginId, reqVo.getUserId())  || !Objects.equals(loginEnterpriseId, reqVo.getEnterpriseId()) ){
             userDO.setToken(null);
         }
         ImUserResoVO imUserResoVO = UserConvert.INSTANCE.userDOConvertUserResoVO(userDO);
@@ -53,7 +79,38 @@ public class UserServiceImpl implements UserService{
         return CommonResult.success(imUserResoVO);
     }
 
+    @Override
+    public String getCurrentLoginUid(Long enterpriseId) {
+        enterpriseId = null==enterpriseId?DEFAULT_ENTERPRISE_ID:enterpriseId;
+        Long userLoginId = LoginUserContext.getUserId();
+        UserDO userDO = mapper.selectOne(new LambdaQueryWrapper<UserDO>().eq(UserDO::getUserId,userLoginId).eq(UserDO::getEnterpriseId,enterpriseId));
+
+        if(null == userDO){
+            // 开始注册
+            userDO =new UserDO();
+            userDO.setCreateTime(LocalDateTime.now());
+            userDO.setUpdateTime(LocalDateTime.now());
+            userDO.setUserId(userLoginId);
+            userDO.setToken(IdUtil.fastSimpleUUID());
+            userDO.setUid(IdUtil.fastSimpleUUID());
+            mapper.insert(userDO);
+            CommonResult<Boolean> booleanCommonResult = wuKongUserService.userToken(userDO.getUid(), userDO.getToken());
+            if(!booleanCommonResult.isSuccess()){
+//                 throw new Exception("系统异常!"); //todo
+            }
+        }
+
+        return userDO.getUid();
+    }
 
+    @Override
+    public CommonResult<List<ImUserInfoVo>> getUserByUids(Set<String> uids) {
+        if(null == uids || uids.isEmpty()){
+            return CommonResult.success(new ArrayList<ImUserInfoVo>());
+        }
+        List<UserDO> userDOS = mapper.selectList(new LambdaQueryWrapper<UserDO>().in(UserDO::getUid, uids));
+        return null;
+    }
 
 
     @Autowired

+ 15 - 3
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/wukong/WuKongApiService.java

@@ -1,15 +1,13 @@
 package com.citu.module.menduner.im.service.wukong;
 
 
-import com.citu.module.menduner.im.controller.base.wukong.UserTokenReqVO;
-import com.citu.module.menduner.im.controller.base.wukong.WukongApiResp;
+import com.citu.module.menduner.im.controller.app.base.wukong.*;
 //import com.citu.module.menduner.im.interceptor.WuKongWuKongApiInterceptor;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.List;
-import java.util.Map;
 
 @FeignClient(url = "${im.wukong.url:127.0.0.1:5001}",name = "wulongApiService" )
 public interface WuKongApiService {
@@ -19,4 +17,18 @@ public interface WuKongApiService {
 
     @PostMapping("/user/onlinestatus")
     public  List<String> userOnlinestatus(@RequestBody List<String> uids );
+
+
+    @PostMapping("/conversation/sync")
+    public List<ConversationSyncRespVo> conversationSync(@RequestBody ConversationSyncReqVo reqVo);
+
+
+    @PostMapping("/conversations/delete")
+    public WukongApiResp conversationsDelete(@RequestBody ConversationsDeleteReqVo reqVO);
+
+
+    @PostMapping("/channel/messagesync")
+    public ChannelMessageSyncResp channelMessageSync(@RequestBody ChannelMessageSyncReqVo reqVo);
+
+
 }

+ 8 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/wukong/WuKongMessageService.java

@@ -0,0 +1,8 @@
+package com.citu.module.menduner.im.service.wukong;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.module.menduner.im.controller.app.base.wukong.ChannelMessageSyncReqVo;
+
+public interface WuKongMessageService {
+    CommonResult channelMessageSync(ChannelMessageSyncReqVo reqVo);
+}

+ 36 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/wukong/WuKongMessageServiceImpl.java

@@ -0,0 +1,36 @@
+package com.citu.module.menduner.im.service.wukong;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.module.menduner.im.controller.app.base.wukong.ChannelMessageSyncReqVo;
+import com.citu.module.menduner.im.service.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class WuKongMessageServiceImpl implements WuKongMessageService{
+
+    UserService userService;
+
+    WuKongApiService wuKongApiService;
+
+
+
+    @Override
+    public CommonResult channelMessageSync(ChannelMessageSyncReqVo reqVo) {
+        String currentLoginUid = userService.getCurrentLoginUid(reqVo.getEnterpriseId());
+        reqVo.setLoginUid(currentLoginUid);
+        return CommonResult.success(wuKongApiService.channelMessageSync(reqVo));
+    }
+
+    @Autowired
+    public void setWuKongApiService(WuKongApiService wuKongApiService) {
+        this.wuKongApiService = wuKongApiService;
+    }
+
+    @Autowired
+    public void setUserService(UserService userService) {
+        this.userService = userService;
+    }
+
+
+}

+ 11 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/wukong/WuKongSessionService.java

@@ -0,0 +1,11 @@
+package com.citu.module.menduner.im.service.wukong;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.module.menduner.im.controller.app.base.wukong.ConversationSyncReqVo;
+import com.citu.module.menduner.im.controller.app.base.wukong.ConversationsDeleteReqVo;
+
+public interface WuKongSessionService {
+    CommonResult conversatioSync(ConversationSyncReqVo reqVo);
+
+    CommonResult conversatioSyncDelete(ConversationsDeleteReqVo reqVo);
+}

+ 57 - 0
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/wukong/WuKongSessionServiceImpl.java

@@ -0,0 +1,57 @@
+package com.citu.module.menduner.im.service.wukong;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.module.menduner.im.controller.app.base.user.ImUserInfoVo;
+import com.citu.module.menduner.im.controller.app.base.user.ImUserResoVO;
+import com.citu.module.menduner.im.controller.app.base.wukong.ConversationSyncReqVo;
+import com.citu.module.menduner.im.controller.app.base.wukong.ConversationSyncRespVo;
+import com.citu.module.menduner.im.controller.app.base.wukong.ConversationsDeleteReqVo;
+import com.citu.module.menduner.im.service.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+@Service
+public class WuKongSessionServiceImpl implements WuKongSessionService{
+
+    WuKongApiService wuKongApiService;
+
+    UserService userService;
+
+
+    @Override
+    public CommonResult conversatioSync(ConversationSyncReqVo reqVo) {
+         String uid  =  userService.getCurrentLoginUid(reqVo.getEnterpriseId());
+        reqVo.setUid(uid);
+        List<ConversationSyncRespVo> conversationSyncRespVos = wuKongApiService.conversationSync(reqVo);
+
+        Set<String> uids =new HashSet<>();
+        for (ConversationSyncRespVo conversationSyncRespVo : conversationSyncRespVos) {
+            conversationSyncRespVo.getRecents().forEach(item->uids.add(item.get("from_uid").toString()));
+        }
+
+        CommonResult<List<ImUserInfoVo>> result =   userService.getUserByUids(uids);
+
+        return CommonResult.success(wuKongApiService.conversationSync(reqVo));
+    }
+
+    @Override
+    public CommonResult conversatioSyncDelete(ConversationsDeleteReqVo reqVo) {
+        String uid  =  userService.getCurrentLoginUid(reqVo.getEnterpriseId());
+        reqVo.setUid(uid);
+        return CommonResult.success(wuKongApiService.conversationsDelete(reqVo));
+    }
+
+    @Autowired
+    public void setUserService(UserService userService) {
+        this.userService = userService;
+    }
+
+    @Autowired
+    public void setWuKongApiService(WuKongApiService wuKongApiService) {
+        this.wuKongApiService = wuKongApiService;
+    }
+}

+ 2 - 3
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/wukong/WuKongUserServiceImpl.java

@@ -2,10 +2,9 @@ package com.citu.module.menduner.im.service.wukong;
 
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.module.menduner.im.config.WuKongConfig;
-import com.citu.module.menduner.im.controller.base.wukong.UserTokenReqVO;
-import com.citu.module.menduner.im.controller.base.wukong.WukongApiResp;
+import com.citu.module.menduner.im.controller.app.base.wukong.UserTokenReqVO;
+import com.citu.module.menduner.im.controller.app.base.wukong.WukongApiResp;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
 import java.util.List;

+ 0 - 177
menduner/menduner-im-biz/src/main/resources/application-dev.yaml

@@ -1,177 +0,0 @@
---- #################### 数据库相关配置 ####################
-spring:
-  # 数据源配置项
-  autoconfigure:
-    exclude:
-      - com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源
-  datasource:
-    druid: # Druid 【监控】相关的全局配置
-      web-stat-filter:
-        enabled: true
-      stat-view-servlet:
-        enabled: true
-        allow: # 设置白名单,不填则允许所有访问
-        url-pattern: /druid/*
-        login-username: # 控制台管理用户名和密码
-        login-password:
-      filter:
-        stat:
-          enabled: true
-          log-slow-sql: true # 慢 SQL 记录
-          slow-sql-millis: 100
-          merge-sql: true
-        wall:
-          config:
-            multi-statement-allow: true
-    dynamic: # 多数据源配置
-      druid: # Druid 【连接池】相关的全局配置
-        initial-size: 5 # 初始连接数
-        min-idle: 10 # 最小连接池数量
-        max-active: 20 # 最大连接池数量
-        max-wait: 600000 # 配置获取连接等待超时的时间,单位:毫秒
-        time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位:毫秒
-        min-evictable-idle-time-millis: 300000 # 配置一个连接在池中最小生存的时间,单位:毫秒
-        max-evictable-idle-time-millis: 900000 # 配置一个连接在池中最大生存的时间,单位:毫秒
-        validation-query: SELECT 1 FROM DUAL # 配置检测连接是否有效
-        test-while-idle: true
-        test-on-borrow: false
-        test-on-return: false
-      primary: master
-      datasource:
-        master:
-          name: ruoyi-vue-pro
-          url: jdbc:mysql://400-infra.server.iocoder.cn:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT&nullCatalogMeansCurrent=true
-          driver-class-name: com.mysql.jdbc.Driver
-          username: root
-          password: 3WLiVUBEwTbvAfsh
-        slave: # 模拟从库,可根据自己需要修改 # 模拟从库,可根据自己需要修改
-          name: ruoyi-vue-pro
-          url: jdbc:mysql://400-infra.server.iocoder.cn:3306/${spring.datasource.dynamic.datasource.slave.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT&nullCatalogMeansCurrent=true
-          driver-class-name: com.mysql.jdbc.Driver
-          username: root
-          password: 3WLiVUBEwTbvAfsh
-
-  # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
-  redis:
-    host: 400-infra.server.iocoder.cn # 地址
-    port: 6379 # 端口
-    database: 1 # 数据库索引
-#    password: 123456 # 密码,建议生产环境开启
-
---- #################### MQ 消息队列相关配置 ####################
-
-# rocketmq 配置项,对应 RocketMQProperties 配置类
-rocketmq:
-  name-server: 127.0.0.1:9876 # RocketMQ Namesrv
-
-spring:
-  # RabbitMQ 配置项,对应 RabbitProperties 配置类
-  rabbitmq:
-    host: 127.0.0.1 # RabbitMQ 服务的地址
-    port: 5672 # RabbitMQ 服务的端口
-    username: guest # RabbitMQ 服务的账号
-    password: guest # RabbitMQ 服务的密码
-  # Kafka 配置项,对应 KafkaProperties 配置类
-  kafka:
-    bootstrap-servers: 127.0.0.1:9092 # 指定 Kafka Broker 地址,可以设置多个,以逗号分隔
-  # elasticsearch 配置项
-  elasticsearch:
-    uris: http://192.168.3.80:9200
-
---- #################### 定时任务相关配置 ####################
-xxl:
-  job:
-    admin:
-      addresses: http://127.0.0.1:9090/xxl-job-admin # 调度中心部署跟地址
-
---- #################### 服务保障相关配置 ####################
-
-# Lock4j 配置项
-lock4j:
-  acquire-timeout: 3000 # 获取分布式锁超时时间,默认为 3000 毫秒
-  expire: 30000 # 分布式锁的超时时间,默认为 30 毫秒
-
---- #################### 监控相关配置 ####################
-
-# Actuator 监控端点的配置项
-management:
-  endpoints:
-    web:
-      base-path: /actuator # Actuator 提供的 API 接口的根目录。默认为 /actuator
-      exposure:
-        include: '*' # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。
-
-# Spring Boot Admin 配置项
-spring:
-  boot:
-    admin:
-      # Spring Boot Admin Client 客户端的相关配置
-      client:
-        instance:
-          service-host-type: IP # 注册实例时,优先使用 IP [IP, HOST_NAME, CANONICAL_HOST_NAME]
-      # Spring Boot Admin Server 服务端的相关配置
-      context-path: /admin # 配置 Spring
-
---- #################### 微信公众号、小程序相关配置 ####################
-wx:
-  mp: # 公众号配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档
-    #    app-id: wx041349c6f39b268b
-    #    secret: 5abee519483bc9f8cb37ce280e814bd0
-    app-id: wx5b23ba7a5589ecbb # 测试号
-    secret: 2a7b3b20c537e52e74afd395eb85f61f
-    # 存储配置,解决 AccessToken 的跨节点的共享
-    config-storage:
-      type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
-      key-prefix: wx # Redis Key 的前缀
-      http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
-  miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
-    #    appid: wx62056c0d5e8db250
-    #    secret: 333ae72f41552af1e998fe1f54e1584a
-    appid: wx63c280fe3248a3e7 # wenhualian的接口测试号
-    secret: 6f270509224a7ae1296bbf1c8cb97aed
-    config-storage:
-      type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
-      key-prefix: wa # Redis Key 的前缀
-      http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
-
---- #################### 芋道相关配置 ####################
-
-# 芋道配置项,设置当前项目所有自定义的配置
-citu:
-  xss:
-    enable: false
-    exclude-urls: # 如下两个 url,仅仅是为了演示,去掉配置也没关系
-      - ${spring.boot.admin.context-path}/** # 不处理 Spring Boot Admin 的请求
-      - ${management.endpoints.web.base-path}/** # 不处理 Actuator 的请求
-  pay:
-    pay-notify-url: http://niubi.natapp1.cc/api/pay/order/notify
-    pay-return-url: http://niubi.natapp1.cc/api/pay/order/return
-    refund-notify-url: http://niubi.natapp1.cc/api/pay/refund/notify
-  demo: true # 开启演示模式
-
-justauth:
-  enabled: true
-  type:
-    DINGTALK: # 钉钉
-      client-id: dingvrnreaje3yqvzhxg
-      client-secret: i8E6iZyDvZj51JIb0tYsYfVQYOks9Cq1lgryEjFRqC79P3iJcrxEwT6Qk2QvLrLI
-      ignore-check-redirect-uri: true
-    WECHAT_ENTERPRISE: # 企业微信
-      client-id: wwd411c69a39ad2e54
-      client-secret: 1wTb7hYxnpT2TUbIeHGXGo7T0odav1ic10mLdyyATOw
-      agent-id: 1000004
-      ignore-check-redirect-uri: true
-    # noinspection SpringBootApplicationYaml
-    WECHAT_MINI_APP: # 微信小程序
-      client-id: ${wx.miniapp.appid}
-      client-secret: ${wx.miniapp.secret}
-      ignore-check-redirect-uri: true
-      ignore-check-state: true # 微信小程序,不会使用到 state,所以不进行校验
-    WECHAT_MP: # 微信公众号
-      client-id: ${wx.mp.app-id}
-      client-secret: ${wx.mp.secret}
-      ignore-check-redirect-uri: true
-  cache:
-    type: REDIS
-    prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE::
-    timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟

+ 0 - 205
menduner/menduner-im-biz/src/main/resources/application-local.yaml

@@ -1,205 +0,0 @@
---- #################### 数据库相关配置 ####################
-spring:
-  # 数据源配置项
-  autoconfigure:
-    exclude:
-      - com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源
-      - de.codecentric.boot.admin.client.config.SpringBootAdminClientAutoConfiguration # 禁用 Spring Boot Admin 的 Client 的自动配置
-  datasource:
-    druid: # Druid 【监控】相关的全局配置
-      web-stat-filter:
-        enabled: true
-      stat-view-servlet:
-        enabled: true
-        allow: # 设置白名单,不填则允许所有访问
-        url-pattern: /druid/*
-        login-username: # 控制台管理用户名和密码
-        login-password:
-      filter:
-        stat:
-          enabled: true
-          log-slow-sql: true # 慢 SQL 记录
-          slow-sql-millis: 100
-          merge-sql: true
-        wall:
-          config:
-            multi-statement-allow: true
-    dynamic: # 多数据源配置
-      druid: # Druid 【连接池】相关的全局配置
-        initial-size: 1 # 初始连接数
-        min-idle: 1 # 最小连接池数量
-        max-active: 20 # 最大连接池数量
-        max-wait: 600000 # 配置获取连接等待超时的时间,单位:毫秒
-        time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位:毫秒
-        min-evictable-idle-time-millis: 300000 # 配置一个连接在池中最小生存的时间,单位:毫秒
-        max-evictable-idle-time-millis: 900000 # 配置一个连接在池中最大生存的时间,单位:毫秒
-        validation-query: SELECT 1 FROM DUAL # 配置检测连接是否有效
-        test-while-idle: true
-        test-on-borrow: false
-        test-on-return: false
-      primary: master
-      datasource:
-        master:
-          name: citu
-          url: jdbc:mysql://192.168.3.80:3306/${spring.datasource.dynamic.datasource.master.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
-          #          url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT # MySQL Connector/J 5.X 连接的示例
-          #          url: jdbc:postgresql://127.0.0.1:5432/${spring.datasource.dynamic.datasource.master.name} # PostgreSQL 连接的示例
-          #          url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
-          #          url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.master.name} # SQLServer 连接的示例
-          username: root
-          password: 123456
-        #          username: sa
-        #          password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W
-        slave: # 模拟从库,可根据自己需要修改
-          name: citu
-          url: jdbc:mysql://192.168.3.80:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
-          #          url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT # MySQL Connector/J 5.X 连接的示例
-          #          url: jdbc:postgresql://127.0.0.1:5432/${spring.datasource.dynamic.datasource.slave.name} # PostgreSQL 连接的示例
-          #          url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
-          #          url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=${spring.datasource.dynamic.datasource.slave.name} # SQLServer 连接的示例
-          username: root
-          password: 123456
-  #          username: sa
-  #          password: JSm:g(*%lU4ZAkz06cd52KqT3)i1?H7W
-
-  # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
-  redis:
-    host: 192.168.3.80 # 地址
-    port: 6379 # 端口
-    database: 0 # 数据库索引
-#    password: 123456 # 密码,建议生产环境开启
-
---- #################### MQ 消息队列相关配置 ####################
-
-# rocketmq 配置项,对应 RocketMQProperties 配置类
-rocketmq:
-  name-server: 127.0.0.1:9876 # RocketMQ Namesrv
-
-spring:
-  # RabbitMQ 配置项,对应 RabbitProperties 配置类
-  rabbitmq:
-    host: 127.0.0.1 # RabbitMQ 服务的地址
-    port: 5672 # RabbitMQ 服务的端口
-    username: guest # RabbitMQ 服务的账号
-    password: guest # RabbitMQ 服务的密码
-  # Kafka 配置项,对应 KafkaProperties 配置类
-  kafka:
-    bootstrap-servers: 127.0.0.1:9092 # 指定 Kafka Broker 地址,可以设置多个,以逗号分隔
-
---- #################### 定时任务相关配置 ####################
-
-xxl:
-  job:
-    enabled: false # 是否开启调度中心,默认为 true 开启
-    admin:
-      addresses: http://127.0.0.1:9090/xxl-job-admin # 调度中心部署跟地址
-
---- #################### 服务保障相关配置 ####################
-
-# Lock4j 配置项
-lock4j:
-  acquire-timeout: 3000 # 获取分布式锁超时时间,默认为 3000 毫秒
-  expire: 30000 # 分布式锁的超时时间,默认为 30 毫秒
-
---- #################### 监控相关配置 ####################
-
-# Actuator 监控端点的配置项
-management:
-  endpoints:
-    web:
-      base-path: /actuator # Actuator 提供的 API 接口的根目录。默认为 /actuator
-      exposure:
-        include: '*' # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。
-
-# Spring Boot Admin 配置项
-spring:
-  boot:
-    admin:
-      # Spring Boot Admin Client 客户端的相关配置
-      client:
-        instance:
-          service-host-type: IP # 注册实例时,优先使用 IP [IP, HOST_NAME, CANONICAL_HOST_NAME]
-
-# 日志文件配置
-logging:
-  level:
-    # 配置自己写的 MyBatis Mapper 打印日志
-    com.citu.module.system.dal.mysql: debug
-    com.citu.module.system.dal.mysql.sensitiveword.SensitiveWordMapper: INFO # 配置 SensitiveWordMapper 的日志级别为 info
-    com.citu.module.system.dal.mysql.sms.SmsChannelMapper: INFO # 配置 SmsChannelMapper 的日志级别为 info
-
---- #################### 微信公众号、小程序相关配置 ####################
-wx:
-  mp: # 公众号配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档
-    #    app-id: wx041349c6f39b268b # 测试号(牛希尧提供的)
-    #    secret: 5abee519483bc9f8cb37ce280e814bd0
-    app-id: wx5b23ba7a5589ecbb # 测试号(自己的)
-    secret: 2a7b3b20c537e52e74afd395eb85f61f
-    #    app-id: wxa69ab825b163be19 # 测试号(Kongdy 提供的)
-    #    secret: bd4f9fab889591b62aeac0d7b8d8b4a0
-    # 存储配置,解决 AccessToken 的跨节点的共享
-    config-storage:
-      type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
-      key-prefix: wx # Redis Key 的前缀
-      http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
-  miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
-    #    appid: wx62056c0d5e8db250 # 测试号(牛希尧提供的)
-    #    secret: 333ae72f41552af1e998fe1f54e1584a
-    appid: wx63c280fe3248a3e7 # wenhualian的接口测试号
-    secret: 6f270509224a7ae1296bbf1c8cb97aed
-    #    appid: wxc4598c446f8a9cb3 # 测试号(Kongdy 提供的)
-    #    secret: 4a1a04e07f6a4a0751b39c3064a92c8b
-    config-storage:
-      type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
-      key-prefix: wa # Redis Key 的前缀
-      http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
-
---- #################### 芋道相关配置 ####################
-
-# 芋道配置项,设置当前项目所有自定义的配置
-citu:
-  env: # 多环境的配置项
-    tag: ${HOSTNAME}
-  captcha:
-    enable: false # 本地环境,暂时关闭图片验证码,方便登录等接口的测试
-  security:
-    mock-enable: true
-  xss:
-    enable: false
-    exclude-urls: # 如下两个 url,仅仅是为了演示,去掉配置也没关系
-      - ${spring.boot.admin.context-path}/** # 不处理 Spring Boot Admin 的请求
-      - ${management.endpoints.web.base-path}/** # 不处理 Actuator 的请求
-  pay:
-    pay-notify-url: http://niubi.natapp1.cc/api/pay/order/notify
-    pay-return-url: http://niubi.natapp1.cc/api/pay/order/return
-    refund-notify-url: http://niubi.natapp1.cc/api/pay/refund/notify
-  access-log: # 访问日志的配置项
-    enable: false
-  demo: false # 关闭演示模式
-
-justauth:
-  enabled: true
-  type:
-    DINGTALK: # 钉钉
-      client-id: dingvrnreaje3yqvzhxg
-      client-secret: i8E6iZyDvZj51JIb0tYsYfVQYOks9Cq1lgryEjFRqC79P3iJcrxEwT6Qk2QvLrLI
-      ignore-check-redirect-uri: true
-    WECHAT_ENTERPRISE: # 企业微信
-      client-id: wwd411c69a39ad2e54
-      client-secret: 1wTb7hYxnpT2TUbIeHGXGo7T0odav1ic10mLdyyATOw
-      agent-id: 1000004
-      ignore-check-redirect-uri: true
-    # noinspection SpringBootApplicationYaml
-    WECHAT_MINI_APP: # 微信小程序
-      client-id: ${wx.miniapp.appid}
-      client-secret: ${wx.miniapp.secret}
-      ignore-check-redirect-uri: true
-      ignore-check-state: true # 微信小程序,不会使用到 state,所以不进行校验
-    WECHAT_MP: # 微信公众号
-      client-id: ${wx.mp.app-id}
-      client-secret: ${wx.mp.secret}
-      ignore-check-redirect-uri: true
-  cache:
-    type: REDIS
-    prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE::
-    timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟

+ 0 - 146
menduner/menduner-im-biz/src/main/resources/application.yaml

@@ -1,146 +0,0 @@
-spring:
-  main:
-    allow-circular-references: true # 允许循环依赖,因为项目是三层架构,无法避免这个情况。
-    allow-bean-definition-overriding: true # 允许 Bean 覆盖,例如说 Feign 等会存在重复定义的服务
-
-  # 国际化
-  messages:
-    # 默认名称
-    basename: i18n/messages
-    encoding: UTF-8
-    # 找不到对应区域的语言时,是否回退到系统区域的语言,默认 true
-    fallback-to-system-locale: true
-    # 找不到code时,是否直接返回code值,而不是抛异常,默认false,抛异常
-    use-code-as-default-message: true
-    # 是否始终使用MessageFormat格式化国际化消息,即使没有国际化消息参数,默认false
-    always-use-message-format: false
-    # 加载国际化资源后的过期时间,不设置不过期,单位秒
-    cache-duration:
-
-  # Servlet 配置
-  servlet:
-    # 文件上传相关配置项
-    multipart:
-      max-file-size: 16MB # 单个文件大小
-      max-request-size: 32MB # 设置总上传的文件大小
-  mvc:
-    pathmatch:
-      matching-strategy: ANT_PATH_MATCHER # 解决 SpringFox 与 SpringBoot 2.6.x 不兼容的问题,参见 SpringFoxHandlerProviderBeanPostProcessor 类
-
-  # Jackson 配置项
-  jackson:
-    serialization:
-      write-dates-as-timestamps: true # 设置 LocalDateTime 的格式,使用时间戳
-      write-date-timestamps-as-nanoseconds: false # 设置不使用 nanoseconds 的格式。例如说 1611460870.401,而是直接 1611460870401
-      write-durations-as-timestamps: true # 设置 Duration 的格式,使用时间戳
-      fail-on-empty-beans: false # 允许序列化无属性的 Bean
-
-  # Cache 配置项
-  cache:
-    type: REDIS
-    redis:
-      time-to-live: 1h # 设置过期时间为 1 小时
-
---- #################### 接口文档配置 ####################
-
-springdoc:
-  api-docs:
-    enabled: true # 1. 是否开启 Swagger 接文档的元数据
-    path: /v3/api-docs
-  swagger-ui:
-    enabled: true # 2.1 是否开启 Swagger 文档的官方 UI 界面
-    path: /swagger-ui.html
-    tags-sorter: alpha
-    operations-sorter: alpha
-  default-flat-param-object: true # 参见 https://doc.xiaominfo.com/docs/faq/v4/knife4j-parameterobject-flat-param 文档
-
-knife4j:
-  enable: true # 2.2 是否开启 Swagger 文档的 Knife4j UI 界面
-  setting:
-    language: zh_cn
-
-# MyBatis Plus 的配置项
-mybatis-plus:
-  configuration:
-    map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印日志
-  global-config:
-    db-config:
-      id-type: ASSIGN_ID # “智能”模式,基于 IdTypeEnvironmentPostProcessor + 数据源的类型,自动适配成 AUTO、INPUT 模式。
-      #      id-type: AUTO # 自增 ID,适合 MySQL 等直接自增的数据库
-      #      id-type: INPUT # 用户输入 ID,适合 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库
-      #      id-type: ASSIGN_ID # 分配 ID,默认使用雪花算法。注意,Oracle、PostgreSQL、Kingbase、DB2、H2 数据库时,需要去除实体类上的 @KeySequence 注解
-      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
-      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
-    banner: true # 关闭控制台的 Banner 打印
-  type-aliases-package: ${citu.info.base-package}.dal.dataobject
-  encryptor:
-    password: XDV71a+xqStEA3WH # 加解密的秘钥,可使用 https://www.imaegoo.com/2020/aes-key-generator/ 网站生成
-
-mybatis-plus-join:
-  banner: true # 关闭控制台的 Banner 打印
-
-# Spring Data Redis 配置
-spring:
-  data:
-    redis:
-      repositories:
-        enabled: false # 项目未使用到 Spring Data Redis 的 Repository,所以直接禁用,保证启动速度
-
-# VO 转换(数据翻译)相关
-easy-trans:
-  is-enable-global: true # 启用全局翻译(拦截所有 SpringMVC ResponseBody 进行自动翻译 )。如果对于性能要求很高可关闭此配置,或通过 @IgnoreTrans 忽略某个接口
-  is-enable-cloud: false # 禁用 TransType.RPC 微服务模式
-
---- #################### RPC 远程调用相关配置 ####################
-
---- #################### MQ 消息队列相关配置 ####################
-rocketmq:
-  producer:
-    #生产者分组
-    group: ${spring.application.name}_PRODUCER
-
---- #################### 定时任务相关配置 ####################
-
-xxl:
-  job:
-    executor:
-      appname: ${spring.application.name} # 执行器 AppName
-      logpath: ${user.home}/logs/xxl-job/${spring.application.name} # 执行器运行日志文件存储磁盘路径
-    accessToken: default_token # 执行器通讯TOKEN
-
---- #################### 芋道相关配置 ####################
-
-citu:
-  info:
-    version: 1.0.0
-    base-package: com.citu.module.menduner.im
-  web:
-    admin-ui:
-      url: http://192.168.3.80 # Admin 管理后台 UI 的地址
-  swagger:
-    title: 管理后台
-    description: 提供管理员管理的所有功能
-    version: ${citu.info.version}
-    base-package: ${citu.info.base-package}
-  # 是否开启国际化
-  i18n:
-    enable: true
-  # db相关
-  db:
-    # 是否开启自动切换数据源 主写从读
-    transform:
-      enable: true
-  captcha:
-    enable: false # 验证码的开关,默认为 true;
-  error-code: # 错误码相关配置项
-    enable: false
-    constants-class-list:
-      - com.citu.module.menduner.system.enums.ErrorCodeConstants
-  tenant: # 多租户相关配置项
-    enable: true
-    ignore-urls:
-    ignore-tables:
-
-debug: false
-

+ 0 - 20
menduner/menduner-im-biz/src/main/resources/bootstrap-local.yaml

@@ -1,23 +1,3 @@
 --- #################### 注册中心相关配置 ####################
 
-spring:
-  cloud:
-    nacos:
-      server-addr: ${nacosHost:127.0.0.1:8848}
-      discovery:
-        namespace: dev # 命名空间。这里使用 dev 开发环境
-        metadata:
-          version: 1.0.0 # 服务实例的版本号,可用于灰度发布
 
---- #################### 配置中心相关配置 ####################
-
-spring:
-  cloud:
-    nacos:
-      # Nacos Config 配置项,对应 NacosConfigProperties 配置属性类
-      config:
-        server-addr: ${nacosHost:127.0.0.1:8848} # Nacos 服务器地址
-        namespace: dev # 命名空间 dev 的ID,不能直接使用 dev 名称。创建命名空间的时候需要指定ID为 dev,这里使用 dev 开发环境
-        group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
-        name: ${spring.application.name} # 使用的 Nacos 配置集的 dataId,默认为 spring.application.name
-        file-extension: yaml # 使用的 Nacos 配置集的 dataId 的文件拓展名,同时也是 Nacos 配置集的配置格式,默认为 properties

+ 22 - 1
menduner/menduner-im-biz/src/main/resources/bootstrap.yaml

@@ -1,9 +1,28 @@
 spring:
+  messages:
+    basename: i18n/messages
+    encoding: UTF-8
   application:
     name: im-server
-
+  main:
+    allow-circular-references: true # 允许循环依赖,因为项目是三层架构,无法避免这个情况。
+    allow-bean-definition-overriding: true # 允许 Bean 覆盖,例如说 Feign 等会存在重复定义的服务
   profiles:
     active: local
+  cloud:
+    nacos:
+      server-addr: ${nacosHost:127.0.0.1:8848}
+      discovery:
+        namespace: dev # 命名空间。这里使用 dev 开发环境
+        metadata:
+          version: 1.0.0 # 服务实例的版本号,可用于灰度发布
+      # Nacos Config 配置项,对应 NacosConfigProperties 配置属性类
+      config:
+        server-addr: ${nacosHost:127.0.0.1:8848} # Nacos 服务器地址
+        namespace: dev # 命名空间 dev 的ID,不能直接使用 dev 名称。创建命名空间的时候需要指定ID为 dev,这里使用 dev 开发环境
+        group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
+        name: ${spring.application.name} # 使用的 Nacos 配置集的 dataId,默认为 spring.application.name
+        file-extension: yaml # 使用的 Nacos 配置集的 dataId 的文件拓展名,同时也是 Nacos 配置集的配置格式,默认为 properties
 
 server:
   port: 48201
@@ -12,3 +31,5 @@ server:
 logging:
   file:
     name: ${user.home}/logs/${spring.application.name}.log # 日志文件名,全路径
+
+