From aec0e227479de49213185ff6bb98d4e99b35eb8b Mon Sep 17 00:00:00 2001
From: thiszhc <2029364173@qq.com>
Date: 星期五, 16 六月 2023 20:34:23 +0800
Subject: [PATCH] Merge branch '5.X' of https://gitee.com/dromara/RuoYi-Vue-Plus into JustAuth
---
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/factory/YmlPropertySourceFactory.java | 31 ++
ruoyi-common/ruoyi-common-doc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports | 2
ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/config/SmsConfig.java | 35 --
ruoyi-admin/src/main/java/org/dromara/web/controller/CaptchaController.java | 26 -
pom.xml | 17
ruoyi-common/ruoyi-common-doc/src/main/java/org/dromara/common/doc/config/properties/SpringDocProperties.java | 4
ruoyi-common/ruoyi-common-doc/src/main/java/org/dromara/common/doc/config/SpringDocConfig.java | 16
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantController.java | 4
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ServletUtils.java | 43 +++
ruoyi-common/ruoyi-common-sms/pom.xml | 21
ruoyi-modules/ruoyi-demo/pom.xml | 10
ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/mapper/GenTableColumnMapper.java | 3
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/ValidatorConfig.java | 25 +
ruoyi-common/ruoyi-common-satoken/src/main/resources/common-satoken.yml | 11
ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java | 19
ruoyi-admin/src/main/resources/application.yml | 58 ---
README.md | 2
ruoyi-common/ruoyi-common-mybatis/src/main/resources/common-mybatis.yml | 33 ++
/dev/null | 19 -
ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/config/MybatisPlusConfig.java | 3
ruoyi-admin/src/main/resources/application-prod.yml | 33 +
ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/config/SaTokenConfig.java | 3
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/SmsController.java | 44 +--
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/MessageUtils.java | 7
ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/config/properties/SmsProperties.java | 64 +---
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java | 7
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSensitiveServiceImpl.java | 2
ruoyi-common/ruoyi-common-core/pom.xml | 5
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/AsyncConfig.java | 10
ruoyi-admin/src/main/resources/application-dev.yml | 181 +------------
30 files changed, 295 insertions(+), 443 deletions(-)
diff --git a/README.md b/README.md
index eb82295..6696573 100644
--- a/README.md
+++ b/README.md
@@ -57,7 +57,7 @@
| 鍒嗗竷寮忎换鍔¤皟搴� | 閲囩敤 Xxl-Job 澶╃敓鏀寔鍒嗗竷寮� 缁熶竴鐨勭鐞嗕腑蹇� | 閲囩敤 Quartz 鍩轰簬鏁版嵁搴撻攣鎬ц兘宸� 闆嗙兢闇�瑕佸仛寰堝閰嶇疆涓庢敼閫� |
| 鏂囦欢瀛樺偍 | 閲囩敤 Minio 鍒嗗竷寮忔枃浠跺瓨鍌� 澶╃敓鏀寔澶氭満銆佸纭洏銆佸鍒嗙墖銆佸鍓湰瀛樺偍<br/>鏀寔鏉冮檺绠$悊 瀹夊叏鍙潬 鏂囦欢鍙姞瀵嗗瓨鍌� | 閲囩敤 鏈満鏂囦欢瀛樺偍 鏂囦欢瑁告紡 鏄撲涪澶辨硠婕� 涓嶆敮鎸侀泦缇ゆ湁鍗曠偣鏁堝簲 |
| 浜戝瓨鍌� | 閲囩敤 AWS S3 鍗忚瀹㈡埛绔� 鏀寔 涓冪墰銆侀樋閲屻�佽吘璁� 绛変竴鍒囨敮鎸丼3鍗忚鐨勫巶瀹� | 涓嶆敮鎸� |
-| 鐭俊 | 鏀寔 闃块噷銆佽吘璁� 鍙渶鍦▂ml閰嶇疆濂藉巶瀹跺瘑閽ュ嵆鍙娇鐢� 鎺ュ彛鍖栨敮鎸佹墿灞曞叾浠栧巶瀹� | 涓嶆敮鎸� |
+| 鐭俊 | 閲囩敤 sms4j 鐭俊铻嶅悎鍖� 鏀寔鏁板崄绉嶇煭淇″巶瀹� 鍙渶鍦▂ml閰嶇疆濂藉巶瀹跺瘑閽ュ嵆鍙娇鐢� 鍙鍘傚鍏辩敤 | 涓嶆敮鎸� |
| 閭欢 | 閲囩敤 mail-api 閫氱敤鍗忚鏀寔澶ч儴鍒嗛偖浠跺巶鍟� | 涓嶆敮鎸� |
| 鎺ュ彛鏂囨。 | 閲囩敤 SpringDoc銆乯avadoc 鏃犳敞瑙i浂鍏ヤ镜鍩轰簬java娉ㄩ噴<br/>鍙渶鎶婃敞閲婂啓濂� 鏃犻渶鍐嶅啓涓�澶у爢鐨勬枃妗f敞瑙d簡 | 閲囩敤 Springfox 宸插仠姝㈢淮鎶� 闇�瑕佺紪鍐欏ぇ閲忕殑娉ㄨВ鏉ユ敮鎸佹枃妗g敓鎴� |
| 鏍¢獙妗嗘灦 | 閲囩敤 Validation 鏀寔娉ㄨВ涓庡伐鍏风被鏍¢獙 娉ㄨВ鏀寔鍥介檯鍖� | 浠呮敮鎸佹敞瑙� 涓旀敞瑙d笉鏀寔鍥介檯鍖� |
diff --git a/pom.xml b/pom.xml
index e69ab15..dfcfa75 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,8 +49,7 @@
<!-- OSS 閰嶇疆 -->
<aws-java-sdk-s3.version>1.12.400</aws-java-sdk-s3.version>
<!-- SMS 閰嶇疆 -->
- <aliyun.sms.version>2.0.23</aliyun.sms.version>
- <tencent.sms.version>3.1.687</tencent.sms.version>
+ <sms4j.version>2.1.1</sms4j.version>
<!-- 鎻掍欢鐗堟湰 -->
<maven-jar-plugin.version>3.2.2</maven-jar-plugin.version>
@@ -242,17 +241,11 @@
<artifactId>aws-java-sdk-s3</artifactId>
<version>${aws-java-sdk-s3.version}</version>
</dependency>
-
+ <!--鐭俊sms4j-->
<dependency>
- <groupId>com.aliyun</groupId>
- <artifactId>dysmsapi20170525</artifactId>
- <version>${aliyun.sms.version}</version>
- </dependency>
-
- <dependency>
- <groupId>com.tencentcloudapi</groupId>
- <artifactId>tencentcloud-sdk-java-sms</artifactId>
- <version>${tencent.sms.version}</version>
+ <groupId>org.dromara.sms4j</groupId>
+ <artifactId>sms4j-spring-boot-starter</artifactId>
+ <version>${sms4j.version}</version>
</dependency>
<dependency>
diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/CaptchaController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/CaptchaController.java
index dd9fa19..70d79ca 100644
--- a/ruoyi-admin/src/main/java/org/dromara/web/controller/CaptchaController.java
+++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/CaptchaController.java
@@ -14,11 +14,12 @@
import org.dromara.common.mail.config.properties.MailProperties;
import org.dromara.common.mail.utils.MailUtils;
import org.dromara.common.redis.utils.RedisUtils;
-import org.dromara.common.sms.config.properties.SmsProperties;
-import org.dromara.common.sms.core.SmsTemplate;
-import org.dromara.common.sms.entity.SmsResult;
import org.dromara.common.web.config.properties.CaptchaProperties;
import org.dromara.common.web.enums.CaptchaType;
+import org.dromara.sms4j.api.SmsBlend;
+import org.dromara.sms4j.api.entity.SmsResponse;
+import org.dromara.sms4j.core.factory.SmsFactory;
+import org.dromara.sms4j.provider.enumerate.SupplierType;
import org.dromara.web.domain.vo.CaptchaVo;
import jakarta.validation.constraints.NotBlank;
import lombok.RequiredArgsConstructor;
@@ -31,8 +32,7 @@
import org.springframework.web.bind.annotation.RestController;
import java.time.Duration;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.LinkedHashMap;
/**
* 楠岃瘉鐮佹搷浣滃鐞�
@@ -47,7 +47,6 @@
public class CaptchaController {
private final CaptchaProperties captchaProperties;
- private final SmsProperties smsProperties;
private final MailProperties mailProperties;
/**
@@ -57,21 +56,18 @@
*/
@GetMapping("/resource/sms/code")
public R<Void> smsCode(@NotBlank(message = "{user.phonenumber.not.blank}") String phonenumber) {
- if (!smsProperties.getEnabled()) {
- return R.fail("褰撳墠绯荤粺娌℃湁寮�鍚煭淇″姛鑳斤紒");
- }
String key = GlobalConstants.CAPTCHA_CODE_KEY + phonenumber;
String code = RandomUtil.randomNumbers(4);
RedisUtils.setCacheObject(key, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION));
// 楠岃瘉鐮佹ā鏉縤d 鑷澶勭悊 (鏌ユ暟鎹簱鎴栧啓姝诲潎鍙�)
String templateId = "";
- Map<String, String> map = new HashMap<>(1);
+ LinkedHashMap<String, String> map = new LinkedHashMap<>(1);
map.put("code", code);
- SmsTemplate smsTemplate = SpringUtils.getBean(SmsTemplate.class);
- SmsResult result = smsTemplate.send(phonenumber, templateId, map);
- if (!result.isSuccess()) {
- log.error("楠岃瘉鐮佺煭淇″彂閫佸紓甯� => {}", result);
- return R.fail(result.getMessage());
+ SmsBlend smsBlend = SmsFactory.createSmsBlend(SupplierType.ALIBABA);
+ SmsResponse smsResponse = smsBlend.sendMessage(phonenumber, templateId, map);
+ if (!"OK".equals(smsResponse.getCode())) {
+ log.error("楠岃瘉鐮佺煭淇″彂閫佸紓甯� => {}", smsResponse);
+ return R.fail(smsResponse.getMessage());
}
return R.ok();
}
diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java b/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java
index 84c554d..479c390 100644
--- a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java
+++ b/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java
@@ -345,7 +345,7 @@
private SysUserVo loadUserByEmail(String tenantId, String email) {
SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>()
- .select(SysUser::getPhonenumber, SysUser::getStatus)
+ .select(SysUser::getEmail, SysUser::getStatus)
.eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId)
.eq(SysUser::getEmail, email));
if (ObjectUtil.isNull(user)) {
@@ -414,25 +414,24 @@
String errorKey = GlobalConstants.PWD_ERR_CNT_KEY + username;
String loginFail = Constants.LOGIN_FAIL;
- // 鑾峰彇鐢ㄦ埛鐧诲綍閿欒娆℃暟(鍙嚜瀹氫箟闄愬埗绛栫暐 渚嬪: key + username + ip)
- Integer errorNumber = RedisUtils.getCacheObject(errorKey);
+ // 鑾峰彇鐢ㄦ埛鐧诲綍閿欒娆℃暟锛岄粯璁や负0 (鍙嚜瀹氫箟闄愬埗绛栫暐 渚嬪: key + username + ip)
+ int errorNumber = ObjectUtil.defaultIfNull(RedisUtils.getCacheObject(errorKey), 0);
// 閿佸畾鏃堕棿鍐呯櫥褰� 鍒欒涪鍑�
- if (ObjectUtil.isNotNull(errorNumber) && errorNumber.equals(maxRetryCount)) {
+ if (errorNumber >= maxRetryCount) {
recordLogininfor(tenantId, username, loginFail, MessageUtils.message(loginType.getRetryLimitExceed(), maxRetryCount, lockTime));
throw new UserException(loginType.getRetryLimitExceed(), maxRetryCount, lockTime);
}
if (supplier.get()) {
- // 鏄惁绗竴娆�
- errorNumber = ObjectUtil.isNull(errorNumber) ? 1 : errorNumber + 1;
+ // 閿欒娆℃暟閫掑
+ errorNumber++;
+ RedisUtils.setCacheObject(errorKey, errorNumber, Duration.ofMinutes(lockTime));
// 杈惧埌瑙勫畾閿欒娆℃暟 鍒欓攣瀹氱櫥褰�
- if (errorNumber.equals(maxRetryCount)) {
- RedisUtils.setCacheObject(errorKey, errorNumber, Duration.ofMinutes(lockTime));
+ if (errorNumber >= maxRetryCount) {
recordLogininfor(tenantId, username, loginFail, MessageUtils.message(loginType.getRetryLimitExceed(), maxRetryCount, lockTime));
throw new UserException(loginType.getRetryLimitExceed(), maxRetryCount, lockTime);
} else {
- // 鏈揪鍒拌瀹氶敊璇鏁� 鍒欓�掑
- RedisUtils.setCacheObject(errorKey, errorNumber);
+ // 鏈揪鍒拌瀹氶敊璇鏁�
recordLogininfor(tenantId, username, loginFail, MessageUtils.message(loginType.getRetryLimitCount(), errorNumber));
throw new UserException(loginType.getRetryLimitCount(), errorNumber);
}
diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml
index 78cad6e..5adc8ae 100644
--- a/ruoyi-admin/src/main/resources/application-dev.yml
+++ b/ruoyi-admin/src/main/resources/application-dev.yml
@@ -158,162 +158,29 @@
# Socket杩炴帴瓒呮椂鍊硷紝鍗曚綅姣锛岀己鐪佸�间笉瓒呮椂
connectionTimeout: 0
---- # sms 鐭俊
+--- # sms 鐭俊 鏀寔 闃块噷浜� 鑵捐浜� 浜戠墖 绛夌瓑鍚勫紡鍚勬牱鐨勭煭淇℃湇鍔″晢
+# https://wind.kim/doc/start 鏂囨。鍦板潃 鍚勪釜鍘傚晢鍙悓鏃朵娇鐢�
sms:
- enabled: false
# 闃块噷浜� dysmsapi.aliyuncs.com
- # 鑵捐浜� sms.tencentcloudapi.com
- endpoint: "dysmsapi.aliyuncs.com"
- accessKeyId: xxxxxxx
- accessKeySecret: xxxxxx
- signName: 娴嬭瘯
- # 鑵捐涓撶敤
- sdkAppId:
-
-justauth:
- enabled: true
- type:
- QQ:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/qq/callback
- union-id: false
- WEIBO:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/weibo/callback
- gitee:
- client-id: 38eaaa1b77b5e064313057a2f5745ce3a9f3e7686d9bd302c7df2f308ef6db81
- client-secret: 2e633af8780cb9fe002c4c7291b722db944402e271efb99b062811f52d7da1ff
- redirect-uri: http://localhost:8888/social-login?source=gitee
- DINGTALK:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/dingtalk/callback
- BAIDU:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/baidu/callback
- CSDN:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/csdn/callback
- CODING:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/coding/callback
- coding-group-name: xx
- OSCHINA:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/oschina/callback
- ALIPAY:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/alipay/callback
- alipay-public-key: MIIB**************DAQAB
- WECHAT_OPEN:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/wechat_open/callback
- WECHAT_MP:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/wechat_mp/callback
- WECHAT_ENTERPRISE:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/wechat_enterprise/callback
- agent-id: 1000002
- TAOBAO:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/taobao/callback
- GOOGLE:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/google/callback
- FACEBOOK:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/facebook/callback
- DOUYIN:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/douyin/callback
- LINKEDIN:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/linkedin/callback
- MICROSOFT:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/microsoft/callback
- MI:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/mi/callback
- TOUTIAO:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/toutiao/callback
- TEAMBITION:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/teambition/callback
- RENREN:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/renren/callback
- PINTEREST:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/pinterest/callback
- STACK_OVERFLOW:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/stack_overflow/callback
- stack-overflow-key: asd*********asd
- HUAWEI:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/huawei/callback
- KUJIALE:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/kujiale/callback
- GITLAB:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/gitlab/callback
- MEITUAN:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/meituan/callback
- ELEME:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/eleme/callback
- TWITTER:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/twitter/callback
- XMLY:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/xmly/callback
- # 璁惧鍞竴鏍囪瘑ID
- device-id: xxxxxxxxxxxxxx
- # 瀹㈡埛绔搷浣滅郴缁熺被鍨嬶紝1-iOS绯荤粺锛�2-Android绯荤粺锛�3-Web
- client-os-type: 3
- # 瀹㈡埛绔寘鍚嶏紝濡傛灉 clientOsType 涓�1鎴�2鏃跺繀濉�傚Android瀹㈡埛绔槸鍖呭悕锛屽IOS瀹㈡埛绔槸Bundle ID
- #pack-id: xxxx
- FEISHU:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/feishu/callback
- JD:
- client-id: 10**********6
- client-secret: 1f7d08**********5b7**********29e
- redirect-uri: http://oauth.xkcoding.com/demo/oauth/jd/callback
-
+ alibaba:
+ #璇锋眰鍦板潃 榛樿涓� dysmsapi.aliyuncs.com 濡傛棤鐗规畩鏀瑰彉鍙互涓嶇敤璁剧疆
+ requestUrl: dysmsapi.aliyuncs.com
+ #闃块噷浜戠殑accessKey
+ accessKeyId: xxxxxxx
+ #闃块噷浜戠殑accessKeySecret
+ accessKeySecret: xxxxxxx
+ #鐭俊绛惧悕
+ signature: 娴嬭瘯
+ tencent:
+ #璇锋眰鍦板潃榛樿涓� sms.tencentcloudapi.com 濡傛棤鐗规畩鏀瑰彉鍙笉鐢ㄨ缃�
+ requestUrl: sms.tencentcloudapi.com
+ #鑵捐浜戠殑accessKey
+ accessKeyId: xxxxxxx
+ #鑵捐浜戠殑accessKeySecret
+ accessKeySecret: xxxxxxx
+ #鐭俊绛惧悕
+ signature: 娴嬭瘯
+ #鐭俊sdkAppId
+ sdkAppId: appid
+ #鍦板煙淇℃伅榛樿涓� ap-guangzhou 濡傛棤鐗规畩鏀瑰彉鍙笉鐢ㄨ缃�
+ territory: ap-guangzhou
diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml
index e760823..4b29d1c 100644
--- a/ruoyi-admin/src/main/resources/application-prod.yml
+++ b/ruoyi-admin/src/main/resources/application-prod.yml
@@ -161,14 +161,29 @@
# Socket杩炴帴瓒呮椂鍊硷紝鍗曚綅姣锛岀己鐪佸�间笉瓒呮椂
connectionTimeout: 0
---- # sms 鐭俊
+--- # sms 鐭俊 鏀寔 闃块噷浜� 鑵捐浜� 浜戠墖 绛夌瓑鍚勫紡鍚勬牱鐨勭煭淇℃湇鍔″晢
+# https://wind.kim/doc/start 鏂囨。鍦板潃 鍚勪釜鍘傚晢鍙悓鏃朵娇鐢�
sms:
- enabled: false
# 闃块噷浜� dysmsapi.aliyuncs.com
- # 鑵捐浜� sms.tencentcloudapi.com
- endpoint: "dysmsapi.aliyuncs.com"
- accessKeyId: xxxxxxx
- accessKeySecret: xxxxxx
- signName: 娴嬭瘯
- # 鑵捐涓撶敤
- sdkAppId:
+ alibaba:
+ #璇锋眰鍦板潃 榛樿涓� dysmsapi.aliyuncs.com 濡傛棤鐗规畩鏀瑰彉鍙互涓嶇敤璁剧疆
+ requestUrl: dysmsapi.aliyuncs.com
+ #闃块噷浜戠殑accessKey
+ accessKeyId: xxxxxxx
+ #闃块噷浜戠殑accessKeySecret
+ accessKeySecret: xxxxxxx
+ #鐭俊绛惧悕
+ signature: 娴嬭瘯
+ tencent:
+ #璇锋眰鍦板潃榛樿涓� sms.tencentcloudapi.com 濡傛棤鐗规畩鏀瑰彉鍙笉鐢ㄨ缃�
+ requestUrl: sms.tencentcloudapi.com
+ #鑵捐浜戠殑accessKey
+ accessKeyId: xxxxxxx
+ #鑵捐浜戠殑accessKeySecret
+ accessKeySecret: xxxxxxx
+ #鐭俊绛惧悕
+ signature: 娴嬭瘯
+ #鐭俊sdkAppId
+ sdkAppId: appid
+ #鍦板煙淇℃伅榛樿涓� ap-guangzhou 濡傛棤鐗规畩鏀瑰彉鍙笉鐢ㄨ缃�
+ territory: ap-guangzhou
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index 31d0de5..b68a3dc 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -96,20 +96,14 @@
sa-token:
# token鍚嶇О (鍚屾椂涔熸槸cookie鍚嶇О)
token-name: Authorization
- # token鏈夋晥鏈� 璁句负涓�澶� (蹇呭畾杩囨湡) 鍗曚綅: 绉�
- timeout: 86400
- # token涓存椂鏈夋晥鏈� (鎸囧畾鏃堕棿鏃犳搷浣滃氨杩囨湡) 鍗曚綅: 绉�
+ # token鍥哄畾瓒呮椂 璁句负涓冨ぉ (蹇呭畾杩囨湡) 鍗曚綅: 绉�
+ timeout: 604800
+ # token娲昏穬瓒呮椂鏃堕棿 30鍒嗛挓(鎸囧畾鏃堕棿鏃犳搷浣滃垯杩囨湡) 鍗曚綅: 绉�
activity-timeout: 1800
# 鏄惁鍏佽鍚屼竴璐﹀彿骞跺彂鐧诲綍 (涓簍rue鏃跺厑璁镐竴璧风櫥褰�, 涓篺alse鏃舵柊鐧诲綍鎸ゆ帀鏃х櫥褰�)
is-concurrent: true
# 鍦ㄥ浜虹櫥褰曞悓涓�璐﹀彿鏃讹紝鏄惁鍏辩敤涓�涓猼oken (涓簍rue鏃舵墍鏈夌櫥褰曞叡鐢ㄤ竴涓猼oken, 涓篺alse鏃舵瘡娆$櫥褰曟柊寤轰竴涓猼oken)
is-share: false
- # 鏄惁灏濊瘯浠巋eader閲岃鍙杢oken
- is-read-header: true
- # 鏄惁灏濊瘯浠巆ookie閲岃鍙杢oken
- is-read-cookie: false
- # token鍓嶇紑
- token-prefix: "Bearer"
# jwt绉橀挜
jwt-secret-key: abcdefghijklmnopqrstuvwxyz
@@ -156,39 +150,12 @@
mapperLocations: classpath*:mapper/**/*Mapper.xml
# 瀹炰綋鎵弿锛屽涓猵ackage鐢ㄩ�楀彿鎴栬�呭垎鍙峰垎闅�
typeAliasesPackage: org.dromara.**.domain
- # 鍚姩鏃舵槸鍚︽鏌� MyBatis XML 鏂囦欢鐨勫瓨鍦紝榛樿涓嶆鏌�
- checkConfigLocation: false
- configuration:
- # 鑷姩椹煎嘲鍛藉悕瑙勫垯锛坈amel case锛夋槧灏�
- mapUnderscoreToCamelCase: true
- # MyBatis 鑷姩鏄犲皠绛栫暐
- # NONE锛氫笉鍚敤 PARTIAL锛氬彧瀵归潪宓屽 resultMap 鑷姩鏄犲皠 FULL锛氬鎵�鏈� resultMap 鑷姩鏄犲皠
- autoMappingBehavior: FULL
- # MyBatis 鑷姩鏄犲皠鏃舵湭鐭ュ垪鎴栨湭鐭ュ睘鎬у鐞嗙瓥
- # NONE锛氫笉鍋氬鐞� WARNING锛氭墦鍗扮浉鍏宠鍛� FAILING锛氭姏鍑哄紓甯稿拰璇︾粏淇℃伅
- autoMappingUnknownColumnBehavior: NONE
- # 鏇磋缁嗙殑鏃ュ織杈撳嚭 浼氭湁鎬ц兘鎹熻�� org.apache.ibatis.logging.stdout.StdOutImpl
- # 鍏抽棴鏃ュ織璁板綍 (鍙崟绾娇鐢� p6spy 鍒嗘瀽) org.apache.ibatis.logging.nologging.NoLoggingImpl
- # 榛樿鏃ュ織杈撳嚭 org.apache.ibatis.logging.slf4j.Slf4jImpl
- logImpl: org.apache.ibatis.logging.nologging.NoLoggingImpl
global-config:
- # 鏄惁鎵撳嵃 Logo banner
- banner: true
dbConfig:
# 涓婚敭绫诲瀷
# AUTO 鑷 NONE 绌� INPUT 鐢ㄦ埛杈撳叆 ASSIGN_ID 闆姳 ASSIGN_UUID 鍞竴 UUID
+ # 濡傞渶鏀逛负鑷 闇�瑕佸皢鏁版嵁搴撹〃鍏ㄩ儴璁剧疆涓鸿嚜澧�
idType: ASSIGN_ID
- # 閫昏緫宸插垹闄ゅ��
- logicDeleteValue: 2
- # 閫昏緫鏈垹闄ゅ��
- logicNotDeleteValue: 0
- # 瀛楁楠岃瘉绛栫暐涔� insert,鍦� insert 鐨勬椂鍊欑殑瀛楁楠岃瘉绛栫暐
- # IGNORED 蹇界暐 NOT_NULL 闈濶ULL NOT_EMPTY 闈炵┖ DEFAULT 榛樿 NEVER 涓嶅姞鍏� SQL
- insertStrategy: NOT_NULL
- # 瀛楁楠岃瘉绛栫暐涔� update,鍦� update 鐨勬椂鍊欑殑瀛楁楠岃瘉绛栫暐
- updateStrategy: NOT_NULL
- # 瀛楁楠岃瘉绛栫暐涔� select,鍦� select 鐨勬椂鍊欑殑瀛楁楠岃瘉绛栫暐鏃� wrapper 鏍规嵁鍐呴儴 entity 鐢熸垚鐨� where 鏉′欢
- where-strategy: NOT_NULL
# 鏁版嵁鍔犲瘑
mybatis-encryptor:
@@ -204,8 +171,13 @@
publicKey:
privateKey:
-# Swagger閰嶇疆
-swagger:
+springdoc:
+ api-docs:
+ # 鏄惁寮�鍚帴鍙f枃妗�
+ enabled: true
+ swagger-ui:
+ # 鎸佷箙鍖栬璇佹暟鎹�
+ persistAuthorization: true
info:
# 鏍囬
title: '鏍囬锛�${ruoyi.name}澶氱鎴风鐞嗙郴缁焈鎺ュ彛鏂囨。'
@@ -225,14 +197,6 @@
type: APIKEY
in: HEADER
name: ${sa-token.token-name}
-
-springdoc:
- api-docs:
- # 鏄惁寮�鍚帴鍙f枃妗�
- enabled: true
- swagger-ui:
- # 鎸佷箙鍖栬璇佹暟鎹�
- persistAuthorization: true
#杩欓噷瀹氫箟浜嗕袱涓垎缁勶紝鍙畾涔夊涓紝涔熷彲浠ヤ笉瀹氫箟
group-configs:
- group: 1.婕旂ず妯″潡
diff --git a/ruoyi-common/ruoyi-common-core/pom.xml b/ruoyi-common/ruoyi-common-core/pom.xml
index 8f3740f..33f9f7f 100644
--- a/ruoyi-common/ruoyi-common-core/pom.xml
+++ b/ruoyi-common/ruoyi-common-core/pom.xml
@@ -34,6 +34,11 @@
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-aop</artifactId>
+ </dependency>
+
<!--甯哥敤宸ュ叿绫� -->
<dependency>
<groupId>org.apache.commons</groupId>
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/AsyncConfig.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/AsyncConfig.java
index de9a9bc..9a32afe 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/AsyncConfig.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/AsyncConfig.java
@@ -2,16 +2,14 @@
import cn.hutool.core.util.ArrayUtil;
import org.dromara.common.core.exception.ServiceException;
+import org.dromara.common.core.utils.SpringUtils;
import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.scheduling.annotation.AsyncConfigurer;
import org.springframework.scheduling.annotation.EnableAsync;
import java.util.Arrays;
import java.util.concurrent.Executor;
-import java.util.concurrent.ScheduledExecutorService;
/**
* 寮傛閰嶇疆
@@ -22,16 +20,12 @@
@AutoConfiguration
public class AsyncConfig implements AsyncConfigurer {
- @Autowired
- @Qualifier("scheduledExecutorService")
- private ScheduledExecutorService scheduledExecutorService;
-
/**
* 鑷畾涔� @Async 娉ㄨВ浣跨敤绯荤粺绾跨▼姹�
*/
@Override
public Executor getAsyncExecutor() {
- return scheduledExecutorService;
+ return SpringUtils.getBean("scheduledExecutorService");
}
/**
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/ValidatorConfig.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/ValidatorConfig.java
index 00825c2..45c5bd1 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/ValidatorConfig.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/ValidatorConfig.java
@@ -22,18 +22,19 @@
*/
@Bean
public Validator validator(MessageSource messageSource) {
- LocalValidatorFactoryBean factoryBean = new LocalValidatorFactoryBean();
- // 鍥介檯鍖�
- factoryBean.setValidationMessageSource(messageSource);
- // 璁剧疆浣跨敤 HibernateValidator 鏍¢獙鍣�
- factoryBean.setProviderClass(HibernateValidator.class);
- Properties properties = new Properties();
- // 璁剧疆 蹇�熷紓甯歌繑鍥�
- properties.setProperty("hibernate.validator.fail_fast", "true");
- factoryBean.setValidationProperties(properties);
- // 鍔犺浇閰嶇疆
- factoryBean.afterPropertiesSet();
- return factoryBean.getValidator();
+ try (LocalValidatorFactoryBean factoryBean = new LocalValidatorFactoryBean()) {
+ // 鍥介檯鍖�
+ factoryBean.setValidationMessageSource(messageSource);
+ // 璁剧疆浣跨敤 HibernateValidator 鏍¢獙鍣�
+ factoryBean.setProviderClass(HibernateValidator.class);
+ Properties properties = new Properties();
+ // 璁剧疆 蹇�熷紓甯歌繑鍥�
+ properties.setProperty("hibernate.validator.fail_fast", "true");
+ factoryBean.setValidationProperties(properties);
+ // 鍔犺浇閰嶇疆
+ factoryBean.afterPropertiesSet();
+ return factoryBean.getValidator();
+ }
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/factory/YmlPropertySourceFactory.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/factory/YmlPropertySourceFactory.java
new file mode 100644
index 0000000..af61b90
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/factory/YmlPropertySourceFactory.java
@@ -0,0 +1,31 @@
+package org.dromara.common.core.factory;
+
+import org.dromara.common.core.utils.StringUtils;
+import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
+import org.springframework.core.env.PropertiesPropertySource;
+import org.springframework.core.env.PropertySource;
+import org.springframework.core.io.support.DefaultPropertySourceFactory;
+import org.springframework.core.io.support.EncodedResource;
+
+import java.io.IOException;
+
+/**
+ * yml 閰嶇疆婧愬伐鍘�
+ *
+ * @author Lion Li
+ */
+public class YmlPropertySourceFactory extends DefaultPropertySourceFactory {
+
+ @Override
+ public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException {
+ String sourceName = resource.getResource().getFilename();
+ if (StringUtils.isNotBlank(sourceName) && StringUtils.endsWithAny(sourceName, ".yml", ".yaml")) {
+ YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();
+ factory.setResources(resource.getResource());
+ factory.afterPropertiesSet();
+ return new PropertiesPropertySource(sourceName, factory.getObject());
+ }
+ return super.createPropertySource(name, resource);
+ }
+
+}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/MessageUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/MessageUtils.java
index 6f3729b..48dfc08 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/MessageUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/MessageUtils.java
@@ -3,6 +3,7 @@
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.springframework.context.MessageSource;
+import org.springframework.context.NoSuchMessageException;
import org.springframework.context.i18n.LocaleContextHolder;
/**
@@ -23,6 +24,10 @@
* @return 鑾峰彇鍥介檯鍖栫炕璇戝��
*/
public static String message(String code, Object... args) {
- return MESSAGE_SOURCE.getMessage(code, args, LocaleContextHolder.getLocale());
+ try {
+ return MESSAGE_SOURCE.getMessage(code, args, LocaleContextHolder.getLocale());
+ } catch (NoSuchMessageException e) {
+ return code;
+ }
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ServletUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ServletUtils.java
index 91e2990..a1316eb 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ServletUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ServletUtils.java
@@ -10,6 +10,7 @@
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.springframework.http.MediaType;
+import org.springframework.util.LinkedCaseInsensitiveMap;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@@ -19,6 +20,7 @@
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.Collections;
+import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
@@ -101,14 +103,22 @@
* 鑾峰彇request
*/
public static HttpServletRequest getRequest() {
- return getRequestAttributes().getRequest();
+ try {
+ return getRequestAttributes().getRequest();
+ } catch (Exception e) {
+ return null;
+ }
}
/**
* 鑾峰彇response
*/
public static HttpServletResponse getResponse() {
- return getRequestAttributes().getResponse();
+ try {
+ return getRequestAttributes().getResponse();
+ } catch (Exception e) {
+ return null;
+ }
}
/**
@@ -119,8 +129,33 @@
}
public static ServletRequestAttributes getRequestAttributes() {
- RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
- return (ServletRequestAttributes) attributes;
+ try {
+ RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
+ return (ServletRequestAttributes) attributes;
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ public static String getHeader(HttpServletRequest request, String name) {
+ String value = request.getHeader(name);
+ if (StringUtils.isEmpty(value)) {
+ return StringUtils.EMPTY;
+ }
+ return urlDecode(value);
+ }
+
+ public static Map<String, String> getHeaders(HttpServletRequest request) {
+ Map<String, String> map = new LinkedCaseInsensitiveMap<>();
+ Enumeration<String> enumeration = request.getHeaderNames();
+ if (enumeration != null) {
+ while (enumeration.hasMoreElements()) {
+ String key = enumeration.nextElement();
+ String value = request.getHeader(key);
+ map.put(key, value);
+ }
+ }
+ return map;
}
/**
diff --git a/ruoyi-common/ruoyi-common-doc/src/main/java/org/dromara/common/doc/config/SwaggerConfig.java b/ruoyi-common/ruoyi-common-doc/src/main/java/org/dromara/common/doc/config/SpringDocConfig.java
similarity index 92%
rename from ruoyi-common/ruoyi-common-doc/src/main/java/org/dromara/common/doc/config/SwaggerConfig.java
rename to ruoyi-common/ruoyi-common-doc/src/main/java/org/dromara/common/doc/config/SpringDocConfig.java
index 459941c..4e32380 100644
--- a/ruoyi-common/ruoyi-common-doc/src/main/java/org/dromara/common/doc/config/SwaggerConfig.java
+++ b/ruoyi-common/ruoyi-common-doc/src/main/java/org/dromara/common/doc/config/SpringDocConfig.java
@@ -1,13 +1,13 @@
package org.dromara.common.doc.config;
-import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.doc.config.properties.SwaggerProperties;
-import org.dromara.common.doc.handler.OpenApiHandler;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.Paths;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.doc.config.properties.SpringDocProperties;
+import org.dromara.common.doc.handler.OpenApiHandler;
import org.springdoc.core.configuration.SpringDocConfiguration;
import org.springdoc.core.customizers.OpenApiBuilderCustomizer;
import org.springdoc.core.customizers.OpenApiCustomizer;
@@ -36,18 +36,18 @@
*/
@RequiredArgsConstructor
@AutoConfiguration(before = SpringDocConfiguration.class)
-@EnableConfigurationProperties(SwaggerProperties.class)
+@EnableConfigurationProperties(SpringDocProperties.class)
@ConditionalOnProperty(name = "springdoc.api-docs.enabled", havingValue = "true", matchIfMissing = true)
-public class SwaggerConfig {
+public class SpringDocConfig {
private final ServerProperties serverProperties;
@Bean
@ConditionalOnMissingBean(OpenAPI.class)
- public OpenAPI openApi(SwaggerProperties swaggerProperties) {
+ public OpenAPI openApi(SpringDocProperties swaggerProperties) {
OpenAPI openApi = new OpenAPI();
// 鏂囨。鍩烘湰淇℃伅
- SwaggerProperties.InfoProperties infoProperties = swaggerProperties.getInfo();
+ SpringDocProperties.InfoProperties infoProperties = swaggerProperties.getInfo();
Info info = convertInfo(infoProperties);
openApi.info(info);
// 鎵╁睍鏂囨。淇℃伅
@@ -65,7 +65,7 @@
return openApi;
}
- private Info convertInfo(SwaggerProperties.InfoProperties infoProperties) {
+ private Info convertInfo(SpringDocProperties.InfoProperties infoProperties) {
Info info = new Info();
info.setTitle(infoProperties.getTitle());
info.setDescription(infoProperties.getDescription());
diff --git a/ruoyi-common/ruoyi-common-doc/src/main/java/org/dromara/common/doc/config/properties/SwaggerProperties.java b/ruoyi-common/ruoyi-common-doc/src/main/java/org/dromara/common/doc/config/properties/SpringDocProperties.java
similarity index 95%
rename from ruoyi-common/ruoyi-common-doc/src/main/java/org/dromara/common/doc/config/properties/SwaggerProperties.java
rename to ruoyi-common/ruoyi-common-doc/src/main/java/org/dromara/common/doc/config/properties/SpringDocProperties.java
index 9e08e73..eae3b4c 100644
--- a/ruoyi-common/ruoyi-common-doc/src/main/java/org/dromara/common/doc/config/properties/SwaggerProperties.java
+++ b/ruoyi-common/ruoyi-common-doc/src/main/java/org/dromara/common/doc/config/properties/SpringDocProperties.java
@@ -18,8 +18,8 @@
* @author Lion Li
*/
@Data
-@ConfigurationProperties(prefix = "swagger")
-public class SwaggerProperties {
+@ConfigurationProperties(prefix = "springdoc")
+public class SpringDocProperties {
/**
* 鏂囨。鍩烘湰淇℃伅
diff --git a/ruoyi-common/ruoyi-common-doc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-common/ruoyi-common-doc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index e64b2eb..fe11e76 100644
--- a/ruoyi-common/ruoyi-common-doc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/ruoyi-common/ruoyi-common-doc/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -1 +1 @@
-org.dromara.common.doc.config.SwaggerConfig
+org.dromara.common.doc.config.SpringDocConfig
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/config/MybatisPlusConfig.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/config/MybatisPlusConfig.java
index 1fe7834..c07a2bb 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/config/MybatisPlusConfig.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/config/MybatisPlusConfig.java
@@ -7,11 +7,13 @@
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.dromara.common.core.factory.YmlPropertySourceFactory;
import org.dromara.common.mybatis.handler.InjectionMetaObjectHandler;
import org.dromara.common.mybatis.interceptor.PlusDataPermissionInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.PropertySource;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
@@ -22,6 +24,7 @@
@EnableTransactionManagement(proxyTargetClass = true)
@AutoConfiguration
@MapperScan("${mybatis-plus.mapperPackage}")
+@PropertySource(value = "classpath:common-mybatis.yml", factory = YmlPropertySourceFactory.class)
public class MybatisPlusConfig {
@Bean
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/resources/common-mybatis.yml b/ruoyi-common/ruoyi-common-mybatis/src/main/resources/common-mybatis.yml
new file mode 100644
index 0000000..f5dc637
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/resources/common-mybatis.yml
@@ -0,0 +1,33 @@
+# 鍐呯疆閰嶇疆 涓嶅厑璁镐慨鏀� 濡傞渶淇敼璇峰湪 nacos 涓婂啓鐩稿悓閰嶇疆瑕嗙洊
+# MyBatisPlus閰嶇疆
+# https://baomidou.com/config/
+mybatis-plus:
+ # 鍚姩鏃舵槸鍚︽鏌� MyBatis XML 鏂囦欢鐨勫瓨鍦紝榛樿涓嶆鏌�
+ checkConfigLocation: false
+ configuration:
+ # 鑷姩椹煎嘲鍛藉悕瑙勫垯锛坈amel case锛夋槧灏�
+ mapUnderscoreToCamelCase: true
+ # MyBatis 鑷姩鏄犲皠绛栫暐
+ # NONE锛氫笉鍚敤 PARTIAL锛氬彧瀵归潪宓屽 resultMap 鑷姩鏄犲皠 FULL锛氬鎵�鏈� resultMap 鑷姩鏄犲皠
+ autoMappingBehavior: FULL
+ # MyBatis 鑷姩鏄犲皠鏃舵湭鐭ュ垪鎴栨湭鐭ュ睘鎬у鐞嗙瓥
+ # NONE锛氫笉鍋氬鐞� WARNING锛氭墦鍗扮浉鍏宠鍛� FAILING锛氭姏鍑哄紓甯稿拰璇︾粏淇℃伅
+ autoMappingUnknownColumnBehavior: NONE
+ # 鏇磋缁嗙殑鏃ュ織杈撳嚭 浼氭湁鎬ц兘鎹熻�� org.apache.ibatis.logging.stdout.StdOutImpl
+ # 鍏抽棴鏃ュ織璁板綍 (鍙崟绾娇鐢� p6spy 鍒嗘瀽) org.apache.ibatis.logging.nologging.NoLoggingImpl
+ # 榛樿鏃ュ織杈撳嚭 org.apache.ibatis.logging.slf4j.Slf4jImpl
+ logImpl: org.apache.ibatis.logging.nologging.NoLoggingImpl
+ global-config:
+ # 鏄惁鎵撳嵃 Logo banner
+ banner: true
+ dbConfig:
+ # 涓婚敭绫诲瀷
+ # AUTO 鑷 NONE 绌� INPUT 鐢ㄦ埛杈撳叆 ASSIGN_ID 闆姳 ASSIGN_UUID 鍞竴 UUID
+ idType: ASSIGN_ID
+ # 閫昏緫宸插垹闄ゅ��(妗嗘灦琛ㄥ潎浣跨敤姝ゅ�� 绂佹闅忔剰淇敼)
+ logicDeleteValue: 2
+ # 閫昏緫鏈垹闄ゅ��
+ logicNotDeleteValue: 0
+ insertStrategy: NOT_NULL
+ updateStrategy: NOT_NULL
+ whereStrategy: NOT_NULL
diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/config/SaTokenConfig.java b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/config/SaTokenConfig.java
index 54ae2da..aef8a66 100644
--- a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/config/SaTokenConfig.java
+++ b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/config/SaTokenConfig.java
@@ -4,10 +4,12 @@
import cn.dev33.satoken.jwt.StpLogicJwtForSimple;
import cn.dev33.satoken.stp.StpInterface;
import cn.dev33.satoken.stp.StpLogic;
+import org.dromara.common.core.factory.YmlPropertySourceFactory;
import org.dromara.common.satoken.core.dao.PlusSaTokenDao;
import org.dromara.common.satoken.core.service.SaPermissionImpl;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.PropertySource;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
@@ -16,6 +18,7 @@
* @author Lion Li
*/
@AutoConfiguration
+@PropertySource(value = "classpath:common-satoken.yml", factory = YmlPropertySourceFactory.class)
public class SaTokenConfig implements WebMvcConfigurer {
@Bean
diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/resources/common-satoken.yml b/ruoyi-common/ruoyi-common-satoken/src/main/resources/common-satoken.yml
new file mode 100644
index 0000000..c631641
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-satoken/src/main/resources/common-satoken.yml
@@ -0,0 +1,11 @@
+# 鍐呯疆閰嶇疆 涓嶅厑璁镐慨鏀� 濡傞渶淇敼璇峰湪 nacos 涓婂啓鐩稿悓閰嶇疆瑕嗙洊
+# Sa-Token閰嶇疆
+sa-token:
+ # 鍏佽浠� 璇锋眰鍙傛暟 璇诲彇 token
+ is-read-body: true
+ # 鍏佽浠� header 璇诲彇 token
+ is-read-header: true
+ # 鍏抽棴 cookie 閴存潈 浠庢牴婧愭潨缁� csrf 婕忔礊椋庨櫓
+ is-read-cookie: false
+ # token鍓嶇紑
+ token-prefix: "Bearer"
diff --git a/ruoyi-common/ruoyi-common-sms/pom.xml b/ruoyi-common/ruoyi-common-sms/pom.xml
index b06c5ca..c50f222 100644
--- a/ruoyi-common/ruoyi-common-sms/pom.xml
+++ b/ruoyi-common/ruoyi-common-sms/pom.xml
@@ -16,22 +16,19 @@
</description>
<dependencies>
- <dependency>
- <groupId>org.dromara</groupId>
- <artifactId>ruoyi-common-json</artifactId>
- </dependency>
<dependency>
- <groupId>com.aliyun</groupId>
- <artifactId>dysmsapi20170525</artifactId>
- <optional>true</optional>
+ <groupId>org.dromara.sms4j</groupId>
+ <artifactId>sms4j-spring-boot-starter</artifactId>
+ <exclusions>
+ <!-- 鎺掗櫎浜笢鐭俊鍐呭瓨鍦ㄧ殑fastjson绛夊緟浣滆�呭悗缁慨澶� -->
+ <exclusion>
+ <groupId>com.alibaba</groupId>
+ <artifactId>fastjson</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
- <dependency>
- <groupId>com.tencentcloudapi</groupId>
- <artifactId>tencentcloud-sdk-java-sms</artifactId>
- <optional>true</optional>
- </dependency>
</dependencies>
</project>
diff --git a/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/config/SmsConfig.java b/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/config/SmsConfig.java
index 86881f1..6b5a844 100644
--- a/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/config/SmsConfig.java
+++ b/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/config/SmsConfig.java
@@ -1,15 +1,6 @@
package org.dromara.common.sms.config;
-import org.dromara.common.sms.config.properties.SmsProperties;
-import org.dromara.common.sms.core.AliyunSmsTemplate;
-import org.dromara.common.sms.core.SmsTemplate;
-import org.dromara.common.sms.core.TencentSmsTemplate;
import org.springframework.boot.autoconfigure.AutoConfiguration;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
/**
* 鐭俊閰嶇疆绫�
@@ -18,31 +9,7 @@
* @version 4.2.0
*/
@AutoConfiguration
-@EnableConfigurationProperties(SmsProperties.class)
+//@EnableConfigurationProperties(SmsProperties.class)
public class SmsConfig {
-
- @Configuration
- @ConditionalOnProperty(value = "sms.enabled", havingValue = "true")
- @ConditionalOnClass(com.aliyun.dysmsapi20170525.Client.class)
- static class AliyunSmsConfig {
-
- @Bean
- public SmsTemplate aliyunSmsTemplate(SmsProperties smsProperties) {
- return new AliyunSmsTemplate(smsProperties);
- }
-
- }
-
- @Configuration
- @ConditionalOnProperty(value = "sms.enabled", havingValue = "true")
- @ConditionalOnClass(com.tencentcloudapi.sms.v20190711.SmsClient.class)
- static class TencentSmsConfig {
-
- @Bean
- public SmsTemplate tencentSmsTemplate(SmsProperties smsProperties) {
- return new TencentSmsTemplate(smsProperties);
- }
-
- }
}
diff --git a/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/config/properties/SmsProperties.java b/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/config/properties/SmsProperties.java
index da6d940..c7b3ef1 100644
--- a/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/config/properties/SmsProperties.java
+++ b/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/config/properties/SmsProperties.java
@@ -1,45 +1,19 @@
-package org.dromara.common.sms.config.properties;
-
-import lombok.Data;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-
-/**
- * SMS鐭俊 閰嶇疆灞炴��
- *
- * @author Lion Li
- * @version 4.2.0
- */
-@Data
-@ConfigurationProperties(prefix = "sms")
-public class SmsProperties {
-
- private Boolean enabled;
-
- /**
- * 閰嶇疆鑺傜偣
- * 闃块噷浜� dysmsapi.aliyuncs.com
- * 鑵捐浜� sms.tencentcloudapi.com
- */
- private String endpoint;
-
- /**
- * key
- */
- private String accessKeyId;
-
- /**
- * 瀵嗗寵
- */
- private String accessKeySecret;
-
- /*
- * 鐭俊绛惧悕
- */
- private String signName;
-
- /**
- * 鐭俊搴旂敤ID (鑵捐涓撳睘)
- */
- private String sdkAppId;
-
-}
+//package org.dromara.common.sms.config.properties;
+//
+//import lombok.Data;
+//import org.springframework.boot.context.properties.ConfigurationProperties;
+//
+///**
+// * SMS鐭俊 閰嶇疆灞炴��
+// *
+// * @author Lion Li
+// * @version 4.2.0
+// */
+//@Data
+//@ConfigurationProperties(prefix = "sms")
+//public class SmsProperties {
+//
+// private Boolean enabled;
+//
+//
+//}
diff --git a/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/core/AliyunSmsTemplate.java b/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/core/AliyunSmsTemplate.java
deleted file mode 100644
index 00d8152..0000000
--- a/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/core/AliyunSmsTemplate.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package org.dromara.common.sms.core;
-
-import com.aliyun.dysmsapi20170525.Client;
-import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
-import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
-import com.aliyun.teaopenapi.models.Config;
-import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.json.utils.JsonUtils;
-import org.dromara.common.sms.config.properties.SmsProperties;
-import org.dromara.common.sms.entity.SmsResult;
-import org.dromara.common.sms.exception.SmsException;
-import lombok.SneakyThrows;
-
-import java.util.Map;
-
-/**
- * Aliyun 鐭俊妯℃澘
- *
- * @author Lion Li
- * @version 4.2.0
- */
-public class AliyunSmsTemplate implements SmsTemplate {
-
- private SmsProperties properties;
-
- private Client client;
-
- @SneakyThrows(Exception.class)
- public AliyunSmsTemplate(SmsProperties smsProperties) {
- this.properties = smsProperties;
- Config config = new Config()
- // 鎮ㄧ殑AccessKey ID
- .setAccessKeyId(smsProperties.getAccessKeyId())
- // 鎮ㄧ殑AccessKey Secret
- .setAccessKeySecret(smsProperties.getAccessKeySecret())
- // 璁块棶鐨勫煙鍚�
- .setEndpoint(smsProperties.getEndpoint());
- this.client = new Client(config);
- }
-
- @Override
- public SmsResult send(String phones, String templateId, Map<String, String> param) {
- if (StringUtils.isBlank(phones)) {
- throw new SmsException("鎵嬫満鍙蜂笉鑳戒负绌�");
- }
- if (StringUtils.isBlank(templateId)) {
- throw new SmsException("妯℃澘ID涓嶈兘涓虹┖");
- }
- SendSmsRequest req = new SendSmsRequest()
- .setPhoneNumbers(phones)
- .setSignName(properties.getSignName())
- .setTemplateCode(templateId)
- .setTemplateParam(JsonUtils.toJsonString(param));
- try {
- SendSmsResponse resp = client.sendSms(req);
- return SmsResult.builder()
- .isSuccess("OK".equals(resp.getBody().getCode()))
- .message(resp.getBody().getMessage())
- .response(JsonUtils.toJsonString(resp))
- .build();
- } catch (Exception e) {
- throw new SmsException(e.getMessage());
- }
- }
-
-}
diff --git a/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/core/SmsTemplate.java b/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/core/SmsTemplate.java
deleted file mode 100644
index eba38df..0000000
--- a/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/core/SmsTemplate.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.dromara.common.sms.core;
-
-import org.dromara.common.sms.entity.SmsResult;
-
-import java.util.Map;
-
-/**
- * 鐭俊妯℃澘
- *
- * @author Lion Li
- * @version 4.2.0
- */
-public interface SmsTemplate {
-
- /**
- * 鍙戦�佺煭淇�
- *
- * @param phones 鐢佃瘽鍙�(澶氫釜閫楀彿鍒嗗壊)
- * @param templateId 妯℃澘id
- * @param param 妯℃澘瀵瑰簲鍙傛暟
- * 闃块噷 闇�浣跨敤 妯℃澘鍙橀噺鍚嶇О瀵瑰簲鍐呭 渚嬪: code=1234
- * 鑵捐 闇�浣跨敤 妯℃澘鍙橀噺椤哄簭瀵瑰簲鍐呭 渚嬪: 1=1234, 1涓烘ā鏉垮唴绗竴涓弬鏁�
- */
- SmsResult send(String phones, String templateId, Map<String, String> param);
-
-}
diff --git a/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/core/TencentSmsTemplate.java b/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/core/TencentSmsTemplate.java
deleted file mode 100644
index 18d7384..0000000
--- a/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/core/TencentSmsTemplate.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package org.dromara.common.sms.core;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ArrayUtil;
-import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.json.utils.JsonUtils;
-import org.dromara.common.sms.config.properties.SmsProperties;
-import org.dromara.common.sms.entity.SmsResult;
-import org.dromara.common.sms.exception.SmsException;
-import com.tencentcloudapi.common.Credential;
-import com.tencentcloudapi.common.profile.ClientProfile;
-import com.tencentcloudapi.common.profile.HttpProfile;
-import com.tencentcloudapi.sms.v20190711.SmsClient;
-import com.tencentcloudapi.sms.v20190711.models.SendSmsRequest;
-import com.tencentcloudapi.sms.v20190711.models.SendSmsResponse;
-import com.tencentcloudapi.sms.v20190711.models.SendStatus;
-import lombok.SneakyThrows;
-
-import java.util.Arrays;
-import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-/**
- * Tencent 鐭俊妯℃澘
- *
- * @author Lion Li
- * @version 4.2.0
- */
-public class TencentSmsTemplate implements SmsTemplate {
-
- private SmsProperties properties;
-
- private SmsClient client;
-
- @SneakyThrows(Exception.class)
- public TencentSmsTemplate(SmsProperties smsProperties) {
- this.properties = smsProperties;
- Credential credential = new Credential(smsProperties.getAccessKeyId(), smsProperties.getAccessKeySecret());
- HttpProfile httpProfile = new HttpProfile();
- httpProfile.setEndpoint(smsProperties.getEndpoint());
- ClientProfile clientProfile = new ClientProfile();
- clientProfile.setHttpProfile(httpProfile);
- this.client = new SmsClient(credential, "", clientProfile);
- }
-
- @Override
- public SmsResult send(String phones, String templateId, Map<String, String> param) {
- if (StringUtils.isBlank(phones)) {
- throw new SmsException("鎵嬫満鍙蜂笉鑳戒负绌�");
- }
- if (StringUtils.isBlank(templateId)) {
- throw new SmsException("妯℃澘ID涓嶈兘涓虹┖");
- }
- SendSmsRequest req = new SendSmsRequest();
- Set<String> set = Arrays.stream(phones.split(StringUtils.SEPARATOR)).map(p -> "+86" + p).collect(Collectors.toSet());
- req.setPhoneNumberSet(ArrayUtil.toArray(set, String.class));
- if (CollUtil.isNotEmpty(param)) {
- req.setTemplateParamSet(ArrayUtil.toArray(param.values(), String.class));
- }
- req.setTemplateID(templateId);
- req.setSign(properties.getSignName());
- req.setSmsSdkAppid(properties.getSdkAppId());
- try {
- SendSmsResponse resp = client.SendSms(req);
- SmsResult.SmsResultBuilder builder = SmsResult.builder()
- .isSuccess(true)
- .message("send success")
- .response(JsonUtils.toJsonString(resp));
- for (SendStatus sendStatus : resp.getSendStatusSet()) {
- if (!"Ok".equals(sendStatus.getCode())) {
- builder.isSuccess(false).message(sendStatus.getMessage());
- break;
- }
- }
- return builder.build();
- } catch (Exception e) {
- throw new SmsException(e.getMessage());
- }
- }
-
-}
diff --git a/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/entity/SmsResult.java b/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/entity/SmsResult.java
deleted file mode 100644
index 232d612..0000000
--- a/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/entity/SmsResult.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.dromara.common.sms.entity;
-
-import lombok.Builder;
-import lombok.Data;
-
-/**
- * 涓婁紶杩斿洖浣�
- *
- * @author Lion Li
- */
-@Data
-@Builder
-public class SmsResult {
-
- /**
- * 鏄惁鎴愬姛
- */
- private boolean isSuccess;
-
- /**
- * 鍝嶅簲娑堟伅
- */
- private String message;
-
- /**
- * 瀹為檯鍝嶅簲浣�
- * <p>
- * 鍙嚜琛岃浆鎹负 SDK 瀵瑰簲鐨� SendSmsResponse
- */
- private String response;
-}
diff --git a/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/exception/SmsException.java b/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/exception/SmsException.java
deleted file mode 100644
index eb7730a..0000000
--- a/ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/exception/SmsException.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package org.dromara.common.sms.exception;
-
-import java.io.Serial;
-
-/**
- * Sms寮傚父绫�
- *
- * @author Lion Li
- */
-public class SmsException extends RuntimeException {
-
- @Serial
- private static final long serialVersionUID = 1L;
-
- public SmsException(String msg) {
- super(msg);
- }
-
-}
diff --git a/ruoyi-modules/ruoyi-demo/pom.xml b/ruoyi-modules/ruoyi-demo/pom.xml
index 09bf0bf..4fd43bc 100644
--- a/ruoyi-modules/ruoyi-demo/pom.xml
+++ b/ruoyi-modules/ruoyi-demo/pom.xml
@@ -97,16 +97,6 @@
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-websocket</artifactId>
</dependency>
- <!-- 鐭俊 鐢ㄥ摢涓鍏ュ摢涓緷璧� -->
-<!-- <dependency>-->
-<!-- <groupId>com.aliyun</groupId>-->
-<!-- <artifactId>dysmsapi20170525</artifactId>-->
-<!-- </dependency>-->
-
-<!-- <dependency>-->
-<!-- <groupId>com.tencentcloudapi</groupId>-->
-<!-- <artifactId>tencentcloud-sdk-java-sms</artifactId>-->
-<!-- </dependency>-->
</dependencies>
diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/SmsController.java b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/SmsController.java
index e130cae..fb19731 100644
--- a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/SmsController.java
+++ b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/SmsController.java
@@ -1,17 +1,17 @@
package org.dromara.demo.controller;
-import org.dromara.common.core.domain.R;
-import org.dromara.common.core.utils.SpringUtils;
-import org.dromara.common.sms.config.properties.SmsProperties;
-import org.dromara.common.sms.core.SmsTemplate;
import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.domain.R;
+import org.dromara.sms4j.api.SmsBlend;
+import org.dromara.sms4j.api.entity.SmsResponse;
+import org.dromara.sms4j.core.factory.SmsFactory;
+import org.dromara.sms4j.provider.enumerate.SupplierType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.LinkedHashMap;
/**
* 鐭俊婕旂ず妗堜緥
@@ -26,10 +26,6 @@
@RequestMapping("/demo/sms")
public class SmsController {
- private final SmsProperties smsProperties;
-// private final SmsTemplate smsTemplate; // 鍙互浣跨敤spring娉ㄥ叆
-// private final AliyunSmsTemplate smsTemplate; // 涔熷彲浠ユ敞鍏ユ煇涓巶瀹剁殑妯℃澘宸ュ叿
-
/**
* 鍙戦�佺煭淇liyun
*
@@ -38,17 +34,11 @@
*/
@GetMapping("/sendAliyun")
public R<Object> sendAliyun(String phones, String templateId) {
- if (!smsProperties.getEnabled()) {
- return R.fail("褰撳墠绯荤粺娌℃湁寮�鍚煭淇″姛鑳斤紒");
- }
- if (!SpringUtils.containsBean("aliyunSmsTemplate")) {
- return R.fail("闃块噷浜戜緷璧栨湭寮曞叆锛�");
- }
- SmsTemplate smsTemplate = SpringUtils.getBean(SmsTemplate.class);
- Map<String, String> map = new HashMap<>(1);
+ LinkedHashMap<String, String> map = new LinkedHashMap<>(1);
map.put("code", "1234");
- Object send = smsTemplate.send(phones, templateId, map);
- return R.ok(send);
+ SmsBlend smsBlend = SmsFactory.createSmsBlend(SupplierType.ALIBABA);
+ SmsResponse smsResponse = smsBlend.sendMessage(phones, templateId, map);
+ return R.ok(smsResponse);
}
/**
@@ -59,18 +49,12 @@
*/
@GetMapping("/sendTencent")
public R<Object> sendTencent(String phones, String templateId) {
- if (!smsProperties.getEnabled()) {
- return R.fail("褰撳墠绯荤粺娌℃湁寮�鍚煭淇″姛鑳斤紒");
- }
- if (!SpringUtils.containsBean("tencentSmsTemplate")) {
- return R.fail("鑵捐浜戜緷璧栨湭寮曞叆锛�");
- }
- SmsTemplate smsTemplate = SpringUtils.getBean(SmsTemplate.class);
- Map<String, String> map = new HashMap<>(1);
+ LinkedHashMap<String, String> map = new LinkedHashMap<>(1);
// map.put("2", "娴嬭瘯娴嬭瘯");
map.put("1", "1234");
- Object send = smsTemplate.send(phones, templateId, map);
- return R.ok(send);
+ SmsBlend smsBlend = SmsFactory.createSmsBlend(SupplierType.TENCENT);
+ SmsResponse smsResponse = smsBlend.sendMessage(phones, templateId, map);
+ return R.ok(smsResponse);
}
}
diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/mapper/GenTableColumnMapper.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/mapper/GenTableColumnMapper.java
index 2d8b886..f38d39c 100644
--- a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/mapper/GenTableColumnMapper.java
+++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/mapper/GenTableColumnMapper.java
@@ -2,6 +2,7 @@
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
+import org.apache.ibatis.annotations.Param;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.generator.domain.GenTableColumn;
@@ -22,6 +23,6 @@
* @return 鍒椾俊鎭�
*/
@DS("#dataName")
- List<GenTableColumn> selectDbTableColumnsByName(String tableName, String dataName);
+ List<GenTableColumn> selectDbTableColumnsByName(@Param("tableName") String tableName, String dataName);
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantController.java
index dc8fbc0..865b57a 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantController.java
@@ -4,6 +4,7 @@
import cn.dev33.satoken.annotation.SaCheckRole;
import com.baomidou.lock.annotation.Lock4j;
import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
@@ -174,7 +175,8 @@
@SaCheckPermission("system:tenant:edit")
@Log(title = "绉熸埛", businessType = BusinessType.UPDATE)
@GetMapping("/syncTenantPackage")
- public R<Void> syncTenantPackage(@NotBlank(message = "绉熸埛ID涓嶈兘涓虹┖") String tenantId, @NotBlank(message = "濂楅ID涓嶈兘涓虹┖") Long packageId) {
+ public R<Void> syncTenantPackage(@NotBlank(message = "绉熸埛ID涓嶈兘涓虹┖") String tenantId,
+ @NotNull(message = "濂楅ID涓嶈兘涓虹┖") Long packageId) {
return toAjax(TenantHelper.ignore(() -> tenantService.syncTenantPackage(tenantId, packageId)));
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java
index 81bd1ff..c3a8869 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java
@@ -94,7 +94,7 @@
* @return 鐢ㄦ埛瀵硅薄淇℃伅
*/
@InterceptorIgnore(tenantLine = "true")
- SysUserVo selectTenantUserByUserName(String userName, String tenantId);
+ SysUserVo selectTenantUserByUserName(@Param("userName") String userName, @Param("tenantId") String tenantId);
/**
* 閫氳繃鎵嬫満鍙锋煡璇㈢敤鎴�(涓嶈蛋绉熸埛鎻掍欢)
@@ -104,7 +104,7 @@
* @return 鐢ㄦ埛瀵硅薄淇℃伅
*/
@InterceptorIgnore(tenantLine = "true")
- SysUserVo selectTenantUserByPhonenumber(String phonenumber, String tenantId);
+ SysUserVo selectTenantUserByPhonenumber(@Param("phonenumber") String phonenumber, @Param("tenantId") String tenantId);
/**
* 閫氳繃閭鏌ヨ鐢ㄦ埛(涓嶈蛋绉熸埛鎻掍欢)
@@ -114,7 +114,8 @@
* @return 鐢ㄦ埛瀵硅薄淇℃伅
*/
@InterceptorIgnore(tenantLine = "true")
- SysUserVo selectTenantUserByEmail(String email, String tenantId);
+ SysUserVo selectTenantUserByEmail(@Param("email") String email, @Param("tenantId") String tenantId);
+
/**
* 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSensitiveServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSensitiveServiceImpl.java
index 1302118..1202c33 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSensitiveServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSensitiveServiceImpl.java
@@ -22,7 +22,7 @@
@Override
public boolean isSensitive() {
if (TenantHelper.isEnable()) {
- return !LoginHelper.isSuperAdmin() || !LoginHelper.isTenantAdmin();
+ return !LoginHelper.isSuperAdmin() && !LoginHelper.isTenantAdmin();
}
return !LoginHelper.isSuperAdmin();
}
--
Gitblit v1.9.3