From cc8111dbc369c1e82f159027ee8438912ae28128 Mon Sep 17 00:00:00 2001
From: wang-hao-jie <1550036656@qq.com>
Date: 星期二, 19 十月 2021 14:29:39 +0800
Subject: [PATCH] 初始化

---
 /dev/null                                                                                            |   45 ---
 xboot-modules/pom.xml                                                                                |    3 
 xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/FileManageFactory.java            |   24 -
 xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/SmsFactory.java                             |   84 +++---
 xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/SmsUtil.java                                |    9 
 xboot-modules/xboot-base/src/main/java/cn/exrick/xboot/base/controller/common/CaptchaController.java |  278 +++++++++---------
 xboot-admin/pom.xml                                                                                  |   15 -
 xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/TencentSms.java                             |  204 +++++++-------
 pom.xml                                                                                              |    6 
 xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/AliSms.java                                 |  154 +++++-----
 10 files changed, 363 insertions(+), 459 deletions(-)

diff --git a/pom.xml b/pom.xml
index e977ef9..e82edec 100644
--- a/pom.xml
+++ b/pom.xml
@@ -36,12 +36,6 @@
         <jasypt.version>3.0.3</jasypt.version>
         <beetl.version>2.9.10</beetl.version>
         <antlr.version>4.8</antlr.version>
-        <minio.version>8.2.2</minio.version>
-        <qiniu.version>7.8.0</qiniu.version>
-        <aliyun.oss.version>3.13.0</aliyun.oss.version>
-        <qcloud.cos.version>5.6.45</qcloud.cos.version>
-        <tencentcloud.version>3.1.260</tencentcloud.version>
-        <activiti.version>5.22.0</activiti.version>
         <!-- 娴嬭瘯 -->
         <extentreports.testng.version>1.2.2</extentreports.testng.version>
         <selenuim.version>4.0.0-beta-4</selenuim.version>
diff --git a/xboot-admin/pom.xml b/xboot-admin/pom.xml
index eee9bc9..c991556 100644
--- a/xboot-admin/pom.xml
+++ b/xboot-admin/pom.xml
@@ -40,22 +40,7 @@
         </dependency>
         <dependency>
             <groupId>cn.exrick</groupId>
-            <artifactId>xboot-activiti</artifactId>
-            <version>1.0-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>cn.exrick</groupId>
             <artifactId>xboot-social</artifactId>
-            <version>1.0-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>cn.exrick</groupId>
-            <artifactId>xboot-autochat</artifactId>
-            <version>1.0-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>cn.exrick</groupId>
-            <artifactId>xboot-app</artifactId>
             <version>1.0-SNAPSHOT</version>
         </dependency>
         <dependency>
diff --git a/xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/AliSms.java b/xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/AliSms.java
index bf4b1da..4085a3f 100644
--- a/xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/AliSms.java
+++ b/xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/AliSms.java
@@ -1,77 +1,77 @@
-package cn.exrick.xboot.core.common.sms;
-
-import cn.exrick.xboot.core.common.constant.SettingConstant;
-import cn.exrick.xboot.core.common.exception.XbootException;
-import cn.exrick.xboot.core.entity.Setting;
-import cn.exrick.xboot.core.service.SettingService;
-import cn.exrick.xboot.core.vo.SmsSetting;
-import cn.hutool.core.util.StrUtil;
-import com.aliyuncs.CommonRequest;
-import com.aliyuncs.CommonResponse;
-import com.aliyuncs.DefaultAcsClient;
-import com.aliyuncs.IAcsClient;
-import com.aliyuncs.exceptions.ClientException;
-import com.aliyuncs.http.MethodType;
-import com.aliyuncs.profile.DefaultProfile;
-import com.google.gson.Gson;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-/**
- * @author exrick
- */
-@Slf4j
-@Component
-public class AliSms implements Sms {
-
-    @Autowired
-    private SettingService settingService;
-
-    @Override
-    public SmsSetting getSmsSetting() {
-
-        Setting setting = settingService.get(SettingConstant.ALI_SMS);
-        if (setting == null || StrUtil.isBlank(setting.getValue())) {
-            throw new XbootException("鎮ㄨ繕鏈厤缃樋閲屼簯鐭俊鏈嶅姟");
-        }
-        return new Gson().fromJson(setting.getValue(), SmsSetting.class);
-    }
-
-    @Override
-    public void sendSms(String mobile, String params, String templateCode) {
-
-        SmsSetting s = getSmsSetting();
-
-        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", s.getAccessKey(), s.getSecretKey());
-        IAcsClient client = new DefaultAcsClient(profile);
-
-        CommonRequest request = new CommonRequest();
-        request.setSysMethod(MethodType.POST);
-        request.setSysDomain("dysmsapi.aliyuncs.com");
-        request.setSysVersion("2017-05-25");
-        request.setSysAction("SendSms");
-        request.putQueryParameter("RegionId", "cn-hangzhou");
-        // 鏀寔瀵瑰涓墜鏈哄彿鐮佸彂閫佺煭淇★紝鎵嬫満鍙风爜涔嬮棿浠ヨ嫳鏂囬�楀彿锛�,锛夊垎闅旓紝涓婇檺涓�1000涓墜鏈哄彿鐮�
-        request.putQueryParameter("PhoneNumbers", mobile);
-        request.putQueryParameter("SignName", s.getSignName());
-        request.putQueryParameter("TemplateCode", templateCode);
-        request.putQueryParameter("TemplateParam", params);
-
-        CommonResponse response;
-        try {
-            response = client.getCommonResponse(request);
-        } catch (ClientException e) {
-            log.error(e.getMessage());
-            throw new XbootException("璇锋眰鍙戦�佺煭淇¢獙璇佺爜澶辫触锛�" + e.getErrMsg());
-        }
-        JsonObject result = JsonParser.parseString(response.getData()).getAsJsonObject();
-        String code = result.get("Code").getAsString();
-        String message = result.get("Message").getAsString();
-        if (!"OK".equals(code) && !"OK".equals(message)) {
-            throw new XbootException("璇锋眰鍙戦�侀獙璇佺爜澶辫触锛�" + message);
-        }
-    }
-}
+//package cn.exrick.xboot.core.common.sms;
+//
+//import cn.exrick.xboot.core.common.constant.SettingConstant;
+//import cn.exrick.xboot.core.common.exception.XbootException;
+//import cn.exrick.xboot.core.entity.Setting;
+//import cn.exrick.xboot.core.service.SettingService;
+//import cn.exrick.xboot.core.vo.SmsSetting;
+//import cn.hutool.core.util.StrUtil;
+//import com.aliyuncs.CommonRequest;
+//import com.aliyuncs.CommonResponse;
+//import com.aliyuncs.DefaultAcsClient;
+//import com.aliyuncs.IAcsClient;
+//import com.aliyuncs.exceptions.ClientException;
+//import com.aliyuncs.http.MethodType;
+//import com.aliyuncs.profile.DefaultProfile;
+//import com.google.gson.Gson;
+//import com.google.gson.JsonObject;
+//import com.google.gson.JsonParser;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.stereotype.Component;
+//
+///**
+// * @author exrick
+// */
+//@Slf4j
+//@Component
+//public class AliSms implements Sms {
+//
+//    @Autowired
+//    private SettingService settingService;
+//
+//    @Override
+//    public SmsSetting getSmsSetting() {
+//
+//        Setting setting = settingService.get(SettingConstant.ALI_SMS);
+//        if (setting == null || StrUtil.isBlank(setting.getValue())) {
+//            throw new XbootException("鎮ㄨ繕鏈厤缃樋閲屼簯鐭俊鏈嶅姟");
+//        }
+//        return new Gson().fromJson(setting.getValue(), SmsSetting.class);
+//    }
+//
+//    @Override
+//    public void sendSms(String mobile, String params, String templateCode) {
+//
+//        SmsSetting s = getSmsSetting();
+//
+//        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", s.getAccessKey(), s.getSecretKey());
+//        IAcsClient client = new DefaultAcsClient(profile);
+//
+//        CommonRequest request = new CommonRequest();
+//        request.setSysMethod(MethodType.POST);
+//        request.setSysDomain("dysmsapi.aliyuncs.com");
+//        request.setSysVersion("2017-05-25");
+//        request.setSysAction("SendSms");
+//        request.putQueryParameter("RegionId", "cn-hangzhou");
+//        // 鏀寔瀵瑰涓墜鏈哄彿鐮佸彂閫佺煭淇★紝鎵嬫満鍙风爜涔嬮棿浠ヨ嫳鏂囬�楀彿锛�,锛夊垎闅旓紝涓婇檺涓�1000涓墜鏈哄彿鐮�
+//        request.putQueryParameter("PhoneNumbers", mobile);
+//        request.putQueryParameter("SignName", s.getSignName());
+//        request.putQueryParameter("TemplateCode", templateCode);
+//        request.putQueryParameter("TemplateParam", params);
+//
+//        CommonResponse response;
+//        try {
+//            response = client.getCommonResponse(request);
+//        } catch (ClientException e) {
+//            log.error(e.getMessage());
+//            throw new XbootException("璇锋眰鍙戦�佺煭淇¢獙璇佺爜澶辫触锛�" + e.getErrMsg());
+//        }
+//        JsonObject result = JsonParser.parseString(response.getData()).getAsJsonObject();
+//        String code = result.get("Code").getAsString();
+//        String message = result.get("Message").getAsString();
+//        if (!"OK".equals(code) && !"OK".equals(message)) {
+//            throw new XbootException("璇锋眰鍙戦�侀獙璇佺爜澶辫触锛�" + message);
+//        }
+//    }
+//}
diff --git a/xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/SmsFactory.java b/xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/SmsFactory.java
index 43342d8..4e1744d 100644
--- a/xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/SmsFactory.java
+++ b/xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/SmsFactory.java
@@ -1,42 +1,42 @@
-package cn.exrick.xboot.core.common.sms;
-
-import cn.exrick.xboot.core.common.constant.SettingConstant;
-import cn.exrick.xboot.core.common.exception.XbootException;
-import cn.exrick.xboot.core.entity.Setting;
-import cn.exrick.xboot.core.service.SettingService;
-import cn.hutool.core.util.StrUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-/**
- * 宸ュ巶妯″紡
- * @author Exrick
- */
-@Component
-public class SmsFactory {
-
-    @Autowired
-    private SettingService settingService;
-
-    @Autowired
-    private AliSms aliSms;
-
-    @Autowired
-    private TencentSms tencentSms;
-
-    public Sms getSms() {
-
-        Setting setting = settingService.get(SettingConstant.SMS_USED);
-        if (setting == null || StrUtil.isBlank(setting.getValue())) {
-            throw new XbootException("鎮ㄨ繕鏈厤缃甇SS瀛樺偍鏈嶅姟");
-        }
-        String type = setting.getValue();
-        if (type.equals(SettingConstant.ALI_SMS)) {
-            return aliSms;
-        } else if (type.equals(SettingConstant.TENCENT_SMS)) {
-            return tencentSms;
-        } else {
-            throw new XbootException("鏆備笉鏀寔璇ュ瓨鍌ㄩ厤缃紝璇锋鏌ラ厤缃�");
-        }
-    }
-}
+//package cn.exrick.xboot.core.common.sms;
+//
+//import cn.exrick.xboot.core.common.constant.SettingConstant;
+//import cn.exrick.xboot.core.common.exception.XbootException;
+//import cn.exrick.xboot.core.entity.Setting;
+//import cn.exrick.xboot.core.service.SettingService;
+//import cn.hutool.core.util.StrUtil;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.stereotype.Component;
+//
+///**
+// * 宸ュ巶妯″紡
+// * @author Exrick
+// */
+//@Component
+//public class SmsFactory {
+//
+//    @Autowired
+//    private SettingService settingService;
+//
+//    @Autowired
+//    private AliSms aliSms;
+//
+//    @Autowired
+//    private TencentSms tencentSms;
+//
+//    public Sms getSms() {
+//
+//        Setting setting = settingService.get(SettingConstant.SMS_USED);
+//        if (setting == null || StrUtil.isBlank(setting.getValue())) {
+//            throw new XbootException("鎮ㄨ繕鏈厤缃甇SS瀛樺偍鏈嶅姟");
+//        }
+//        String type = setting.getValue();
+//        if (type.equals(SettingConstant.ALI_SMS)) {
+//            return aliSms;
+//        } else if (type.equals(SettingConstant.TENCENT_SMS)) {
+//            return tencentSms;
+//        } else {
+//            throw new XbootException("鏆備笉鏀寔璇ュ瓨鍌ㄩ厤缃紝璇锋鏌ラ厤缃�");
+//        }
+//    }
+//}
diff --git a/xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/SmsUtil.java b/xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/SmsUtil.java
index d45e234..6094c41 100644
--- a/xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/SmsUtil.java
+++ b/xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/SmsUtil.java
@@ -6,7 +6,6 @@
 import cn.exrick.xboot.core.service.SettingService;
 import cn.exrick.xboot.core.vo.SmsSetting;
 import cn.hutool.core.util.StrUtil;
-import com.aliyuncs.exceptions.ClientException;
 import com.google.gson.Gson;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -21,9 +20,6 @@
 
     @Autowired
     private SettingService settingService;
