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