feat(channel-wecom): 实现企微联系人/群聊同步
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
package com.sino.mci.channel.wecom.sync;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 企业微信同步客户端的 mock 实现。
|
||||
*
|
||||
* <p>不发起真实企微 API 调用,仅返回固定样例数据,供开发与测试使用。</p>
|
||||
*/
|
||||
@Component
|
||||
public class MockWeComSyncClient implements WeComSyncClient {
|
||||
|
||||
@Override
|
||||
public List<WeComContact> syncContacts(WeComSyncConfig config) {
|
||||
return List.of(
|
||||
WeComContact.builder()
|
||||
.userId("user001")
|
||||
.name("张三")
|
||||
.mobile("13800138001")
|
||||
.type(WeComContactType.INTERNAL)
|
||||
.departmentIds(List.of(1L, 2L))
|
||||
.build(),
|
||||
WeComContact.builder()
|
||||
.userId("wmexternal001")
|
||||
.name("客户李四")
|
||||
.mobile("13900139001")
|
||||
.type(WeComContactType.EXTERNAL)
|
||||
.build()
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WeComConversation> syncConversations(WeComSyncConfig config) {
|
||||
return List.of(
|
||||
WeComConversation.builder()
|
||||
.chatId("chat001")
|
||||
.chatName("测试客户群")
|
||||
.ownerUserId("user001")
|
||||
.memberList(List.of(
|
||||
WeComConversationMember.builder()
|
||||
.userId("user001")
|
||||
.name("张三")
|
||||
.build(),
|
||||
WeComConversationMember.builder()
|
||||
.userId("wmexternal001")
|
||||
.name("客户李四")
|
||||
.build()
|
||||
))
|
||||
.build()
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.sino.mci.channel.wecom.sync;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class WeComContact {
|
||||
|
||||
private String userId;
|
||||
private String name;
|
||||
private String mobile;
|
||||
private WeComContactType type;
|
||||
private List<Long> departmentIds;
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package com.sino.mci.channel.wecom.sync;
|
||||
|
||||
public enum WeComContactType {
|
||||
INTERNAL,
|
||||
EXTERNAL
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.sino.mci.channel.wecom.sync;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class WeComConversation {
|
||||
|
||||
private String chatId;
|
||||
private String chatName;
|
||||
private String ownerUserId;
|
||||
private List<WeComConversationMember> memberList;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.sino.mci.channel.wecom.sync;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class WeComConversationMember {
|
||||
|
||||
private String userId;
|
||||
private String name;
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.sino.mci.channel.wecom.sync;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 企业微信通讯录与群聊同步客户端。
|
||||
*
|
||||
* <p>封装企微「获取部门列表 / 部门成员详情 / 外部联系人列表 / 外部联系人详情 /
|
||||
* 客户群列表 / 客户群详情」等接口调用。实际生产环境可替换为基于 {@code WxCpService}
|
||||
* 的真实实现;默认提供 mock 实现用于开发/测试。</p>
|
||||
*/
|
||||
public interface WeComSyncClient {
|
||||
|
||||
/**
|
||||
* 同步联系人(企业内部成员 + 外部联系人)。
|
||||
*
|
||||
* @param config 企微配置
|
||||
* @return 联系人列表
|
||||
*/
|
||||
List<WeComContact> syncContacts(WeComSyncConfig config);
|
||||
|
||||
/**
|
||||
* 同步群聊(客户群)。
|
||||
*
|
||||
* @param config 企微配置
|
||||
* @return 群聊列表
|
||||
*/
|
||||
List<WeComConversation> syncConversations(WeComSyncConfig config);
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.sino.mci.channel.wecom.sync;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class WeComSyncConfig {
|
||||
|
||||
private String corpId;
|
||||
private String agentId;
|
||||
private String secret;
|
||||
}
|
||||
Reference in New Issue
Block a user