diff --git a/pigx-upms/pigx-upms-biz/pom.xml b/pigx-upms/pigx-upms-biz/pom.xml
index a8e0d4cae..44bca5af8 100644
--- a/pigx-upms/pigx-upms-biz/pom.xml
+++ b/pigx-upms/pigx-upms-biz/pom.xml
@@ -128,6 +128,11 @@
cas-client-core
${cas.sdk.version}
+
+ com.aliyun
+ dingtalk
+ ${dingtalk.version}
+
org.springframework.boot
diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/ConnectController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/ConnectController.java
new file mode 100644
index 000000000..445268b61
--- /dev/null
+++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/ConnectController.java
@@ -0,0 +1,76 @@
+package com.pig4cloud.pigx.admin.controller;
+
+import com.pig4cloud.pigx.common.core.util.R;
+import io.swagger.annotations.Api;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 钉钉、微信 互联
+ *
+ * @author lengleng
+ * @date 2022/4/22
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/connect")
+@Api(value = "connect", tags = "开放互联")
+public class ConnectController {
+
+ /**
+ * 同步钉钉用户
+ * @return
+ */
+ @PostMapping("/sync/ding/user")
+ public R syncUser() {
+ return R.ok();
+ }
+
+ /**
+ * 同步钉钉角色
+ * @return
+ */
+ @PostMapping("/sync/ding/role")
+ public R syncRole() {
+ return R.ok();
+ }
+
+ /**
+ * 同步钉钉部门
+ * @return
+ */
+ @PostMapping("/sync/ding/dept")
+ public R syncDept() {
+ return R.ok();
+ }
+
+ /**
+ * 同步企微用户
+ * @return
+ */
+ @PostMapping("/sync/cp/user")
+ public R syncCpUser() {
+ return R.ok();
+ }
+
+ /**
+ * 同步企微角色
+ * @return
+ */
+ @PostMapping("/sync/cp/role")
+ public R syncCpRole() {
+ return R.ok();
+ }
+
+ /**
+ * 同步企微部门
+ * @return
+ */
+ @PostMapping("/sync/cp/dept")
+ public R syncCpDept() {
+ return R.ok();
+ }
+
+}
diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/ConnectService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/ConnectService.java
new file mode 100644
index 000000000..faedf2fb6
--- /dev/null
+++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/ConnectService.java
@@ -0,0 +1,11 @@
+package com.pig4cloud.pigx.admin.service;
+
+/**
+ * @author lengleng
+ * @date 2022/4/22
+ *
+ * 互联平台
+ */
+public interface ConnectService {
+
+}
diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/ConnectServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/ConnectServiceImpl.java
new file mode 100644
index 000000000..1a8f54aba
--- /dev/null
+++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/ConnectServiceImpl.java
@@ -0,0 +1,57 @@
+package com.pig4cloud.pigx.admin.service.impl;
+
+import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenRequest;
+import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenResponse;
+import com.aliyun.teaopenapi.models.Config;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.pig4cloud.pigx.admin.api.entity.SysSocialDetails;
+import com.pig4cloud.pigx.admin.mapper.SysSocialDetailsMapper;
+import com.pig4cloud.pigx.admin.service.ConnectService;
+import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * 互联平台实现
+ *
+ * 钉钉: https://open-dev.dingtalk.com/apiExplorer
+ *
+ * @author lengleng
+ * @date 2022/4/22
+ */
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class ConnectServiceImpl implements ConnectService {
+
+ private final SysSocialDetailsMapper sysSocialDetailsMapper;
+
+ private String getDingAccessToken() {
+ SysSocialDetails dingTalk = sysSocialDetailsMapper
+ .selectOne(Wrappers.lambdaQuery().eq(SysSocialDetails::getType, "ding"));
+ GetAccessTokenRequest getAccessTokenRequest = new GetAccessTokenRequest().setAppKey(dingTalk.getAppId())
+ .setAppSecret(dingTalk.getAppSecret());
+ GetAccessTokenResponse tokenResponse = null;
+ try {
+ tokenResponse = createDingClient().getAccessToken(getAccessTokenRequest);
+ }
+ catch (Exception e) {
+ log.error("调用钉钉异常", e);
+ }
+ return tokenResponse.getBody().getAccessToken();
+ }
+
+ /**
+ * 创建钉钉客户端
+ * @return
+ */
+ @SneakyThrows
+ private com.aliyun.dingtalkoauth2_1_0.Client createDingClient() {
+ Config config = new Config();
+ config.protocol = "https";
+ config.regionId = "central";
+ return new com.aliyun.dingtalkoauth2_1_0.Client(config);
+ }
+
+}
diff --git a/pom.xml b/pom.xml
index b31b411e7..bf21ae7ce 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,6 +45,7 @@
2.6.6
1.2.7
3.6.4
+ 1.3.40
3.0.0
2.0.9
2.3