From d44a4a9b4b92d977dbd748b4804aba6a50aadaaf Mon Sep 17 00:00:00 2001
From: winLsy <18332763730@163.com>
Date: Sun, 18 Mar 2018 14:05:32 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8F=AF=E9=80=89=E6=8B=A9(?=
=?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93,=E5=86=85=E5=AD=98)oauth2=E6=9C=8D?=
=?UTF-8?q?=E5=8A=A1=E5=95=86client=E4=BF=9D=E5=AD=98=E6=96=B9=E5=BC=8F?=
=?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=B1=9E=E6=80=A7=EF=BC=8C=E9=BB=98=E8=AE=A4?=
=?UTF-8?q?jdbc=E5=AD=98=E5=82=A8=E3=80=82=20=E5=A2=9E=E5=8A=A0=E7=A8=8B?=
=?UTF-8?q?=E5=BA=8F=E5=90=AF=E5=8A=A8=E6=97=B6=E5=A4=9A=E6=95=B0=E6=8D=AE?=
=?UTF-8?q?=E6=BA=90=E8=87=AA=E5=8A=A8=E6=89=A7=E8=A1=8C=E5=90=84=E8=87=AA?=
=?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96sql=E8=84=9A=E6=9C=AC=E5=8A=9F?=
=?UTF-8?q?=E8=83=BD=EE=80=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
all/sql/Oauth2Client.sql | 14 +
all/sql/ucenter.sql | 2 +-
.../BaseExceptionHandlerController.java | 3 +-
.../boot-starter-security-oauth/README.md | 1 +
.../boot-starter-security-oauth/pom.xml | 15 +
.../provider/AuthorizationProviderConfig.java | 33 +-
.../provider/Oauth2ProviderSecurity.java | 7 +-
.../security/app/master/OAuth2Properties.java | 2 +
boot-starter/boot-starter-ssm/README.md | 9 +
.../fast/common/init/InitUpmsSystem.java | 83 +++++
.../fast/common/init/config/InitConfig.java | 29 ++
.../init/properties/SqlInitProperties.java | 40 +++
ms/oauth/pom.xml | 2 +-
.../src/main/resources/sql/Oauth2Client.sql | 15 +
ms/ucenter/src/main/resources/sql/ucenter.sql | 136 ++++++++
ms/upms/src/main/resources/sql/upms.sql | 318 ++++++++++++++++++
pom.xml | 1 +
17 files changed, 693 insertions(+), 17 deletions(-)
create mode 100644 all/sql/Oauth2Client.sql
create mode 100644 boot-starter/boot-starter-ssm/src/main/java/com/micro/fast/common/init/InitUpmsSystem.java
create mode 100644 boot-starter/boot-starter-ssm/src/main/java/com/micro/fast/common/init/config/InitConfig.java
create mode 100644 boot-starter/boot-starter-ssm/src/main/java/com/micro/fast/common/init/properties/SqlInitProperties.java
create mode 100644 ms/oauth/src/main/resources/sql/Oauth2Client.sql
create mode 100644 ms/ucenter/src/main/resources/sql/ucenter.sql
create mode 100644 ms/upms/src/main/resources/sql/upms.sql
diff --git a/all/sql/Oauth2Client.sql b/all/sql/Oauth2Client.sql
new file mode 100644
index 0000000..97bcbc1
--- /dev/null
+++ b/all/sql/Oauth2Client.sql
@@ -0,0 +1,14 @@
+USE micro;
+create table oauth_client_details (
+ client_id VARCHAR(256) PRIMARY KEY,
+ resource_ids VARCHAR(256),
+ client_secret VARCHAR(256),
+ scope VARCHAR(256),
+ authorized_grant_types VARCHAR(256),
+ web_server_redirect_uri VARCHAR(256),
+ authorities VARCHAR(256),
+ access_token_validity INTEGER,
+ refresh_token_validity INTEGER,
+ additional_information VARCHAR(4096),
+ autoapprove VARCHAR(256)
+);
\ No newline at end of file
diff --git a/all/sql/ucenter.sql b/all/sql/ucenter.sql
index a2a66b6..4862a85 100644
--- a/all/sql/ucenter.sql
+++ b/all/sql/ucenter.sql
@@ -25,7 +25,7 @@ USE micro;
-- ucenter_user_details ucenter用户详情表
-- ------------------------------------
DROP TABLE IF EXISTS ucenter_user_details;
-CREATE TABLE ucenter_user_details (
+CREATE TABLE ucenter_user_details (
`id` INT(10) UNSIGNED AUTO_INCREMENT NOT NULL
COMMENT '编号',
`signature` VARCHAR(300) DEFAULT NULL
diff --git a/boot-starter/boot-starter-common/src/main/java/com/micro/fast/boot/starter/common/exception/handler/BaseExceptionHandlerController.java b/boot-starter/boot-starter-common/src/main/java/com/micro/fast/boot/starter/common/exception/handler/BaseExceptionHandlerController.java
index 65d9b71..cd77614 100644
--- a/boot-starter/boot-starter-common/src/main/java/com/micro/fast/boot/starter/common/exception/handler/BaseExceptionHandlerController.java
+++ b/boot-starter/boot-starter-common/src/main/java/com/micro/fast/boot/starter/common/exception/handler/BaseExceptionHandlerController.java
@@ -1,16 +1,15 @@
package com.micro.fast.boot.starter.common.exception.handler;
import com.micro.fast.boot.starter.common.exception.SystemException;
+import com.micro.fast.boot.starter.common.exception.UserException;
import com.micro.fast.boot.starter.common.response.ServerResponse;
import com.micro.fast.boot.starter.common.util.ExceptionUtil;
-import com.micro.fast.boot.starter.common.exception.UserException;
import org.springframework.http.HttpStatus;
import org.springframework.validation.BindException;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
-import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
diff --git a/boot-starter/boot-starter-security-oauth/README.md b/boot-starter/boot-starter-security-oauth/README.md
index a249375..0c16f0a 100644
--- a/boot-starter/boot-starter-security-oauth/README.md
+++ b/boot-starter/boot-starter-security-oauth/README.md
@@ -22,6 +22,7 @@
- oauth2中相同的用户会得到相同的token
- `ms.security.oauth2.storeType`token的策略,不设置这个值的是时候默认生成`jwt`的token,如果设置值为`redis`的时候生成的默认的token将会存储在redis中
- `ms.security.oauth2.jwtSigningKey` 生成jwt的token的秘钥
+- `ms.security.oauth2.clientStoreType` oauth2服务商client详情的存储方式,默认mysql.填写其他值会存储在内存中
- `ms.security.oauth2.providerLoginPage`oauth2服务提供商提供用户登录的页面
- `ms.security.oauth2.providerLoginProcessUrl`oauth2服务提供商处理用户登录进程的url
- `ms.security.oauth2.clients[i].clientId` 配置oauth2授权的clientId
diff --git a/boot-starter/boot-starter-security-oauth/pom.xml b/boot-starter/boot-starter-security-oauth/pom.xml
index e2f6cfe..2db7cb2 100644
--- a/boot-starter/boot-starter-security-oauth/pom.xml
+++ b/boot-starter/boot-starter-security-oauth/pom.xml
@@ -29,6 +29,10 @@
org.springframework.boot
spring-boot-starter-data-redis
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+
org.springframework.boot
spring-boot-configuration-processor
@@ -54,6 +58,17 @@
commons-beanutils
commons-beanutils
+
+
+ mysql
+ mysql-connector-java
+ runtime
+
+
+
+ com.alibaba
+ druid-spring-boot-starter
+
org.springframework.boot
spring-boot-configuration-processor
diff --git a/boot-starter/boot-starter-security-oauth/src/main/java/com/micro/fast/security/app/config/authorization2/provider/AuthorizationProviderConfig.java b/boot-starter/boot-starter-security-oauth/src/main/java/com/micro/fast/security/app/config/authorization2/provider/AuthorizationProviderConfig.java
index 037433d..597eabf 100644
--- a/boot-starter/boot-starter-security-oauth/src/main/java/com/micro/fast/security/app/config/authorization2/provider/AuthorizationProviderConfig.java
+++ b/boot-starter/boot-starter-security-oauth/src/main/java/com/micro/fast/security/app/config/authorization2/provider/AuthorizationProviderConfig.java
@@ -8,6 +8,7 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.oauth2.config.annotation.builders.InMemoryClientDetailsServiceBuilder;
+import org.springframework.security.oauth2.config.annotation.builders.JdbcClientDetailsServiceBuilder;
import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer;
import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer;
@@ -17,6 +18,7 @@ import org.springframework.security.oauth2.provider.token.TokenEnhancerChain;
import org.springframework.security.oauth2.provider.token.TokenStore;
import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;
+import javax.sql.DataSource;
import java.util.ArrayList;
import java.util.List;
@@ -43,6 +45,9 @@ public class AuthorizationProviderConfig extends AuthorizationServerConfigurerAd
@Autowired
private SecurityProperties securityProperties;
+ @Autowired
+ private DataSource dataSource;
+
/**
* jwtToken转换器
* 只有在jwt环境下才生效
@@ -91,18 +96,22 @@ public class AuthorizationProviderConfig extends AuthorizationServerConfigurerAd
*/
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
- InMemoryClientDetailsServiceBuilder builder = clients.inMemory();
- if (ArrayUtils.isNotEmpty(securityProperties.getOauth2().getClients())){
- for (OAuth2ClientProperties client: securityProperties.getOauth2().getClients()){
- builder.withClient(client.getClientId()).secret(client.getClientSecret())
- //token的过期时间
- .accessTokenValiditySeconds(client.getAccessTokenValiditySeconds())
- //授权类型
- .authorizedGrantTypes(client.getAuthorizedGrantTypes())
- //refreshToken的过期时间,refreshToken是用来在用户无感知的情况下换取token的
- .refreshTokenValiditySeconds(client.getAccessTokenValiditySeconds())
- //授权scope
- .scopes(client.getScopes());
+ if ("mysql".equals(securityProperties.getOauth2().getClientStoreType())) {
+ JdbcClientDetailsServiceBuilder jdbc = clients.jdbc(dataSource);
+ } else {
+ InMemoryClientDetailsServiceBuilder builder = clients.inMemory();
+ if (ArrayUtils.isNotEmpty(securityProperties.getOauth2().getClients())){
+ for (OAuth2ClientProperties client: securityProperties.getOauth2().getClients()){
+ builder.withClient(client.getClientId()).secret(client.getClientSecret())
+ //token的过期时间
+ .accessTokenValiditySeconds(client.getAccessTokenValiditySeconds())
+ //授权类型
+ .authorizedGrantTypes(client.getAuthorizedGrantTypes())
+ //refreshToken的过期时间,refreshToken是用来在用户无感知的情况下换取token的
+ .refreshTokenValiditySeconds(client.getAccessTokenValiditySeconds())
+ //授权scope
+ .scopes(client.getScopes());
+ }
}
}
}
diff --git a/boot-starter/boot-starter-security-oauth/src/main/java/com/micro/fast/security/app/config/authorization2/provider/Oauth2ProviderSecurity.java b/boot-starter/boot-starter-security-oauth/src/main/java/com/micro/fast/security/app/config/authorization2/provider/Oauth2ProviderSecurity.java
index c240877..cda5cae 100644
--- a/boot-starter/boot-starter-security-oauth/src/main/java/com/micro/fast/security/app/config/authorization2/provider/Oauth2ProviderSecurity.java
+++ b/boot-starter/boot-starter-security-oauth/src/main/java/com/micro/fast/security/app/config/authorization2/provider/Oauth2ProviderSecurity.java
@@ -7,12 +7,13 @@ import org.springframework.security.config.annotation.web.configuration.EnableWe
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
+import org.springframework.stereotype.Controller;
/**
* oauth2服务提供商的授权拦截的配置,用于拦截/oauth/authorize过滤器链的优先级高于资源服务器授权过滤连的优先级
* @author lsy
*/
-@EnableWebSecurity
+//@EnableWebSecurity
public class Oauth2ProviderSecurity extends WebSecurityConfigurerAdapter {
@Autowired
@@ -50,6 +51,10 @@ public class Oauth2ProviderSecurity extends WebSecurityConfigurerAdapter {
.antMatchers("/oauth/authorize")
.authenticated()
.and()
+ .authorizeRequests()
+ .antMatchers("/user/login")
+ .permitAll()
+ .and()
.csrf()
.disable();
}
diff --git a/boot-starter/boot-starter-security-oauth/src/main/java/com/micro/fast/security/app/master/OAuth2Properties.java b/boot-starter/boot-starter-security-oauth/src/main/java/com/micro/fast/security/app/master/OAuth2Properties.java
index 4de67c9..3cc6ef1 100644
--- a/boot-starter/boot-starter-security-oauth/src/main/java/com/micro/fast/security/app/master/OAuth2Properties.java
+++ b/boot-starter/boot-starter-security-oauth/src/main/java/com/micro/fast/security/app/master/OAuth2Properties.java
@@ -35,4 +35,6 @@ public class OAuth2Properties {
* 服务提供商授权时处理登录的路径
*/
private String providerLoginProcessUrl = "/oauth/login/process";
+
+ private String clientStoreType = "mysql";
}
diff --git a/boot-starter/boot-starter-ssm/README.md b/boot-starter/boot-starter-ssm/README.md
index 6d97fcc..3e537b4 100644
--- a/boot-starter/boot-starter-ssm/README.md
+++ b/boot-starter/boot-starter-ssm/README.md
@@ -19,3 +19,12 @@
- 如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array .
- 如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可以封装成map,实际上如果你在传入参数的时候,在MyBatis里面也是会把它封装成一个Map的,map的key就是参数名,所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key.
+### boot-starter-ssm模块提供了增强的程序运行时运行初始化数据库脚本功能
+spring-boot提供了默认的启动时执行数据库脚本功能,指定`spring.datasource.schema`属性即可。boot-starter-ssm对此功能进行了增强,
+默认提供了主从两个数据源的配置bean.如果想要某个数据源程序启动时执行sql脚本。只需在druid数据源配置增加`sql-path`属性,并且保证
+配置`username,password,url,driver-class-name`.如果这仍然不满足你的需求,你想要配置更多的数据源,并且需要启动时各自执行各自的sql
+脚本。对于以上需求本项目也是满足的。你只需参照[druid官网的配置说明](https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter)配置
+更多的数据源,像增加多个druid数据源一样增加`com.micro.fast.common.init.properties.SqlInitProperties`类的配置bean,然后满足上述
+两个数据源时同样要求即可。
+
+
diff --git a/boot-starter/boot-starter-ssm/src/main/java/com/micro/fast/common/init/InitUpmsSystem.java b/boot-starter/boot-starter-ssm/src/main/java/com/micro/fast/common/init/InitUpmsSystem.java
new file mode 100644
index 0000000..ce22e11
--- /dev/null
+++ b/boot-starter/boot-starter-ssm/src/main/java/com/micro/fast/common/init/InitUpmsSystem.java
@@ -0,0 +1,83 @@
+package com.micro.fast.common.init;
+
+import com.micro.fast.common.init.properties.SqlInitProperties;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.io.Resources;
+import org.apache.ibatis.jdbc.ScriptRunner;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationListener;
+import org.springframework.context.event.ContextRefreshedEvent;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.nio.charset.Charset;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.util.Map;
+
+/**
+ * 单一数据源时初始化数据库表结构和数据
+ * 如果配置多个数据源,按此自行添加
+ * @author lsy
+ */
+@Component
+@Slf4j
+public class InitUpmsSystem implements ApplicationListener {
+ public static final String ANNOTATION_CONFIG_EMBEDDED_WEB_APPLICATION_CONTEXT = "AnnotationConfigEmbeddedWebApplicationContext";
+ public static final String ANNOTATION_CONFIG_APPLICATION_CONTEXT = "AnnotationConfigApplicationContext";
+
+ @Autowired
+ private Map sqlInitPropertiesMap;
+
+ @Override
+ public void onApplicationEvent(ContextRefreshedEvent event) {
+ ApplicationContext applicationContext = event.getApplicationContext();
+ ApplicationContext parent = applicationContext.getParent();
+ // 保证springBoot上下文初始化完毕
+ if (applicationContext.getDisplayName().contains(ANNOTATION_CONFIG_EMBEDDED_WEB_APPLICATION_CONTEXT)
+ && parent.getDisplayName().contains(ANNOTATION_CONFIG_APPLICATION_CONTEXT)) {
+ // 初始化数据表
+ sqlInitPropertiesMap.forEach((key,value) -> {
+ if (value != null) {
+ runInitSql(value.getDriverClassName(),value.getUrl(),value.getUsername(),value.getPassword(),value.getSqlPath());
+ }
+ });
+ log.info("name:{} displayName: {} parentName:{} parentName: {}",
+ applicationContext.getApplicationName(),
+ applicationContext.getDisplayName(),
+ parent.getApplicationName(),
+ parent.getDisplayName());
+ }
+ }
+
+ /**
+ * 执行初始化sql
+ * @param driver 数据库驱动全类名
+ * @param url 数据库连接url
+ * @param username 数据库连接的用户名
+ * @param password 数据库连接的密码
+ * @param sqlPath sql脚本的路径
+ */
+ private void runInitSql(String driver,String url,String username,String password,String sqlPath){
+ try {
+ // 执行sql脚本
+ Class.forName(driver);
+ Connection connection = DriverManager.getConnection(url, username, password);
+ ScriptRunner scriptRunner = new ScriptRunner(connection);
+ Resources.setCharset(Charset.forName("utf-8"));
+ Reader resourceAsReader = Resources.getResourceAsReader(sqlPath);
+ scriptRunner.runScript(resourceAsReader);
+ scriptRunner.closeConnection();
+ connection.close();
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/boot-starter/boot-starter-ssm/src/main/java/com/micro/fast/common/init/config/InitConfig.java b/boot-starter/boot-starter-ssm/src/main/java/com/micro/fast/common/init/config/InitConfig.java
new file mode 100644
index 0000000..73b0db9
--- /dev/null
+++ b/boot-starter/boot-starter-ssm/src/main/java/com/micro/fast/common/init/config/InitConfig.java
@@ -0,0 +1,29 @@
+package com.micro.fast.common.init.config;
+
+import com.micro.fast.common.init.properties.SqlInitProperties;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * sql初始化配置类
+ * @author lsy
+ */
+@Configuration
+public class InitConfig {
+
+ @Bean
+ @ConfigurationProperties("spring.datasource.druid")
+ @ConditionalOnProperty("spring.datasource.druid.sql-path")
+ public SqlInitProperties dataSourceInitProperties(){
+ return new SqlInitProperties();
+ }
+
+ @Bean
+ @ConfigurationProperties("spring.datasource.druid.master")
+ @ConditionalOnProperty("spring.datasource.druid.master.sql-path")
+ public SqlInitProperties masterDataSourceInitProperties(){
+ return new SqlInitProperties();
+ }
+}
diff --git a/boot-starter/boot-starter-ssm/src/main/java/com/micro/fast/common/init/properties/SqlInitProperties.java b/boot-starter/boot-starter-ssm/src/main/java/com/micro/fast/common/init/properties/SqlInitProperties.java
new file mode 100644
index 0000000..aa24134
--- /dev/null
+++ b/boot-starter/boot-starter-ssm/src/main/java/com/micro/fast/common/init/properties/SqlInitProperties.java
@@ -0,0 +1,40 @@
+package com.micro.fast.common.init.properties;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 运行sql脚本相关的配置
+ * @author lsy
+ */
+@Getter
+@Setter
+public class SqlInitProperties {
+
+
+ /**
+ * 数据库连接用户名
+ */
+ private String username;
+
+ /**
+ * 数据库连接密码
+ */
+ private String password;
+
+ /**
+ * 数据库连接驱动全类名
+ */
+ private String driverClassName;
+
+ /**
+ * 数据库连接url
+ */
+ private String url;
+
+ /**
+ * 执行脚本的classpath路径
+ */
+ private String sqlPath;
+
+}
diff --git a/ms/oauth/pom.xml b/ms/oauth/pom.xml
index 6adbccd..68ea7c2 100644
--- a/ms/oauth/pom.xml
+++ b/ms/oauth/pom.xml
@@ -13,7 +13,7 @@
com.micro.fast
ms
0.0.1-SNAPSHOT
-
+
diff --git a/ms/oauth/src/main/resources/sql/Oauth2Client.sql b/ms/oauth/src/main/resources/sql/Oauth2Client.sql
new file mode 100644
index 0000000..294f29a
--- /dev/null
+++ b/ms/oauth/src/main/resources/sql/Oauth2Client.sql
@@ -0,0 +1,15 @@
+create table IF NOT EXISTS oauth_client_details (
+ client_id VARCHAR(256) PRIMARY KEY,
+ resource_ids VARCHAR(256),
+ client_secret VARCHAR(256),
+ scope VARCHAR(256),
+ authorized_grant_types VARCHAR(256),
+ web_server_redirect_uri VARCHAR(256),
+ authorities VARCHAR(256),
+ access_token_validity INTEGER,
+ refresh_token_validity INTEGER,
+ additional_information VARCHAR(4096),
+ autoapprove VARCHAR(256)
+);
+# 初始化数据
+INSERT INTO oauth_client_details VALUE ('ms',NULL ,'ms','all,write,read','code,password,custom,refresh_token',NULL ,NULL ,NULL ,NULL,NULL ,NULL);
\ No newline at end of file
diff --git a/ms/ucenter/src/main/resources/sql/ucenter.sql b/ms/ucenter/src/main/resources/sql/ucenter.sql
new file mode 100644
index 0000000..cc37cff
--- /dev/null
+++ b/ms/ucenter/src/main/resources/sql/ucenter.sql
@@ -0,0 +1,136 @@
+/*
+ Source Server : 127.0.0.1
+ Source Host : localhost:3317
+ Source Database : micro
+
+ Target Server Type : MYSQL
+ Target Server Version : 5.7
+ File Encoding : utf-8
+ Author : lishouyu
+ Email : 18332763730@163.com
+*/
+# 外键检查,不允许有外键
+SET FOREIGN_KEY_CHECKS = 0;
+-- ucenter用户中心
+-- ------------------------------------
+-- ucenter_user_details ucenter用户详情表
+-- ------------------------------------
+CREATE TABLE IF NOT EXISTS ucenter_user_details (
+ `id` INT(10) UNSIGNED AUTO_INCREMENT NOT NULL
+ COMMENT '编号',
+ `signature` VARCHAR(300) DEFAULT NULL
+ COMMENT '个性签名',
+ `real_name` VARCHAR(20) DEFAULT NULL
+ COMMENT '真实姓名',
+ `birthday` DATETIME DEFAULT NULL
+ COMMENT '出生日期',
+ `question` VARCHAR(100) DEFAULT NULL
+ COMMENT '账号安全问题',
+ `answer` VARCHAR(100) DEFAULT NULL
+ COMMENT '账号安全答案',
+ `ctime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '创建时间',
+ `uptime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '修改时间',
+ `version` INT(10) UNSIGNED DEFAULT 0
+ COMMENT '数据版本',
+ PRIMARY KEY (`id`)
+)
+ ENGINE = InnoDB
+ DEFAULT CHARSET = utf8;
+-- ------------------------------------
+-- ucenter_user ucenter用户表
+-- ------------------------------------
+CREATE TABLE IF NOT EXISTS ucenter_user (
+ `id` INT(10) UNSIGNED AUTO_INCREMENT NOT NULL
+ COMMENT '编号',
+ `password` VARCHAR(200) NOT NULL
+ COMMENT '密码(MD5(密码+salt))',
+ `salt` VARCHAR(32) DEFAULT NULL
+ COMMENT '盐值',
+ `nickname` VARCHAR(32) DEFAULT NULL
+ COMMENT '昵称',
+ `sex` TINYINT(4) DEFAULT NULL
+ COMMENT '性别 0未知 1男 2女',
+ `avatar` VARCHAR(100) DEFAULT NULL
+ COMMENT '头像',
+ `create_ip` VARCHAR(50) DEFAULT NULL
+ COMMENT '注册ip',
+ `last_login_time` DATETIME DEFAULT NULL
+ COMMENT '最后登陆时间',
+ `last_login_ip` VARCHAR(50) DEFAULT NULL
+ COMMENT '最后登录的ip',
+ `ctime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '创建时间',
+ `uptime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '修改时间',
+ `version` INT(10) UNSIGNED DEFAULT 0
+ COMMENT '数据版本',
+ PRIMARY KEY (`id`)
+)
+ ENGINE = InnoDB
+ DEFAULT CHARSET = utf8;
+-- -----------------------------
+-- ucenter_user_log 用户操作日志表
+-- -----------------------------
+CREATE TABLE IF NOT EXISTS ucenter_user_log (
+ `id` INT(10) UNSIGNED AUTO_INCREMENT NOT NULL
+ COMMENT '编号',
+ `user_id` INT(10) UNSIGNED DEFAULT NULL
+ COMMENT '用户编号',
+ `content` VARBINARY(100) DEFAULT NULL
+ COMMENT '内容',
+ `ip` VARCHAR(20) DEFAULT NULL
+ COMMENT '操作ip',
+ `agent` VARBINARY(200) DEFAULT NULL
+ COMMENT '操作环境',
+ `ctime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '创建时间',
+ `uptime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '修改时间',
+ `version` INT(10) UNSIGNED DEFAULT 0
+ COMMENT '数据版本',
+ PRIMARY KEY (`id`),
+ KEY `ucenter_user_log_user_id_index` (`user_id`) USING BTREE
+)
+ ENGINE = InnoDB
+ DEFAULT CHARSET = utf8;
+-- ------------------------------
+-- ucenter_user_oauth 用户认证方式表
+-- -------------------------------
+CREATE TABLE IF NOT EXISTS ucenter_user_oauth (
+ `id` INT(10) UNSIGNED AUTO_INCREMENT NOT NULL
+ COMMENT '编号',
+ `user_id` INT(10) UNSIGNED DEFAULT NULL
+ COMMENT '用户编号',
+ `oauth_id` INT(10) UNSIGNED DEFAULT NULL
+ COMMENT '认证方式编号',
+ `open_id` VARBINARY(50) DEFAULT NULL
+ COMMENT '第三方id',
+ `status` TINYINT(4) DEFAULT NULL
+ COMMENT '绑定状态 0绑定 1解绑',
+ `ctime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '创建时间',
+ `uptime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '修改时间',
+ `version` INT(10) UNSIGNED DEFAULT 0
+ COMMENT '数据版本',
+ PRIMARY KEY (`id`),
+ KEY `ucenter_user_oauth_user_id_index` (`user_id`) USING BTREE
+)
+ ENGINE = InnoDB
+ DEFAULT CHARSET = utf8;
+-- ------------------------
+-- ucenter_oauth 认证方式表
+-- ------------------------
+CREATE TABLE IF NOT EXISTS ucenter_oauth(
+ `id` INT(10) UNSIGNED AUTO_INCREMENT NOT NULL COMMENT '编号',
+ `name` VARCHAR(20) NOT NULL COMMENT '认证方式名称',
+ `ctime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '创建时间',
+ `uptime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '修改时间',
+ `version` INT(10) UNSIGNED DEFAULT 0
+ COMMENT '数据版本',
+ PRIMARY KEY (`id`)
+)ENGINE =InnoDB DEFAULT CHARSET =utf8;
diff --git a/ms/upms/src/main/resources/sql/upms.sql b/ms/upms/src/main/resources/sql/upms.sql
new file mode 100644
index 0000000..0f45f45
--- /dev/null
+++ b/ms/upms/src/main/resources/sql/upms.sql
@@ -0,0 +1,318 @@
+/*
+ Source Server : 127.0.0.1
+ Source Host : localhost:3317
+ Source Database : micro
+
+ Target Server Type : MYSQL
+ Target Server Version : 5.7
+ File Encoding : utf-8
+ Author : lishouyu
+ Email : 18332763730@163.com
+*/
+# 外键检查,不能有外键
+SET FOREIGN_KEY_CHECKS = 0;
+-- upms用户权限管理系统
+
+-- -------------------------
+-- upms_log upms操作日志
+-- -------------------------
+CREATE TABLE IF NOT EXISTS `upms_log` (
+ `id` INT(10) UNSIGNED AUTO_INCREMENT NOT NULL
+ COMMENT '日志编号',
+ `descirption` VARCHAR(100) DEFAULT NULL
+ COMMENT '操作描述',
+ `username` VARCHAR(20) DEFAULT NULL
+ COMMENT '操作用户',
+ `start_time` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '操作时间',
+ `spend_time` INT UNSIGNED DEFAULT NULL
+ COMMENT '消耗时间',
+ `base_path` VARCHAR(100) DEFAULT NULL
+ COMMENT '根路径',
+ `uri` VARCHAR(200) DEFAULT NULL
+ COMMENT 'URI',
+ `url` VARCHAR(200) DEFAULT NULL
+ COMMENT 'URL',
+ `method` VARCHAR(10) DEFAULT NULL
+ COMMENT '请求的类型',
+ `parameter` MEDIUMTEXT DEFAULT NULL
+ COMMENT '请求参数',
+ `user_agent` VARCHAR(200) DEFAULT NULL
+ COMMENT '用户标识',
+ `ip` VARCHAR(30) DEFAULT NULL
+ COMMENT 'ip地址',
+ `result` MEDIUMTEXT DEFAULT NULL
+ COMMENT '响应结果',
+ `permissions` VARCHAR(100) DEFAULT NULL
+ COMMENT '权限值',
+ `ctime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '创建时间',
+ `uptime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '修改时间',
+ `version` INT(10) UNSIGNED DEFAULT 0
+ COMMENT '数据版本',
+ PRIMARY KEY (`id`)
+)
+ ENGINE = InnoDB
+ DEFAULT CHARSET = utf8;
+
+-- ------------------
+-- upms_user upms用户表
+-- ------------------
+CREATE TABLE IF NOT EXISTS upms_user (
+ `id` INT(10) UNSIGNED AUTO_INCREMENT NOT NULL
+ COMMENT '用户的编号',
+ `username` VARCHAR(20) NOT NULL
+ COMMENT '用户名',
+ `password` VARCHAR(200) NOT NULL
+ COMMENT '密码加密后的md5值(密码+盐值)',
+ `salt` VARCHAR(32) DEFAULT NULL
+ COMMENT '盐值',
+ `realname` VARCHAR(20) DEFAULT NULL
+ COMMENT '真实姓名',
+ `avatar` VARCHAR(150) DEFAULT NULL
+ COMMENT '头像',
+ `phone` VARCHAR(20) DEFAULT NULL
+ COMMENT '电话',
+ `email` VARCHAR(50) DEFAULT NULL
+ COMMENT '电子邮箱',
+ `sex` TINYINT(4) DEFAULT NULL
+ COMMENT '性别',
+ `locked` TINYINT(4) DEFAULT NULL
+ COMMENT '账号状态',
+ `ctime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '创建时间',
+ `uptime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '修改时间',
+ `version` INT(10) UNSIGNED DEFAULT 0
+ COMMENT '数据版本',
+ PRIMARY KEY (`id`)
+)
+ ENGINE = InnoDB
+ DEFAULT CHARSET = utf8;
+
+-- --------------------------
+-- upms_organization upms组织表
+-- ---------------------------
+CREATE TABLE IF NOT EXISTS upms_organization (
+ `id` INT(10) UNSIGNED AUTO_INCREMENT NOT NULL
+ COMMENT '组织的编号',
+ `pid` INT(10) UNSIGNED DEFAULT NULL
+ COMMENT '所属上级',
+ `name` VARCHAR(20) DEFAULT NULL
+ COMMENT '组织名称',
+ `description` VARCHAR(1000) DEFAULT NULL
+ COMMENT '组织描述',
+ `ctime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '创建时间',
+ `uptime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '修改时间',
+ `version` INT(10) UNSIGNED DEFAULT 0
+ COMMENT '数据版本',
+ PRIMARY KEY (`id`)
+)
+ ENGINE = InnoDB
+ DEFAULT CHARSET = utf8;
+
+-- ---------------------
+-- upms_role upms角色表
+-- ---------------------
+CREATE TABLE IF NOT EXISTS upms_role (
+ `id` INT(10) UNSIGNED AUTO_INCREMENT NOT NULL
+ COMMENT '角色编号',
+ `name` VARCHAR(20) DEFAULT NULL
+ COMMENT '角色名称',
+ `description` VARCHAR(1000) DEFAULT NULL
+ COMMENT '角色描述',
+ `orders` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '排序',
+ `ctime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '创建时间',
+ `uptime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '修改时间',
+ `version` INT(10) UNSIGNED DEFAULT 0
+ COMMENT '数据版本',
+ PRIMARY KEY (`id`)
+)
+ ENGINE = InnoDB
+ DEFAULT CHARSET = utf8;
+
+-- ---------------------------
+-- upms_permission upms权限
+-- ---------------------------
+CREATE TABLE IF NOT EXISTS upms_permission (
+ `id` INT(10) UNSIGNED AUTO_INCREMENT NOT NULL
+ COMMENT '权限编号',
+ `system_id` INT(10) UNSIGNED DEFAULT NULL
+ COMMENT '所属系统',
+ `pid` INT(10) UNSIGNED DEFAULT NULL
+ COMMENT '所属上级',
+ `name` VARCHAR(20) DEFAULT NULL
+ COMMENT '名称',
+ `description` VARCHAR(200) DEFAULT NULL
+ COMMENT '权限描述',
+ `type` TINYINT(4) DEFAULT NULL
+ COMMENT '类型 1.视图授权2.数据授权',
+ `permission_value` VARCHAR(50) DEFAULT NULL
+ COMMENT '权限值',
+ `uri` VARCHAR(100) DEFAULT NULL
+ COMMENT '路径',
+ `icon` VARCHAR(50) DEFAULT NULL
+ COMMENT '图标',
+ `status` TINYINT(4) DEFAULT NULL
+ COMMENT '状态 0 禁止 1 正常',
+ `orders` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '排序',
+ `ctime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '创建时间',
+ `uptime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '修改时间',
+ `version` INT(10) UNSIGNED DEFAULT 0
+ COMMENT '数据版本',
+ PRIMARY KEY (`id`),
+ KEY `upms_permission_system_id_index` (`system_id`) USING BTREE COMMENT 'B+树索引'
+)
+ ENGINE = InnoDB
+ DEFAULT CHARSET = utf8;
+
+-- -------------------------
+-- upms_system upms系统表
+-- -------------------------
+CREATE TABLE IF NOT EXISTS upms_system (
+ `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT
+ COMMENT '系统编号',
+ `icon` VARCHAR(50) DEFAULT NULL
+ COMMENT '图标',
+ `banner` VARCHAR(150) DEFAULT NULL
+ COMMENT '背景',
+ `theme` VARCHAR(50) DEFAULT NULL
+ COMMENT '主题',
+ `basepath` VARCHAR(100) DEFAULT NULL
+ COMMENT '根目录',
+ `status` TINYINT(4) DEFAULT NULL
+ COMMENT '状态 0 黑名单 1 正常',
+ `name` VARCHAR(20) DEFAULT NULL
+ COMMENT '系统名称',
+ `route` VARCHAR(20) DEFAULT NULL
+ COMMENT '系统路由',
+ `title` VARCHAR(20) DEFAULT NULL
+ COMMENT '系统标题',
+ `description` VARCHAR(300) DEFAULT NULL
+ COMMENT '系统描述',
+ `orders` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '排序',
+ `ctime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '创建时间',
+ `uptime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '修改时间',
+ `version` INT(10) UNSIGNED DEFAULT 0
+ COMMENT '数据版本',
+ PRIMARY KEY (`id`)
+)
+ ENGINE = InnoDB
+ DEFAULT CHARSET = utf8;
+# 关联关系表
+-- --------------------------
+-- upms_user_organization 用户_组织关联表
+-- --------------------------
+CREATE TABLE IF NOT EXISTS upms_user_organization (
+ `id` INT(10) UNSIGNED AUTO_INCREMENT NOT NULL
+ COMMENT '编号',
+ `user_id` INT(10) UNSIGNED NOT NULL
+ COMMENT '用户编号',
+ `organization_id` INT(10) UNSIGNED NOT NULL
+ COMMENT '组织编号',
+ `ctime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '创建时间',
+ `uptime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '修改时间',
+ `version` INT(10) UNSIGNED DEFAULT 0
+ COMMENT '数据版本',
+ PRIMARY KEY (`id`),
+ KEY `upms_user_organization_user_id_index` (`user_id`) USING BTREE COMMENT 'B+树索引',
+ KEY `upms_user_organization_organization_id_index` (`organization_id`) USING BTREE COMMENT 'B+树索引'
+)
+ ENGINE = InnoDB
+ DEFAULT CHARACTER SET = utf8;
+
+-- ----------------------------
+-- upms_user_role 用户_角色关联表
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS upms_user_role (
+ `id` INT(10) UNSIGNED AUTO_INCREMENT NOT NULL
+ COMMENT '编号',
+ `user_id` INT(10) UNSIGNED NOT NULL
+ COMMENT '用户编号',
+ `role_id` INT(10) UNSIGNED NOT NULL
+ COMMENT '角色编号',
+ `ctime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '创建时间',
+ `uptime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '修改时间',
+ `version` INT(10) UNSIGNED DEFAULT 0
+ COMMENT '数据版本',
+ PRIMARY KEY (`id`),
+ KEY ` upms_user_role_user_id_index` (`user_id`) USING BTREE COMMENT 'B+树索引',
+ KEY ` upms_user_role_role_id_index` (`role_id`) USING BTREE COMMENT 'B+树索引'
+)
+ ENGINE = InnoDB
+ DEFAULT CHARSET = utf8;
+
+# -- ----------------------------------
+# -- upms_user_permission 用户_权限关联表
+# -- ----------------------------------
+# CREATE TABLE IF NOT EXISTS upms_user_permission (
+# `id` INT(10) UNSIGNED AUTO_INCREMENT NOT NULL
+# COMMENT '编号',
+# `user_id` INT(10) UNSIGNED NOT NULL
+# COMMENT '用户编号',
+# `permission_id` INT(10) UNSIGNED NOT NULL
+# COMMENT '权限编号',
+# `type` TINYINT(4) NOT NULL
+# COMMENT '权限类型 -1 减权限',
+# `ctime` BIGINT(20) UNSIGNED DEFAULT NULL
+# COMMENT '创建时间',
+# `uptime` BIGINT(20) UNSIGNED DEFAULT NULL
+# COMMENT '修改时间',
+# `version` INT(10) UNSIGNED DEFAULT 0
+# COMMENT '数据版本',
+# PRIMARY KEY (`id`),
+# KEY `upms_user_permission_user_id_index` (`user_id`) USING BTREE COMMENT 'B+树索引',
+# KEY `upms_user_permission_permission_id_index` (`permission_id`) USING BTREE COMMENT 'B+树索引'
+# )
+# ENGINE = InnoDB
+# DEFAULT CHARSET utf8;
+
+-- ----------------------------------
+-- upms_role_permission 角色_权限关联表
+-- ----------------------------------
+CREATE TABLE IF NOT EXISTS upms_role_permission (
+ `id` INT(10) UNSIGNED AUTO_INCREMENT NOT NULL
+ COMMENT '编号',
+ `role_id` INT(10) UNSIGNED NOT NULL
+ COMMENT '角色编号',
+ `permission_id` INT(10) UNSIGNED NOT NULL
+ COMMENT '权限编号',
+ `ctime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '创建时间',
+ `uptime` BIGINT(20) UNSIGNED DEFAULT NULL
+ COMMENT '修改时间',
+ `version` INT(10) UNSIGNED DEFAULT 0
+ COMMENT '数据版本',
+ PRIMARY KEY (`id`),
+ KEY `upms_role_permission_role_id_index` (`role_id`) USING BTREE COMMENT 'B+树索引',
+ KEY `upms_role_permission_permission_id_index` (`permission_id`) USING BTREE COMMENT 'B+树索引'
+)
+ ENGINE = InnoDB
+ DEFAULT CHARSET = utf8;
+
+# ##########################
+# 初始化数据
+# ##########################
+
+# 初始化管理员数据
+INSERT INTO upms_user VALUE (1,'admin','$2a$10$Tqf5dVNDPBLwGSKrtK4zeuxMHY54qoJgqRQiLQZsLSsFmsWqY/gOa',NULL ,'micro-fast'
+ ,NULL ,'18332751256','18332763730@163.com',0,0,unix_timestamp(now()),unix_timestamp(now()) ,0);
+
+# 初始化组织数据
+INSERT INTO upms_organization VALUE (1,0,'micro-fast项目部','负责micro-fast项目开源工作',unix_timestamp(now()),unix_timestamp(now()),0);
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 749cb4d..0205071 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,6 +43,7 @@
1.2.2.RELEASE
UTF-8
+ 5.21.0
1.4.0.RELEASE
registry.cn-hangzhou.aliyuncs.com/lishouyu/hub
UTF-8