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 + "×tamp=" + 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