-
-    @Autowired
-    private SmsFactory smsFactory;
 
     public String getSmsUsed() {
 
@@ -93,7 +89,6 @@
      * @param code
      * @param type   0閫氱敤妯$増 1娉ㄥ唽 2鐧诲綍 3淇敼鎵嬫満 4淇敼瀵嗙爜 5閲嶇疆瀵嗙爜 6宸ヤ綔娴佹ā鐗�
      * @return
-     * @throws ClientException
      */
     public void sendCode(String mobile, String code, Integer type) {
 
@@ -106,7 +101,6 @@
      * @param code
      * @param templateCode
      * @return
-     * @throws ClientException
      */
     public void sendCode(String mobile, String code, String templateCode) {
 
@@ -118,7 +112,6 @@
      * @param mobile
      * @param content
      * @return
-     * @throws ClientException
      */
     public void sendActMessage(String mobile, String content) {
 
@@ -136,6 +129,6 @@
      */
     public void sendSms(String mobile, String params, String templateCode) {
 
-        smsFactory.getSms().sendSms(mobile, params, templateCode);
+        //smsFactory.getSms().sendSms(mobile, params, templateCode);
     }
 }
diff --git a/xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/TencentSms.java b/xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/TencentSms.java
index 0c1ff61..e4b5626 100644
--- a/xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/TencentSms.java
+++ b/xboot-core/src/main/java/cn/exrick/xboot/core/common/sms/TencentSms.java
@@ -1,102 +1,102 @@
-package cn.exrick.xboot.core.common.sms;
-
-import cn.exrick.xboot.core.common.constant.SettingConstant;
-import cn.exrick.xboot.core.common.exception.XbootException;
-import cn.exrick.xboot.core.common.utils.NameUtil;
-import cn.exrick.xboot.core.entity.Setting;
-import cn.exrick.xboot.core.service.SettingService;
-import cn.exrick.xboot.core.vo.SmsSetting;
-import cn.hutool.core.util.StrUtil;
-import com.google.gson.Gson;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonParser;
-import com.tencentcloudapi.common.Credential;
-import com.tencentcloudapi.common.exception.TencentCloudSDKException;
-import com.tencentcloudapi.sms.v20190711.SmsClient;
-import com.tencentcloudapi.sms.v20190711.models.SendSmsRequest;
-import com.tencentcloudapi.sms.v20190711.models.SendStatus;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.Map;
-import java.util.Set;
-
-/**
- * @author exrick
- */
-@Slf4j
-@Component
-public class TencentSms implements Sms {
-
-    @Autowired
-    private SettingService settingService;
-
-    @Override
-    public SmsSetting getSmsSetting() {
-
-        Setting setting = settingService.get(SettingConstant.TENCENT_SMS);
-        if (setting == null || StrUtil.isBlank(setting.getValue())) {
-            throw new XbootException("鎮ㄨ繕鏈厤缃吘璁簯鐭俊鏈嶅姟");
-        }
-        return new Gson().fromJson(setting.getValue(), SmsSetting.class);
-    }
-
-    @Override
-    public void sendSms(String mobile, String params, String templateCode) {
-
-        SmsSetting s = getSmsSetting();
-        try {
-            Credential cred = new Credential(s.getAccessKey(), s.getSecretKey());
-            SmsClient client = new SmsClient(cred, "");
-            SendSmsRequest req = new SendSmsRequest();
-
-            // 鐭俊搴旂敤 ID: 鍦� [鐭俊鎺у埗鍙�-搴旂敤绠$悊] 娣诲姞搴旂敤鍚庣敓鎴愮殑瀹為檯 SDKAppID锛屼緥濡�1400006666
-            req.setSmsSdkAppid(s.getAppId());
-            // 鐭俊绛惧悕鍐呭: 浣跨敤 UTF-8 缂栫爜锛屽繀椤诲~鍐欏凡瀹℃牳閫氳繃鐨勭鍚嶏紝鍙櫥褰� [鐭俊鎺у埗鍙癩 鏌ョ湅绛惧悕淇℃伅
-            req.setSign(s.getSignName());
-            // 妯℃澘 ID: 蹇呴』濉啓宸插鏍搁�氳繃鐨勬ā鏉� ID锛屽彲鐧诲綍 [鐭俊鎺у埗鍙癩 鏌ョ湅妯℃澘 ID
-            req.setTemplateID(templateCode);
-            /* 涓嬪彂鎵嬫満鍙风爜锛岄噰鐢� e.164 鏍囧噯锛�+[鍥藉鎴栧湴鍖虹爜][鎵嬫満鍙穄
-             * 渚嬪+8613800000000锛� 鍏朵腑鍓嶉潰鏈変竴涓�+鍙� 锛�86涓哄浗瀹剁爜锛�13800000000涓烘墜鏈哄彿锛屾渶澶氫笉瑕佽秴杩�200涓墜鏈哄彿*/
-            String[] phoneNumbers = {"+86" + mobile};
-            req.setPhoneNumberSet(phoneNumbers);
-            /* 妯℃澘鍙傛暟: 鑻ユ棤妯℃澘鍙傛暟锛屽垯璁剧疆涓虹┖*/
-            req.setTemplateParamSet(getParams(params));
-
-            SendStatus sendStatus = client.SendSms(req).getSendStatusSet()[0];
-            if (!"Ok".equals(sendStatus.getCode())) {
-                throw new XbootException("璇锋眰鍙戦�侀獙璇佺爜澶辫触锛�" + sendStatus.getMessage());
-            }
-        } catch (TencentCloudSDKException e) {
-            throw new XbootException("璇锋眰鍙戦�侀獙璇佺爜澶辫触锛岄敊璇爜锛�" + e.getErrorCode());
-        }
-    }
-
-    public static String[] getPhoneNumbers(String mobile) {
-
-        String[] phoneNumbers = mobile.split(",");
-        for (int i = 0; i < phoneNumbers.length; i++) {
-            String number = phoneNumbers[i];
-            if (NameUtil.mobile(number)) {
-                phoneNumbers[i] = "+86" + number;
-            } else {
-                phoneNumbers[i] = "+" + number;
-            }
-        }
-        return phoneNumbers;
-    }
-
-    public static String[] getParams(String params) {
-
-        Set<Map.Entry<String, JsonElement>> entries = JsonParser.parseString(params).getAsJsonObject().entrySet();
-        String[] templateParams = new String[entries.size()];
-        int i = 0;
-        for (Map.Entry<String, JsonElement> entry : entries) {
-            String value = entry.getValue().getAsString();
-            templateParams[i] = value;
-            i++;
-        }
-        return templateParams;
-    }
-}
+//package cn.exrick.xboot.core.common.sms;
+//
+//import cn.exrick.xboot.core.common.constant.SettingConstant;
+//import cn.exrick.xboot.core.common.exception.XbootException;
+//import cn.exrick.xboot.core.common.utils.NameUtil;
+//import cn.exrick.xboot.core.entity.Setting;
+//import cn.exrick.xboot.core.service.SettingService;
+//import cn.exrick.xboot.core.vo.SmsSetting;
+//import cn.hutool.core.util.StrUtil;
+//import com.google.gson.Gson;
+//import com.google.gson.JsonElement;
+//import com.google.gson.JsonParser;
+//import com.tencentcloudapi.common.Credential;
+//import com.tencentcloudapi.common.exception.TencentCloudSDKException;
+//import com.tencentcloudapi.sms.v20190711.SmsClient;
+//import com.tencentcloudapi.sms.v20190711.models.SendSmsRequest;
+//import com.tencentcloudapi.sms.v20190711.models.SendStatus;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.stereotype.Component;
+//
+//import java.util.Map;
+//import java.util.Set;
+//
+///**
+// * @author exrick
+// */
+//@Slf4j
+//@Component
+//public class TencentSms implements Sms {
+//
+//    @Autowired
+//    private SettingService settingService;
+//
+//    @Override
+//    public SmsSetting getSmsSetting() {
+//
+//        Setting setting = settingService.get(SettingConstant.TENCENT_SMS);
+//        if (setting == null || StrUtil.isBlank(setting.getValue())) {
+//            throw new XbootException("鎮ㄨ繕鏈厤缃吘璁簯鐭俊鏈嶅姟");
+//        }
+//        return new Gson().fromJson(setting.getValue(), SmsSetting.class);
+//    }
+//
+//    @Override
+//    public void sendSms(String mobile, String params, String templateCode) {
+//
+//        SmsSetting s = getSmsSetting();
+//        try {
+//            Credential cred = new Credential(s.getAccessKey(), s.getSecretKey());
+//            SmsClient client = new SmsClient(cred, "");
+//            SendSmsRequest req = new SendSmsRequest();
+//
+//            // 鐭俊搴旂敤 ID: 鍦� [鐭俊鎺у埗鍙�-搴旂敤绠$悊] 娣诲姞搴旂敤鍚庣敓鎴愮殑瀹為檯 SDKAppID锛屼緥濡�1400006666
+//            req.setSmsSdkAppid(s.getAppId());
+//            // 鐭俊绛惧悕鍐呭: 浣跨敤 UTF-8 缂栫爜锛屽繀椤诲~鍐欏凡瀹℃牳閫氳繃鐨勭鍚嶏紝鍙櫥褰� [鐭俊鎺у埗鍙癩 鏌ョ湅绛惧悕淇℃伅
+//            req.setSign(s.getSignName());
+//            // 妯℃澘 ID: 蹇呴』濉啓宸插鏍搁�氳繃鐨勬ā鏉� ID锛屽彲鐧诲綍 [鐭俊鎺у埗鍙癩 鏌ョ湅妯℃澘 ID
+//            req.setTemplateID(templateCode);
+//            /* 涓嬪彂鎵嬫満鍙风爜锛岄噰鐢� e.164 鏍囧噯锛�+[鍥藉鎴栧湴鍖虹爜][鎵嬫満鍙穄
+//             * 渚嬪+8613800000000锛� 鍏朵腑鍓嶉潰鏈変竴涓�+鍙� 锛�86涓哄浗瀹剁爜锛�13800000000涓烘墜鏈哄彿锛屾渶澶氫笉瑕佽秴杩�200涓墜鏈哄彿*/
+//            String[] phoneNumbers = {"+86" + mobile};
+//            req.setPhoneNumberSet(phoneNumbers);
+//            /* 妯℃澘鍙傛暟: 鑻ユ棤妯℃澘鍙傛暟锛屽垯璁剧疆涓虹┖*/
+//            req.setTemplateParamSet(getParams(params));
+//
+//            SendStatus sendStatus = client.SendSms(req).getSendStatusSet()[0];
+//            if (!"Ok".equals(sendStatus.getCode())) {
+//                throw new XbootException("璇锋眰鍙戦�侀獙璇佺爜澶辫触锛�" + sendStatus.getMessage());
+//            }
+//        } catch (TencentCloudSDKException e) {
+//            throw new XbootException("璇锋眰鍙戦�侀獙璇佺爜澶辫触锛岄敊璇爜锛�" + e.getErrorCode());
+//        }
+//    }
+//
+//    public static String[] getPhoneNumbers(String mobile) {
+//
+//        String[] phoneNumbers = mobile.split(",");
+//        for (int i = 0; i < phoneNumbers.length; i++) {
+//            String number = phoneNumbers[i];
+//            if (NameUtil.mobile(number)) {
+//                phoneNumbers[i] = "+86" + number;
+//            } else {
+//                phoneNumbers[i] = "+" + number;
+//            }
+//        }
+//        return phoneNumbers;
+//    }
+//
+//    public static String[] getParams(String params) {
+//
+//        Set<Map.Entry<String, JsonElement>> entries = JsonParser.parseString(params).getAsJsonObject().entrySet();
+//        String[] templateParams = new String[entries.size()];
+//        int i = 0;
+//        for (Map.Entry<String, JsonElement> entry : entries) {
+//            String value = entry.getValue().getAsString();
+//            templateParams[i] = value;
+//            i++;
+//        }
+//        return templateParams;
+//    }
+//}
diff --git a/xboot-modules/pom.xml b/xboot-modules/pom.xml
index c53d42a..895cf49 100644
--- a/xboot-modules/pom.xml
+++ b/xboot-modules/pom.xml
@@ -13,15 +13,12 @@
     <packaging>pom</packaging>
     <modules>
         <module>xboot-base</module>
-        <module>xboot-activiti</module>
         <module>xboot-social</module>
         <module>xboot-generator</module>
         <module>xboot-file</module>
         <module>xboot-quartz</module>
         <module>xboot-open</module>
         <module>xboot-your</module>
-        <module>xboot-app</module>
-        <module>xboot-autochat</module>
     </modules>
 
     <dependencies>
diff --git a/xboot-modules/xboot-base/src/main/java/cn/exrick/xboot/base/controller/common/CaptchaController.java b/xboot-modules/xboot-base/src/main/java/cn/exrick/xboot/base/controller/common/CaptchaController.java
index b5aebcd..c7f4f0d 100644
--- a/xboot-modules/xboot-base/src/main/java/cn/exrick/xboot/base/controller/common/CaptchaController.java
+++ b/xboot-modules/xboot-base/src/main/java/cn/exrick/xboot/base/controller/common/CaptchaController.java
@@ -1,139 +1,139 @@
-package cn.exrick.xboot.base.controller.common;
-
-import cn.exrick.xboot.core.common.annotation.RateLimiter;
-import cn.exrick.xboot.core.common.constant.CommonConstant;
-import cn.exrick.xboot.core.common.redis.RedisTemplateHelper;
-import cn.exrick.xboot.core.common.sms.SmsUtil;
-import cn.exrick.xboot.core.common.utils.CommonUtil;
-import cn.exrick.xboot.core.common.utils.CreateVerifyCode;
-import cn.exrick.xboot.core.common.utils.IpInfoUtil;
-import cn.exrick.xboot.core.common.utils.ResultUtil;
-import cn.exrick.xboot.core.common.vo.Result;
-import cn.exrick.xboot.core.service.SettingService;
-import cn.exrick.xboot.core.service.UserService;
-import cn.hutool.core.util.IdUtil;
-import cn.hutool.core.util.StrUtil;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.util.concurrent.TimeUnit;
-
-/**
- * @author Exrickx
- */
-@Api(tags = "楠岃瘉鐮佹帴鍙�")
-@RequestMapping("/xboot/common/captcha")
-@RestController
-@Transactional
-@Slf4j
-public class CaptchaController {
-
-    @Autowired
-    private SmsUtil smsUtil;
-
-    @Autowired
-    private RedisTemplateHelper redisTemplate;
-
-    @Autowired
-    private IpInfoUtil ipInfoUtil;
-
-    @Autowired
-    private UserService userService;
-
-    @Autowired
-    private SettingService settingService;
-
-    @RequestMapping(value = "/init", method = RequestMethod.GET)
-    @ApiOperation(value = "鍒濆鍖栭獙璇佺爜")
-    public Result<Object> initCaptcha() {
-
-        String captchaId = IdUtil.simpleUUID();
-        String code = new CreateVerifyCode().randomStr(4);
-        // 缂撳瓨楠岃瘉鐮�
-        redisTemplate.set(captchaId, code, 2L, TimeUnit.MINUTES);
-        return ResultUtil.data(captchaId);
-    }
-
-    @RequestMapping(value = "/draw/{captchaId}", method = RequestMethod.GET)
-    @ApiOperation(value = "鏍规嵁楠岃瘉鐮両D鑾峰彇鍥剧墖")
-    public void drawCaptcha(@PathVariable("captchaId") String captchaId,
-                            HttpServletResponse response) throws IOException {
-
-        // 寰楀埌楠岃瘉鐮� 鐢熸垚鎸囧畾楠岃瘉鐮�
-        String code = redisTemplate.get(captchaId);
-        CreateVerifyCode vCode = new CreateVerifyCode(116, 36, 4, 10, code);
-        response.setContentType("image/png");
-        vCode.write(response.getOutputStream());
-    }
-
-    @RequestMapping(value = "/sendRegistSms/{mobile}", method = RequestMethod.GET)
-    @ApiOperation(value = "鍙戦�佹敞鍐岀煭淇¢獙璇佺爜")
-    public Result<Object> sendRegistSmsCode(@PathVariable String mobile, HttpServletRequest request) {
-
-        return sendSms(mobile, 2, 0, request);
-    }
-
-    @RequestMapping(value = "/sendLoginSms/{mobile}", method = RequestMethod.GET)
-    @ApiOperation(value = "鍙戦�佺櫥褰曠煭淇¢獙璇佺爜")
-    @RateLimiter(name="sendLoginSms", rate = 1, ipLimit = true)
-    public Result<Object> sendLoginSmsCode(@PathVariable String mobile, HttpServletRequest request) {
-
-        return sendSms(mobile, 1, 0, request);
-    }
-
-    @RequestMapping(value = "/sendResetSms/{mobile}", method = RequestMethod.GET)
-    @ApiOperation(value = "鍙戦�侀噸缃瘑鐮佺煭淇¢獙璇佺爜")
-    public Result<Object> sendResetSmsCode(@PathVariable String mobile, HttpServletRequest request) {
-
-        return sendSms(mobile, 1, 5, request);
-    }
-
-    @RequestMapping(value = "/sendEditMobileSms/{mobile}", method = RequestMethod.GET)
-    @ApiOperation(value = "鍙戦�佷慨鏀规墜鏈虹煭淇¢獙璇佺爜")
-    public Result<Object> sendEditMobileSmsCode(@PathVariable String mobile, HttpServletRequest request) {
-
-        if (userService.findByMobile(mobile) != null) {
-            return ResultUtil.error("璇ユ墜鏈哄彿宸茬粦瀹氳处鎴�");
-        }
-        return sendSms(mobile, 0, 0, request);
-    }
-
-    /**
-     * @param mobile       鎵嬫満鍙�
-     * @param range        鍙戦�佽寖鍥� 0鍙戦�佺粰鎵�鏈夋墜鏈哄彿 1鍙彂閫佺粰娉ㄥ唽鎵嬫満 2鍙彂閫佺粰鏈敞鍐屾墜鏈�
-     * @param templateType 0閫氱敤妯$増 1娉ㄥ唽 2鐧诲綍 3淇敼鎵嬫満 4淇敼瀵嗙爜 5閲嶇疆瀵嗙爜 6宸ヤ綔娴佹ā鐗�
-     */
-    public Result<Object> sendSms(String mobile, Integer range, Integer templateType, HttpServletRequest request) {
-
-        if (range == 1 && userService.findByMobile(mobile) == null) {
-            return ResultUtil.error("鎵嬫満鍙锋湭娉ㄥ唽");
-        } else if (range == 2 && userService.findByMobile(mobile) != null) {
-            return ResultUtil.error("鎵嬫満鍙峰凡娉ㄥ唽");
-        }
-        // IP闄愭祦 1鍒嗛挓闄�1涓姹�
-        String key = "sendSms:" + ipInfoUtil.getIpAddr(request);
-        String value = redisTemplate.get(key);
-        if (StrUtil.isNotBlank(value)) {
-            return ResultUtil.error("鎮ㄥ彂閫佺殑澶绻佸暒锛岃绋嶅悗鍐嶈瘯");
-        }
-        // 鐢熸垚6浣嶆暟楠岃瘉鐮�
-        String code = CommonUtil.getRandomNum();
-        // 缂撳瓨楠岃瘉鐮�
-        redisTemplate.set(CommonConstant.PRE_SMS + mobile, code, 5L, TimeUnit.MINUTES);
-        // 鍙戦�侀獙璇佺爜
-        smsUtil.sendCode(mobile, code, templateType);
-        // 璇锋眰鎴愬姛 鏍囪闄愭祦
-        redisTemplate.set(key, "sended", 1L, TimeUnit.MINUTES);
-        return ResultUtil.success("鍙戦�佺煭淇¢獙璇佺爜鎴愬姛");
-    }
-}
+//package cn.exrick.xboot.base.controller.common;
+//
+//import cn.exrick.xboot.core.common.annotation.RateLimiter;
+//import cn.exrick.xboot.core.common.constant.CommonConstant;
+//import cn.exrick.xboot.core.common.redis.RedisTemplateHelper;
+//import cn.exrick.xboot.core.common.sms.SmsUtil;
+//import cn.exrick.xboot.core.common.utils.CommonUtil;
+//import cn.exrick.xboot.core.common.utils.CreateVerifyCode;
+//import cn.exrick.xboot.core.common.utils.IpInfoUtil;
+//import cn.exrick.xboot.core.common.utils.ResultUtil;
+//import cn.exrick.xboot.core.common.vo.Result;
+//import cn.exrick.xboot.core.service.SettingService;
+//import cn.exrick.xboot.core.service.UserService;
+//import cn.hutool.core.util.IdUtil;
+//import cn.hutool.core.util.StrUtil;
+//import io.swagger.annotations.Api;
+//import io.swagger.annotations.ApiOperation;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.transaction.annotation.Transactional;
+//import org.springframework.web.bind.annotation.PathVariable;
+//import org.springframework.web.bind.annotation.RequestMapping;
+//import org.springframework.web.bind.annotation.RequestMethod;
+//import org.springframework.web.bind.annotation.RestController;
+//
+//import javax.servlet.http.HttpServletRequest;
+//import javax.servlet.http.HttpServletResponse;
+//import java.io.IOException;
+//import java.util.concurrent.TimeUnit;
+//
+///**
+// * @author Exrickx
+// */
+//@Api(tags = "楠岃瘉鐮佹帴鍙�")
+//@RequestMapping("/xboot/common/captcha")
+//@RestController
+//@Transactional
+//@Slf4j
+//public class CaptchaController {
+//
+//    @Autowired
+//    private SmsUtil smsUtil;
+//
+//    @Autowired
+//    private RedisTemplateHelper redisTemplate;
+//
+//    @Autowired
+//    private IpInfoUtil ipInfoUtil;
+//
+//    @Autowired
+//    private UserService userService;
+//
+//    @Autowired
+//    private SettingService settingService;
+//
+//    @RequestMapping(value = "/init", method = RequestMethod.GET)
+//    @ApiOperation(value = "鍒濆鍖栭獙璇佺爜")
+//    public Result<Object> initCaptcha() {
+//
+//        String captchaId = IdUtil.simpleUUID();
+//        String code = new CreateVerifyCode().randomStr(4);
+//        // 缂撳瓨楠岃瘉鐮�
+//        redisTemplate.set(captchaId, code, 2L, TimeUnit.MINUTES);
+//        return ResultUtil.data(captchaId);
+//    }
+//
+//    @RequestMapping(value = "/draw/{captchaId}", method = RequestMethod.GET)
+//    @ApiOperation(value = "鏍规嵁楠岃瘉鐮両D鑾峰彇鍥剧墖")
+//    public void drawCaptcha(@PathVariable("captchaId") String captchaId,
+//                            HttpServletResponse response) throws IOException {
+//
+//        // 寰楀埌楠岃瘉鐮� 鐢熸垚鎸囧畾楠岃瘉鐮�
+//        String code = redisTemplate.get(captchaId);
+//        CreateVerifyCode vCode = new CreateVerifyCode(116, 36, 4, 10, code);
+//        response.setContentType("image/png");
+//        vCode.write(response.getOutputStream());
+//    }
+//
+//    @RequestMapping(value = "/sendRegistSms/{mobile}", method = RequestMethod.GET)
+//    @ApiOperation(value = "鍙戦�佹敞鍐岀煭淇¢獙璇佺爜")
+//    public Result<Object> sendRegistSmsCode(@PathVariable String mobile, HttpServletRequest request) {
+//
+//        return sendSms(mobile, 2, 0, request);
+//    }
+//
+//    @RequestMapping(value = "/sendLoginSms/{mobile}", method = RequestMethod.GET)
+//    @ApiOperation(value = "鍙戦�佺櫥褰曠煭淇¢獙璇佺爜")
+//    @RateLimiter(name="sendLoginSms", rate = 1, ipLimit = true)
+//    public Result<Object> sendLoginSmsCode(@PathVariable String mobile, HttpServletRequest request) {
+//
+//        return sendSms(mobile, 1, 0, request);
+//    }
+//
+//    @RequestMapping(value = "/sendResetSms/{mobile}", method = RequestMethod.GET)
+//    @ApiOperation(value = "鍙戦�侀噸缃瘑鐮佺煭淇¢獙璇佺爜")
+//    public Result<Object> sendResetSmsCode(@PathVariable String mobile, HttpServletRequest request) {
+//
+//        return sendSms(mobile, 1, 5, request);
+//    }
+//
+//    @RequestMapping(value = "/sendEditMobileSms/{mobile}", method = RequestMethod.GET)
+//    @ApiOperation(value = "鍙戦�佷慨鏀规墜鏈虹煭淇¢獙璇佺爜")
+//    public Result<Object> sendEditMobileSmsCode(@PathVariable String mobile, HttpServletRequest request) {
+//
+//        if (userService.findByMobile(mobile) != null) {
+//            return ResultUtil.error("璇ユ墜鏈哄彿宸茬粦瀹氳处鎴�");
+//        }
+//        return sendSms(mobile, 0, 0, request);
+//    }
+//
+//    /**
+//     * @param mobile       鎵嬫満鍙�
+//     * @param range        鍙戦�佽寖鍥� 0鍙戦�佺粰鎵�鏈夋墜鏈哄彿 1鍙彂閫佺粰娉ㄥ唽鎵嬫満 2鍙彂閫佺粰鏈敞鍐屾墜鏈�
+//     * @param templateType 0閫氱敤妯$増 1娉ㄥ唽 2鐧诲綍 3淇敼鎵嬫満 4淇敼瀵嗙爜 5閲嶇疆瀵嗙爜 6宸ヤ綔娴佹ā鐗�
+//     */
+//    public Result<Object> sendSms(String mobile, Integer range, Integer templateType, HttpServletRequest request) {
+//
+//        if (range == 1 && userService.findByMobile(mobile) == null) {
+//            return ResultUtil.error("鎵嬫満鍙锋湭娉ㄥ唽");
+//        } else if (range == 2 && userService.findByMobile(mobile) != null) {
+//            return ResultUtil.error("鎵嬫満鍙峰凡娉ㄥ唽");
+//        }
+//        // IP闄愭祦 1鍒嗛挓闄�1涓姹�
+//        String key = "sendSms:" + ipInfoUtil.getIpAddr(request);
+//        String value = redisTemplate.get(key);
+//        if (StrUtil.isNotBlank(value)) {
+//            return ResultUtil.error("鎮ㄥ彂閫佺殑澶绻佸暒锛岃绋嶅悗鍐嶈瘯");
+//        }
+//        // 鐢熸垚6浣嶆暟楠岃瘉鐮�
+//        String code = CommonUtil.getRandomNum();
+//        // 缂撳瓨楠岃瘉鐮�
+//        redisTemplate.set(CommonConstant.PRE_SMS + mobile, code, 5L, TimeUnit.MINUTES);
+//        // 鍙戦�侀獙璇佺爜
+//        smsUtil.sendCode(mobile, code, templateType);
+//        // 璇锋眰鎴愬姛 鏍囪闄愭祦
+//        redisTemplate.set(key, "sended", 1L, TimeUnit.MINUTES);
+//        return ResultUtil.success("鍙戦�佺煭淇¢獙璇佺爜鎴愬姛");
+//    }
+//}
diff --git a/xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/FileManageFactory.java b/xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/FileManageFactory.java
index 70ef4e4..33a9b23 100644
--- a/xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/FileManageFactory.java
+++ b/xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/FileManageFactory.java
@@ -21,18 +21,6 @@
     private SettingService settingService;
 
     @Autowired
-    private QiniuFileManage qiniuFileManage;
-
-    @Autowired
-    private AliFileManage aliFileManage;
-
-    @Autowired
-    private TencentFileManage tencentFileManage;
-
-    @Autowired
-    private MinioFileManage minioFileManage;
-
-    @Autowired
     private LocalFileManage localFileManage;
 
     /**
@@ -44,18 +32,10 @@
 
         Setting setting = settingService.get(SettingConstant.OSS_USED);
         if (setting == null || StrUtil.isBlank(setting.getValue())) {
-            throw new XbootException("鎮ㄨ繕鏈厤缃甇SS瀛樺偍鏈嶅姟");
+            throw new XbootException("鎮ㄨ繕鏈厤缃瓨鍌ㄥ湴鍧�");
         }
         String type = setting.getValue();
-        if ((type.equals(SettingConstant.QINIU_OSS) && location == null) || CommonConstant.OSS_QINIU.equals(location)) {
-            return qiniuFileManage;
-        } else if ((type.equals(SettingConstant.ALI_OSS) && location == null) || CommonConstant.OSS_ALI.equals(location)) {
-            return aliFileManage;
-        } else if ((type.equals(SettingConstant.TENCENT_OSS) && location == null) || CommonConstant.OSS_TENCENT.equals(location)) {
-            return tencentFileManage;
-        } else if ((type.equals(SettingConstant.MINIO_OSS) && location == null) || CommonConstant.OSS_MINIO.equals(location)) {
-            return minioFileManage;
-        } else if ((type.equals(SettingConstant.LOCAL_OSS) && location == null) || CommonConstant.OSS_LOCAL.equals(location)) {
+        if ((type.equals(SettingConstant.LOCAL_OSS) && location == null) || CommonConstant.OSS_LOCAL.equals(location)) {
             return localFileManage;
         } else {
             throw new XbootException("鏆備笉鏀寔璇ュ瓨鍌ㄩ厤缃紝璇锋鏌ラ厤缃�");
diff --git a/xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/impl/AliFileManage.java b/xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/impl/AliFileManage.java
deleted file mode 100644
index 496aeb7..0000000
--- a/xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/impl/AliFileManage.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package cn.exrick.xboot.file.manage.impl;
-
-import cn.exrick.xboot.core.common.constant.SettingConstant;
-import cn.exrick.xboot.core.common.exception.XbootException;
-import cn.exrick.xboot.core.entity.Setting;
-import cn.exrick.xboot.core.service.SettingService;
-import cn.exrick.xboot.core.vo.OssSetting;
-import cn.exrick.xboot.file.manage.FileManage;
-import cn.hutool.core.util.StrUtil;
-import com.aliyun.oss.OSSClient;
-import com.aliyun.oss.common.auth.DefaultCredentialProvider;
-import com.google.gson.Gson;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.File;
-import java.io.InputStream;
-
-/**
- * @author Exrick
- */
-@Component
-public class AliFileManage implements FileManage {
-
-    @Autowired
-    private SettingService settingService;
-
-    @Override
-    public OssSetting getOssSetting() {
-
-        Setting setting = settingService.get(SettingConstant.ALI_OSS);
-        if (setting == null || StrUtil.isBlank(setting.getValue())) {
-            throw new XbootException("鎮ㄨ繕鏈厤缃樋閲屼簯OSS瀛樺偍");
-        }
-        return new Gson().fromJson(setting.getValue(), OssSetting.class);
-    }
-
-    @Override
-    public String inputStreamUpload(InputStream inputStream, String key, MultipartFile file) {
-
-        OssSetting os = getOssSetting();
-        OSSClient ossClient = new OSSClient(os.getHttp() + os.getEndpoint(), new DefaultCredentialProvider(os.getAccessKey(), os.getSecretKey()), null);
-        ossClient.putObject(os.getBucket(), key, inputStream);
-        ossClient.shutdown();
-        return os.getHttp() + os.getBucket() + "." + os.getEndpoint() + "/" + key;
-    }
-
-    @Override
-    public String renameFile(String fromKey, String toKey) {
-
-        OssSetting os = getOssSetting();
-        copyFile(fromKey, toKey);
-        deleteFile(fromKey);
-        return os.getHttp() + os.getBucket() + "." + os.getEndpoint() + "/" + toKey;
-    }
-
-    @Override
-    public String copyFile(String fromKey, String toKey) {
-
-        OssSetting os = getOssSetting();
-        OSSClient ossClient = new OSSClient(os.getHttp() + os.getEndpoint(), new DefaultCredentialProvider(os.getAccessKey(), os.getSecretKey()), null);
-        ossClient.copyObject(os.getBucket(), fromKey, os.getBucket(), toKey);
-        ossClient.shutdown();
-        return os.getHttp() + os.getBucket() + "." + os.getEndpoint() + "/" + toKey;
-    }
-
-    @Override
-    public void deleteFile(String key) {
-
-        OssSetting os = getOssSetting();
-        OSSClient ossClient = new OSSClient(os.getHttp() + os.getEndpoint(), new DefaultCredentialProvider(os.getAccessKey(), os.getSecretKey()), null);
-        ossClient.deleteObject(os.getBucket(), key);
-        ossClient.shutdown();
-    }
-}
diff --git a/xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/impl/MinioFileManage.java b/xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/impl/MinioFileManage.java
deleted file mode 100644
index 218ecdb..0000000
--- a/xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/impl/MinioFileManage.java
+++ /dev/null
@@ -1,135 +0,0 @@
-package cn.exrick.xboot.file.manage.impl;
-
-import cn.exrick.xboot.core.common.constant.SettingConstant;
-import cn.exrick.xboot.core.common.exception.XbootException;
-import cn.exrick.xboot.core.entity.Setting;
-import cn.exrick.xboot.core.service.SettingService;
-import cn.exrick.xboot.core.vo.OssSetting;
-import cn.exrick.xboot.file.manage.FileManage;
-import cn.hutool.core.util.StrUtil;
-import com.google.gson.Gson;
-import io.minio.*;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.InputStream;
-
-/**
- * @author Exrick
- */
-@Slf4j
-@Component
-public class MinioFileManage implements FileManage {
-
-    @Autowired
-    private SettingService settingService;
-
-    @Override
-    public OssSetting getOssSetting() {
-
-        Setting setting = settingService.get(SettingConstant.MINIO_OSS);
-        if (setting == null || StrUtil.isBlank(setting.getValue())) {
-            throw new XbootException("鎮ㄨ繕鏈厤缃甅inIO瀛樺偍");
-        }
-        return new Gson().fromJson(setting.getValue(), OssSetting.class);
-    }
-
-    /**
-     * 濡傛灉瀛樺偍妗朵笉瀛樺湪 鍒涘缓瀛樺偍閫�
-     * @param os
-     * @param minioClient
-     * @throws Exception
-     */
-    public void checkBucket(OssSetting os, MinioClient minioClient) throws Exception {
-
-        // 濡傛灉瀛樺偍妗朵笉瀛樺湪 鍒涘缓瀛樺偍閫�
-        if (!minioClient.bucketExists(BucketExistsArgs.builder().bucket(os.getBucket()).build())) {
-            minioClient.makeBucket(MakeBucketArgs.builder().bucket(os.getBucket()).build());
-            // 璁剧疆闅愮鏉冮檺 鍏紑璇�
-            StringBuilder builder = new StringBuilder();
-            builder.append("{\n");
-            builder.append("    \"Statement\": [\n");
-            builder.append("        {\n");
-            builder.append("            \"Action\": [\n");
-            builder.append("                \"s3:GetBucketLocation\",\n");
-            builder.append("                \"s3:ListBucket\"\n");
-            builder.append("            ],\n");
-            builder.append("            \"Effect\": \"Allow\",\n");
-            builder.append("            \"Principal\": \"*\",\n");
-            builder.append("            \"Resource\": \"arn:aws:s3:::" + os.getBucket() + "\"\n");
-            builder.append("        },\n");
-            builder.append("        {\n");
-            builder.append("            \"Action\": \"s3:GetObject\",\n");
-            builder.append("            \"Effect\": \"Allow\",\n");
-            builder.append("            \"Principal\": \"*\",\n");
-            builder.append("            \"Resource\": \"arn:aws:s3:::" + os.getBucket() + "/*\"\n");
-            builder.append("        }\n");
-            builder.append("    ],\n");
-            builder.append("    \"Version\": \"2012-10-17\"\n");
-            builder.append("}\n");
-            minioClient.setBucketPolicy(SetBucketPolicyArgs.builder().bucket(os.getBucket()).config(builder.toString()).build());
-        }
-    }
-
-    @Override
-    public String inputStreamUpload(InputStream inputStream, String key, MultipartFile file) {
-
-        OssSetting os = getOssSetting();
-        try {
-            MinioClient minioClient = MinioClient.builder().endpoint(os.getHttp() + os.getEndpoint())
-                    .credentials(os.getAccessKey(), os.getSecretKey())
-                    .build();
-            checkBucket(os, minioClient);
-            minioClient.putObject(PutObjectArgs.builder().bucket(os.getBucket()).object(key)
-                    .stream(inputStream, file.getSize(), -1)
-                    .contentType(file.getContentType())
-                    .build());
-        } catch (Exception e) {
-            throw new XbootException("涓婁紶鍑洪敊锛岃妫�鏌inIO閰嶇疆");
-        }
-        return os.getHttp() + os.getEndpoint() + "/" + os.getBucket() + "/" + key;
-    }
-
-    @Override
-    public String renameFile(String fromKey, String toKey) {
-
-        OssSetting os = getOssSetting();
-        copyFile(fromKey, toKey);
-        deleteFile(fromKey);
-        return os.getHttp() + os.getEndpoint() + "/" + os.getBucket() + "/" + toKey;
-    }
-
-    @Override
-    public String copyFile(String fromKey, String toKey) {
-
-        OssSetting os = getOssSetting();
-        try {
-            MinioClient minioClient = MinioClient.builder().endpoint(os.getHttp() + os.getEndpoint())
-                    .credentials(os.getAccessKey(), os.getSecretKey())
-                    .build();
-            checkBucket(os, minioClient);
-            minioClient.copyObject(CopyObjectArgs.builder().bucket(os.getBucket()).object(toKey)
-                    .source(CopySource.builder().bucket(os.getBucket()).object(fromKey).build()).build());
-        } catch (Exception e) {
-            throw new XbootException("鎷疯礉鏂囦欢鍑洪敊锛岃妫�鏌inIO閰嶇疆");
-        }
-        return os.getHttp() + os.getEndpoint() + "/" + os.getBucket() + "/" + toKey;
-    }
-
-    @Override
-    public void deleteFile(String key) {
-
-        OssSetting os = getOssSetting();
-        try {
-            MinioClient minioClient = MinioClient.builder().endpoint(os.getHttp() + os.getEndpoint())
-                    .credentials(os.getAccessKey(), os.getSecretKey())
-                    .build();
-            checkBucket(os, minioClient);
-            minioClient.removeObject(RemoveObjectArgs.builder().bucket(os.getBucket()).object(key).build());
-        } catch (Exception e) {
-            throw new XbootException("鍒犻櫎鏂囦欢鍑洪敊锛岃妫�鏌inIO閰嶇疆");
-        }
-    }
-}
diff --git a/xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/impl/QiniuFileManage.java b/xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/impl/QiniuFileManage.java
deleted file mode 100644
index c0b64e9..0000000
--- a/xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/impl/QiniuFileManage.java
+++ /dev/null
@@ -1,136 +0,0 @@
-package cn.exrick.xboot.file.manage.impl;
-
-import cn.exrick.xboot.core.common.constant.SettingConstant;
-import cn.exrick.xboot.core.common.exception.XbootException;
-import cn.exrick.xboot.core.entity.Setting;
-import cn.exrick.xboot.core.service.SettingService;
-import cn.exrick.xboot.core.vo.OssSetting;
-import cn.exrick.xboot.file.manage.FileManage;
-import cn.hutool.core.util.StrUtil;
-import com.google.gson.Gson;
-import com.qiniu.common.QiniuException;
-import com.qiniu.http.Response;
-import com.qiniu.storage.BucketManager;
-import com.qiniu.storage.Configuration;
-import com.qiniu.storage.Region;
-import com.qiniu.storage.UploadManager;
-import com.qiniu.storage.model.DefaultPutRet;
-import com.qiniu.storage.model.FileInfo;
-import com.qiniu.util.Auth;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.InputStream;
-
-/**
- * @author Exrick
- */
-@Slf4j
-@Component
-public class QiniuFileManage implements FileManage {
-
-    @Autowired
-    private SettingService settingService;
-
-    @Override
-    public OssSetting getOssSetting() {
-
-        Setting setting = settingService.get(SettingConstant.QINIU_OSS);
-        if (setting == null || StrUtil.isBlank(setting.getValue())) {
-            throw new XbootException("鎮ㄨ繕鏈厤缃竷鐗涗簯瀵硅薄瀛樺偍");
-        }
-        return new Gson().fromJson(setting.getValue(), OssSetting.class);
-    }
-
-    public Configuration getConfiguration(Integer zone) {
-
-        Configuration cfg = null;
-        if (zone.equals(SettingConstant.ZONE_ZERO)) {
-            cfg = new Configuration(Region.region0());
-        } else if (zone.equals(SettingConstant.ZONE_ONE)) {
-            cfg = new Configuration(Region.region1());
-        } else if (zone.equals(SettingConstant.ZONE_TWO)) {
-            cfg = new Configuration(Region.region2());
-        } else if (zone.equals(SettingConstant.ZONE_THREE)) {
-            cfg = new Configuration(Region.regionNa0());
-        } else if (zone.equals(SettingConstant.ZONE_FOUR)) {
-            cfg = new Configuration(Region.regionAs0());
-        } else {
-            cfg = new Configuration(Region.autoRegion());
-        }
-        return cfg;
-    }
-
-    public UploadManager getUploadManager(Configuration cfg) {
-
-        UploadManager uploadManager = new UploadManager(cfg);
-        return uploadManager;
-    }
-
-    @Override
-    public String inputStreamUpload(InputStream inputStream, String key, MultipartFile file) {
-
-        OssSetting os = getOssSetting();
-        Auth auth = Auth.create(os.getAccessKey(), os.getSecretKey());
-        String upToken = auth.uploadToken(os.getBucket());
-        try {
-            Response response = getUploadManager(getConfiguration(os.getZone())).put(inputStream, key, upToken, null, null);
-            DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
-            return os.getHttp() + os.getEndpoint() + "/" + putRet.key;
-        } catch (QiniuException ex) {
-            Response r = ex.response;
-            throw new XbootException("涓婁紶鏂囦欢鍑洪敊锛岃妫�鏌ヤ竷鐗涗簯閰嶇疆锛�" + r.toString());
-        }
-    }
-
-    @Override
-    public String renameFile(String fromKey, String toKey) {
-
-        OssSetting os = getOssSetting();
-        Auth auth = Auth.create(os.getAccessKey(), os.getSecretKey());
-        BucketManager bucketManager = new BucketManager(auth, getConfiguration(os.getZone()));
-        try {
-            bucketManager.move(os.getBucket(), fromKey, os.getBucket(), toKey);
-            return os.getHttp() + os.getEndpoint() + "/" + toKey;
-        } catch (QiniuException ex) {
-            throw new XbootException("閲嶅懡鍚嶆枃浠跺け璐ワ紝" + ex.response.error);
-        }
-    }
-
-    @Override
-    public String copyFile(String fromKey, String toKey) {
-
-        OssSetting os = getOssSetting();
-        Auth auth = Auth.create(os.getAccessKey(), os.getSecretKey());
-        BucketManager bucketManager = new BucketManager(auth, getConfiguration(os.getZone()));
-        try {
-            bucketManager.copy(os.getBucket(), fromKey, os.getBucket(), toKey);
-            return os.getHttp() + os.getEndpoint() + "/" + toKey;
-        } catch (QiniuException ex) {
-            throw new XbootException("澶嶅埗鏂囦欢澶辫触锛�" + ex.response.error);
-        }
-    }
-
-    @Override
-    public void deleteFile(String key) {
-
-        OssSetting os = getOssSetting();
-        Auth auth = Auth.create(os.getAccessKey(), os.getSecretKey());
-        BucketManager bucketManager = new BucketManager(auth, getConfiguration(os.getZone()));
-        FileInfo fileInfo = null;
-        try {
-            fileInfo = bucketManager.stat(os.getBucket(), key);
-        } catch (QiniuException ex) {
-            log.error("鑾峰彇鏂囦欢澶辫触锛�" + ex.response.error);
-        }
-        try {
-            if (fileInfo != null) {
-                bucketManager.delete(os.getBucket(), key);
-            }
-        } catch (QiniuException ex) {
-            throw new XbootException("鍒犻櫎鏂囦欢澶辫触锛�" + ex.response.error);
-        }
-    }
-}
diff --git a/xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/impl/TencentFileManage.java b/xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/impl/TencentFileManage.java
deleted file mode 100644
index db62b5b..0000000
--- a/xboot-modules/xboot-file/src/main/java/cn/exrick/xboot/file/manage/impl/TencentFileManage.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package cn.exrick.xboot.file.manage.impl;
-
-import cn.exrick.xboot.core.common.constant.SettingConstant;
-import cn.exrick.xboot.core.common.exception.XbootException;
-import cn.exrick.xboot.core.entity.Setting;
-import cn.exrick.xboot.core.service.SettingService;
-import cn.exrick.xboot.core.vo.OssSetting;
-import cn.exrick.xboot.file.manage.FileManage;
-import cn.hutool.core.util.StrUtil;
-import com.google.gson.Gson;
-import com.qcloud.cos.COSClient;
-import com.qcloud.cos.ClientConfig;
-import com.qcloud.cos.auth.BasicCOSCredentials;
-import com.qcloud.cos.auth.COSCredentials;
-import com.qcloud.cos.model.*;
-import com.qcloud.cos.region.Region;
-import com.qcloud.cos.transfer.Copy;
-import com.qcloud.cos.transfer.TransferManager;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.InputStream;
-
-/**
- * @author Exrick
- */
-@Component
-public class TencentFileManage implements FileManage {
-
-    @Autowired
-    private SettingService settingService;
-
-    @Override
-    public OssSetting getOssSetting() {
-
-        Setting setting = settingService.get(SettingConstant.TENCENT_OSS);
-        if (setting == null || StrUtil.isBlank(setting.getValue())) {
-            throw new XbootException("鎮ㄨ繕鏈厤缃吘璁簯COS瀛樺偍");
-        }
-        return new Gson().fromJson(setting.getValue(), OssSetting.class);
-    }
-
-    @Override
-    public String inputStreamUpload(InputStream inputStream, String key, MultipartFile file) {
-
-        OssSetting os = getOssSetting();
-
-        COSCredentials cred = new BasicCOSCredentials(os.getAccessKey(), os.getSecretKey());
-        ClientConfig clientConfig = new ClientConfig(new Region(os.getBucketRegion()));
-        COSClient cosClient = new COSClient(cred, clientConfig);
-
-        ObjectMetadata objectMetadata = new ObjectMetadata();
-        objectMetadata.setContentLength(file.getSize());
-        objectMetadata.setContentType(file.getContentType());
-
-        PutObjectRequest putObjectRequest = new PutObjectRequest(os.getBucket(), key, inputStream, objectMetadata);
-        PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
-        cosClient.shutdown();
-        return os.getHttp() + os.getEndpoint() + "/" + key;
-    }
-
-    @Override
-    public String renameFile(String fromKey, String toKey) {
-
-        OssSetting os = getOssSetting();
-        copyFile(fromKey, toKey);
-        deleteFile(fromKey);
-        return os.getHttp() + os.getEndpoint() + "/" + toKey;
-    }
-
-    @Override
-    public String copyFile(String fromKey, String toKey) {
-
-        OssSetting os = getOssSetting();
-
-        COSCredentials cred = new BasicCOSCredentials(os.getAccessKey(), os.getSecretKey());
-        ClientConfig clientConfig = new ClientConfig(new Region(os.getBucketRegion()));
-        COSClient cosClient = new COSClient(cred, clientConfig);
-
-        CopyObjectRequest copyObjectRequest = new CopyObjectRequest(os.getBucket(), fromKey, os.getBucket(), toKey);
-
-        TransferManager transferManager = new TransferManager(cosClient);
-        try {
-            Copy copy = transferManager.copy(copyObjectRequest, cosClient, null);
-            CopyResult copyResult = copy.waitForCopyResult();
-        } catch (Exception e) {
-            throw new XbootException("澶嶅埗鏂囦欢澶辫触");
-        }
-        transferManager.shutdownNow();
-        cosClient.shutdown();
-        return os.getHttp() + os.getEndpoint() + "/" + toKey;
-    }
-
-    @Override
-    public void deleteFile(String key) {
-
-        OssSetting os = getOssSetting();
-
-        COSCredentials cred = new BasicCOSCredentials(os.getAccessKey(), os.getSecretKey());
-        ClientConfig clientConfig = new ClientConfig(new Region(os.getBucketRegion()));
-        COSClient cosClient = new COSClient(cred, clientConfig);
-
-        cosClient.deleteObject(os.getBucket(), key);
-        cosClient.shutdown();
-    }
-}
diff --git a/xboot-modules/xboot-social/pom.xml b/xboot-modules/xboot-social/pom.xml
deleted file mode 100644
index 91b8cf0..0000000
--- a/xboot-modules/xboot-social/pom.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>xboot-modules</artifactId>
-        <groupId>cn.exrick</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>xboot-social</artifactId>
-
-
-</project>
\ No newline at end of file
diff --git a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/DingdingController.java b/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/DingdingController.java
deleted file mode 100644
index 19272cd..0000000
--- a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/DingdingController.java
+++ /dev/null
@@ -1,154 +0,0 @@
-package cn.exrick.xboot.social.controller;
-
-import cn.exrick.xboot.core.common.annotation.SystemLog;
-import cn.exrick.xboot.core.common.constant.CommonConstant;
-import cn.exrick.xboot.core.common.constant.SecurityConstant;
-import cn.exrick.xboot.core.common.enums.LogType;
-import cn.exrick.xboot.core.common.redis.RedisTemplateHelper;
-import cn.exrick.xboot.core.common.utils.ResultUtil;
-import cn.exrick.xboot.core.common.utils.SecurityUtil;
-import cn.exrick.xboot.core.common.vo.Result;
-import cn.exrick.xboot.core.config.security.SecurityUserDetails;
-import cn.exrick.xboot.core.entity.User;
-import cn.exrick.xboot.social.entity.Social;
-import cn.exrick.xboot.social.service.SocialService;
-import cn.hutool.core.util.IdUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.crypto.digest.HMac;
-import cn.hutool.crypto.digest.HmacAlgorithm;
-import cn.hutool.http.HttpUtil;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.codec.binary.Base64;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.util.concurrent.TimeUnit;
-
-/**
- * https://ding-doc.dingtalk.com/doc#/serverapi2/kymkv6
- * @author Exrickx
- */
-@Slf4j
-@Api(tags = "閽夐拤鐧诲綍鎺ュ彛")
-@RequestMapping("/xboot/social/dingding")
-@Controller
-public class DingdingController {
-
-    private static final String STATE = SecurityConstant.DINGDING_STATE;
-    private static final Integer TYPE = CommonConstant.SOCIAL_TYPE_DINGDING;
-    /**
-     * 鐢宠浠ょ墝鍦板潃
-     */
-    private static final String AUTHORIZE_URL = "https://oapi.dingtalk.com/connect/qrconnect";
-    /**
-     * 鑾峰彇鐢ㄦ埛淇℃伅鍦板潃
-     */
-    private static final String GET_USERINFO_URL = "https://oapi.dingtalk.com/sns/getuserinfo_bycode";
-    @Value("${xboot.social.dingding.appId}")
-    private String appId;
-    @Value("${xboot.social.dingding.appSecret}")
-    private String appSecret;
-    @Value("${xboot.social.dingding.callbackUrl}")
-    private String callbackUrl;
-    @Value("${xboot.social.callbackFeUrl}")
-    private String callbackFeUrl;
-    @Value("${xboot.social.callbackFeRelateUrl}")
-    private String callbackFeRelateUrl;
-    @Autowired
-    private SocialService socialService;
-    @Autowired
-    private SecurityUtil securityUtil;
-    @Autowired
-    private RedisTemplateHelper redisTemplate;
-
-    @RequestMapping(value = "/login", method = RequestMethod.GET)
-    @ApiOperation(value = "鑾峰彇浼佷笟寰俊璁よ瘉閾炬帴")
-    @ResponseBody
-    public Result<Object> login() {
-
-        // 鐢熸垚骞朵繚瀛榮tate 蹇界暐璇ュ弬鏁版湁鍙兘瀵艰嚧CSRF鏀诲嚮
-        String state = String.valueOf(System.currentTimeMillis());
-        redisTemplate.set(STATE + state, "VALID", 3L, TimeUnit.MINUTES);
-
-        // 浼犻�掑弬鏁癮ppid銆乺esponse_type銆乻cope銆乻tate銆乺edirect_uri
-        String url = AUTHORIZE_URL + "?appid=" + appId + "&response_type=code&scope=snsapi_login&state=" + state
-                + "&redirect_uri=" + callbackUrl;
-
-        return ResultUtil.data(url);
-    }
-
-    @RequestMapping(value = "/callback", method = RequestMethod.GET)
-    @ApiOperation(value = "鑾峰彇accessToken")
-    @SystemLog(description = "閽夐拤鍏宠仈鐧诲綍", type = LogType.LOGIN)
-    public String callback(@RequestParam(required = false) String code,
-                                 @RequestParam(required = false) String state) throws UnsupportedEncodingException {
-
-        if (StrUtil.isBlank(code)) {
-            return "redirect:" + callbackFeUrl + "?error=" + URLEncoder.encode("鎮ㄦ湭鍚屾剰鎺堟潈", "utf-8");
-        }
-        // 楠岃瘉state
-        String v = redisTemplate.get(STATE + state);
-        redisTemplate.delete(STATE + state);
-        if (StrUtil.isBlank(v)) {
-            return "redirect:" + callbackFeUrl + "?error=" + URLEncoder.encode("鎺堟潈瓒呮椂鎴杝tate涓嶆纭�", "utf-8");
-        }
-
-        // 鑾峰彇User淇℃伅
-        Long timestamp = System.currentTimeMillis();
-        HMac mac = new HMac(HmacAlgorithm.HmacSHA256, appSecret.getBytes("UTF-8"));
-        String signature = new String(Base64.encodeBase64(mac.digest(timestamp.toString())));
-        signature = URLEncoder.encode(signature, "UTF-8");
-        String userUrl = GET_USERINFO_URL + "?accessKey=" + appId + "&timestamp=" + timestamp + "&signature=" + signature;
-
-        String result = HttpUtil.post(userUrl, "{\"tmp_auth_code\": \"" + code + "\"}");
-        if (!result.contains("user_info")) {
-            return "redirect:" + callbackFeUrl + "?error=" + URLEncoder.encode("鑾峰彇鐢ㄦ埛淇℃伅澶辫触", "utf-8");
-        }
-
-        // 鑾峰彇unionid
-        JsonObject userJson = JsonParser.parseString(result).getAsJsonObject().get("user_info").getAsJsonObject();
-        String nick = userJson.get("nick").getAsString();
-        String openid = userJson.get("openid").getAsString();
-
-        // 瀛樺叆鏁版嵁搴�
-        Social dingding = socialService.findByOpenIdAndPlatform(openid, TYPE);
-        if (dingding == null) {
-            Social newding = new Social().setOpenId(openid).setUsername(nick).setPlatform(TYPE);
-            dingding = socialService.save(newding);
-        }
-
-        String url = "";
-        // 鍒ゆ柇鏄惁缁戝畾璐﹀彿
-        if (StrUtil.isNotBlank(dingding.getRelateUsername())) {
-            // 宸茬粦瀹� 鐩存帴鐧诲綍
-            String JWT = securityUtil.getToken(dingding.getRelateUsername(), true);
-            // 瀛樺叆redis
-            String JWTKey = IdUtil.simpleUUID();
-            redisTemplate.set(JWTKey, JWT, 2L, TimeUnit.MINUTES);
-            url = callbackFeUrl + "?related=1&JWTKey=" + JWTKey;
-            // 璁板綍鏃ュ織浣跨敤
-            UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(
-                    new SecurityUserDetails(new User().setUsername(dingding.getRelateUsername())), null, null);
-            SecurityContextHolder.getContext().setAuthentication(authentication);
-        } else {
-            // 鏈粦瀹� Redis瀛樺叆id
-            String idToken = IdUtil.simpleUUID();
-            redisTemplate.set(idToken, dingding.getId(), 5L, TimeUnit.MINUTES);
-            url = callbackFeRelateUrl + "?socialType=" + TYPE + "&id=" + idToken;
-        }
-        return "redirect:" + url;
-    }
-}
diff --git a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/GithubController.java b/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/GithubController.java
deleted file mode 100644
index 72304b6..0000000
--- a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/GithubController.java
+++ /dev/null
@@ -1,153 +0,0 @@
-package cn.exrick.xboot.social.controller;
-
-import cn.exrick.xboot.core.common.annotation.SystemLog;
-import cn.exrick.xboot.core.common.constant.CommonConstant;
-import cn.exrick.xboot.core.common.constant.SecurityConstant;
-import cn.exrick.xboot.core.common.enums.LogType;
-import cn.exrick.xboot.core.common.redis.RedisTemplateHelper;
-import cn.exrick.xboot.core.common.utils.ResultUtil;
-import cn.exrick.xboot.core.common.utils.SecurityUtil;
-import cn.exrick.xboot.core.common.vo.Result;
-import cn.exrick.xboot.core.config.security.SecurityUserDetails;
-import cn.exrick.xboot.core.entity.User;
-import cn.exrick.xboot.social.entity.Social;
-import cn.exrick.xboot.social.service.SocialService;
-import cn.exrick.xboot.social.vo.GithubUserInfo;
-import cn.hutool.core.util.IdUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.http.HttpUtil;
-import com.google.gson.Gson;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.util.concurrent.TimeUnit;
-
-/**
- * https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/
- * @author Exrickx
- */
-@Slf4j
-@Api(tags = "Github鐧诲綍鎺ュ彛")
-@RequestMapping("/xboot/social/github")
-@Controller
-public class GithubController {
-
-    private static final String STATE = SecurityConstant.GITHUB_STATE;
-    private static final Integer TYPE = CommonConstant.SOCIAL_TYPE_GITHUB;
-    /**
-     * Github璁よ瘉鏈嶅姟鍣ㄥ湴鍧�
-     */
-    private static final String AUTHORIZE_URL = "https://github.com/login/oauth/authorize";
-    /**
-     * 鐢宠浠ょ墝鍦板潃
-     */
-    private static final String ACCESS_TOKEN_URL = "https://github.com/login/oauth/access_token";
-    /**
-     * 鑾峰彇鐢ㄦ埛淇℃伅鍦板潃
-     */
-    private static final String GET_USERINFO_URL = "https://api.github.com/user?access_token=";
-    @Value("${xboot.social.github.clientId}")
-    private String clientId;
-    @Value("${xboot.social.github.clientSecret}")
-    private String clientSecret;
-    @Value("${xboot.social.github.callbackUrl}")
-    private String callbackUrl;
-    @Value("${xboot.social.callbackFeUrl}")
-    private String callbackFeUrl;
-    @Value("${xboot.social.callbackFeRelateUrl}")
-    private String callbackFeRelateUrl;
-    @Autowired
-    private SocialService socialService;
-    @Autowired
-    private SecurityUtil securityUtil;
-    @Autowired
-    private RedisTemplateHelper redisTemplate;
-
-    @RequestMapping(value = "/login", method = RequestMethod.GET)
-    @ApiOperation(value = "鑾峰彇github璁よ瘉閾炬帴")
-    @ResponseBody
-    public Result<Object> login() {
-
-        // 鐢熸垚骞朵繚瀛榮tate 蹇界暐璇ュ弬鏁版湁鍙兘瀵艰嚧CSRF鏀诲嚮
-        String state = String.valueOf(System.currentTimeMillis());
-        redisTemplate.set(STATE + state, "VALID", 3L, TimeUnit.MINUTES);
-
-        // 浼犻�掑弬鏁皉esponse_type銆乧lient_id銆乻tate銆乺edirect_uri
-        String url = AUTHORIZE_URL + "?response_type=code&" + "client_id=" + clientId + "&state=" + state
-                + "&redirect_uri=" + callbackUrl;
-
-        return ResultUtil.data(url);
-    }
-
-    @RequestMapping(value = "/callback", method = RequestMethod.GET)
-    @ApiOperation(value = "鑾峰彇accessToken")
-    @SystemLog(description = "Github鍏宠仈鐧诲綍", type = LogType.LOGIN)
-    public String callback(@RequestParam(required = false) String code,
-                                 @RequestParam(required = false) String state) throws UnsupportedEncodingException {
-
-        if (StrUtil.isBlank(code)) {
-            return "redirect:" + callbackFeUrl + "?error=" + URLEncoder.encode("鎮ㄦ湭鍚屾剰鎺堟潈", "utf-8");
-        }
-        // 楠岃瘉state
-        String v = redisTemplate.get(STATE + state);
-        redisTemplate.delete(STATE + state);
-        if (StrUtil.isBlank(v)) {
-            return "redirect:" + callbackFeUrl + "?error=" + URLEncoder.encode("鎺堟潈瓒呮椂鎴杝tate涓嶆纭�", "utf-8");
-        }
-
-        // 浼犻�掑弬鏁癵rant_type銆乧ode銆乺edirect_uri銆乧lient_id
-        String params = "grant_type=authorization_code&code=" + code + "&redirect_uri=" +
-                callbackUrl + "&client_id=" + clientId + "&client_secret=" + clientSecret;
-
-        // 鐢宠浠ょ墝 post璇锋眰
-        String result = HttpUtil.post(ACCESS_TOKEN_URL, params);
-
-        if (!result.contains("access_token=")) {
-            return "redirect:" + callbackFeUrl + "?error=" + URLEncoder.encode("鑾峰彇access_token澶辫触", "utf-8");
-        }
-
-        String accessToken = StrUtil.subBetween(result, "access_token=", "&scope");
-        // 鑾峰彇鐢ㄦ埛淇℃伅
-        String userInfo = HttpUtil.get(GET_USERINFO_URL + accessToken);
-        GithubUserInfo gu = new Gson().fromJson(userInfo, GithubUserInfo.class);
-        // 瀛樺叆鏁版嵁搴�
-        Social github = socialService.findByOpenIdAndPlatform(gu.getId(), TYPE);
-        if (github == null) {
-            Social g = new Social().setOpenId(gu.getId()).setUsername(gu.getLogin()).setAvatar(gu.getAvatar_url()).setPlatform(TYPE);
-            github = socialService.save(g);
-        }
-
-        String url = "";
-        // 鍒ゆ柇鏄惁缁戝畾璐﹀彿
-        if (StrUtil.isNotBlank(github.getRelateUsername())) {
-            // 宸茬粦瀹� 鐩存帴鐧诲綍
-            String JWT = securityUtil.getToken(github.getRelateUsername(), true);
-            // 瀛樺叆redis
-            String JWTKey = IdUtil.simpleUUID();
-            redisTemplate.set(JWTKey, JWT, 2L, TimeUnit.MINUTES);
-            url = callbackFeUrl + "?related=1&JWTKey=" + JWTKey;
-            // 璁板綍鏃ュ織浣跨敤
-            UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(
-                    new SecurityUserDetails(new User().setUsername(github.getRelateUsername())), null, null);
-            SecurityContextHolder.getContext().setAuthentication(authentication);
-        } else {
-            // 鏈粦瀹� Redis瀛樺叆id
-            String idToken = IdUtil.simpleUUID();
-            redisTemplate.set(idToken, github.getId(), 5L, TimeUnit.MINUTES);
-            url = callbackFeRelateUrl + "?socialType=" + TYPE + "&id=" + idToken;
-        }
-        return "redirect:" + url;
-    }
-}
diff --git a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/QQController.java b/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/QQController.java
deleted file mode 100644
index b6a65da..0000000
--- a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/QQController.java
+++ /dev/null
@@ -1,166 +0,0 @@
-package cn.exrick.xboot.social.controller;
-
-import cn.exrick.xboot.core.common.annotation.SystemLog;
-import cn.exrick.xboot.core.common.constant.CommonConstant;
-import cn.exrick.xboot.core.common.constant.SecurityConstant;
-import cn.exrick.xboot.core.common.enums.LogType;
-import cn.exrick.xboot.core.common.redis.RedisTemplateHelper;
-import cn.exrick.xboot.core.common.utils.ResultUtil;
-import cn.exrick.xboot.core.common.utils.SecurityUtil;
-import cn.exrick.xboot.core.common.vo.Result;
-import cn.exrick.xboot.core.config.security.SecurityUserDetails;
-import cn.exrick.xboot.core.entity.User;
-import cn.exrick.xboot.social.entity.Social;
-import cn.exrick.xboot.social.service.SocialService;
-import cn.exrick.xboot.social.vo.QQUserInfo;
-import cn.hutool.core.util.IdUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.http.HttpUtil;
-import com.google.gson.Gson;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.util.concurrent.TimeUnit;
-
-/**
- * http://wiki.connect.qq.com/
- * @author Exrickx
- */
-@Slf4j
-@Api(tags = "QQ鐧诲綍鎺ュ彛")
-@RequestMapping("/xboot/social/qq")
-@Controller
-public class QQController {
-
-    private static final String STATE = SecurityConstant.QQ_STATE;
-    private static final Integer TYPE = CommonConstant.SOCIAL_TYPE_QQ;
-    /**
-     * QQ璁よ瘉鏈嶅姟鍣ㄥ湴鍧�
-     */
-    private static final String AUTHORIZE_URL = "https://graph.qq.com/oauth2.0/authorize";
-    /**
-     * 鐢宠浠ょ墝鍦板潃
-     */
-    private static final String ACCESS_TOKEN_URL = "https://graph.qq.com/oauth2.0/token";
-    /**
-     * 鑾峰彇openId鍦板潃
-     */
-    private static final String OPEN_ID_URL = "https://graph.qq.com/oauth2.0/me?access_token=";
-    /**
-     * 鑾峰彇鐢ㄦ埛淇℃伅鍦板潃
-     */
-    private static final String GET_USERINFO_URL = "https://graph.qq.com/user/get_user_info";
-    @Value("${xboot.social.qq.appId}")
-    private String appId;
-    @Value("${xboot.social.qq.appKey}")
-    private String appKey;
-    @Value("${xboot.social.qq.callbackUrl}")
-    private String callbackUrl;
-    @Value("${xboot.social.callbackFeUrl}")
-    private String callbackFeUrl;
-    @Value("${xboot.social.callbackFeRelateUrl}")
-    private String callbackFeRelateUrl;
-    @Autowired
-    private SocialService socialService;
-    @Autowired
-    private SecurityUtil securityUtil;
-    @Autowired
-    private RedisTemplateHelper redisTemplate;
-
-    @RequestMapping(value = "/login", method = RequestMethod.GET)
-    @ApiOperation(value = "鑾峰彇qq璁よ瘉閾炬帴")
-    @ResponseBody
-    public Result<Object> login() {
-
-        // 鐢熸垚骞朵繚瀛榮tate 蹇界暐璇ュ弬鏁版湁鍙兘瀵艰嚧CSRF鏀诲嚮
-        String state = String.valueOf(System.currentTimeMillis());
-        redisTemplate.set(STATE + state, "VALID", 3L, TimeUnit.MINUTES);
-
-        // 浼犻�掑弬鏁皉esponse_type銆乧lient_id銆乻tate銆乺edirect_uri
-        String url = AUTHORIZE_URL + "?response_type=code&" + "client_id=" + appId + "&state=" + state
-                + "&redirect_uri=" + callbackUrl;
-
-        return ResultUtil.data(url);
-    }
-
-    @RequestMapping(value = "/callback", method = RequestMethod.GET)
-    @ApiOperation(value = "鑾峰彇accessToken")
-    @SystemLog(description = "QQ鍏宠仈鐧诲綍", type = LogType.LOGIN)
-    public String getAccessToken(@RequestParam(required = false) String code,
-                                 @RequestParam(required = false) String state) throws UnsupportedEncodingException {
-
-        if (StrUtil.isBlank(code)) {
-            return "redirect:" + callbackFeUrl + "?error=" + URLEncoder.encode("鎮ㄦ湭鍚屾剰鎺堟潈", "utf-8");
-        }
-        // 楠岃瘉state
-        String v = redisTemplate.get(STATE + state);
-        redisTemplate.delete(STATE + state);
-        if (StrUtil.isBlank(v)) {
-            return "redirect:" + callbackFeUrl + "?error=" + URLEncoder.encode("鎺堟潈瓒呮椂鎴杝tate涓嶆纭�", "utf-8");
-        }
-
-        // 浼犻�掑弬鏁癵rant_type銆乧ode銆乺edirect_uri銆乧lient_id
-        String params = "grant_type=authorization_code&code=" + code + "&redirect_uri=" +
-                callbackUrl + "&client_id=" + appId + "&client_secret=" + appKey;
-
-        // 鐢宠浠ょ墝 post璇锋眰
-        String result = HttpUtil.post(ACCESS_TOKEN_URL, params);
-        if (!result.contains("access_token=")) {
-            return "redirect:" + callbackFeUrl + "?error=" + URLEncoder.encode("鑾峰彇access_token澶辫触", "utf-8");
-        }
-
-        String accessToken = StrUtil.subBetween(result, "access_token=", "&expires_in");
-
-        String resultOpenId = HttpUtil.get(OPEN_ID_URL + accessToken);
-        if (!resultOpenId.contains("openid")) {
-            return "redirect:" + callbackFeUrl + "?error=" + URLEncoder.encode("鑾峰彇openid澶辫触", "utf-8");
-        }
-
-        String openId = StrUtil.subBetween(resultOpenId, "\"openid\":\"", "\"}");
-
-        // 鑾峰彇鐢ㄦ埛淇℃伅
-        String userInfoUrl = GET_USERINFO_URL + "?access_token=" + accessToken + "&oauth_consumer_key=" + appId
-                + "&openid=" + openId;
-        String userInfo = HttpUtil.get(userInfoUrl);
-        QQUserInfo q = new Gson().fromJson(userInfo, QQUserInfo.class);
-        // 瀛樺叆鏁版嵁搴�
-        Social qq = socialService.findByOpenIdAndPlatform(openId, TYPE);
-        if (qq == null) {
-            Social newqq = new Social().setOpenId(openId).setUsername(q.getNickname()).setAvatar(q.getFigureurl_1()).setPlatform(TYPE);
-            qq = socialService.save(newqq);
-        }
-
-        String url = "";
-        // 鍒ゆ柇鏄惁缁戝畾璐﹀彿
-        if (StrUtil.isNotBlank(qq.getRelateUsername())) {
-            // 宸茬粦瀹� 鐩存帴鐧诲綍
-            String JWT = securityUtil.getToken(qq.getRelateUsername(), true);
-            // 瀛樺叆redis
-            String JWTKey = IdUtil.simpleUUID();
-            redisTemplate.set(JWTKey, JWT, 2L, TimeUnit.MINUTES);
-            url = callbackFeUrl + "?related=1&JWTKey=" + JWTKey;
-            // 璁板綍鏃ュ織浣跨敤
-            UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(
-                    new SecurityUserDetails(new User().setUsername(qq.getRelateUsername())), null, null);
-            SecurityContextHolder.getContext().setAuthentication(authentication);
-        } else {
-            // 鏈粦瀹� Redis瀛樺叆id
-            String idToken = IdUtil.simpleUUID();
-            redisTemplate.set(idToken, qq.getId(), 5L, TimeUnit.MINUTES);
-            url = callbackFeRelateUrl + "?socialType=" + TYPE + "&id=" + idToken;
-        }
-        return "redirect:" + url;
-    }
-}
diff --git a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/RelateController.java b/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/RelateController.java
deleted file mode 100644
index e9f0986..0000000
--- a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/RelateController.java
+++ /dev/null
@@ -1,130 +0,0 @@
-package cn.exrick.xboot.social.controller;
-
-import cn.exrick.xboot.core.common.constant.CommonConstant;
-import cn.exrick.xboot.core.common.redis.RedisTemplateHelper;
-import cn.exrick.xboot.core.common.utils.ResultUtil;
-import cn.exrick.xboot.core.common.utils.SecurityUtil;
-import cn.exrick.xboot.core.common.vo.Result;
-import cn.exrick.xboot.core.entity.User;
-import cn.exrick.xboot.core.service.UserService;
-import cn.exrick.xboot.social.entity.Social;
-import cn.exrick.xboot.social.service.SocialService;
-import cn.hutool.core.util.IdUtil;
-import cn.hutool.core.util.StrUtil;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.concurrent.TimeUnit;
-
-/**
- * @author Exrickx
- */
-@Slf4j
-@Api(tags = "缁戝畾绗笁鏂硅处鍙锋帴鍙�")
-@RequestMapping("/xboot/social")
-@RestController
-@Transactional
-public class RelateController {
-
-    @Autowired
-    private UserService userService;
-
-    @Autowired
-    private SocialService socialService;
-
-    @Autowired
-    private SecurityUtil securityUtil;
-
-    @Autowired
-    private RedisTemplateHelper redisTemplate;
-
-    @RequestMapping(value = "/relate", method = RequestMethod.POST)
-    @ApiOperation(value = "缁戝畾璐﹀彿")
-    public Result<Object> relate(@RequestParam Boolean isLogin,
-                                 @RequestParam(required = false) String username,
-                                 @RequestParam(required = false) String password,
-                                 @RequestParam Integer socialType,
-                                 @RequestParam String id) {
-
-        if (isLogin) {
-            // 鐢ㄦ埛宸茬櫥褰�
-            User user = securityUtil.getCurrUser();
-            username = user.getUsername();
-        } else {
-            // 鐢ㄦ埛鏈櫥褰�
-            if (StrUtil.isBlank(username) || StrUtil.isBlank(password)) {
-                return ResultUtil.error("鐢ㄦ埛鍚嶆垨瀵嗙爜涓嶈兘涓虹┖");
-            }
-            User user = userService.findByUsername(username);
-            if (user == null) {
-                return ResultUtil.error("璐﹀彿涓嶅瓨鍦�");
-            }
-            if (!new BCryptPasswordEncoder().matches(password, user.getPassword())) {
-                return ResultUtil.error("瀵嗙爜涓嶆纭�");
-            }
-        }
-
-        // 浠巖edis涓幏鍙栬〃id
-        String ID = redisTemplate.get(id);
-        if (StrUtil.isBlank(ID)) {
-            return ResultUtil.error("鏃犳晥鐨刬d");
-        }
-
-        String platform = "";
-        if (CommonConstant.SOCIAL_TYPE_GITHUB.equals(socialType)) {
-            platform = "Github";
-        } else if (CommonConstant.SOCIAL_TYPE_WECHAT.equals(socialType)) {
-            platform = "寰俊";
-        } else if (CommonConstant.SOCIAL_TYPE_QQ.equals(socialType)) {
-            platform = "QQ";
-        } else if (CommonConstant.SOCIAL_TYPE_WEIBO.equals(socialType)) {
-            platform = "寰崥";
-        } else if (CommonConstant.SOCIAL_TYPE_DINGDING.equals(socialType)) {
-            platform = "閽夐拤";
-        } else if (CommonConstant.SOCIAL_TYPE_WORKWECHAT.equals(socialType)) {
-            platform = "浼佷笟寰俊";
-        }
-        Social s = socialService.findByRelateUsernameAndPlatform(username, socialType);
-        if (s != null) {
-            return ResultUtil.error("璇ヨ处鎴峰凡缁戝畾鏈�" + platform + "璐﹀彿锛岃鍏堣繘琛岃В缁戞搷浣�");
-        }
-        Social social = socialService.get(ID);
-        if (social == null) {
-            return ResultUtil.error("缁戝畾澶辫触锛岃鍏堣繘琛岀涓夋柟鎺堟潈璁よ瘉");
-        }
-        if (StrUtil.isNotBlank(social.getRelateUsername())) {
-            return ResultUtil.error("璇�" + platform + "璐﹀彿宸茬粦瀹氭湁鐢ㄦ埛锛岃鍏堣繘琛岃В缁戞搷浣�");
-        }
-        social.setRelateUsername(username);
-        socialService.update(social);
-
-        if (!isLogin) {
-            String JWT = securityUtil.getToken(username, true);
-            // 瀛樺叆redis
-            String JWTKey = IdUtil.simpleUUID();
-            redisTemplate.set(JWTKey, JWT, 2L, TimeUnit.MINUTES);
-            return ResultUtil.data(JWTKey);
-        } else {
-            return ResultUtil.data("缁戝畾鎴愬姛");
-        }
-    }
-
-    @RequestMapping(value = "/getJWT", method = RequestMethod.GET)
-    @ApiOperation(value = "鑾峰彇JWT")
-    public Result<Object> getJWT(@RequestParam String JWTKey) {
-
-        String JWT = redisTemplate.get(JWTKey);
-        if (StrUtil.isBlank(JWT)) {
-            return ResultUtil.error("鑾峰彇JWT澶辫触");
-        }
-        return ResultUtil.data(JWT);
-    }
-}
diff --git a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/SocialController.java b/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/SocialController.java
deleted file mode 100644
index 26d2da6..0000000
--- a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/SocialController.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package cn.exrick.xboot.social.controller;
-
-import cn.exrick.xboot.core.common.constant.CommonConstant;
-import cn.exrick.xboot.core.common.utils.PageUtil;
-import cn.exrick.xboot.core.common.utils.ResultUtil;
-import cn.exrick.xboot.core.common.vo.PageVo;
-import cn.exrick.xboot.core.common.vo.Result;
-import cn.exrick.xboot.core.common.vo.SearchVo;
-import cn.exrick.xboot.core.entity.User;
-import cn.exrick.xboot.core.service.UserService;
-import cn.exrick.xboot.social.entity.Social;
-import cn.exrick.xboot.social.service.SocialService;
-import cn.exrick.xboot.social.vo.RelateUserInfo;
-import cn.hutool.core.util.StrUtil;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-/**
- * @author Exrickx
- */
-@Slf4j
-@RestController
-@Api(tags = "绀句氦璐﹀彿鎺ュ彛")
-@RequestMapping("/xboot/relate")
-@Transactional
-public class SocialController {
-
-    @Autowired
-    private SocialService socialService;
-
-    @Autowired
-    private UserService userService;
-
-    @RequestMapping(value = "/getRelatedInfo/{username}", method = RequestMethod.GET)
-    @ApiOperation(value = "鑾峰彇缁戝畾璐﹀彿淇℃伅")
-    public Result<RelateUserInfo> getRelateUserInfo(@PathVariable String username) {
-
-        RelateUserInfo r = new RelateUserInfo();
-        List<Social> all = socialService.findByRelateUsername(username);
-        all.forEach(e -> {
-            if (CommonConstant.SOCIAL_TYPE_GITHUB.equals(e.getPlatform())) {
-                r.setGithubId(e.getId()).setGithubUsername(e.getUsername()).setGithub(true);
-            }
-            if (CommonConstant.SOCIAL_TYPE_WECHAT.equals(e.getPlatform())) {
-                r.setWechatId(e.getId()).setWechatUsername(e.getUsername()).setWechat(true);
-            }
-            if (CommonConstant.SOCIAL_TYPE_QQ.equals(e.getPlatform())) {
-                r.setQqId(e.getId()).setQqUsername(e.getUsername()).setQq(true);
-            }
-            if (CommonConstant.SOCIAL_TYPE_WEIBO.equals(e.getPlatform())) {
-                r.setWechatId(e.getId()).setWeiboUsername(e.getUsername()).setWeibo(true);
-            }
-            if (CommonConstant.SOCIAL_TYPE_DINGDING.equals(e.getPlatform())) {
-                r.setDingdingId(e.getId()).setDingdingUsername(e.getUsername()).setDingding(true);
-            }
-            if (CommonConstant.SOCIAL_TYPE_WORKWECHAT.equals(e.getPlatform())) {
-                r.setWorkwechatId(e.getId()).setWorkwechatUsername(e.getUsername()).setWorkwechat(true);
-            }
-        });
-        return new ResultUtil<RelateUserInfo>().setData(r);
-    }
-
-    @RequestMapping(value = "/delByIds", method = RequestMethod.POST)
-    @ApiOperation(value = "瑙g粦")
-    public Result<Object> delByIds(@RequestParam String[] ids) {
-
-        for (String id : ids) {
-            socialService.delete(id);
-        }
-        return ResultUtil.success("瑙g粦鎴愬姛");
-    }
-
-    @RequestMapping(value = "/findByCondition", method = RequestMethod.GET)
-    @ApiOperation(value = "澶氭潯浠跺垎椤佃幏鍙�")
-    public Result<Object> delByIds(Social social,
-                                   SearchVo searchVo,
-                                   PageVo pv) {
-
-        Page<Social> socialPage = socialService.findByCondition(social, searchVo, PageUtil.initPage(pv));
-        socialPage.getContent().forEach(e -> {
-            if (StrUtil.isNotBlank(e.getRelateUsername())) {
-                e.setIsRelated(true);
-                User u = userService.findByUsername(e.getRelateUsername());
-                if (u != null) {
-                    e.setNickname(u.getNickname());
-                }
-            }
-        });
-        return ResultUtil.data(socialPage);
-    }
-}
diff --git a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/WechatController.java b/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/WechatController.java
deleted file mode 100644
index af94f09..0000000
--- a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/WechatController.java
+++ /dev/null
@@ -1,168 +0,0 @@
-package cn.exrick.xboot.social.controller;
-
-import cn.exrick.xboot.core.common.annotation.SystemLog;
-import cn.exrick.xboot.core.common.constant.CommonConstant;
-import cn.exrick.xboot.core.common.constant.SecurityConstant;
-import cn.exrick.xboot.core.common.enums.LogType;
-import cn.exrick.xboot.core.common.redis.RedisTemplateHelper;
-import cn.exrick.xboot.core.common.utils.ResultUtil;
-import cn.exrick.xboot.core.common.utils.SecurityUtil;
-import cn.exrick.xboot.core.common.vo.Result;
-import cn.exrick.xboot.core.config.security.SecurityUserDetails;
-import cn.exrick.xboot.core.entity.User;
-import cn.exrick.xboot.social.entity.Social;
-import cn.exrick.xboot.social.service.SocialService;
-import cn.exrick.xboot.social.vo.WechatUserInfo;
-import cn.hutool.core.util.IdUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.http.HttpUtil;
-import com.google.gson.Gson;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.util.concurrent.TimeUnit;
-
-/**
- * https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html
- * @author Exrickx
- */
-@Slf4j
-@Api(tags = "寰俊鐧诲綍鎺ュ彛")
-@RequestMapping("/xboot/social/wechat")
-@Controller
-public class WechatController {
-
-    @Value("${xboot.social.wechat.appId}")
-    private String appId;
-
-    @Value("${xboot.social.wechat.appSecret}")
-    private String appSecret;
-
-    @Value("${xboot.social.wechat.callbackUrl}")
-    private String callbackUrl;
-
-    @Value("${xboot.social.callbackFeUrl}")
-    private String callbackFeUrl;
-
-    @Value("${xboot.social.callbackFeRelateUrl}")
-    private String callbackFeRelateUrl;
-
-    private static final String STATE = SecurityConstant.WECHAT_STATE;
-
-    private static final Integer TYPE = CommonConstant.SOCIAL_TYPE_WECHAT;
-
-    @Autowired
-    private SocialService socialService;
-
-    @Autowired
-    private SecurityUtil securityUtil;
-
-    @Autowired
-    private RedisTemplateHelper redisTemplate;
-
-    /**
-     * 寰俊璁よ瘉鏈嶅姟鍣ㄥ湴鍧�
-     */
-    private static final String AUTHORIZE_URL = "https://open.weixin.qq.com/connect/qrconnect";
-
-    /**
-     * 鐢宠浠ょ墝鍦板潃
-     */
-    private static final String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/sns/oauth2/access_token";
-
-    /**
-     * 鑾峰彇鐢ㄦ埛淇℃伅鍦板潃
-     */
-    private static final String GET_USERINFO_URL = "https://api.weixin.qq.com/sns/userinfo";
-
-    @RequestMapping(value = "/login", method = RequestMethod.GET)
-    @ApiOperation(value = "鑾峰彇wechat璁よ瘉閾炬帴")
-    @ResponseBody
-    public Result<Object> login() throws UnsupportedEncodingException {
-
-        // 鐢熸垚骞朵繚瀛榮tate 蹇界暐璇ュ弬鏁版湁鍙兘瀵艰嚧CSRF鏀诲嚮
-        String state = String.valueOf(System.currentTimeMillis());
-        redisTemplate.set(STATE + state, "VALID", 3L, TimeUnit.MINUTES);
-
-        // 浼犻�掑弬鏁皉esponse_type銆乧lient_id銆乻tate銆乺edirect_uri
-        String url = AUTHORIZE_URL + "?appid=" + appId + "&redirect_uri=" + URLEncoder.encode(callbackUrl, "utf-8") + "&response_type=code" +
-                "&scope=snsapi_login&state=" + state;
-
-        return ResultUtil.data(url);
-    }
-
-    @RequestMapping(value = "/callback", method = RequestMethod.GET)
-    @ApiOperation(value = "鑾峰彇accessToken")
-    @SystemLog(description = "寰俊鍏宠仈鐧诲綍", type = LogType.LOGIN)
-    public String callback(@RequestParam(required = false) String code,
-                           @RequestParam(required = false) String state) throws UnsupportedEncodingException {
-
-        if (StrUtil.isBlank(code)) {
-            return "redirect:" + callbackFeUrl + "?error=" + URLEncoder.encode("鎮ㄦ湭鍚屾剰鎺堟潈", "utf-8");
-        }
-        // 楠岃瘉state
-        String v = redisTemplate.get(STATE + state);
-        redisTemplate.delete(STATE + state);
-        if (StrUtil.isBlank(v)) {
-            return "redirect:" + callbackFeUrl + "?error=" + URLEncoder.encode("鎺堟潈瓒呮椂鎴杝tate涓嶆纭�", "utf-8");
-        }
-
-        // 浼犻�掑弬鏁癵rant_type銆乧ode銆乺edirect_uri銆乤ppid銆乤ppsecret
-        String accessTokenUrl = ACCESS_TOKEN_URL + "?appid=" + appId + "&secret=" + appSecret + "&code=" + code +
-                "&grant_type=authorization_code";
-
-        // 鐢宠浠ょ墝
-        String result = HttpUtil.get(accessTokenUrl);
-        if (!result.contains("access_token")) {
-            return "redirect:" + callbackFeUrl + "?error=" + URLEncoder.encode("鑾峰彇access_token澶辫触", "utf-8");
-        }
-
-        JsonObject jsonObject = JsonParser.parseString(result).getAsJsonObject();
-        String accessToken = jsonObject.get("access_token").getAsString();
-        String openId = jsonObject.get("openid").getAsString();
-        // 鑾峰彇鐢ㄦ埛淇℃伅
-        String userInfo = HttpUtil.get(GET_USERINFO_URL + "?access_token=" + accessToken + "&openid=" + openId);
-        WechatUserInfo wu = new Gson().fromJson(userInfo, WechatUserInfo.class);
-        // 瀛樺叆鏁版嵁搴�
-        Social wechat = socialService.findByOpenIdAndPlatform(wu.getOpenid(), TYPE);
-        if (wechat == null) {
-            Social w = new Social().setOpenId(wu.getOpenid()).setUsername(wu.getNickname()).setAvatar(wu.getHeadimgurl()).setPlatform(TYPE);
-            wechat = socialService.save(w);
-        }
-
-        String url = "";
-        // 鍒ゆ柇鏄惁缁戝畾璐﹀彿
-        if (StrUtil.isNotBlank(wechat.getRelateUsername())) {
-            // 宸茬粦瀹� 鐩存帴鐧诲綍
-            String JWT = securityUtil.getToken(wechat.getRelateUsername(), true);
-            // 瀛樺叆redis
-            String JWTKey = IdUtil.simpleUUID();
-            redisTemplate.set(JWTKey, JWT, 2L, TimeUnit.MINUTES);
-            url = callbackFeUrl + "?related=1&JWTKey=" + JWTKey;
-            // 璁板綍鏃ュ織浣跨敤
-            UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(
-                    new SecurityUserDetails(new User().setUsername(wechat.getRelateUsername())), null, null);
-            SecurityContextHolder.getContext().setAuthentication(authentication);
-        } else {
-            // 鏈粦瀹� Redis瀛樺叆id
-            String idToken = IdUtil.simpleUUID();
-            redisTemplate.set(idToken, wechat.getId(), 5L, TimeUnit.MINUTES);
-            url = callbackFeRelateUrl + "?socialType=" + TYPE + "&id=" + idToken;
-        }
-        return "redirect:" + url;
-    }
-}
diff --git a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/WeiboController.java b/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/WeiboController.java
deleted file mode 100644
index 50f344d..0000000
--- a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/WeiboController.java
+++ /dev/null
@@ -1,175 +0,0 @@
-package cn.exrick.xboot.social.controller;
-
-import cn.exrick.xboot.core.common.annotation.SystemLog;
-import cn.exrick.xboot.core.common.constant.CommonConstant;
-import cn.exrick.xboot.core.common.constant.SecurityConstant;
-import cn.exrick.xboot.core.common.enums.LogType;
-import cn.exrick.xboot.core.common.redis.RedisTemplateHelper;
-import cn.exrick.xboot.core.common.utils.ResultUtil;
-import cn.exrick.xboot.core.common.utils.SecurityUtil;
-import cn.exrick.xboot.core.common.vo.Result;
-import cn.exrick.xboot.core.config.security.SecurityUserDetails;
-import cn.exrick.xboot.core.entity.User;
-import cn.exrick.xboot.social.entity.Social;
-import cn.exrick.xboot.social.service.SocialService;
-import cn.exrick.xboot.social.vo.WeiboUserInfo;
-import cn.hutool.core.util.IdUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.http.HttpUtil;
-import com.google.gson.Gson;
-import com.google.gson.JsonParser;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.util.concurrent.TimeUnit;
-
-/**
- * http://open.weibo.com/wiki/Connect/login
- * @author Exrickx
- */
-@Slf4j
-@Api(tags = "寰崥鐧诲綍鎺ュ彛")
-@RequestMapping("/xboot/social/weibo")
-@Controller
-public class WeiboController {
-
-    @Value("${xboot.social.weibo.appKey}")
-    private String appKey;
-
-    @Value("${xboot.social.weibo.appSecret}")
-    private String appSecret;
-
-    @Value("${xboot.social.weibo.callbackUrl}")
-    private String callbackUrl;
-
-    @Value("${xboot.social.callbackFeUrl}")
-    private String callbackFeUrl;
-
-    @Value("${xboot.social.callbackFeRelateUrl}")
-    private String callbackFeRelateUrl;
-
-    private static final String STATE = SecurityConstant.WEIBO_STATE;
-
-    private static final Integer TYPE = CommonConstant.SOCIAL_TYPE_WEIBO;
-
-    @Autowired
-    private SocialService socialService;
-
-    @Autowired
-    private SecurityUtil securityUtil;
-
-    @Autowired
-    private RedisTemplateHelper redisTemplate;
-
-    /**
-     * 寰崥璁よ瘉鏈嶅姟鍣ㄥ湴鍧�
-     */
-    private static final String AUTHORIZE_URL = "https://api.weibo.com/oauth2/authorize";
-
-    /**
-     * 鐢宠浠ょ墝鍦板潃
-     */
-    private static final String ACCESS_TOKEN_URL = "https://api.weibo.com/oauth2/access_token";
-
-    /**
-     * 鑾峰彇鐢ㄦ埛uid
-     */
-    private static final String GET_USERINFO_URL = "https://api.weibo.com/oauth2/get_token_info";
-
-    /**
-     * 鑾峰彇鐢ㄦ埛璇︾粏淇℃伅鍦板潃
-     */
-    private static final String GET_USERINFO_DETAIL_URL = "https://api.weibo.com/2/users/show.json";
-
-    @RequestMapping(value = "/login", method = RequestMethod.GET)
-    @ApiOperation(value = "鑾峰彇寰崥璁よ瘉閾炬帴")
-    @ResponseBody
-    public Result<Object> login() {
-
-        // 鐢熸垚骞朵繚瀛榮tate 蹇界暐璇ュ弬鏁版湁鍙兘瀵艰嚧CSRF鏀诲嚮
-        String state = String.valueOf(System.currentTimeMillis());
-        redisTemplate.set(STATE + state, "VALID", 3L, TimeUnit.MINUTES);
-
-        // 浼犻�掑弬鏁皉esponse_type銆乧lient_id銆乻tate銆乺edirect_uri
-        String url = AUTHORIZE_URL + "?response_type=code&" + "client_id=" + appKey + "&state=" + state
-                + "&redirect_uri=" + callbackUrl;
-
-        return ResultUtil.data(url);
-    }
-
-    @RequestMapping(value = "/callback", method = RequestMethod.GET)
-    @ApiOperation(value = "鑾峰彇accessToken")
-    @SystemLog(description = "寰崥鍏宠仈鐧诲綍", type = LogType.LOGIN)
-    public String callback(@RequestParam(required = false) String code,
-                           @RequestParam(required = false) String state) throws UnsupportedEncodingException {
-
-        if (StrUtil.isBlank(code)) {
-            return "redirect:" + callbackFeUrl + "?error=" + URLEncoder.encode("鎮ㄦ湭鍚屾剰鎺堟潈", "utf-8");
-        }
-        // 楠岃瘉state
-        String v = redisTemplate.get(STATE + state);
-        redisTemplate.delete(STATE + state);
-        if (StrUtil.isBlank(v)) {
-            return "redirect:" + callbackFeUrl + "?error=" + URLEncoder.encode("鎺堟潈瓒呮椂鎴杝tate涓嶆纭�", "utf-8");
-        }
-
-        // 浼犻�掑弬鏁癵rant_type銆乧ode銆乺edirect_uri銆乧lient_id
-        String params = "grant_type=authorization_code&code=" + code + "&redirect_uri=" +
-                callbackUrl + "&client_id=" + appKey + "&client_secret=" + appSecret;
-
-        // 鐢宠浠ょ墝 post璇锋眰
-        String result = HttpUtil.post(ACCESS_TOKEN_URL, params);
-        if (!result.contains("\"access_token\":")) {
-            return "redirect:" + callbackFeUrl + "?error=" + URLEncoder.encode("鑾峰彇access_token澶辫触", "utf-8");
-        }
-
-        String accessToken = JsonParser.parseString(result).getAsJsonObject().get("access_token").getAsString();
-        // 鑾峰彇鐢ㄦ埛uid post璇锋眰
-        String uIdParams = "access_token=" + accessToken;
-        String uIdInfo = HttpUtil.post(GET_USERINFO_URL, uIdParams);
-        WeiboUserInfo wb = new Gson().fromJson(uIdInfo, WeiboUserInfo.class);
-        String uid = wb.getUid();
-        // 鑾峰彇璇︾粏淇℃伅
-        String userInfo = HttpUtil.get(GET_USERINFO_DETAIL_URL + "?access_token=" + accessToken + "&uid=" + uid);
-        wb = new Gson().fromJson(userInfo, WeiboUserInfo.class);
-        // 瀛樺叆鏁版嵁搴�
-        Social w = socialService.findByOpenIdAndPlatform(uid, TYPE);
-        if (w == null) {
-            Social newb = new Social().setOpenId(uid).setUsername(wb.getName()).setAvatar(wb.getProfile_image_url()).setPlatform(TYPE);
-            w = socialService.save(newb);
-        }
-
-        String url = "";
-        // 鍒ゆ柇鏄惁缁戝畾璐﹀彿
-        if (StrUtil.isNotBlank(w.getRelateUsername())) {
-            // 宸茬粦瀹� 鐩存帴鐧诲綍
-            String JWT = securityUtil.getToken(w.getRelateUsername(), true);
-            // 瀛樺叆redis
-            String JWTKey = IdUtil.simpleUUID();
-            redisTemplate.set(JWTKey, JWT, 2L, TimeUnit.MINUTES);
-            url = callbackFeUrl + "?related=1&JWTKey=" + JWTKey;
-            // 璁板綍鏃ュ織浣跨敤
-            UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(
-                    new SecurityUserDetails(new User().setUsername(w.getRelateUsername())), null, null);
-            SecurityContextHolder.getContext().setAuthentication(authentication);
-        } else {
-            // 鏈粦瀹� Redis瀛樺叆id
-            String idToken = IdUtil.simpleUUID();
-            redisTemplate.set(idToken, w.getId(), 5L, TimeUnit.MINUTES);
-            url = callbackFeRelateUrl + "?socialType=" + TYPE + "&id=" + idToken;
-        }
-        return "redirect:" + url;
-    }
-}
diff --git a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/WorkWechatController.java b/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/WorkWechatController.java
deleted file mode 100644
index 74d33b1..0000000
--- a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/controller/WorkWechatController.java
+++ /dev/null
@@ -1,174 +0,0 @@
-package cn.exrick.xboot.social.controller;
-
-import cn.exrick.xboot.core.common.annotation.SystemLog;
-import cn.exrick.xboot.core.common.constant.CommonConstant;
-import cn.exrick.xboot.core.common.constant.SecurityConstant;
-import cn.exrick.xboot.core.common.enums.LogType;
-import cn.exrick.xboot.core.common.redis.RedisTemplateHelper;
-import cn.exrick.xboot.core.common.utils.ResultUtil;
-import cn.exrick.xboot.core.common.utils.SecurityUtil;
-import cn.exrick.xboot.core.common.vo.Result;
-import cn.exrick.xboot.core.config.security.SecurityUserDetails;
-import cn.exrick.xboot.core.entity.User;
-import cn.exrick.xboot.social.entity.Social;
-import cn.exrick.xboot.social.service.SocialService;
-import cn.exrick.xboot.social.vo.WokWechatUserInfo;
-import cn.hutool.core.util.IdUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.http.HttpUtil;
-import com.google.gson.Gson;
-import com.google.gson.JsonParser;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.util.concurrent.TimeUnit;
-
-/**
- * https://work.weixin.qq.com/api/doc/90000/90135/91020
- * @author Exrickx
- */
-@Slf4j
-@Api(tags = "浼佷笟寰俊鐧诲綍鎺ュ彛")
-@RequestMapping("/xboot/social/workwechat")
-@Controller
-public class WorkWechatController {
-
-    @Value("${xboot.social.workwechat.appId}")
-    private String appId;
-
-    @Value("${xboot.social.workwechat.agentId}")
-    private String agentId;
-
-    @Value("${xboot.social.workwechat.appSecret}")
-    private String appSecret;
-
-    @Value("${xboot.social.workwechat.callbackUrl}")
-    private String callbackUrl;
-
-    @Value("${xboot.social.callbackFeUrl}")
-    private String callbackFeUrl;
-
-    @Value("${xboot.social.callbackFeRelateUrl}")
-    private String callbackFeRelateUrl;
-
-    private static final String STATE = SecurityConstant.WORKWECHAT_STATE;
-
-    private static final Integer TYPE = CommonConstant.SOCIAL_TYPE_WORKWECHAT;
-
-    @Autowired
-    private SocialService socialService;
-
-    @Autowired
-    private SecurityUtil securityUtil;
-
-    @Autowired
-    private RedisTemplateHelper redisTemplate;
-
-    /**
-     * 鐢宠浠ょ墝鍦板潃
-     */
-    private static final String AUTHORIZE_URL = "https://open.work.weixin.qq.com/wwopen/sso/qrConnect";
-
-    /**
-     * 鑾峰彇access_token鍦板潃
-     */
-    private static final String ACCESS_TOKEN_URL = "https://qyapi.weixin.qq.com/cgi-bin/gettoken";
-
-    /**
-     * 鑾峰彇鐢ㄦ埛ID鍦板潃
-     */
-    private static final String GET_USERINFO_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo";
-
-    /**
-     * 鑾峰彇鐢ㄦ埛淇℃伅鍦板潃
-     */
-    private static final String GET_USER_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/get";
-
-    @RequestMapping(value = "/login", method = RequestMethod.GET)
-    @ApiOperation(value = "鑾峰彇浼佷笟寰俊璁よ瘉閾炬帴")
-    @ResponseBody
-    public Result<Object> login() {
-
-        // 鐢熸垚骞朵繚瀛榮tate 蹇界暐璇ュ弬鏁版湁鍙兘瀵艰嚧CSRF鏀诲嚮
-        String state = String.valueOf(System.currentTimeMillis());
-        redisTemplate.set(STATE + state, "VALID", 3L, TimeUnit.MINUTES);
-
-        // 浼犻�掑弬鏁癮ppId銆乤gentid銆乻tate銆乺edirect_uri
-        String url = AUTHORIZE_URL + "?appid=" + appId + "&agentid=" + agentId + "&state=" + state
-                + "&redirect_uri=" + callbackUrl;
-
-        return ResultUtil.data(url);
-    }
-
-    @RequestMapping(value = "/callback", method = RequestMethod.GET)
-    @ApiOperation(value = "鑾峰彇accessToken")
-    @SystemLog(description = "浼佷笟寰俊鍏宠仈鐧诲綍", type = LogType.LOGIN)
-    public String callback(@RequestParam(required = false) String code,
-                                 @RequestParam(required = false) String state) throws UnsupportedEncodingException {
-
-        if (StrUtil.isBlank(code)) {
-            return "redirect:" + callbackFeUrl + "?error=" + URLEncoder.encode("鎮ㄦ湭鍚屾剰鎺堟潈", "utf-8");
-        }
-        // 楠岃瘉state
-        String v = redisTemplate.get(STATE + state);
-        redisTemplate.delete(STATE + state);
-        if (StrUtil.isBlank(v)) {
-            return "redirect:" + callbackFeUrl + "?error=" + URLEncoder.encode("鎺堟潈瓒呮椂鎴杝tate涓嶆纭�", "utf-8");
-        }
-
-        // 鐢宠浠ょ墝 get璇锋眰 浼犻�掑弬鏁癮ppId銆乤ppSecret
-        String result = HttpUtil.get(ACCESS_TOKEN_URL + "?corpid=" + appId +"&corpsecret=" + appSecret);
-        if (!result.contains("access_token")) {
-            return "redirect:" + callbackFeUrl + "?error=" + URLEncoder.encode("鑾峰彇access_token澶辫触", "utf-8");
-        }
-        String accessToken = JsonParser.parseString(result).getAsJsonObject().get("access_token").getAsString();
-
-        // 鑾峰彇ID淇℃伅
-        String userIdResult = HttpUtil.get(GET_USERINFO_URL + "?access_token=" + accessToken + "&code=" + code);
-        String userId = JsonParser.parseString(userIdResult).getAsJsonObject().get("UserId").getAsString();
-
-        // 鑾峰彇User淇℃伅
-        String userInfo = HttpUtil.get(GET_USER_URL + "?access_token=" + accessToken + "&userid=" + userId);
-
-        WokWechatUserInfo w = new Gson().fromJson(userInfo, WokWechatUserInfo.class);
-        // 瀛樺叆鏁版嵁搴�
-        Social workwechat = socialService.findByOpenIdAndPlatform(userId, TYPE);
-        if (workwechat == null) {
-            Social neww = new Social().setOpenId(userId).setUsername(w.getName()).setAvatar(w.getAvatar()).setPlatform(TYPE);
-            workwechat = socialService.save(neww);
-        }
-
-        String url = "";
-        // 鍒ゆ柇鏄惁缁戝畾璐﹀彿
-        if (StrUtil.isNotBlank(workwechat.getRelateUsername())) {
-            // 宸茬粦瀹� 鐩存帴鐧诲綍
-            String JWT = securityUtil.getToken(workwechat.getRelateUsername(), true);
-            // 瀛樺叆redis
-            String JWTKey = IdUtil.simpleUUID();
-            redisTemplate.set(JWTKey, JWT, 2L, TimeUnit.MINUTES);
-            url = callbackFeUrl + "?related=1&JWTKey=" + JWTKey;
-            // 璁板綍鏃ュ織浣跨敤
-            UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(
-                    new SecurityUserDetails(new User().setUsername(workwechat.getRelateUsername())), null, null);
-            SecurityContextHolder.getContext().setAuthentication(authentication);
-        } else {
-            // 鏈粦瀹� Redis瀛樺叆id
-            String idToken = IdUtil.simpleUUID();
-            redisTemplate.set(idToken, workwechat.getId(), 5L, TimeUnit.MINUTES);
-            url = callbackFeRelateUrl + "?socialType=" + TYPE + "&id=" + idToken;
-        }
-        return "redirect:" + url;
-    }
-}
diff --git a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/dao/SocialDao.java b/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/dao/SocialDao.java
deleted file mode 100644
index 75e4529..0000000
--- a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/dao/SocialDao.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package cn.exrick.xboot.social.dao;
-
-
-import cn.exrick.xboot.core.base.XbootBaseDao;
-import cn.exrick.xboot.social.entity.Social;
-
-import java.util.List;
-
-/**
- * Github鐧诲綍鏁版嵁澶勭悊灞�
- * @author Exrick
- */
-public interface SocialDao extends XbootBaseDao<Social, String> {
-
-    /**
-     * 閫氳繃openId鍜屽钩鍙拌幏鍙�
-     * @param openId
-     * @param platform
-     * @return
-     */
-    Social findByOpenIdAndPlatform(String openId, Integer platform);
-
-    /**
-     * 閫氳繃userId鍜屽钩鍙拌幏鍙�
-     * @param relateUsername
-     * @param platform
-     * @return
-     */
-    Social findByRelateUsernameAndPlatform(String relateUsername, Integer platform);
-
-    /**
-     * 閫氳繃relateUsername鑾峰彇
-     * @param relateUsername
-     * @return
-     */
-    List<Social> findByRelateUsername(String relateUsername);
-}
\ No newline at end of file
diff --git a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/entity/Social.java b/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/entity/Social.java
deleted file mode 100644
index 735238c..0000000
--- a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/entity/Social.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package cn.exrick.xboot.social.entity;
-
-import cn.exrick.xboot.core.base.XbootBaseEntity;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.experimental.Accessors;
-import org.hibernate.annotations.DynamicInsert;
-import org.hibernate.annotations.DynamicUpdate;
-
-import javax.persistence.Entity;
-import javax.persistence.Table;
-import javax.persistence.Transient;
-
-/**
- * @author Exrick
- */
-@Data
-@Accessors(chain = true)
-@Entity
-@DynamicInsert
-@DynamicUpdate
-@Table(name = "t_social")
-@TableName("t_social")
-@ApiModel(value = "鏂囦欢")
-public class Social extends XbootBaseEntity {
-
-    @ApiModelProperty(value = "绀句氦璐﹀彿鍞竴id")
-    private String openId;
-
-    @ApiModelProperty(value = "绀句氦璐﹀彿骞冲彴 0Github 1QQ 2寰俊 3寰崥")
-    private Integer platform;
-
-    @ApiModelProperty(value = "绀句氦璐﹀彿鐢ㄦ埛鍚�")
-    private String username;
-
-    @ApiModelProperty(value = "澶村儚")
-    private String avatar;
-
-    @ApiModelProperty(value = "缁戝畾鐢ㄦ埛璐﹀彿")
-    private String relateUsername;
-
-    @Transient
-    @TableField(exist = false)
-    @ApiModelProperty(value = "鏄惁缁戝畾")
-    private Boolean isRelated;
-
-    @Transient
-    @TableField(exist = false)
-    @ApiModelProperty(value = "缁戝畾鐢ㄦ埛鍚�")
-    private String nickname;
-}
diff --git a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/service/SocialService.java b/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/service/SocialService.java
deleted file mode 100644
index d562dd3..0000000
--- a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/service/SocialService.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package cn.exrick.xboot.social.service;
-
-import cn.exrick.xboot.core.base.XbootBaseService;
-import cn.exrick.xboot.core.common.vo.SearchVo;
-import cn.exrick.xboot.social.entity.Social;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-
-import java.util.List;
-
-/**
- * Github鐧诲綍鎺ュ彛
- * @author Exrick
- */
-public interface SocialService extends XbootBaseService<Social, String> {
-
-    /**
-     * 閫氳繃openId鍜屽钩鍙拌幏鍙�
-     * @param openId
-     * @param platform
-     * @return
-     */
-    Social findByOpenIdAndPlatform(String openId, Integer platform);
-
-    /**
-     * 閫氳繃userId鍜屽钩鍙拌幏鍙�
-     * @param relateUsername
-     * @param platform
-     * @return
-     */
-    Social findByRelateUsernameAndPlatform(String relateUsername, Integer platform);
-
-    /**
-     * 閫氳繃relateUsername鑾峰彇
-     * @param relateUsername
-     * @return
-     */
-    List<Social> findByRelateUsername(String relateUsername);
-
-    /**
-     * 鍒嗛〉澶氭潯浠惰幏鍙�
-     * @param social
-     * @param searchVo
-     * @param pageable
-     * @return
-     */
-    Page<Social> findByCondition(Social social, SearchVo searchVo, Pageable pageable);
-}
\ No newline at end of file
diff --git a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/serviceimpl/SocialServiceImpl.java b/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/serviceimpl/SocialServiceImpl.java
deleted file mode 100644
index 6a08fbf..0000000
--- a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/serviceimpl/SocialServiceImpl.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package cn.exrick.xboot.social.serviceimpl;
-
-import cn.exrick.xboot.core.common.vo.SearchVo;
-import cn.exrick.xboot.social.dao.SocialDao;
-import cn.exrick.xboot.social.entity.Social;
-import cn.exrick.xboot.social.service.SocialService;
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.StrUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.lang.Nullable;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import javax.persistence.criteria.*;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-/**
- * Github鐧诲綍鎺ュ彛瀹炵幇
- * @author Exrick
- */
-@Slf4j
-@Service
-@Transactional
-public class SocialServiceImpl implements SocialService {
-
-    @Autowired
-    private SocialDao socialDao;
-
-    @Override
-    public SocialDao getRepository() {
-        return socialDao;
-    }
-
-    @Override
-    public Social findByOpenIdAndPlatform(String openId, Integer platform) {
-
-        return socialDao.findByOpenIdAndPlatform(openId, platform);
-    }
-
-    @Override
-    public Social findByRelateUsernameAndPlatform(String relateUsername, Integer platform) {
-
-        return socialDao.findByRelateUsernameAndPlatform(relateUsername, platform);
-    }
-
-    @Override
-    public List<Social> findByRelateUsername(String relateUsername) {
-
-        return socialDao.findByRelateUsername(relateUsername);
-    }
-
-    @Override
-    public Page<Social> findByCondition(Social social, SearchVo searchVo, Pageable pageable) {
-
-        return socialDao.findAll(new Specification<Social>() {
-            @Nullable
-            @Override
-            public Predicate toPredicate(Root<Social> root, CriteriaQuery<?> cq, CriteriaBuilder cb) {
-
-                Path<String> usernameField = root.get("username");
-                Path<String> relateUsernameField = root.get("relateUsername");
-                Path<Integer> platformField = root.get("platform");
-                Path<Date> createTimeField = root.get("createTime");
-
-                List<Predicate> list = new ArrayList<>();
-
-                if (StrUtil.isNotBlank(social.getUsername())) {
-                    list.add(cb.like(usernameField, '%' + social.getUsername() + '%'));
-                }
-                if (StrUtil.isNotBlank(social.getRelateUsername())) {
-                    list.add(cb.like(relateUsernameField, '%' + social.getRelateUsername() + '%'));
-                }
-                if (social.getPlatform() != null) {
-                    list.add(cb.equal(platformField, social.getPlatform()));
-                }
-                //鍒涘缓鏃堕棿
-                if (StrUtil.isNotBlank(searchVo.getStartDate()) && StrUtil.isNotBlank(searchVo.getEndDate())) {
-                    Date start = DateUtil.parse(searchVo.getStartDate());
-                    Date end = DateUtil.parse(searchVo.getEndDate());
-                    list.add(cb.between(createTimeField, start, DateUtil.endOfDay(end)));
-                }
-
-                Predicate[] arr = new Predicate[list.size()];
-                cq.where(list.toArray(arr));
-                return null;
-            }
-        }, pageable);
-    }
-}
\ No newline at end of file
diff --git a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/AccessToken.java b/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/AccessToken.java
deleted file mode 100644
index f5cfbf6..0000000
--- a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/AccessToken.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package cn.exrick.xboot.social.vo;
-
-import lombok.Data;
-
-/**
- * @author Exrickx
- */
-@Data
-public class AccessToken {
-
-    private String access_token;
-
-    private String openid;
-}
diff --git a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/DingdingUserInfo.java b/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/DingdingUserInfo.java
deleted file mode 100644
index 390dc45..0000000
--- a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/DingdingUserInfo.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package cn.exrick.xboot.social.vo;
-
-import lombok.Data;
-
-/**
- * https://ding-doc.dingtalk.com/doc#/serverapi2/ege851/AaRQe
- * @author Exrickx
- */
-@Data
-public class DingdingUserInfo {
-
-    private String errcode;
-
-    private String errmsg;
-
-    private String userid;
-
-    private String unionid;
-
-    private String name;
-
-    private String remark;
-
-    private String isBoss;
-
-    private String hiredDate;
-
-    private String isSenior;
-
-    private String tel;
-
-    private String workPlace;
-
-    private String email;
-
-    private String mobile;
-
-    private String active;
-
-    private String avatar;
-
-    private String isAdmin;
-
-    private String isHide;
-
-    private String jobnumber;
-
-    private String stateCode;
-
-    private String position;
-}
diff --git a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/GithubUserInfo.java b/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/GithubUserInfo.java
deleted file mode 100644
index 647bc67..0000000
--- a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/GithubUserInfo.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package cn.exrick.xboot.social.vo;
-
-import lombok.Data;
-
-/**
- * @author Exrickx
- */
-@Data
-public class GithubUserInfo {
-
-    /**
-     * 鍞竴id
-     */
-    private String id;
-
-    /**
-     * 鐢ㄦ埛鍚�
-     */
-    private String login;
-
-    /**
-     * 澶村儚
-     */
-    private String avatar_url;
-}
diff --git a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/QQUserInfo.java b/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/QQUserInfo.java
deleted file mode 100644
index 58f15c0..0000000
--- a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/QQUserInfo.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package cn.exrick.xboot.social.vo;
-
-import lombok.Data;
-
-/**
- * http://wiki.connect.qq.com/get_user_info
- * @author Exrickx
- */
-@Data
-public class QQUserInfo {
-
-    /**
-     * 杩斿洖鐮� 0: 姝g‘杩斿洖 鍏跺畠: 澶辫触
-     */
-    private String ret;
-
-    /**
-     * 濡傛灉ret<0锛屼細鏈夌浉搴旂殑閿欒淇℃伅鎻愮ず锛岃繑鍥炴暟鎹叏閮ㄧ敤UTF-8缂栫爜
-     */
-    private String msg;
-
-    /**
-     * 鐢ㄦ埛鍦≦Q绌洪棿鐨勬樀绉�
-     */
-    private String nickname;
-
-    /**
-     * 澶у皬涓�30脳30鍍忕礌鐨凲Q绌洪棿澶村儚URL
-     */
-    private String figureurl;
-
-    /**
-     * 澶у皬涓�50脳50鍍忕礌鐨凲Q绌洪棿澶村儚URL
-     */
-    private String figureurl_1;
-
-    /**
-     * 澶у皬涓�100脳100鍍忕礌鐨凲Q绌洪棿澶村儚URL
-     */
-    private String figureurl_2;
-
-    /**
-     * 澶у皬涓�40脳40鍍忕礌鐨凲Q澶村儚URL
-     */
-    private String figureurl_qq_1;
-
-    /**
-     * 澶у皬涓�100脳100鍍忕礌鐨凲Q澶村儚URL闇�瑕佹敞鎰忥紝涓嶆槸鎵�鏈夌殑鐢ㄦ埛閮芥嫢鏈塓Q鐨�100脳100鐨勫ご鍍忥紝浣�40脳40鍍忕礌鍒欐槸涓�瀹氫細鏈�
-     */
-    private String figureurl_qq_2;
-
-    /**
-     * 鎬у埆 濡傛灉鑾峰彇涓嶅埌鍒欓粯璁よ繑鍥炩�濈敺鈥�
-     */
-    private String gender;
-}
diff --git a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/RelateUserInfo.java b/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/RelateUserInfo.java
deleted file mode 100644
index 8aa9c02..0000000
--- a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/RelateUserInfo.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package cn.exrick.xboot.social.vo;
-
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-
-/**
- * @author Exrickx
- */
-@Data
-@Accessors(chain = true)
-public class RelateUserInfo implements Serializable {
-
-    private String githubId;
-
-    private Boolean github = false;
-
-    private String githubUsername;
-
-    private String qqId;
-
-    private Boolean qq = false;
-
-    private String qqUsername;
-
-    private String weiboId;
-
-    private Boolean weibo = false;
-
-    private String weiboUsername;
-
-    private String wechatId;
-
-    private Boolean wechat = false;
-
-    private String wechatUsername;
-
-    private String dingdingId;
-
-    private Boolean dingding = false;
-
-    private String dingdingUsername;
-
-    private String workwechatId;
-
-    private Boolean workwechat = false;
-
-    private String workwechatUsername;
-}
diff --git a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/WechatUserInfo.java b/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/WechatUserInfo.java
deleted file mode 100644
index 83b0871..0000000
--- a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/WechatUserInfo.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package cn.exrick.xboot.social.vo;
-
-import lombok.Data;
-
-/**
- * @author Exrickx
- */
-@Data
-public class WechatUserInfo {
-
-    /**
-     * 鍞竴id
-     */
-    private String openid;
-
-    /**
-     * 鏄电О
-     */
-    private String nickname;
-
-    /**
-     * 鐪佷唤
-     */
-    private String province;
-
-    /**
-     * 鍩庡競
-     */
-    private String city;
-
-    /**
-     * 鍥藉
-     */
-    private String country;
-
-    /**
-     * 澶村儚
-     */
-    private String headimgurl;
-
-    /**
-     * unionid
-     */
-    private String unionid;
-}
diff --git a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/WeiboUserInfo.java b/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/WeiboUserInfo.java
deleted file mode 100644
index e0ed106..0000000
--- a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/WeiboUserInfo.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package cn.exrick.xboot.social.vo;
-
-import lombok.Data;
-
-/**
- * http://open.weibo.com/wiki/2/users/show
- * @author Exrickx
- */
-@Data
-public class WeiboUserInfo {
-
-    /**
-     * 鍞竴id
-     */
-    private String uid;
-
-    /**
-     * 鍚嶇О
-     */
-    private String name;
-
-    /**
-     * 澶村儚
-     */
-    private String profile_image_url;
-}
diff --git a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/WokWechatUserInfo.java b/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/WokWechatUserInfo.java
deleted file mode 100644
index a7aafa8..0000000
--- a/xboot-modules/xboot-social/src/main/java/cn/exrick/xboot/social/vo/WokWechatUserInfo.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package cn.exrick.xboot.social.vo;
-
-import lombok.Data;
-
-/**
- * https://work.weixin.qq.com/api/doc/90000/90135/90196
- * @author Exrickx
- */
-@Data
-public class WokWechatUserInfo {
-
-    private String errcode;
-
-    private String errmsg;
-
-    private String userid;
-
-    private String name;
-
-    private String mobile;
-
-    private String gender;
-
-    private String email;
-
-    private String avatar;
-
-    private String thumb_avatar;
-
-    private String telephone;
-
-    private String alias;
-
-    private String address;
-
-    private String open_userid;
-
-    private String status;
-
-    private String qr_code;
-
-    private String main_department;
-
-    private String external_position;
-}

--
Gitblit v1.9.1