From 9d7b76da3d2398cdad5f80774e423b232e34b8b6 Mon Sep 17 00:00:00 2001
From: Github_lizhw <171332584@qq.com>
Date: Sat, 11 Jan 2025 18:56:39 +0800
Subject: [PATCH] =?UTF-8?q?sso=20server=E6=94=AF=E6=8C=81vue=E9=A1=B5?=
=?UTF-8?q?=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../config/SocialAutoConfiguration.java | 5 +
ruoyi-common/ruoyi-common-tenant/pom.xml | 4 +
.../common/tenant/helper/LoginHelper.java | 67 +
.../common/tenant/helper/TenantHelper.java | 1 -
ruoyi-site/ruoyi-gateway/Dockerfile | 4 +-
.../dromara/gateway/filter/AuthFilter.java | 3 +-
.../dromara/gateway/sso/SsoController.java | 13 +-
.../dromara/gateway/sso/UserController.java | 18 -
.../src/main/resources/application-dev.yml | 102 +
.../src/main/resources/application.yml | 25 +-
.../src/main/resources/application.yml | 2 +-
ruoyi-site/ruoyi-sso-server/pom.xml | 8 +-
.../dromara/sso/SaSsoServerApplication.java | 23 +
.../sso}/captcha/UnsignedMathGenerator.java | 2 +-
.../sso}/config/CaptchaConfig.java | 2 +-
.../sso}/config/CorsConfig.java | 2 +-
.../sso}/config/GlobalExceptionHandler.java | 2 +-
.../sso}/config/SaTokenSsoConfig.java | 21 +-
.../sso}/config/satoken/LoginSaasHelper.java | 2 +-
.../sso}/config/satoken/SaPermissionImpl.java | 2 +-
.../satoken/SaTokenExceptionHandler.java | 2 +-
.../sso}/controller/HomeController.java | 2 +-
.../sso}/controller/SsoServerController.java | 27 +-
.../sso}/controller/TokenController.java | 18 +-
.../sso}/domain/convert/TenantVoConvert.java | 4 +-
.../sso}/domain/vo/CaptchaVo.java | 2 +-
.../sso}/domain/vo/LoginTenantVo.java | 2 +-
.../sso}/domain/vo/LoginVo.java | 2 +-
.../sso}/domain/vo/TenantListVo.java | 2 +-
.../sso}/enums/CaptchaCategory.java | 2 +-
.../sso}/enums/CaptchaType.java | 4 +-
.../sso}/form/EmailLoginBody.java | 2 +-
.../sso}/form/PasswordLoginBody.java | 2 +-
.../sso}/form/RegisterBody.java | 2 +-
.../sso}/form/SmsLoginBody.java | 2 +-
.../sso}/form/SocialLoginBody.java | 2 +-
.../sso}/form/XcxLoginBody.java | 2 +-
.../sso}/listener/UserActionListener.java | 4 +-
.../sso}/properties/CaptchaProperties.java | 6 +-
.../properties/UserPasswordProperties.java | 2 +-
.../sso}/service/IAuthStrategy.java | 4 +-
.../sso}/service/SysLoginService.java | 10 +-
.../sso}/service/impl/EmailAuthStrategy.java | 12 +-
.../service/impl/PasswordAuthStrategy.java | 14 +-
.../sso}/service/impl/SmsAuthStrategy.java | 12 +-
.../sso}/service/impl/SocialAuthStrategy.java | 10 +-
.../sso}/service/impl/XcxAuthStrategy.java | 12 +-
.../sso/server/SaSsoServerApplication.java | 23 -
.../src/main/resources/application-dev.yml | 76 +
.../src/main/resources/application-local.yml | 80 +-
ruoyi-site/ruoyi-user-sso/Dockerfile | 26 +
ruoyi-site/ruoyi-user-sso/pom.xml | 106 +
.../java/com/luban/api/MallH5Application.java | 20 +
.../java/com/luban/api/config/JsonConfig.java | 32 +
.../config/MybatisPlusAutoConfigTenant.java | 20 +
.../api/config/PlusTenantLineHandler.java | 56 +
.../com/luban/api/config/WebMvcConfig.java | 22 +
.../luban/api/constant/PackageConstant.java | 18 +
.../api/controller/ScriptsController.java | 50 +
.../api/controller/UploadController.java | 51 +
.../luban/api/controller/WorkController.java | 175 +
.../api/controller/WorkFormsController.java | 20 +
.../com/luban/api/convert/ScriptsConvert.java | 21 +
.../com/luban/api/convert/WorkConvert.java | 49 +
.../java/com/luban/api/dao/ScriptsDao.java | 18 +
.../main/java/com/luban/api/dao/WorkDao.java | 18 +
.../java/com/luban/api/dao/WorkFormsDao.java | 18 +
.../java/com/luban/api/dto/PageDtoBase.java | 37 +
.../com/luban/api/dto/ScriptsQueryDTO.java | 15 +
.../java/com/luban/api/dto/WorkCreateDTO.java | 35 +
.../java/com/luban/api/dto/WorkQueryDTO.java | 35 +
.../java/com/luban/api/dto/WorkUpdateDTO.java | 42 +
.../java/com/luban/api/entity/Scripts.java | 46 +
.../main/java/com/luban/api/entity/Work.java | 62 +
.../java/com/luban/api/entity/WorkForms.java | 36 +
.../luban/api/exception/ExceptionHandle.java | 113 +
.../luban/api/exception/UnifiedException.java | 91 +
.../java/com/luban/api/log/P6SpyLogger.java | 21 +
.../java/com/luban/api/log/StdoutLogger.java | 20 +
.../com/luban/api/service/ScriptsService.java | 16 +
.../luban/api/service/WorkFormsService.java | 16 +
.../com/luban/api/service/WorkService.java | 16 +
.../api/service/impl/ScriptsServiceImpl.java | 20 +
.../service/impl/WorkFormsServiceImpl.java | 20 +
.../api/service/impl/WorkServiceImpl.java | 21 +
.../main/java/com/luban/api/util/JSON.java | 66 +
.../main/java/com/luban/api/vo/FileVO.java | 17 +
.../main/java/com/luban/api/vo/Result.java | 84 +
.../main/java/com/luban/api/vo/ScriptsVO.java | 28 +
.../main/java/com/luban/api/vo/WorkVO.java | 37 +
.../src/main/resources/application-dev.yml | 174 +
.../src/main/resources/application-local.yml | 174 +
.../src/main/resources/application.yml | 12 +
.../resources/engine-assets/engine.umd.js | 205925 +++++++++++++++
.../main/resources/i18n/messages.properties | 4 +
.../resources/i18n/messages_en_US.properties | 5 +
.../resources/i18n/messages_zh_CN.properties | 5 +
.../resources/mapper/ruoyi-h5/ScriptsDao.xml | 14 +
.../resources/mapper/ruoyi-h5/WorkDao.xml | 18 +
.../mapper/ruoyi-h5/WorkFormsDao.xml | 12 +
.../src/main/resources/templates/engine.html | 323 +
script/docker_app/docker-compose.yml | 18 +-
102 files changed, 208765 insertions(+), 185 deletions(-)
create mode 100644 ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/LoginHelper.java
delete mode 100644 ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/sso/UserController.java
create mode 100644 ruoyi-site/ruoyi-gateway/src/main/resources/application-dev.yml
create mode 100644 ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/SaSsoServerApplication.java
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/captcha/UnsignedMathGenerator.java (98%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/config/CaptchaConfig.java (97%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/config/CorsConfig.java (97%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/config/GlobalExceptionHandler.java (92%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/config/SaTokenSsoConfig.java (81%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/config/satoken/LoginSaasHelper.java (99%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/config/satoken/SaPermissionImpl.java (96%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/config/satoken/SaTokenExceptionHandler.java (97%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/controller/HomeController.java (97%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/controller/SsoServerController.java (90%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/controller/TokenController.java (94%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/domain/convert/TenantVoConvert.java (78%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/domain/vo/CaptchaVo.java (87%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/domain/vo/LoginTenantVo.java (88%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/domain/vo/LoginVo.java (95%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/domain/vo/TenantListVo.java (88%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/enums/CaptchaCategory.java (94%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/enums/CaptchaType.java (82%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/form/EmailLoginBody.java (94%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/form/PasswordLoginBody.java (96%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/form/RegisterBody.java (96%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/form/SmsLoginBody.java (93%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/form/SocialLoginBody.java (95%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/form/XcxLoginBody.java (93%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/listener/UserActionListener.java (98%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/properties/CaptchaProperties.java (84%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/properties/UserPasswordProperties.java (93%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/service/IAuthStrategy.java (92%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/service/SysLoginService.java (97%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/service/impl/EmailAuthStrategy.java (91%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/service/impl/PasswordAuthStrategy.java (91%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/service/impl/SmsAuthStrategy.java (91%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/service/impl/SocialAuthStrategy.java (94%)
rename ruoyi-site/ruoyi-sso-server/src/main/java/org/{ruoyi/sso/server => dromara/sso}/service/impl/XcxAuthStrategy.java (88%)
delete mode 100644 ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/SaSsoServerApplication.java
create mode 100644 ruoyi-site/ruoyi-user-sso/Dockerfile
create mode 100644 ruoyi-site/ruoyi-user-sso/pom.xml
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/MallH5Application.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/config/JsonConfig.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/config/MybatisPlusAutoConfigTenant.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/config/PlusTenantLineHandler.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/config/WebMvcConfig.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/constant/PackageConstant.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/controller/ScriptsController.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/controller/UploadController.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/controller/WorkController.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/controller/WorkFormsController.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/convert/ScriptsConvert.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/convert/WorkConvert.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dao/ScriptsDao.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dao/WorkDao.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dao/WorkFormsDao.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dto/PageDtoBase.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dto/ScriptsQueryDTO.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dto/WorkCreateDTO.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dto/WorkQueryDTO.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dto/WorkUpdateDTO.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/entity/Scripts.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/entity/Work.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/entity/WorkForms.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/exception/ExceptionHandle.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/exception/UnifiedException.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/log/P6SpyLogger.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/log/StdoutLogger.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/service/ScriptsService.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/service/WorkFormsService.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/service/WorkService.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/service/impl/ScriptsServiceImpl.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/service/impl/WorkFormsServiceImpl.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/service/impl/WorkServiceImpl.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/util/JSON.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/vo/FileVO.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/vo/Result.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/vo/ScriptsVO.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/vo/WorkVO.java
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/resources/application-dev.yml
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/resources/application-local.yml
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/resources/application.yml
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/resources/engine-assets/engine.umd.js
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/resources/i18n/messages.properties
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/resources/i18n/messages_en_US.properties
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/resources/i18n/messages_zh_CN.properties
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/resources/mapper/ruoyi-h5/ScriptsDao.xml
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/resources/mapper/ruoyi-h5/WorkDao.xml
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/resources/mapper/ruoyi-h5/WorkFormsDao.xml
create mode 100644 ruoyi-site/ruoyi-user-sso/src/main/resources/templates/engine.html
diff --git a/ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/config/SocialAutoConfiguration.java b/ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/config/SocialAutoConfiguration.java
index 19b39d8fb..1ccb81aca 100644
--- a/ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/config/SocialAutoConfiguration.java
+++ b/ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/config/SocialAutoConfiguration.java
@@ -15,6 +15,11 @@ import org.springframework.context.annotation.Bean;
@EnableConfigurationProperties(SocialProperties.class)
public class SocialAutoConfiguration {
+
+ public SocialAutoConfiguration() {
+ System.out.println("[AutoConfiguration] |- SDK 自动装配启动");
+ }
+
@Bean
public AuthStateCache authStateCache() {
return new AuthRedisStateCache();
diff --git a/ruoyi-common/ruoyi-common-tenant/pom.xml b/ruoyi-common/ruoyi-common-tenant/pom.xml
index 8e1a6ab1e..c741afe98 100644
--- a/ruoyi-common/ruoyi-common-tenant/pom.xml
+++ b/ruoyi-common/ruoyi-common-tenant/pom.xml
@@ -27,6 +27,10 @@
ruoyi-common-redis
+
+ cn.dev33
+ sa-token-core
+
diff --git a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/LoginHelper.java b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/LoginHelper.java
new file mode 100644
index 000000000..53cb01afc
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/LoginHelper.java
@@ -0,0 +1,67 @@
+package org.dromara.common.tenant.helper;
+
+import cn.dev33.satoken.session.SaSession;
+import cn.dev33.satoken.stp.SaLoginModel;
+import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.util.ObjectUtil;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import org.dromara.common.core.constant.TenantConstants;
+import org.dromara.common.core.constant.UserConstants;
+import org.dromara.common.core.domain.model.LoginUser;
+import org.dromara.common.core.enums.UserType;
+
+import java.util.Set;
+
+/**
+ * 登录鉴权助手
+ *
+ * user_type 为 用户类型 同一个用户表 可以有多种用户类型 例如 pc,app
+ * deivce 为 设备类型 同一个用户类型 可以有 多种设备类型 例如 web,ios
+ * 可以组成 用户类型与设备类型多对多的 权限灵活控制
+ *
+ * 多用户体系 针对 多种用户类型 但权限控制不一致
+ * 可以组成 多用户类型表与多设备类型 分别控制权限
+ *
+ * @author Lion Li
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public class LoginHelper {
+ public static final String TENANT_KEY = "tenantId";
+ public static final String USER_KEY = "userId";
+
+ public static final String CLIENT_KEY = "clientid";
+
+
+ /**
+ * 获取用户id
+ */
+ public static Long getUserId() {
+ return Convert.toLong(getExtra(USER_KEY));
+ }
+
+ /**
+ * 获取租户ID
+ */
+ public static String getTenantId() {
+ return Convert.toStr(getExtra(TENANT_KEY));
+ }
+
+ /**
+ * 获取当前 Token 的扩展信息
+ *
+ * @param key 键值
+ * @return 对应的扩展数据
+ */
+ private static Object getExtra(String key) {
+ try {
+ return StpUtil.getExtra(key);
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+
+}
diff --git a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java
index b18561267..fa986fa19 100644
--- a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java
+++ b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java
@@ -14,7 +14,6 @@ import org.dromara.common.core.utils.SpringUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.utils.reflect.ReflectUtils;
import org.dromara.common.redis.utils.RedisUtils;
-import org.dromara.common.satoken.utils.LoginHelper;
import java.util.Stack;
import java.util.function.Supplier;
diff --git a/ruoyi-site/ruoyi-gateway/Dockerfile b/ruoyi-site/ruoyi-gateway/Dockerfile
index 728985672..de8673b4f 100644
--- a/ruoyi-site/ruoyi-gateway/Dockerfile
+++ b/ruoyi-site/ruoyi-gateway/Dockerfile
@@ -3,7 +3,7 @@ FROM bellsoft/liberica-openjdk-debian:17.0.11-cds
#FROM bellsoft/liberica-openjdk-debian:21.0.3-cds
#FROM findepi/graalvm:java17-native
-LABEL maintainer="Lion Li"
+LABEL maintainer="lizhw"
RUN mkdir -p /ruoyi/gateway/logs \
/ruoyi/gateway/temp \
@@ -11,7 +11,7 @@ RUN mkdir -p /ruoyi/gateway/logs \
WORKDIR /ruoyi/gateway
-ENV SERVER_PORT=8080 LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS=""
+ENV SERVER_PORT=18000 LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS=""
EXPOSE ${SERVER_PORT}
diff --git a/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/filter/AuthFilter.java b/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/filter/AuthFilter.java
index 06591704f..d4a259ad3 100644
--- a/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/filter/AuthFilter.java
+++ b/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/filter/AuthFilter.java
@@ -34,11 +34,12 @@ public class AuthFilter {
.addInclude("/**")
.addExclude("/actuator", "/actuator/**")
.addExclude("/favicon.ico", "/sso/getSsoAuthUrl", "/sso/isLogin", "/sso/doLoginByTicket")
+ .addExclude(ignoreWhite.getWhites().toArray(new String[0]))
// 鉴权方法:每次访问进入
.setAuth(obj -> {
// 登录校验 -- 拦截所有路由
SaRouter.match("/**")
- .notMatch(ignoreWhite.getWhites())
+// .notMatch(ignoreWhite.getWhites())
.check(r -> {
ServerHttpRequest request = SaReactorSyncHolder.getContext().getRequest();
// 检查是否登录 是否有token
diff --git a/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/sso/SsoController.java b/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/sso/SsoController.java
index b67e2376e..103285f08 100644
--- a/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/sso/SsoController.java
+++ b/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/sso/SsoController.java
@@ -9,6 +9,7 @@ import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaFoxUtil;
import cn.dev33.satoken.util.SaResult;
import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@@ -72,8 +73,8 @@ public class SsoController {
clientLoginUrl = joinParam(clientLoginUrl, paramName.back, back);
}
- // 返回
- return joinParam(serverUrl, paramName.redirect, clientLoginUrl);
+ // 返回 ticket
+ return joinParam(serverUrl, paramName.redirect, SaFoxUtil.encodeUrl(clientLoginUrl));
}
/**
@@ -119,4 +120,12 @@ public class SsoController {
return SaSsoClientProcessor.instance.dister();
}
+
+ @GetMapping("/sso/getUserInfo")
+ public SaResult getUserInfo() {
+ //TODO 后续改成统一从指定用户服务取,用户应该通一接口
+ return SaResult.data(StpUtil.getTokenSession().get("loginUser"));
+ }
+
+
}
diff --git a/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/sso/UserController.java b/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/sso/UserController.java
deleted file mode 100644
index 013b7b5d9..000000000
--- a/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/sso/UserController.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package org.dromara.gateway.sso;
-
-import cn.dev33.satoken.stp.StpUtil;
-import cn.dev33.satoken.util.SaResult;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-@RestController
-public class UserController {
-
- @GetMapping("/user/getUserInfo")
- public SaResult getUserInfo() {
- //TODO 后续改成统一从指定用户服务取,用户应该通一接口
- return SaResult.data(StpUtil.getTokenSession().get("loginUser"));
- }
-
-
-}
diff --git a/ruoyi-site/ruoyi-gateway/src/main/resources/application-dev.yml b/ruoyi-site/ruoyi-gateway/src/main/resources/application-dev.yml
new file mode 100644
index 000000000..6bd1569b2
--- /dev/null
+++ b/ruoyi-site/ruoyi-gateway/src/main/resources/application-dev.yml
@@ -0,0 +1,102 @@
+# 安全配置
+security:
+ # 不校验白名单
+ ignore:
+ whites:
+ - /auth/code
+ - /auth/logout
+ - /auth/login
+ - /auth/binding/*
+ - /auth/social/callback
+ - /auth/register
+ - /auth/tenant/list
+ - /resource/sms/code
+ - /resource/sse/close
+ - /*/v3/api-docs
+ - /*/error
+ - /csrf
+ - /sso/getSsoAuthUrl
+ - /sso/isLogin
+ - /sso/doLoginByTicket
+
+# sa-token配置
+sa-token:
+ sign:
+ # API client和server之间调用 接口签名秘钥 (随便乱摁几个字母即可)
+ secret-key: kQwIOrYbtXmSDkwEiFngrKidMcdrgKor
+ # token名称 (同时也是cookie名称)
+ token-name: Authorization
+ # 允许动态设置 token 有效期
+ dynamic-active-timeout: true
+ # 允许从 header 读取 token
+ is-read-header: true
+ # 关闭 cookie 鉴权 从根源杜绝 csrf 漏洞风险
+ is-read-cookie: false
+ # SSO-相关配置
+ sso-client:
+ # SSO-Server 端主机地址
+ server-url: http://sa-sso-server.com:19000
+ auth-url: http://sa-sso-server.com:8701/?mode=ticket#/sso-login
+ client: "e5cd7e4891bf95d1d19206ce24a7b32e"
+ #jwt密钥
+ jwt-secret-key: abcdcosctlklmnopqrstuvwxyz
+ token-prefix: Bearer
+
+spring:
+ cloud:
+ # 网关配置
+ gateway:
+ # 打印请求日志(自定义)
+ requestLog: true
+ discovery:
+ locator:
+ lowerCaseServiceId: true
+ enabled: true
+ routes:
+ # 认证中心
+ - id: ruoyi-auth
+ uri: lb://ruoyi-auth
+ predicates:
+ - Path=/auth/**
+ filters:
+ - StripPrefix=1
+ # 代码生成
+ - id: ruoyi-gen
+ uri: lb://ruoyi-gen
+ predicates:
+ - Path=/tool/**
+ filters:
+ - StripPrefix=1
+ # 系统模块
+ - id: ruoyi-system
+ uri: lb://ruoyi-system
+ predicates:
+ - Path=/system/**,/monitor/**
+ filters:
+ - StripPrefix=1
+ # 资源服务
+ - id: ruoyi-resource
+ uri: lb://ruoyi-resource
+ predicates:
+ - Path=/resource/**
+ filters:
+ - StripPrefix=1
+ # workflow服务
+ - id: ruoyi-workflow
+ uri: lb://ruoyi-workflow
+ predicates:
+ - Path=/workflow/**
+ # 演示服务
+ - id: ruoyi-demo
+ uri: lb://ruoyi-demo
+ predicates:
+ - Path=/demo/**
+ filters:
+ - StripPrefix=1
+ # MQ演示服务
+ - id: ruoyi-h5
+ uri: lb://ruoyi-h5
+ predicates:
+ - Path=/ruoyi-h5/**
+ filters:
+ - StripPrefix=1
diff --git a/ruoyi-site/ruoyi-gateway/src/main/resources/application.yml b/ruoyi-site/ruoyi-gateway/src/main/resources/application.yml
index 928446df6..8a715c134 100644
--- a/ruoyi-site/ruoyi-gateway/src/main/resources/application.yml
+++ b/ruoyi-site/ruoyi-gateway/src/main/resources/application.yml
@@ -14,29 +14,6 @@ spring:
active: @profiles.active@
-# sa-token配置
-sa-token:
- sign:
- # API client和server之间调用 接口签名秘钥 (随便乱摁几个字母即可)
- secret-key: kQwIOrYbtXmSDkwEiFngrKidMcdrgKor
- # token名称 (同时也是cookie名称)
- token-name: Authorization
- # 允许动态设置 token 有效期
- dynamic-active-timeout: true
- # 允许从 header 读取 token
- is-read-header: true
- # 关闭 cookie 鉴权 从根源杜绝 csrf 漏洞风险
- is-read-cookie: false
- # SSO-相关配置
- sso-client:
- # SSO-Server 端主机地址
- server-url: http://sa-sso-server.com:19000
- auth-url: http://localhost:9000/#/sso-login
- client: "pc"
- #jwt密钥
- jwt-secret-key: abcdcosctlklmnopqrstuvwxyz
- token-prefix: Bearer
-
--- # nacos 配置
spring:
cloud:
@@ -54,4 +31,4 @@ spring:
config:
import:
- optional:nacos:application-common.yml
- - optional:nacos:${spring.application.name}.yml
+# - optional:nacos:${spring.application.name}.yml
diff --git a/ruoyi-site/ruoyi-h5/src/main/resources/application.yml b/ruoyi-site/ruoyi-h5/src/main/resources/application.yml
index 1d650f5f8..19346f4d9 100644
--- a/ruoyi-site/ruoyi-h5/src/main/resources/application.yml
+++ b/ruoyi-site/ruoyi-h5/src/main/resources/application.yml
@@ -6,7 +6,7 @@ server:
spring:
application:
# 应用名称
- name: mall-h5
+ name: ruoyi-h5
profiles:
# 环境配置
active: @profiles.active@
diff --git a/ruoyi-site/ruoyi-sso-server/pom.xml b/ruoyi-site/ruoyi-sso-server/pom.xml
index 48a1c39cd..fab48a223 100644
--- a/ruoyi-site/ruoyi-sso-server/pom.xml
+++ b/ruoyi-site/ruoyi-sso-server/pom.xml
@@ -122,10 +122,10 @@
dubbo-spring-boot-starter
-
- org.apache.dubbo
- dubbo-nacos-spring-boot-starter
-
+
+
+
+
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/SaSsoServerApplication.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/SaSsoServerApplication.java
new file mode 100644
index 000000000..49707b9ab
--- /dev/null
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/SaSsoServerApplication.java
@@ -0,0 +1,23 @@
+package org.dromara.sso;
+
+import cn.dev33.satoken.sso.SaSsoManager;
+import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@EnableDubbo
+@SpringBootApplication(scanBasePackages = {"org.dromara"})
+public class SaSsoServerApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(SaSsoServerApplication.class, args);
+
+ System.out.println();
+ System.out.println("---------------------- Sa-Token SSO 统一认证中心启动成功 ----------------------");
+ System.out.println("配置信息:" + SaSsoManager.getServerConfig());
+ System.out.println("统一认证登录地址:http://sa-sso-server.com:19000/sso/auth");
+ System.out.println("测试前需要根据官网文档修改hosts文件,测试账号密码:sa / 123456");
+ System.out.println();
+ }
+
+}
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/captcha/UnsignedMathGenerator.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/captcha/UnsignedMathGenerator.java
similarity index 98%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/captcha/UnsignedMathGenerator.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/captcha/UnsignedMathGenerator.java
index 0c2f2992d..670934c66 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/captcha/UnsignedMathGenerator.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/captcha/UnsignedMathGenerator.java
@@ -1,4 +1,4 @@
-package org.ruoyi.sso.server.captcha;
+package org.dromara.sso.captcha;
import cn.hutool.captcha.generator.CodeGenerator;
import cn.hutool.core.math.Calculator;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/config/CaptchaConfig.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/config/CaptchaConfig.java
similarity index 97%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/config/CaptchaConfig.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/config/CaptchaConfig.java
index 368bb52ef..ad513331e 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/config/CaptchaConfig.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/config/CaptchaConfig.java
@@ -1,4 +1,4 @@
-package org.ruoyi.sso.server.config;
+package org.dromara.sso.config;
import cn.hutool.captcha.CaptchaUtil;
import cn.hutool.captcha.CircleCaptcha;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/config/CorsConfig.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/config/CorsConfig.java
similarity index 97%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/config/CorsConfig.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/config/CorsConfig.java
index 2d429ab56..a379aacdf 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/config/CorsConfig.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/config/CorsConfig.java
@@ -1,4 +1,4 @@
-package org.ruoyi.sso.server.config;
+package org.dromara.sso.config;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/config/GlobalExceptionHandler.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/config/GlobalExceptionHandler.java
similarity index 92%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/config/GlobalExceptionHandler.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/config/GlobalExceptionHandler.java
index c70642c00..9c373306a 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/config/GlobalExceptionHandler.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/config/GlobalExceptionHandler.java
@@ -1,4 +1,4 @@
-package org.ruoyi.sso.server.config;
+package org.dromara.sso.config;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/config/SaTokenSsoConfig.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/config/SaTokenSsoConfig.java
similarity index 81%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/config/SaTokenSsoConfig.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/config/SaTokenSsoConfig.java
index 2c22aa96f..1dfff4c28 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/config/SaTokenSsoConfig.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/config/SaTokenSsoConfig.java
@@ -1,12 +1,11 @@
-package org.ruoyi.sso.server.config;
+package org.dromara.sso.config;
import cn.dev33.satoken.jwt.StpLogicJwtForSimple;
import cn.dev33.satoken.stp.StpInterface;
import cn.dev33.satoken.stp.StpLogic;
-import org.ruoyi.sso.server.config.satoken.SaPermissionImpl;
-import org.ruoyi.sso.server.config.satoken.SaTokenExceptionHandler;
-import org.ruoyi.sso.server.config.satoken.LoginSaasHelper;
import org.dromara.common.log.aspect.CommonLogTenantIntercept;
+import org.dromara.sso.config.satoken.LoginSaasHelper;
+import org.dromara.sso.config.satoken.SaPermissionImpl;
import org.dromara.system.api.model.LoginUser;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -33,13 +32,13 @@ public class SaTokenSsoConfig {
return new SaPermissionImpl();
}
- /**
- * 异常处理器
- */
- @Bean
- public SaTokenExceptionHandler saTokenExceptionHandler() {
- return new SaTokenExceptionHandler();
- }
+// /**
+// * 异常处理器
+// */
+// @Bean
+// public SaTokenExceptionHandler saTokenExceptionHandler() {
+// return new SaTokenExceptionHandler();
+// }
/**
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/config/satoken/LoginSaasHelper.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/config/satoken/LoginSaasHelper.java
similarity index 99%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/config/satoken/LoginSaasHelper.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/config/satoken/LoginSaasHelper.java
index c383ad499..ca2cbe9f8 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/config/satoken/LoginSaasHelper.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/config/satoken/LoginSaasHelper.java
@@ -1,4 +1,4 @@
-package org.ruoyi.sso.server.config.satoken;
+package org.dromara.sso.config.satoken;
import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.stp.SaLoginModel;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/config/satoken/SaPermissionImpl.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/config/satoken/SaPermissionImpl.java
similarity index 96%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/config/satoken/SaPermissionImpl.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/config/satoken/SaPermissionImpl.java
index 26a58710d..a8fca300f 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/config/satoken/SaPermissionImpl.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/config/satoken/SaPermissionImpl.java
@@ -1,4 +1,4 @@
-package org.ruoyi.sso.server.config.satoken;
+package org.dromara.sso.config.satoken;
import cn.dev33.satoken.stp.StpInterface;
import org.dromara.common.core.enums.UserType;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/config/satoken/SaTokenExceptionHandler.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/config/satoken/SaTokenExceptionHandler.java
similarity index 97%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/config/satoken/SaTokenExceptionHandler.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/config/satoken/SaTokenExceptionHandler.java
index c9711be7a..eb36979f4 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/config/satoken/SaTokenExceptionHandler.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/config/satoken/SaTokenExceptionHandler.java
@@ -1,4 +1,4 @@
-package org.ruoyi.sso.server.config.satoken;
+package org.dromara.sso.config.satoken;
import cn.dev33.satoken.exception.NotLoginException;
import cn.dev33.satoken.exception.NotPermissionException;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/controller/HomeController.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/controller/HomeController.java
similarity index 97%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/controller/HomeController.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/controller/HomeController.java
index fbce6eb6d..12198a434 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/controller/HomeController.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/controller/HomeController.java
@@ -1,4 +1,4 @@
-package org.ruoyi.sso.server.controller;
+package org.dromara.sso.controller;
import cn.dev33.satoken.context.SaHolder;
import cn.dev33.satoken.stp.StpUtil;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/controller/SsoServerController.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/controller/SsoServerController.java
similarity index 90%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/controller/SsoServerController.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/controller/SsoServerController.java
index 1f138b13f..dd4aa7cd1 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/controller/SsoServerController.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/controller/SsoServerController.java
@@ -1,4 +1,4 @@
-package org.ruoyi.sso.server.controller;
+package org.dromara.sso.controller;
import cn.dev33.satoken.context.SaHolder;
import cn.dev33.satoken.context.model.SaRequest;
@@ -32,15 +32,15 @@ import org.dromara.common.json.utils.JsonUtils;
import org.dromara.common.ratelimiter.annotation.RateLimiter;
import org.dromara.common.ratelimiter.enums.LimitType;
import org.dromara.common.redis.utils.RedisUtils;
+import org.dromara.sso.properties.CaptchaProperties;
+import org.dromara.sso.service.IAuthStrategy;
+import org.dromara.sso.service.SysLoginService;
import org.dromara.system.api.RemoteClientService;
import org.dromara.system.api.domain.vo.RemoteClientVo;
-import org.ruoyi.sso.server.config.satoken.LoginSaasHelper;
-import org.ruoyi.sso.server.domain.vo.CaptchaVo;
-import org.ruoyi.sso.server.domain.vo.LoginVo;
-import org.ruoyi.sso.server.enums.CaptchaType;
-import org.ruoyi.sso.server.properties.CaptchaProperties;
-import org.ruoyi.sso.server.service.IAuthStrategy;
-import org.ruoyi.sso.server.service.SysLoginService;
+import org.dromara.sso.config.satoken.LoginSaasHelper;
+import org.dromara.sso.domain.vo.CaptchaVo;
+import org.dromara.sso.domain.vo.LoginVo;
+import org.dromara.sso.enums.CaptchaType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
@@ -165,14 +165,21 @@ public class SsoServerController {
}
// 已登录情况下,构建 redirectUrl
redirect = SaFoxUtil.decoderUrl(redirect);
- if (SaSsoConsts.MODE_SIMPLE.equals(mode)) {
+ if (SaSsoConsts.MODE_SIMPLE.equals(mode)) {
// 模式一
SaSsoUtil.checkRedirectUrl(redirect);
return SaResult.data(redirect);
} else {
+ //支持vue页面
+ String routerUrlSuffix = "";
+ int routerUrlIdx = redirect.indexOf("#/");
+ if (routerUrlIdx != -1) {
+ routerUrlSuffix = redirect.substring(routerUrlIdx);
+ redirect = redirect.substring(0, routerUrlIdx);
+ }
// 模式二或模式三
String redirectUrl = SaSsoUtil.buildRedirectUrl(StpUtil.getLoginId(), client, redirect);
- return SaResult.data(redirectUrl);
+ return SaResult.data(redirectUrl + routerUrlSuffix);
}
}
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/controller/TokenController.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/controller/TokenController.java
similarity index 94%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/controller/TokenController.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/controller/TokenController.java
index f7cb8b3fc..8b1df92f4 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/controller/TokenController.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/controller/TokenController.java
@@ -1,17 +1,17 @@
-package org.ruoyi.sso.server.controller;
+package org.dromara.sso.controller;
import cn.dev33.satoken.exception.NotLoginException;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
-import org.ruoyi.sso.server.domain.vo.LoginTenantVo;
-import org.ruoyi.sso.server.domain.vo.LoginVo;
-import org.ruoyi.sso.server.domain.vo.TenantListVo;
-import org.ruoyi.sso.server.form.RegisterBody;
-import org.ruoyi.sso.server.form.SocialLoginBody;
-import org.ruoyi.sso.server.service.IAuthStrategy;
-import org.ruoyi.sso.server.service.SysLoginService;
-import org.ruoyi.sso.server.config.satoken.LoginSaasHelper;
+import org.dromara.sso.form.RegisterBody;
+import org.dromara.sso.form.SocialLoginBody;
+import org.dromara.sso.service.IAuthStrategy;
+import org.dromara.sso.service.SysLoginService;
+import org.dromara.sso.domain.vo.LoginTenantVo;
+import org.dromara.sso.domain.vo.LoginVo;
+import org.dromara.sso.domain.vo.TenantListVo;
+import org.dromara.sso.config.satoken.LoginSaasHelper;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/domain/convert/TenantVoConvert.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/domain/convert/TenantVoConvert.java
similarity index 78%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/domain/convert/TenantVoConvert.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/domain/convert/TenantVoConvert.java
index e3dc963f4..137af54ca 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/domain/convert/TenantVoConvert.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/domain/convert/TenantVoConvert.java
@@ -1,7 +1,7 @@
-package org.ruoyi.sso.server.domain.convert;
+package org.dromara.sso.domain.convert;
import io.github.linpeilie.BaseMapper;
-import org.ruoyi.sso.server.domain.vo.TenantListVo;
+import org.dromara.sso.domain.vo.TenantListVo;
import org.dromara.system.api.domain.vo.RemoteTenantVo;
import org.mapstruct.Mapper;
import org.mapstruct.MappingConstants;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/domain/vo/CaptchaVo.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/domain/vo/CaptchaVo.java
similarity index 87%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/domain/vo/CaptchaVo.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/domain/vo/CaptchaVo.java
index e239fe93a..ff4cbb8f0 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/domain/vo/CaptchaVo.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/domain/vo/CaptchaVo.java
@@ -1,4 +1,4 @@
-package org.ruoyi.sso.server.domain.vo;
+package org.dromara.sso.domain.vo;
import lombok.Data;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/domain/vo/LoginTenantVo.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/domain/vo/LoginTenantVo.java
similarity index 88%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/domain/vo/LoginTenantVo.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/domain/vo/LoginTenantVo.java
index d00a91447..4abd0fdd6 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/domain/vo/LoginTenantVo.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/domain/vo/LoginTenantVo.java
@@ -1,4 +1,4 @@
-package org.ruoyi.sso.server.domain.vo;
+package org.dromara.sso.domain.vo;
import lombok.Data;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/domain/vo/LoginVo.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/domain/vo/LoginVo.java
similarity index 95%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/domain/vo/LoginVo.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/domain/vo/LoginVo.java
index b5808f176..08829e553 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/domain/vo/LoginVo.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/domain/vo/LoginVo.java
@@ -1,4 +1,4 @@
-package org.ruoyi.sso.server.domain.vo;
+package org.dromara.sso.domain.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/domain/vo/TenantListVo.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/domain/vo/TenantListVo.java
similarity index 88%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/domain/vo/TenantListVo.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/domain/vo/TenantListVo.java
index a54bd123b..1210fd18a 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/domain/vo/TenantListVo.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/domain/vo/TenantListVo.java
@@ -1,4 +1,4 @@
-package org.ruoyi.sso.server.domain.vo;
+package org.dromara.sso.domain.vo;
import lombok.Data;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/enums/CaptchaCategory.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/enums/CaptchaCategory.java
similarity index 94%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/enums/CaptchaCategory.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/enums/CaptchaCategory.java
index 589e0b37b..f6f024df8 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/enums/CaptchaCategory.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/enums/CaptchaCategory.java
@@ -1,4 +1,4 @@
-package org.ruoyi.sso.server.enums;
+package org.dromara.sso.enums;
import cn.hutool.captcha.AbstractCaptcha;
import cn.hutool.captcha.CircleCaptcha;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/enums/CaptchaType.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/enums/CaptchaType.java
similarity index 82%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/enums/CaptchaType.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/enums/CaptchaType.java
index b205b012a..afc507373 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/enums/CaptchaType.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/enums/CaptchaType.java
@@ -1,8 +1,8 @@
-package org.ruoyi.sso.server.enums;
+package org.dromara.sso.enums;
import cn.hutool.captcha.generator.CodeGenerator;
import cn.hutool.captcha.generator.RandomGenerator;
-import org.ruoyi.sso.server.captcha.UnsignedMathGenerator;
+import org.dromara.sso.captcha.UnsignedMathGenerator;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/form/EmailLoginBody.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/form/EmailLoginBody.java
similarity index 94%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/form/EmailLoginBody.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/form/EmailLoginBody.java
index df05f1d98..2c5889703 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/form/EmailLoginBody.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/form/EmailLoginBody.java
@@ -1,4 +1,4 @@
-package org.ruoyi.sso.server.form;
+package org.dromara.sso.form;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/form/PasswordLoginBody.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/form/PasswordLoginBody.java
similarity index 96%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/form/PasswordLoginBody.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/form/PasswordLoginBody.java
index eca4b6c5e..ebc6cd479 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/form/PasswordLoginBody.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/form/PasswordLoginBody.java
@@ -1,4 +1,4 @@
-package org.ruoyi.sso.server.form;
+package org.dromara.sso.form;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/form/RegisterBody.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/form/RegisterBody.java
similarity index 96%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/form/RegisterBody.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/form/RegisterBody.java
index 71dd90528..3d72fe34c 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/form/RegisterBody.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/form/RegisterBody.java
@@ -1,4 +1,4 @@
-package org.ruoyi.sso.server.form;
+package org.dromara.sso.form;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/form/SmsLoginBody.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/form/SmsLoginBody.java
similarity index 93%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/form/SmsLoginBody.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/form/SmsLoginBody.java
index ae305cf2b..9f2832aae 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/form/SmsLoginBody.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/form/SmsLoginBody.java
@@ -1,4 +1,4 @@
-package org.ruoyi.sso.server.form;
+package org.dromara.sso.form;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/form/SocialLoginBody.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/form/SocialLoginBody.java
similarity index 95%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/form/SocialLoginBody.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/form/SocialLoginBody.java
index 9646dfe2f..1b2956e39 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/form/SocialLoginBody.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/form/SocialLoginBody.java
@@ -1,4 +1,4 @@
-package org.ruoyi.sso.server.form;
+package org.dromara.sso.form;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/form/XcxLoginBody.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/form/XcxLoginBody.java
similarity index 93%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/form/XcxLoginBody.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/form/XcxLoginBody.java
index 9a34f155e..3a2703d0f 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/form/XcxLoginBody.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/form/XcxLoginBody.java
@@ -1,4 +1,4 @@
-package org.ruoyi.sso.server.form;
+package org.dromara.sso.form;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/listener/UserActionListener.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/listener/UserActionListener.java
similarity index 98%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/listener/UserActionListener.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/listener/UserActionListener.java
index 51f3737f3..ee648a03d 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/listener/UserActionListener.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/listener/UserActionListener.java
@@ -1,4 +1,4 @@
-package org.ruoyi.sso.server.listener;
+package org.dromara.sso.listener;
import cn.dev33.satoken.config.SaTokenConfig;
import cn.dev33.satoken.listener.SaTokenListener;
@@ -8,7 +8,7 @@ import cn.hutool.core.convert.Convert;
import cn.hutool.http.useragent.UserAgent;
import cn.hutool.http.useragent.UserAgentUtil;
import org.dromara.system.api.model.SysSaasUserOnlineDTO;
-import org.ruoyi.sso.server.config.satoken.LoginSaasHelper;
+import org.dromara.sso.config.satoken.LoginSaasHelper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/properties/CaptchaProperties.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/properties/CaptchaProperties.java
similarity index 84%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/properties/CaptchaProperties.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/properties/CaptchaProperties.java
index 126a679be..01fcb78de 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/properties/CaptchaProperties.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/properties/CaptchaProperties.java
@@ -1,8 +1,8 @@
-package org.ruoyi.sso.server.properties;
+package org.dromara.sso.properties;
import lombok.Data;
-import org.ruoyi.sso.server.enums.CaptchaCategory;
-import org.ruoyi.sso.server.enums.CaptchaType;
+import org.dromara.sso.enums.CaptchaCategory;
+import org.dromara.sso.enums.CaptchaType;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Configuration;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/properties/UserPasswordProperties.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/properties/UserPasswordProperties.java
similarity index 93%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/properties/UserPasswordProperties.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/properties/UserPasswordProperties.java
index da5b6d779..3703232ff 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/properties/UserPasswordProperties.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/properties/UserPasswordProperties.java
@@ -1,4 +1,4 @@
-package org.ruoyi.sso.server.properties;
+package org.dromara.sso.properties;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/service/IAuthStrategy.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/service/IAuthStrategy.java
similarity index 92%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/service/IAuthStrategy.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/service/IAuthStrategy.java
index 6ecb1f826..263a85412 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/service/IAuthStrategy.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/service/IAuthStrategy.java
@@ -1,6 +1,6 @@
-package org.ruoyi.sso.server.service;
+package org.dromara.sso.service;
-import org.ruoyi.sso.server.domain.vo.LoginVo;
+import org.dromara.sso.domain.vo.LoginVo;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.SpringUtils;
import org.dromara.system.api.domain.vo.RemoteClientVo;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/service/SysLoginService.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/service/SysLoginService.java
similarity index 97%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/service/SysLoginService.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/service/SysLoginService.java
index 1fa73a9ad..054f1128b 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/service/SysLoginService.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/service/SysLoginService.java
@@ -1,4 +1,4 @@
-package org.ruoyi.sso.server.service;
+package org.dromara.sso.service;
import cn.dev33.satoken.exception.NotLoginException;
import cn.dev33.satoken.secure.BCrypt;
@@ -7,10 +7,10 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.lock.annotation.Lock4j;
-import org.ruoyi.sso.server.form.RegisterBody;
-import org.ruoyi.sso.server.properties.CaptchaProperties;
-import org.ruoyi.sso.server.properties.UserPasswordProperties;
-import org.ruoyi.sso.server.config.satoken.LoginSaasHelper;
+import org.dromara.sso.properties.CaptchaProperties;
+import org.dromara.sso.properties.UserPasswordProperties;
+import org.dromara.sso.form.RegisterBody;
+import org.dromara.sso.config.satoken.LoginSaasHelper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import me.zhyd.oauth.model.AuthUser;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/service/impl/EmailAuthStrategy.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/service/impl/EmailAuthStrategy.java
similarity index 91%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/service/impl/EmailAuthStrategy.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/service/impl/EmailAuthStrategy.java
index 11e73a243..6b7f9a0fe 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/service/impl/EmailAuthStrategy.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/service/impl/EmailAuthStrategy.java
@@ -1,12 +1,12 @@
-package org.ruoyi.sso.server.service.impl;
+package org.dromara.sso.service.impl;
import cn.dev33.satoken.stp.SaLoginModel;
import cn.dev33.satoken.stp.StpUtil;
-import org.ruoyi.sso.server.domain.vo.LoginVo;
-import org.ruoyi.sso.server.form.EmailLoginBody;
-import org.ruoyi.sso.server.service.IAuthStrategy;
-import org.ruoyi.sso.server.service.SysLoginService;
-import org.ruoyi.sso.server.config.satoken.LoginSaasHelper;
+import org.dromara.sso.domain.vo.LoginVo;
+import org.dromara.sso.form.EmailLoginBody;
+import org.dromara.sso.service.IAuthStrategy;
+import org.dromara.sso.service.SysLoginService;
+import org.dromara.sso.config.satoken.LoginSaasHelper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/service/impl/PasswordAuthStrategy.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/service/impl/PasswordAuthStrategy.java
similarity index 91%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/service/impl/PasswordAuthStrategy.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/service/impl/PasswordAuthStrategy.java
index 5d2bb6796..bd91eaf4b 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/service/impl/PasswordAuthStrategy.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/service/impl/PasswordAuthStrategy.java
@@ -1,14 +1,14 @@
-package org.ruoyi.sso.server.service.impl;
+package org.dromara.sso.service.impl;
import cn.dev33.satoken.secure.BCrypt;
import cn.dev33.satoken.stp.SaLoginModel;
import cn.dev33.satoken.stp.StpUtil;
-import org.ruoyi.sso.server.domain.vo.LoginVo;
-import org.ruoyi.sso.server.form.PasswordLoginBody;
-import org.ruoyi.sso.server.properties.CaptchaProperties;
-import org.ruoyi.sso.server.service.IAuthStrategy;
-import org.ruoyi.sso.server.service.SysLoginService;
-import org.ruoyi.sso.server.config.satoken.LoginSaasHelper;
+import org.dromara.sso.domain.vo.LoginVo;
+import org.dromara.sso.form.PasswordLoginBody;
+import org.dromara.sso.properties.CaptchaProperties;
+import org.dromara.sso.service.IAuthStrategy;
+import org.dromara.sso.service.SysLoginService;
+import org.dromara.sso.config.satoken.LoginSaasHelper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/service/impl/SmsAuthStrategy.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/service/impl/SmsAuthStrategy.java
similarity index 91%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/service/impl/SmsAuthStrategy.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/service/impl/SmsAuthStrategy.java
index 505de7e14..5583c5720 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/service/impl/SmsAuthStrategy.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/service/impl/SmsAuthStrategy.java
@@ -1,12 +1,12 @@
-package org.ruoyi.sso.server.service.impl;
+package org.dromara.sso.service.impl;
import cn.dev33.satoken.stp.SaLoginModel;
import cn.dev33.satoken.stp.StpUtil;
-import org.ruoyi.sso.server.domain.vo.LoginVo;
-import org.ruoyi.sso.server.form.SmsLoginBody;
-import org.ruoyi.sso.server.service.IAuthStrategy;
-import org.ruoyi.sso.server.service.SysLoginService;
-import org.ruoyi.sso.server.config.satoken.LoginSaasHelper;
+import org.dromara.sso.form.SmsLoginBody;
+import org.dromara.sso.service.IAuthStrategy;
+import org.dromara.sso.service.SysLoginService;
+import org.dromara.sso.domain.vo.LoginVo;
+import org.dromara.sso.config.satoken.LoginSaasHelper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/service/impl/SocialAuthStrategy.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/service/impl/SocialAuthStrategy.java
similarity index 94%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/service/impl/SocialAuthStrategy.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/service/impl/SocialAuthStrategy.java
index 4a10a357b..7c37c433e 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/service/impl/SocialAuthStrategy.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/service/impl/SocialAuthStrategy.java
@@ -1,4 +1,4 @@
-package org.ruoyi.sso.server.service.impl;
+package org.dromara.sso.service.impl;
import cn.dev33.satoken.stp.SaLoginModel;
import cn.dev33.satoken.stp.StpUtil;
@@ -6,15 +6,15 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.http.Method;
-import org.ruoyi.sso.server.config.satoken.LoginSaasHelper;
+import org.dromara.sso.form.SocialLoginBody;
+import org.dromara.sso.service.IAuthStrategy;
+import org.dromara.sso.config.satoken.LoginSaasHelper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import me.zhyd.oauth.model.AuthResponse;
import me.zhyd.oauth.model.AuthUser;
import org.apache.dubbo.config.annotation.DubboReference;
-import org.ruoyi.sso.server.domain.vo.LoginVo;
-import org.ruoyi.sso.server.form.SocialLoginBody;
-import org.ruoyi.sso.server.service.IAuthStrategy;
+import org.dromara.sso.domain.vo.LoginVo;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.ValidatorUtils;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/service/impl/XcxAuthStrategy.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/service/impl/XcxAuthStrategy.java
similarity index 88%
rename from ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/service/impl/XcxAuthStrategy.java
rename to ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/service/impl/XcxAuthStrategy.java
index a82e125f4..628f114ac 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/service/impl/XcxAuthStrategy.java
+++ b/ruoyi-site/ruoyi-sso-server/src/main/java/org/dromara/sso/service/impl/XcxAuthStrategy.java
@@ -1,12 +1,12 @@
-package org.ruoyi.sso.server.service.impl;
+package org.dromara.sso.service.impl;
import cn.dev33.satoken.stp.SaLoginModel;
import cn.dev33.satoken.stp.StpUtil;
-import org.ruoyi.sso.server.domain.vo.LoginVo;
-import org.ruoyi.sso.server.form.XcxLoginBody;
-import org.ruoyi.sso.server.service.IAuthStrategy;
-import org.ruoyi.sso.server.service.SysLoginService;
-import org.ruoyi.sso.server.config.satoken.LoginSaasHelper;
+import org.dromara.sso.form.XcxLoginBody;
+import org.dromara.sso.service.IAuthStrategy;
+import org.dromara.sso.service.SysLoginService;
+import org.dromara.sso.domain.vo.LoginVo;
+import org.dromara.sso.config.satoken.LoginSaasHelper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/SaSsoServerApplication.java b/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/SaSsoServerApplication.java
deleted file mode 100644
index 60a741af0..000000000
--- a/ruoyi-site/ruoyi-sso-server/src/main/java/org/ruoyi/sso/server/SaSsoServerApplication.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.ruoyi.sso.server;
-
-import cn.dev33.satoken.sso.SaSsoManager;
-import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-@EnableDubbo
-@SpringBootApplication
-public class SaSsoServerApplication {
-
- public static void main(String[] args) {
- SpringApplication.run(SaSsoServerApplication.class, args);
-
- System.out.println();
- System.out.println("---------------------- Sa-Token SSO 统一认证中心启动成功 ----------------------");
- System.out.println("配置信息:" + SaSsoManager.getServerConfig());
- System.out.println("统一认证登录地址:http://sa-sso-server.com:19000/sso/auth");
- System.out.println("测试前需要根据官网文档修改hosts文件,测试账号密码:sa / 123456");
- System.out.println();
- }
-
-}
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/resources/application-dev.yml b/ruoyi-site/ruoyi-sso-server/src/main/resources/application-dev.yml
index 45fe4240b..044179321 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/resources/application-dev.yml
+++ b/ruoyi-site/ruoyi-sso-server/src/main/resources/application-dev.yml
@@ -138,3 +138,79 @@ dubbo:
retries: 0
# 初始化检查
check: false
+
+--- # 三方授权
+justauth:
+ # 前端外网访问地址
+ address: http://localhost:80
+ type:
+ maxkey:
+ # maxkey 服务器地址
+ # 注意 如下均配置均不需要修改 maxkey 已经内置好了数据
+ server-url: http://sso.maxkey.top
+ client-id: 876892492581044224
+ client-secret: x1Y5MTMwNzIwMjMxNTM4NDc3Mzche8
+ redirect-uri: ${justauth.address}/social-callback?source=maxkey
+ topiam:
+ # topiam 服务器地址
+ server-url: http://127.0.0.1:1989/api/v1/authorize/y0q************spq***********8ol
+ client-id: 449c4*********937************759
+ client-secret: ac7***********1e0************28d
+ redirect-uri: ${justauth.address}/social-callback?source=topiam
+ scopes: [openid, email, phone, profile]
+ qq:
+ client-id: 10**********6
+ client-secret: 1f7d08**********5b7**********29e
+ redirect-uri: ${justauth.address}/social-callback?source=qq
+ union-id: false
+ weibo:
+ client-id: 10**********6
+ client-secret: 1f7d08**********5b7**********29e
+ redirect-uri: ${justauth.address}/social-callback?source=weibo
+ gitee:
+ client-id: 91436b7940090d09c72c7daf85b959cfd5f215d67eea73acbf61b6b590751a98
+ client-secret: 02c6fcfd70342980cd8dd2f2c06c1a350645d76c754d7a264c4e125f9ba915ac
+ redirect-uri: ${justauth.address}/social-callback?source=gitee
+ dingtalk:
+ client-id: 10**********6
+ client-secret: 1f7d08**********5b7**********29e
+ redirect-uri: ${justauth.address}/social-callback?source=dingtalk
+ baidu:
+ client-id: 10**********6
+ client-secret: 1f7d08**********5b7**********29e
+ redirect-uri: ${justauth.address}/social-callback?source=baidu
+ csdn:
+ client-id: 10**********6
+ client-secret: 1f7d08**********5b7**********29e
+ redirect-uri: ${justauth.address}/social-callback?source=csdn
+ coding:
+ client-id: 10**********6
+ client-secret: 1f7d08**********5b7**********29e
+ redirect-uri: ${justauth.address}/social-callback?source=coding
+ coding-group-name: xx
+ oschina:
+ client-id: 10**********6
+ client-secret: 1f7d08**********5b7**********29e
+ redirect-uri: ${justauth.address}/social-callback?source=oschina
+ alipay_wallet:
+ client-id: 10**********6
+ client-secret: 1f7d08**********5b7**********29e
+ redirect-uri: ${justauth.address}/social-callback?source=alipay_wallet
+ alipay-public-key: MIIB**************DAQAB
+ wechat_open:
+ client-id: 10**********6
+ client-secret: 1f7d08**********5b7**********29e
+ redirect-uri: ${justauth.address}/social-callback?source=wechat_open
+ wechat_mp:
+ client-id: 10**********6
+ client-secret: 1f7d08**********5b7**********29e
+ redirect-uri: ${justauth.address}/social-callback?source=wechat_mp
+ wechat_enterprise:
+ client-id: 10**********6
+ client-secret: 1f7d08**********5b7**********29e
+ redirect-uri: ${justauth.address}/social-callback?source=wechat_enterprise
+ agent-id: 1000002
+ gitlab:
+ client-id: 10**********6
+ client-secret: 1f7d08**********5b7**********29e
+ redirect-uri: ${justauth.address}/social-callback?source=gitlab
diff --git a/ruoyi-site/ruoyi-sso-server/src/main/resources/application-local.yml b/ruoyi-site/ruoyi-sso-server/src/main/resources/application-local.yml
index d3dd58b7a..b642ca00b 100644
--- a/ruoyi-site/ruoyi-sso-server/src/main/resources/application-local.yml
+++ b/ruoyi-site/ruoyi-sso-server/src/main/resources/application-local.yml
@@ -22,10 +22,6 @@ spring:
max-idle: 10
# 连接池中的最小空闲连接
min-idle: 0
- cloud:
- nacos:
- discovery:
- server-addr: http://127.0.0.1:8848
# Sa-Token配置
sa-token:
@@ -138,3 +134,79 @@ dubbo:
retries: 0
# 初始化检查
check: false
+
+--- # 三方授权
+justauth:
+ # 前端外网访问地址
+ address: http://localhost:80
+ type:
+ maxkey:
+ # maxkey 服务器地址
+ # 注意 如下均配置均不需要修改 maxkey 已经内置好了数据
+ server-url: http://sso.maxkey.top
+ client-id: 876892492581044224
+ client-secret: x1Y5MTMwNzIwMjMxNTM4NDc3Mzche8
+ redirect-uri: ${justauth.address}/social-callback?source=maxkey
+ topiam:
+ # topiam 服务器地址
+ server-url: http://127.0.0.1:1989/api/v1/authorize/y0q************spq***********8ol
+ client-id: 449c4*********937************759
+ client-secret: ac7***********1e0************28d
+ redirect-uri: ${justauth.address}/social-callback?source=topiam
+ scopes: [openid, email, phone, profile]
+ qq:
+ client-id: 10**********6
+ client-secret: 1f7d08**********5b7**********29e
+ redirect-uri: ${justauth.address}/social-callback?source=qq
+ union-id: false
+ weibo:
+ client-id: 10**********6
+ client-secret: 1f7d08**********5b7**********29e
+ redirect-uri: ${justauth.address}/social-callback?source=weibo
+ gitee:
+ client-id: 91436b7940090d09c72c7daf85b959cfd5f215d67eea73acbf61b6b590751a98
+ client-secret: 02c6fcfd70342980cd8dd2f2c06c1a350645d76c754d7a264c4e125f9ba915ac
+ redirect-uri: ${justauth.address}/social-callback?source=gitee
+ dingtalk:
+ client-id: 10**********6
+ client-secret: 1f7d08**********5b7**********29e
+ redirect-uri: ${justauth.address}/social-callback?source=dingtalk
+ baidu:
+ client-id: 10**********6
+ client-secret: 1f7d08**********5b7**********29e
+ redirect-uri: ${justauth.address}/social-callback?source=baidu
+ csdn:
+ client-id: 10**********6
+ client-secret: 1f7d08**********5b7**********29e
+ redirect-uri: ${justauth.address}/social-callback?source=csdn
+ coding:
+ client-id: 10**********6
+ client-secret: 1f7d08**********5b7**********29e
+ redirect-uri: ${justauth.address}/social-callback?source=coding
+ coding-group-name: xx
+ oschina:
+ client-id: 10**********6
+ client-secret: 1f7d08**********5b7**********29e
+ redirect-uri: ${justauth.address}/social-callback?source=oschina
+ alipay_wallet:
+ client-id: 10**********6
+ client-secret: 1f7d08**********5b7**********29e
+ redirect-uri: ${justauth.address}/social-callback?source=alipay_wallet
+ alipay-public-key: MIIB**************DAQAB
+ wechat_open:
+ client-id: 10**********6
+ client-secret: 1f7d08**********5b7**********29e
+ redirect-uri: ${justauth.address}/social-callback?source=wechat_open
+ wechat_mp:
+ client-id: 10**********6
+ client-secret: 1f7d08**********5b7**********29e
+ redirect-uri: ${justauth.address}/social-callback?source=wechat_mp
+ wechat_enterprise:
+ client-id: 10**********6
+ client-secret: 1f7d08**********5b7**********29e
+ redirect-uri: ${justauth.address}/social-callback?source=wechat_enterprise
+ agent-id: 1000002
+ gitlab:
+ client-id: 10**********6
+ client-secret: 1f7d08**********5b7**********29e
+ redirect-uri: ${justauth.address}/social-callback?source=gitlab
diff --git a/ruoyi-site/ruoyi-user-sso/Dockerfile b/ruoyi-site/ruoyi-user-sso/Dockerfile
new file mode 100644
index 000000000..e87fe55a2
--- /dev/null
+++ b/ruoyi-site/ruoyi-user-sso/Dockerfile
@@ -0,0 +1,26 @@
+# 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/
+FROM bellsoft/liberica-openjdk-debian:17.0.11-cds
+#FROM bellsoft/liberica-openjdk-debian:21.0.3-cds
+#FROM findepi/graalvm:java17-native
+
+LABEL maintainer="lizhw"
+
+RUN mkdir -p /ruoyi/resource/logs \
+ /ruoyi/resource/temp \
+ /ruoyi/skywalking/agent
+
+WORKDIR /ruoyi/resource
+
+ENV SERVER_PORT=19200 LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS=""
+
+EXPOSE ${SERVER_PORT}
+
+ADD ./target/ruoyi-h5.jar ./app.jar
+
+ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -Dserver.port=${SERVER_PORT} \
+ # 应用名称 如果想区分集群节点监控 改成不同的名称即可
+ #-Dskywalking.agent.service_name=ruoyi-h5 \
+ #-javaagent:/ruoyi/skywalking/agent/skywalking-agent.jar \
+ -XX:+HeapDumpOnOutOfMemoryError -XX:+UseZGC ${JAVA_OPTS} \
+ -jar app.jar
+
diff --git a/ruoyi-site/ruoyi-user-sso/pom.xml b/ruoyi-site/ruoyi-user-sso/pom.xml
new file mode 100644
index 000000000..570f7eb10
--- /dev/null
+++ b/ruoyi-site/ruoyi-user-sso/pom.xml
@@ -0,0 +1,106 @@
+
+
+
+ org.dromara
+ ruoyi-site
+ ${revision}
+
+ 4.0.0
+
+ ruoyi-user-sso
+
+
+ ruoyi-user-sso
+
+
+
+
+
+ org.dromara
+ ruoyi-common-core
+
+
+
+
+ org.dromara
+ ruoyi-common-tenant
+
+
+
+
+ org.dromara
+ ruoyi-common-mybatis
+
+
+
+ org.dromara
+ ruoyi-common-doc
+
+
+
+
+ org.dromara
+ ruoyi-api-system
+
+
+
+ org.dromara
+ ruoyi-common-log
+
+
+
+
+ com.mysql
+ mysql-connector-j
+
+
+
+ org.dromara
+ ruoyi-common-encrypt
+
+
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+
+ org.apache.dubbo
+ dubbo-spring-boot-starter
+
+
+
+ org.apache.dubbo
+ dubbo-nacos-spring-boot-starter
+
+
+
+
+
+ ${project.artifactId}
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring-boot.version}
+
+
+
+ repackage
+
+
+
+
+
+
+
+
diff --git a/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/MallH5Application.java b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/MallH5Application.java
new file mode 100644
index 000000000..9a424b279
--- /dev/null
+++ b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/MallH5Application.java
@@ -0,0 +1,20 @@
+package com.luban.api;
+
+import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ * 鲁班H5 api启动类
+ *
+ * @author WeiHongBin
+ */
+@EnableDubbo
+@SpringBootApplication
+public class MallH5Application {
+
+ public static void main(String[] args) {
+ SpringApplication.run(MallH5Application.class, args);
+ }
+
+}
diff --git a/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/config/JsonConfig.java b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/config/JsonConfig.java
new file mode 100644
index 000000000..7d0e0aecb
--- /dev/null
+++ b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/config/JsonConfig.java
@@ -0,0 +1,32 @@
+package com.luban.api.config;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+
+/**
+ * JSON 配置,修改默认 时间序列化格式
+ *
+ * @author WeiHongBin
+ */
+@Configuration
+public class JsonConfig {
+ @Bean
+ public ObjectMapper mapperObject() {
+ JavaTimeModule module = new JavaTimeModule();
+ module.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+ module.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+ module.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
+ return new ObjectMapper().registerModule(module);
+ }
+
+}
diff --git a/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/config/MybatisPlusAutoConfigTenant.java b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/config/MybatisPlusAutoConfigTenant.java
new file mode 100644
index 000000000..acc0d5d73
--- /dev/null
+++ b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/config/MybatisPlusAutoConfigTenant.java
@@ -0,0 +1,20 @@
+package com.luban.api.config;
+
+import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
+import org.dromara.common.mybatis.config.MybatisPlusConfig;
+import org.dromara.common.tenant.properties.TenantProperties;
+import org.springframework.boot.autoconfigure.AutoConfiguration;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@ConditionalOnBean(MybatisPlusConfig.class)
+@AutoConfiguration(after = {MybatisPlusConfig.class})
+public class MybatisPlusAutoConfigTenant {
+
+ @Bean
+ public TenantLineInnerInterceptor tenantLineInnerInterceptor(TenantProperties tenantProperties) {
+ return new TenantLineInnerInterceptor(new PlusTenantLineHandler(tenantProperties));
+ }
+}
diff --git a/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/config/PlusTenantLineHandler.java b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/config/PlusTenantLineHandler.java
new file mode 100644
index 000000000..f661c163e
--- /dev/null
+++ b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/config/PlusTenantLineHandler.java
@@ -0,0 +1,56 @@
+package com.luban.api.config;
+
+import cn.hutool.core.collection.ListUtil;
+import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import net.sf.jsqlparser.expression.Expression;
+import net.sf.jsqlparser.expression.NullValue;
+import net.sf.jsqlparser.expression.StringValue;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.tenant.helper.TenantHelper;
+import org.dromara.common.tenant.properties.TenantProperties;
+
+import java.util.List;
+
+/**
+ * 自定义租户处理器
+ *
+ * @author Lion Li
+ */
+@Slf4j
+@AllArgsConstructor
+public class PlusTenantLineHandler implements TenantLineHandler {
+
+ private final TenantProperties tenantProperties;
+
+ @Override
+ public Expression getTenantId() {
+ String tenantId = TenantHelper.getTenantId();
+ if (StringUtils.isBlank(tenantId)) {
+ log.error("无法获取有效的租户id -> Null");
+ return new NullValue();
+ }
+ // 返回固定租户
+ return new StringValue(tenantId);
+ }
+
+ @Override
+ public boolean ignoreTable(String tableName) {
+ String tenantId = TenantHelper.getTenantId();
+ // 判断是否有租户
+ if (StringUtils.isNotBlank(tenantId)) {
+ // 不需要过滤租户的表
+ List excludes = tenantProperties.getExcludes();
+ // 非业务表
+ List tables = ListUtil.toList(
+ "gen_table",
+ "gen_table_column"
+ );
+ tables.addAll(excludes);
+ return tables.contains(tableName);
+ }
+ return true;
+ }
+
+}
diff --git a/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/config/WebMvcConfig.java b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/config/WebMvcConfig.java
new file mode 100644
index 000000000..e6dcc72d2
--- /dev/null
+++ b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/config/WebMvcConfig.java
@@ -0,0 +1,22 @@
+package com.luban.api.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.EnableWebMvc;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+@EnableWebMvc
+public class WebMvcConfig implements WebMvcConfigurer {
+ @Override
+ public void addResourceHandlers(ResourceHandlerRegistry registry) {
+ //兼容swagger老版本v1,v2
+ registry.addResourceHandler("/statics/**").addResourceLocations("classpath:/statics/");
+ registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
+ registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
+ registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
+ registry.addResourceHandler("/swagger-ui/**").addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/");
+ registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
+ registry.addResourceHandler("/**").addResourceLocations("classpath:/META-INF/resources/").setCachePeriod(0);
+ }
+}
diff --git a/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/constant/PackageConstant.java b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/constant/PackageConstant.java
new file mode 100644
index 000000000..47f9055c0
--- /dev/null
+++ b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/constant/PackageConstant.java
@@ -0,0 +1,18 @@
+package com.luban.api.constant;
+
+/**
+ * 包名常量
+ *
+ * @author WeiHongBin
+ */
+public final class PackageConstant {
+
+
+ public static final String BASE_PACKAGE = "com.luban.api";
+
+ public static final String CONTROLLER_PACKAGE = BASE_PACKAGE + ".controller";
+
+ public static final String DAO_PACKAGE = BASE_PACKAGE + ".dao";
+
+
+}
diff --git a/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/controller/ScriptsController.java b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/controller/ScriptsController.java
new file mode 100644
index 000000000..b0688d084
--- /dev/null
+++ b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/controller/ScriptsController.java
@@ -0,0 +1,50 @@
+package com.luban.api.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.luban.api.entity.Scripts;
+import com.luban.api.convert.ScriptsConvert;
+import com.luban.api.service.ScriptsService;
+import com.luban.api.vo.ScriptsVO;
+import io.swagger.v3.oas.annotations.Operation;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * 作品 前端控制器
+ *
+ *
+ * @author lizhengwei
+ * @since 2024-06-21
+ */
+@RestController
+@RequestMapping("/scripts")
+public class ScriptsController {
+
+
+ private final ScriptsService scriptsService;
+
+ public ScriptsController(ScriptsService scriptsService) {
+ this.scriptsService = scriptsService;
+ }
+
+
+ @Operation(summary = "根据scriptsId查询")
+ @GetMapping("/{id}")
+ public ScriptsVO findScriptsById(@PathVariable Long id) {
+ return ScriptsConvert.toVO(scriptsService.getById(id));
+ }
+
+ @Operation(summary = "查询所有scripts")
+ @GetMapping
+ public List listAllScriptss(@RequestParam Integer _limit) {
+ QueryWrapper wrapper = new QueryWrapper<>();
+ wrapper.last("limit " + _limit);
+ return scriptsService.list(wrapper).stream().map(ScriptsConvert::toVO).collect(Collectors.toList());
+ }
+
+}
+
diff --git a/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/controller/UploadController.java b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/controller/UploadController.java
new file mode 100644
index 000000000..65db005fb
--- /dev/null
+++ b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/controller/UploadController.java
@@ -0,0 +1,51 @@
+package com.luban.api.controller;
+
+import cn.hutool.core.util.IdUtil;
+import com.luban.api.exception.UnifiedException;
+import com.luban.api.vo.FileVO;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author WeiHongBin
+ */
+@RestController
+@RequestMapping("/upload")
+@Tag(name = "上传文件")
+@Slf4j
+public class UploadController {
+
+// @Value("${upload-path}") todo 改成公共文件上传下载
+
+ public String uploadPath = "data";
+
+ @Operation(summary = "文件上传")
+ @PostMapping
+ public List upload(@Validated MultipartFile files) {
+ String originalFilename = files.getOriginalFilename();
+ assert originalFilename != null;
+ String suffix = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
+ String key = IdUtil.fastSimpleUUID() + "." + suffix;
+ try {
+ files.transferTo(new File(uploadPath + key));
+ } catch (IOException e) {
+ throw new UnifiedException("文件上传失败");
+ }
+ return new ArrayList() {{
+ add(new FileVO() {{
+ setUrl(key);
+ }});
+ }};
+ }
+}
diff --git a/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/controller/WorkController.java b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/controller/WorkController.java
new file mode 100644
index 000000000..d23546051
--- /dev/null
+++ b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/controller/WorkController.java
@@ -0,0 +1,175 @@
+package com.luban.api.controller;
+
+
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.luban.api.convert.WorkConvert;
+import com.luban.api.dto.WorkCreateDTO;
+import com.luban.api.dto.WorkQueryDTO;
+import com.luban.api.dto.WorkUpdateDTO;
+import com.luban.api.entity.Work;
+import com.luban.api.service.WorkService;
+import com.luban.api.vo.WorkVO;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * 由于业务都非常简单,并没有把业务代码下沉到 service 层
+ *
+ * @author WeiHongBin
+ */
+@RestController
+@RequestMapping("/works")
+@Tag(name = "作品管理", description = "作品管理")
+@Slf4j
+public class WorkController {
+
+
+ private final WorkService workService;
+
+ public WorkController(WorkService workService) {
+ this.workService = workService;
+ }
+
+
+ @Operation(summary = "根据workId查询")
+ @GetMapping("/has-forms")
+ public List hasForms() {
+ return WorkConvert.toVO(workService.list());
+ }
+
+ @Operation(summary = "根据workId查询")
+ @GetMapping("/{id}")
+ public WorkVO findWorkById(@PathVariable Long id) {
+ return WorkConvert.toVO(workService.getById(id));
+ }
+
+ @Operation(summary = "查询所有work")
+ @GetMapping
+ public List listAllWorks(@Valid WorkQueryDTO dto) {
+ WorkVO vo = new WorkVO();
+ vo.setTemplate(Boolean.parseBoolean(dto.getIs_template()));
+ BeanUtils.copyProperties(dto, vo);
+ return workService.list(new QueryWrapper<>(WorkConvert.toEntity(vo))).stream().map(WorkConvert::toVO).collect(Collectors.toList());
+ }
+
+
+ @Operation(summary = "分页查询works")
+ @GetMapping("/pageable")
+ public IPage listWorks(@Valid WorkQueryDTO dto) {
+ WorkVO vo = new WorkVO();
+ vo.setTemplate(Boolean.parseBoolean(dto.getIs_template()));
+ BeanUtils.copyProperties(dto, vo);
+ IPage page = workService.page(new Page<>(dto.getCurrent(), dto.getSize()), new LambdaQueryWrapper<>(WorkConvert.toEntity(vo)).orderByDesc(Work::getCreateTime));
+ List voList = page.getRecords().stream().map(WorkConvert::toVO).collect(Collectors.toList());
+ return new Page(page.getCurrent(), page.getSize(), page.getTotal()).setPages(page.getPages()).setRecords(voList);
+ }
+
+ @Operation(summary = "创建work")
+ @PostMapping
+ public WorkVO createWork(@RequestBody @Valid WorkCreateDTO dto) {
+ WorkVO vo = new WorkVO();
+ BeanUtils.copyProperties(dto, vo);
+ Work work = WorkConvert.toEntity(vo);
+ workService.save(work);
+ return WorkConvert.toVO(work);
+ }
+
+ @Operation(summary = "更新work")
+ @PutMapping("/{id}")
+ public WorkVO updateWork(@PathVariable Long id, @RequestBody @Valid WorkUpdateDTO dto) {
+ Work work = workService.getById(id);
+ if (!StringUtils.isEmpty(dto.getTitle())) {
+ work.setTitle(dto.getTitle());
+ }
+ if (!StringUtils.isEmpty(dto.getDescription())) {
+ work.setDescription(dto.getDescription());
+ }
+ if (!StringUtils.isEmpty(dto.getCoverImageUrl())) {
+ work.setCoverImageUrl(dto.getCoverImageUrl());
+ }
+ if (!CollectionUtils.isEmpty(dto.getPages())) {
+ work.setPages(JSONUtil.toJsonStr(dto.getPages()));
+ }
+ work.setIsTemplate(dto.isTemplate());
+ work.setIsPublish(dto.isPublish());
+ work.setWidth(dto.getWidth());
+ work.setHeight(dto.getWidth());
+ work.setPageMode(dto.getWidth());
+
+ work.setUpdateTime(LocalDateTime.now());
+ workService.saveOrUpdate(work);
+ return WorkConvert.toVO(work);
+ }
+
+
+ @Operation(summary = "删除work")
+ @DeleteMapping("/{id}")
+ public void deleteWorkById(@PathVariable Long id) {
+ workService.removeById(id);
+ }
+
+ @Operation(summary = "设为模板")
+ @PostMapping("/set-as-template/{id}")
+ public WorkVO markWorkAsTemplate(@PathVariable Long id) {
+ Work work = workService.getById(id);
+ work.setIsTemplate(true);
+ work.setUpdateTime(LocalDateTime.now());
+ workService.updateById(work);
+ return WorkConvert.toVO(work);
+ }
+
+ @Operation(summary = "统计作品总数")
+ @GetMapping("/count")
+ public long countWork() {
+ return workService.count();
+ }
+
+ @Operation(summary = "使用模板")
+ @PostMapping("/use-template/{id}")
+ public WorkVO useTemplate(@PathVariable Long id) {
+ Work work = workService.getById(id);
+ work.setId(null);
+ work.setIsTemplate(false);
+ work.setIsPublish(false);
+ workService.save(work);
+ return WorkConvert.toVO(work);
+ }
+
+ @Operation(summary = "使用模板")
+ @GetMapping("/preview/{id}")
+ public ModelAndView useTemplate(@PathVariable Long id, @RequestParam(value = "view_mode", required = false) String viewMode) {
+ Work work = workService.getById(id);
+
+ // 非预览模式, 查看不到内容
+ boolean canRender = "preview".equals(viewMode) || work.getIsPublish();
+
+ if (!canRender) {
+ work.setPages("[]");
+ }
+ ModelAndView mv = new ModelAndView("engine");
+ //TODO 后端处理前端,这种方式不是很好,最后改成纯前端处理
+ mv.addObject("workString", JSONUtil.toJsonStr(WorkConvert.toVO(work)));
+ mv.addObject("work", work);
+ return mv;
+ }
+}
+
diff --git a/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/controller/WorkFormsController.java b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/controller/WorkFormsController.java
new file mode 100644
index 000000000..4be91bc65
--- /dev/null
+++ b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/controller/WorkFormsController.java
@@ -0,0 +1,20 @@
+package com.luban.api.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author WeiHongBin
+ * @since 2019-11-26
+ */
+@RestController
+@RequestMapping("/work-forms")
+public class WorkFormsController {
+
+}
+
diff --git a/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/convert/ScriptsConvert.java b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/convert/ScriptsConvert.java
new file mode 100644
index 000000000..6e31e01e1
--- /dev/null
+++ b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/convert/ScriptsConvert.java
@@ -0,0 +1,21 @@
+package com.luban.api.convert;
+
+import com.luban.api.entity.Scripts;
+import com.luban.api.vo.ScriptsVO;
+import org.springframework.beans.BeanUtils;
+
+/**
+ * Scripts 转换器
+ *
+ * @author WeiHongBin
+ */
+public class ScriptsConvert {
+
+
+ public static ScriptsVO toVO(Scripts entity) {
+ ScriptsVO vo = new ScriptsVO();
+ BeanUtils.copyProperties(entity, vo);
+ return vo;
+ }
+
+}
diff --git a/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/convert/WorkConvert.java b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/convert/WorkConvert.java
new file mode 100644
index 000000000..0e39b8e6a
--- /dev/null
+++ b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/convert/WorkConvert.java
@@ -0,0 +1,49 @@
+package com.luban.api.convert;
+
+import cn.hutool.json.JSONUtil;
+import com.luban.api.entity.Work;
+import com.luban.api.vo.WorkVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Work 转换器
+ *
+ * @author WeiHongBin
+ */
+public class WorkConvert {
+
+
+ public static WorkVO toVO(Work entity) {
+ WorkVO vo = new WorkVO();
+ BeanUtils.copyProperties(entity, vo);
+ if (!StringUtils.isEmpty(entity.getPages())) {
+ vo.setPages(JSONUtil.parseArray(entity.getPages()));
+ }
+ return vo;
+ }
+
+
+ public static List toVO(List entitys) {
+ List workVOS = new ArrayList<>();
+ for (Work entity : entitys) {
+ workVOS.add(toVO(entity));
+ }
+ return workVOS;
+ }
+
+ public static Work toEntity(WorkVO vo) {
+ Work work = new Work();
+ BeanUtils.copyProperties(vo, work);
+ if (!CollectionUtils.isEmpty(vo.getPages())) {
+ work.setPages(JSONUtil.toJsonStr(vo.getPages()));
+ }
+ return work;
+ }
+
+
+}
diff --git a/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dao/ScriptsDao.java b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dao/ScriptsDao.java
new file mode 100644
index 000000000..fdcb108a3
--- /dev/null
+++ b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dao/ScriptsDao.java
@@ -0,0 +1,18 @@
+package com.luban.api.dao;
+
+import com.luban.api.entity.Scripts;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ *
+ * 作品 Mapper 接口
+ *
+ *
+ * @author lizhengwei
+ * @since 2024-06-21
+ */
+@Mapper
+public interface ScriptsDao extends BaseMapper {
+
+}
diff --git a/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dao/WorkDao.java b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dao/WorkDao.java
new file mode 100644
index 000000000..3b9cffb92
--- /dev/null
+++ b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dao/WorkDao.java
@@ -0,0 +1,18 @@
+package com.luban.api.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.luban.api.entity.Work;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author WeiHongBin
+ * @since 2019-11-26
+ */
+@Mapper
+public interface WorkDao extends BaseMapper {
+
+}
diff --git a/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dao/WorkFormsDao.java b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dao/WorkFormsDao.java
new file mode 100644
index 000000000..440f69bdf
--- /dev/null
+++ b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dao/WorkFormsDao.java
@@ -0,0 +1,18 @@
+package com.luban.api.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.luban.api.entity.WorkForms;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author WeiHongBin
+ * @since 2019-11-26
+ */
+@Mapper
+public interface WorkFormsDao extends BaseMapper {
+
+}
diff --git a/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dto/PageDtoBase.java b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dto/PageDtoBase.java
new file mode 100644
index 000000000..43598a9fc
--- /dev/null
+++ b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dto/PageDtoBase.java
@@ -0,0 +1,37 @@
+package com.luban.api.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 分页基类
+ *
+ * @author admin
+ */
+@Data
+public class PageDtoBase {
+ /**
+ * 每页行数
+ */
+ @Schema(title = "每页行数")
+ protected Integer size = 10;
+
+ /**
+ * 页码
+ */
+ @Schema(title = "页码")
+ protected Integer current = 1;
+
+
+ public void setSize(Integer size) {
+ if (size != null) {
+ this.size = size;
+ }
+ }
+
+ public void setCurrent(Integer current) {
+ if (current != null) {
+ this.current = current;
+ }
+ }
+}
diff --git a/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dto/ScriptsQueryDTO.java b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dto/ScriptsQueryDTO.java
new file mode 100644
index 000000000..80ae28ace
--- /dev/null
+++ b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dto/ScriptsQueryDTO.java
@@ -0,0 +1,15 @@
+package com.luban.api.dto;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+@Data
+@EqualsAndHashCode
+@Accessors(chain = true)
+@Schema(title = "WorkQueryDTO")
+public class ScriptsQueryDTO {
+ private Integer _limit;
+}
diff --git a/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dto/WorkCreateDTO.java b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dto/WorkCreateDTO.java
new file mode 100644
index 000000000..c755dec02
--- /dev/null
+++ b/ruoyi-site/ruoyi-user-sso/src/main/java/com/luban/api/dto/WorkCreateDTO.java
@@ -0,0 +1,35 @@
+package com.luban.api.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * @author WeiHongBin
+ */
+@Data
+@EqualsAndHashCode
+@Accessors(chain = true)
+@Schema(title = "WorkCreateDTO")
+public class WorkCreateDTO {
+
+ private String title;
+
+ private String description;
+
+ private String coverImageUrl;
+
+ private List