diff --git a/pom.xml b/pom.xml
index b20e7f059..e69ab1532 100644
--- a/pom.xml
+++ b/pom.xml
@@ -39,6 +39,7 @@
0.2.0
1.18.26
1.72
+ 1.16.5
2.7.0
@@ -111,6 +112,13 @@
import
+
+
+ me.zhyd.oauth
+ JustAuth
+ ${justauth.version}
+
+
org.dromara
diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index af5f23967..e57c444a7 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -75,6 +75,16 @@
spring-boot-starter-test
test
+
+ me.zhyd.oauth
+ JustAuth
+
+
+ org.dromara
+ ruoyi-common-social
+ 5.1.0-SNAPSHOT
+ compile
+
diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java b/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java
index 689a55de1..3628b05d7 100644
--- a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java
+++ b/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java
@@ -6,11 +6,15 @@ import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import me.zhyd.oauth.model.AuthResponse;
+import me.zhyd.oauth.model.AuthUser;
import org.dromara.common.core.constant.Constants;
import org.dromara.common.core.constant.GlobalConstants;
import org.dromara.common.core.constant.TenantConstants;
+import org.dromara.common.core.domain.R;
import org.dromara.common.core.domain.dto.RoleDTO;
import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.core.domain.model.XcxLoginUser;
@@ -29,14 +33,21 @@ import org.dromara.common.tenant.exception.TenantException;
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.common.web.config.properties.CaptchaProperties;
import org.dromara.system.domain.SysUser;
+import org.dromara.system.domain.bo.SocialUserBo;
+import org.dromara.system.domain.bo.SysUserBo;
+import org.dromara.system.domain.vo.SocialUserVo;
import org.dromara.system.domain.vo.SysTenantVo;
import org.dromara.system.domain.vo.SysUserVo;
+import org.dromara.system.mapper.SocialUserMapper;
import org.dromara.system.mapper.SysUserMapper;
+import org.dromara.system.service.ISocialUserService;
import org.dromara.system.service.ISysPermissionService;
import org.dromara.system.service.ISysTenantService;
+import org.dromara.system.service.ISysUserService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
+import java.io.IOException;
import java.time.Duration;
import java.util.Date;
import java.util.List;
@@ -53,6 +64,8 @@ import java.util.function.Supplier;
public class SysLoginService {
private final SysUserMapper userMapper;
+ private final ISocialUserService socialUserService;
+ private final ISysUserService userService;
private final CaptchaProperties captchaProperties;
private final ISysPermissionService permissionService;
private final ISysTenantService tenantService;
@@ -154,6 +167,44 @@ public class SysLoginService {
return StpUtil.getTokenValue();
}
+ /**
+ * 社交登录
+ *
+ * @param source 登录来源
+ * @param authUser 授权响应实体
+ * @param request Http请求对象
+ * @return 统一响应实体
+ */
+ public R socialLogin(String source, AuthResponse authUser, HttpServletRequest request) throws IOException {
+ // 判断授权响应是否成功
+ if (!authUser.ok()) {
+ return R.fail("对不起,授权信息验证不通过,请退出重试!");
+ }
+ AuthUser authUserData = authUser.getData();
+ // 查询社交用户信息,判断是否已经绑定,如果已经绑定则直接登录,否则验证是否登录,未登录则先登录再绑定
+ SocialUserVo user = socialUserService.selectSocialUserByAuthId(source + authUserData.getUuid());
+ if (ObjectUtil.isNotNull(user)) {
+ checkTenant(user.getTenantId());
+ SysUserVo dbUser = loadUserByUsername(user.getTenantId(), user.getUserName());
+ LoginHelper.loginByDevice(buildLoginUser(dbUser), DeviceType.SOCIAL);
+ recordLogininfor(dbUser.getTenantId(), user.getUserName(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"));
+ recordLoginInfo(user.getUserId());
+ } else {
+ // 判断是否已登录
+ if (LoginHelper.getUserId() == null) {
+ return R.fail("授权失败,请先登录再绑定");
+ }
+ SocialUserBo socialUserBo = new SocialUserBo();
+ socialUserService.insertByBo(setAuthUserData(authUserData, socialUserBo));
+ SysUserVo lodingData = loadUserByUsername(LoginHelper.getTenantId(), LoginHelper.getUsername());
+ checkTenant(lodingData.getTenantId());
+ LoginHelper.loginByDevice(buildLoginUser(lodingData), DeviceType.SOCIAL);
+ recordLogininfor(lodingData.getTenantId(), socialUserBo.getUserName(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"));
+ recordLoginInfo(socialUserBo.getUserId());
+ }
+ return R.ok(StpUtil.getTokenValue());
+ }
+
/**
* 退出登录
*/
@@ -235,9 +286,9 @@ public class SysLoginService {
private SysUserVo loadUserByUsername(String tenantId, String username) {
SysUser user = userMapper.selectOne(new LambdaQueryWrapper()
- .select(SysUser::getUserName, SysUser::getStatus)
- .eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId)
- .eq(SysUser::getUserName, username));
+ .select(SysUser::getUserName, SysUser::getStatus)
+ .eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId)
+ .eq(SysUser::getUserName, username));
if (ObjectUtil.isNull(user)) {
log.info("登录用户:{} 不存在.", username);
throw new UserException("user.not.exists", username);
@@ -253,9 +304,9 @@ public class SysLoginService {
private SysUserVo loadUserByPhonenumber(String tenantId, String phonenumber) {
SysUser user = userMapper.selectOne(new LambdaQueryWrapper()
- .select(SysUser::getPhonenumber, SysUser::getStatus)
- .eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId)
- .eq(SysUser::getPhonenumber, phonenumber));
+ .select(SysUser::getPhonenumber, SysUser::getStatus)
+ .eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId)
+ .eq(SysUser::getPhonenumber, phonenumber));
if (ObjectUtil.isNull(user)) {
log.info("登录用户:{} 不存在.", phonenumber);
throw new UserException("user.not.exists", phonenumber);
@@ -383,10 +434,35 @@ public class SysLoginService {
log.info("登录租户:{} 已被停用.", tenantId);
throw new TenantException("tenant.blocked");
} else if (ObjectUtil.isNotNull(tenant.getExpireTime())
- && new Date().after(tenant.getExpireTime())) {
+ && new Date().after(tenant.getExpireTime())) {
log.info("登录租户:{} 已超过有效期.", tenantId);
throw new TenantException("tenant.expired");
}
}
+
+ public SocialUserBo setAuthUserData(AuthUser authUserData, SocialUserBo socialUser) {
+ socialUser.setUserId(LoginHelper.getUserId());
+ socialUser.setAuthId(authUserData.getSource() + authUserData.getUuid());
+ socialUser.setSource(authUserData.getSource());
+ socialUser.setUserName(authUserData.getUsername());
+ socialUser.setNickName(authUserData.getNickname());
+ socialUser.setAvatar(authUserData.getAvatar());
+ socialUser.setEmail(authUserData.getEmail());
+ socialUser.setOpenId(authUserData.getUuid());
+ socialUser.setAccessToken(authUserData.getToken().getAccessToken());
+ socialUser.setExpireIn(authUserData.getToken().getExpireIn());
+ socialUser.setRefreshToken(authUserData.getToken().getRefreshToken());
+ socialUser.setAccessCode(authUserData.getToken().getAccessCode());
+ socialUser.setUnionId(authUserData.getToken().getUnionId());
+ socialUser.setScope(authUserData.getToken().getScope());
+ socialUser.setTokenType(authUserData.getToken().getTokenType());
+ socialUser.setIdToken(authUserData.getToken().getIdToken());
+ socialUser.setMacAlgorithm(authUserData.getToken().getMacAlgorithm());
+ socialUser.setMacKey(authUserData.getToken().getMacKey());
+ socialUser.setCode(authUserData.getToken().getCode());
+ socialUser.setOauthToken(authUserData.getToken().getOauthToken());
+ socialUser.setOauthTokenSecret(authUserData.getToken().getOauthTokenSecret());
+ return socialUser;
+ }
}
diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml
index 0428aea78..45493d3e9 100644
--- a/ruoyi-common/pom.xml
+++ b/ruoyi-common/pom.xml
@@ -11,6 +11,7 @@
ruoyi-common-bom
+ ruoyi-common-social
ruoyi-common-core
ruoyi-common-doc
ruoyi-common-excel
diff --git a/ruoyi-common/ruoyi-common-social/pom.xml b/ruoyi-common/ruoyi-common-social/pom.xml
new file mode 100644
index 000000000..b87479b4b
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-social/pom.xml
@@ -0,0 +1,38 @@
+
+
+
+ org.dromara
+ ruoyi-common
+ ${revision}
+ ../pom.xml
+
+ 4.0.0
+ ruoyi-common-social
+
+ ruoyi-common-auth 认证模块
+
+
+
+ me.zhyd.oauth
+ JustAuth
+
+
+ org.projectlombok
+ lombok
+
+
+ org.springframework.boot
+ spring-boot
+
+
+ org.springframework.boot
+ spring-boot-autoconfigure
+
+
+ org.dromara
+ ruoyi-common-redis
+
+
+
diff --git a/ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/config/SocialConfig.java b/ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/config/SocialConfig.java
new file mode 100644
index 000000000..c50c56038
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/config/SocialConfig.java
@@ -0,0 +1,24 @@
+package org.dromara.common.social.config;
+
+import me.zhyd.oauth.cache.AuthStateCache;
+import org.dromara.common.social.config.properties.SocialProperties;
+import org.dromara.common.social.utils.AuthRedisStateCache;
+import org.springframework.boot.autoconfigure.AutoConfiguration;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+
+/**
+ * Social 配置属性
+ * @author thiszhc
+ */
+@AutoConfiguration
+@EnableConfigurationProperties(SocialProperties.class)
+public class SocialConfig {
+
+ @Bean
+ public AuthStateCache redis() {
+ return new AuthRedisStateCache();
+ }
+
+}
diff --git a/ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/config/properties/SocialProperties.java b/ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/config/properties/SocialProperties.java
new file mode 100644
index 000000000..4240ebabd
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/config/properties/SocialProperties.java
@@ -0,0 +1,39 @@
+package org.dromara.common.social.config.properties;
+
+import lombok.Data;
+import org.springframework.boot.autoconfigure.cache.CacheProperties;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * Social 配置属性
+ * @author thiszhc
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "justauth")
+public class SocialProperties {
+
+ /**
+ * 是否启用
+ */
+ private boolean enabled;
+
+ /**
+ * 授权类型
+ */
+ private Map type;
+
+ /**
+ * 授权过期时间
+ */
+ private long timeout;
+
+ /**
+ * 授权缓存配置
+ */
+ private CacheProperties cache = new CacheProperties();
+
+}
diff --git a/ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/utils/SocialUtils.java b/ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/utils/SocialUtils.java
new file mode 100644
index 000000000..b3a1cd1f4
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/utils/SocialUtils.java
@@ -0,0 +1,119 @@
+package org.dromara.common.social.utils;
+
+import me.zhyd.oauth.cache.AuthStateCache;
+import me.zhyd.oauth.config.AuthConfig;
+import me.zhyd.oauth.exception.AuthException;
+import me.zhyd.oauth.request.*;
+
+/**
+ * 认证授权工具类
+ *
+ * @author thiszhc
+ */
+public class SocialUtils {
+
+ public static AuthRequest getAuthRequest(String source,
+ String clientId,
+ String clientSecret,
+ String redirectUri) throws AuthException {
+ AuthRequest authRequest = null;
+ switch (source.toLowerCase()) {
+ case "dingtalk" ->
+ authRequest = new AuthDingTalkRequest(AuthConfig.builder().
+ clientId(clientId).
+ clientSecret(clientSecret)
+ .redirectUri(redirectUri).
+ build());
+ case "baidu" ->
+ authRequest = new AuthBaiduRequest(AuthConfig.builder().
+ clientId(clientId).
+ clientSecret(clientSecret)
+ .redirectUri(redirectUri).
+ build());
+ case "github" ->
+ authRequest = new AuthGithubRequest(AuthConfig.builder().clientId(clientId).clientSecret(clientSecret)
+ .redirectUri(redirectUri).build());
+ case "gitee" ->
+ authRequest = new AuthGiteeRequest(AuthConfig.builder().clientId(clientId).clientSecret(clientSecret)
+ .redirectUri(redirectUri).build());
+ case "weibo" ->
+ authRequest = new AuthWeiboRequest(AuthConfig.builder().clientId(clientId).clientSecret(clientSecret)
+ .redirectUri(redirectUri).build());
+ case "coding" ->
+ authRequest = new AuthCodingRequest(AuthConfig.builder().clientId(clientId).clientSecret(clientSecret)
+ .redirectUri(redirectUri).build());
+ case "oschina" ->
+ authRequest = new AuthOschinaRequest(AuthConfig.builder().clientId(clientId).clientSecret(clientSecret)
+ .redirectUri(redirectUri).build());
+ case "alipay" ->
+ // 支付宝在创建回调地址时,不允许使用localhost或者127.0.0.1,所以这儿的回调地址使用的局域网内的ip
+ authRequest = new AuthAlipayRequest(AuthConfig.builder().clientId(clientId).clientSecret(clientSecret)
+ .alipayPublicKey("").redirectUri(redirectUri).build());
+ case "qq" ->
+ authRequest = new AuthQqRequest(AuthConfig.builder().clientId(clientId).clientSecret(clientSecret)
+ .redirectUri(redirectUri).build());
+ case "wechat_open" -> authRequest = new AuthWeChatOpenRequest(AuthConfig.builder().clientId(clientId)
+ .clientSecret(clientSecret).redirectUri(redirectUri).build());
+ case "csdn" ->
+ authRequest = new AuthCsdnRequest(AuthConfig.builder().clientId(clientId).clientSecret(clientSecret)
+ .redirectUri(redirectUri).build());
+ case "taobao" ->
+ authRequest = new AuthTaobaoRequest(AuthConfig.builder().clientId(clientId).clientSecret(clientSecret)
+ .redirectUri(redirectUri).build());
+ case "douyin" ->
+ authRequest = new AuthDouyinRequest(AuthConfig.builder().clientId(clientId).clientSecret(clientSecret)
+ .redirectUri(redirectUri).build());
+ case "linkedin" ->
+ authRequest = new AuthLinkedinRequest(AuthConfig.builder().clientId(clientId).clientSecret(clientSecret)
+ .redirectUri(redirectUri).build());
+ case "microsoft" -> authRequest = new AuthMicrosoftRequest(AuthConfig.builder().clientId(clientId)
+ .clientSecret(clientSecret).redirectUri(redirectUri).build());
+ case "mi" ->
+ authRequest = new AuthMiRequest(AuthConfig.builder().clientId(clientId).clientSecret(clientSecret)
+ .redirectUri(redirectUri).build());
+ case "toutiao" ->
+ authRequest = new AuthToutiaoRequest(AuthConfig.builder().clientId(clientId).clientSecret(clientSecret)
+ .redirectUri(redirectUri).build());
+ case "teambition" -> authRequest = new AuthTeambitionRequest(AuthConfig.builder().clientId(clientId)
+ .clientSecret(clientSecret).redirectUri(redirectUri).build());
+ case "pinterest" -> authRequest = new AuthPinterestRequest(AuthConfig.builder().clientId(clientId)
+ .clientSecret(clientSecret).redirectUri(redirectUri).build());
+ case "renren" ->
+ authRequest = new AuthRenrenRequest(AuthConfig.builder().clientId(clientId).clientSecret(clientSecret)
+ .redirectUri(redirectUri).build());
+ case "stack_overflow" -> authRequest = new AuthStackOverflowRequest(AuthConfig.builder().clientId(clientId)
+ .clientSecret(clientSecret).redirectUri(redirectUri).stackOverflowKey("").build());
+ case "huawei" ->
+ authRequest = new AuthHuaweiRequest(AuthConfig.builder().clientId(clientId).clientSecret(clientSecret)
+ .redirectUri(redirectUri).build());
+ case "wechat_enterprise" ->
+ authRequest = new AuthWeChatEnterpriseQrcodeRequest(AuthConfig.builder().clientId(clientId)
+ .clientSecret(clientSecret).redirectUri(redirectUri).agentId("").build());
+ case "kujiale" ->
+ authRequest = new AuthKujialeRequest(AuthConfig.builder().clientId(clientId).clientSecret(clientSecret)
+ .redirectUri(redirectUri).build());
+ case "gitlab" ->
+ authRequest = new AuthGitlabRequest(AuthConfig.builder().clientId(clientId).clientSecret(clientSecret)
+ .redirectUri(redirectUri).build());
+ case "meituan" ->
+ authRequest = new AuthMeituanRequest(AuthConfig.builder().clientId(clientId).clientSecret(clientSecret)
+ .redirectUri(redirectUri).build());
+ case "eleme" ->
+ authRequest = new AuthElemeRequest(AuthConfig.builder().clientId(clientId).clientSecret(clientSecret)
+ .redirectUri(redirectUri).build());
+ case "wechat_mp" ->
+ authRequest = new AuthWeChatMpRequest(AuthConfig.builder().clientId(clientId).clientSecret(clientSecret)
+ .redirectUri(redirectUri).build());
+ case "aliyun" ->
+ authRequest = new AuthAliyunRequest(AuthConfig.builder().clientId(clientId).clientSecret(clientSecret)
+ .redirectUri(redirectUri).build());
+ default -> {
+ }
+ }
+ if (null == authRequest) {
+ throw new AuthException("未获取到有效的Auth配置");
+ }
+ return authRequest;
+ }
+}
+
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SocialUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SocialUserController.java
new file mode 100644
index 000000000..91994062f
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SocialUserController.java
@@ -0,0 +1,105 @@
+package org.dromara.system.controller.system;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.vo.SocialUserVo;
+import org.dromara.system.domain.bo.SocialUserBo;
+import org.dromara.system.service.ISocialUserService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 社会化关系
+ *
+ * @author thiszhc
+ * @date 2023-06-12
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/system/socialUser")
+public class SocialUserController extends BaseController {
+
+ private final ISocialUserService socialUserService;
+
+ /**
+ * 查询社会化关系列表
+ */
+ @SaCheckPermission("system:user:list")
+ @GetMapping("/list")
+ public TableDataInfo list(SocialUserBo bo, PageQuery pageQuery) {
+ return socialUserService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出社会化关系列表
+ */
+ @SaCheckPermission("system:user:export")
+ @Log(title = "社会化关系", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(SocialUserBo bo, HttpServletResponse response) {
+ List list = socialUserService.queryList(bo);
+ ExcelUtil.exportExcel(list, "社会化关系", SocialUserVo.class, response);
+ }
+
+ /**
+ * 获取社会化关系详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("system:user:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(socialUserService.queryById(id));
+ }
+
+ /**
+ * 新增社会化关系
+ */
+ @SaCheckPermission("system:user:add")
+ @Log(title = "社会化关系", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody SocialUserBo bo) {
+ return toAjax(socialUserService.insertByBo(bo));
+ }
+
+ /**
+ * 修改社会化关系
+ */
+ @SaCheckPermission("system:user:edit")
+ @Log(title = "社会化关系", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody SocialUserBo bo) {
+ return toAjax(socialUserService.updateByBo(bo));
+ }
+
+ /**
+ * 删除社会化关系
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("system:user:remove")
+ @Log(title = "社会化关系", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(socialUserService.deleteWithValidByIds(List.of(ids), true));
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SocialUser.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SocialUser.java
new file mode 100644
index 000000000..5258b36cc
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SocialUser.java
@@ -0,0 +1,136 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 社会化关系对象 social_user
+ *
+ * @author thiszhc
+ * @date 2023-06-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("social_user")
+public class SocialUser extends BaseEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+
+ /**
+ * 的唯一ID
+ */
+ private String authId;
+
+ /**
+ * 用户来源
+ */
+ private String source;
+
+ /**
+ * 用户的授权令牌
+ */
+ private String accessToken;
+
+ /**
+ * 用户的授权令牌的有效期,部分平台可能没有
+ */
+ private int expireIn;
+
+ /**
+ * 刷新令牌,部分平台可能没有
+ */
+ private String refreshToken;
+
+ /**
+ * 用户的 open id
+ */
+ private String openId;
+
+ /**
+ * 用户的 ID
+ */
+ private Long userId;
+
+ /**
+ * 授权的第三方账号
+ */
+ private String userName;
+
+ /**
+ * 授权的第三方昵称
+ */
+ private String nickName;
+
+ /**
+ * 授权的第三方邮箱
+ */
+ private String email;
+
+ /**
+ * 授权的第三方头像地址
+ */
+ private String avatar;
+
+ /**
+ * 平台的授权信息,部分平台可能没有
+ */
+ private String accessCode;
+
+ /**
+ * 用户的 unionid
+ */
+ private String unionId;
+
+ /**
+ * 授予的权限,部分平台可能没有
+ */
+ private String scope;
+
+ /**
+ * 个别平台的授权信息,部分平台可能没有
+ */
+ private String tokenType;
+
+ /**
+ * id token,部分平台可能没有
+ */
+ private String idToken;
+
+ /**
+ * 小米平台用户的附带属性,部分平台可能没有
+ */
+ private String macAlgorithm;
+
+ /**
+ * 小米平台用户的附带属性,部分平台可能没有
+ */
+ private String macKey;
+
+ /**
+ * 用户的授权code,部分平台可能没有
+ */
+ private String code;
+
+ /**
+ * Twitter平台用户的附带属性,部分平台可能没有
+ */
+ private String oauthToken;
+
+ /**
+ * Twitter平台用户的附带属性,部分平台可能没有
+ */
+ private String oauthTokenSecret;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SocialUserBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SocialUserBo.java
new file mode 100644
index 000000000..8d9ae6099
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SocialUserBo.java
@@ -0,0 +1,141 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import org.dromara.system.domain.SocialUser;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 社会化关系业务对象 social_user
+ *
+ * @author Lion Li
+ * @date 2023-06-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = SocialUser.class, reverseConvertGenerate = false)
+public class SocialUserBo extends TenantEntity {
+
+ /**
+ * 主键
+ */
+ @NotNull(message = "主键不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 的唯一ID
+ */
+ @NotBlank(message = "的唯一ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String authId;
+
+ /**
+ * 用户来源
+ */
+ @NotBlank(message = "用户来源不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String source;
+
+ /**
+ * 用户的授权令牌
+ */
+ @NotBlank(message = "用户的授权令牌不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String accessToken;
+
+ /**
+ * 用户的授权令牌的有效期,部分平台可能没有
+ */
+ private int expireIn;
+
+ /**
+ * 刷新令牌,部分平台可能没有
+ */
+ private String refreshToken;
+
+ /**
+ * 用户的 open id
+ */
+ @NotBlank(message = "用户的 open id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String openId;
+
+ /**
+ * 用户的 ID
+ */
+ @NotBlank(message = "用户的 ID不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long userId;
+
+ /**
+ * 平台的授权信息,部分平台可能没有
+ */
+ private String accessCode;
+
+ /**
+ * 用户的 unionid
+ */
+ private String unionId;
+
+ /**
+ * 授予的权限,部分平台可能没有
+ */
+ private String scope;
+
+ /**
+ * 授权的第三方账号
+ */
+ private String userName;
+
+ /**
+ * 授权的第三方昵称
+ */
+ private String nickName;
+
+ /**
+ * 授权的第三方邮箱
+ */
+ private String email;
+
+ /**
+ * 授权的第三方头像地址
+ */
+ private String avatar;
+
+ /**
+ * 个别平台的授权信息,部分平台可能没有
+ */
+ private String tokenType;
+
+ /**
+ * id token,部分平台可能没有
+ */
+ private String idToken;
+
+ /**
+ * 小米平台用户的附带属性,部分平台可能没有
+ */
+ private String macAlgorithm;
+
+ /**
+ * 小米平台用户的附带属性,部分平台可能没有
+ */
+ private String macKey;
+
+ /**
+ * 用户的授权code,部分平台可能没有
+ */
+ private String code;
+
+ /**
+ * Twitter平台用户的附带属性,部分平台可能没有
+ */
+ private String oauthToken;
+
+ /**
+ * Twitter平台用户的附带属性,部分平台可能没有
+ */
+ private String oauthTokenSecret;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SocialUserVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SocialUserVo.java
new file mode 100644
index 000000000..77643ac96
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SocialUserVo.java
@@ -0,0 +1,162 @@
+package org.dromara.system.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import org.dromara.common.tenant.core.TenantEntity;
+import org.dromara.system.domain.SocialUser;
+
+import java.io.Serial;
+
+
+
+/**
+ * 社会化关系视图对象 social_user
+ *
+ * @author thiszhc
+ * @date 2023-06-12
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = SocialUser.class)
+public class SocialUserVo extends TenantEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @ExcelProperty(value = "主键")
+ private Long id;
+
+ /**
+ * 的唯一ID
+ */
+ @ExcelProperty(value = "授权UUID")
+ private String authId;
+
+ /**
+ * 用户来源
+ */
+ @ExcelProperty(value = "用户来源")
+ private String source;
+
+ /**
+ * 用户的授权令牌
+ */
+ @ExcelProperty(value = "用户的授权令牌")
+ private String accessToken;
+
+ /**
+ * 用户的授权令牌的有效期,部分平台可能没有
+ */
+ @ExcelProperty(value = "用户的授权令牌的有效期,部分平台可能没有")
+ private int expireIn;
+
+ /**
+ * 刷新令牌,部分平台可能没有
+ */
+ @ExcelProperty(value = "刷新令牌,部分平台可能没有")
+ private String refreshToken;
+
+ /**
+ * 用户的 open id
+ */
+ @ExcelProperty(value = "用户的 open id")
+ private String openId;
+
+ /**
+ * 用户的 ID
+ */
+ @ExcelProperty(value = "用户的 ID")
+ private Long userId;
+
+ /**
+ * 授权的第三方账号
+ */
+ @ExcelProperty(value = "授权的第三方账号")
+ private String userName;
+
+ /**
+ * 授权的第三方昵称
+ */
+ @ExcelProperty(value = "授权的第三方昵称")
+ private String nickName;
+
+ /**
+ * 授权的第三方邮箱
+ */
+ @ExcelProperty(value = "授权的第三方邮箱")
+ private String email;
+
+ /**
+ * 授权的第三方头像地址
+ */
+ @ExcelProperty(value = "授权的第三方头像地址")
+ private String avatar;
+
+
+ /**
+ * 平台的授权信息,部分平台可能没有
+ */
+ @ExcelProperty(value = "平台的授权信息,部分平台可能没有")
+ private String accessCode;
+
+ /**
+ * 用户的 unionid
+ */
+ @ExcelProperty(value = "用户的 unionid")
+ private String unionId;
+
+ /**
+ * 授予的权限,部分平台可能没有
+ */
+ @ExcelProperty(value = "授予的权限,部分平台可能没有")
+ private String scope;
+
+ /**
+ * 个别平台的授权信息,部分平台可能没有
+ */
+ @ExcelProperty(value = "个别平台的授权信息,部分平台可能没有")
+ private String tokenType;
+
+ /**
+ * id token,部分平台可能没有
+ */
+ @ExcelProperty(value = "id token,部分平台可能没有")
+ private String idToken;
+
+ /**
+ * 小米平台用户的附带属性,部分平台可能没有
+ */
+ @ExcelProperty(value = "小米平台用户的附带属性,部分平台可能没有")
+ private String macAlgorithm;
+
+ /**
+ * 小米平台用户的附带属性,部分平台可能没有
+ */
+ @ExcelProperty(value = "小米平台用户的附带属性,部分平台可能没有")
+ private String macKey;
+
+ /**
+ * 用户的授权code,部分平台可能没有
+ */
+ @ExcelProperty(value = "用户的授权code,部分平台可能没有")
+ private String code;
+
+ /**
+ * Twitter平台用户的附带属性,部分平台可能没有
+ */
+ @ExcelProperty(value = "Twitter平台用户的附带属性,部分平台可能没有")
+ private String oauthToken;
+
+ /**
+ * Twitter平台用户的附带属性,部分平台可能没有
+ */
+ @ExcelProperty(value = "Twitter平台用户的附带属性,部分平台可能没有")
+ private String oauthTokenSecret;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SocialUserMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SocialUserMapper.java
new file mode 100644
index 000000000..f110d5d2a
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SocialUserMapper.java
@@ -0,0 +1,23 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.SocialUser;
+import org.dromara.system.domain.bo.SysUserBo;
+import org.dromara.system.domain.vo.SocialUserVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 社会化关系Mapper接口
+ *
+ * @author thiszhc
+ * @date 2023-06-12
+ */
+public interface SocialUserMapper extends BaseMapperPlus {
+
+ /**
+ * 根据authId查询SocialUser表和SysUser表,返回SocialUserAuthResult映射的对象
+ * @param authId 认证ID
+ * @return SocialUser
+ */
+ SocialUserVo selectSocialUserByAuthId(String authId);
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISocialUserService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISocialUserService.java
new file mode 100644
index 000000000..f16cf1646
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISocialUserService.java
@@ -0,0 +1,71 @@
+package org.dromara.system.service;
+
+import org.dromara.system.domain.SocialUser;
+import org.dromara.system.domain.bo.SysUserBo;
+import org.dromara.system.domain.vo.SocialUserVo;
+import org.dromara.system.domain.bo.SocialUserBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.system.domain.vo.SysUserVo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 社会化关系Service接口
+ *
+ * @author thiszhc
+ * @date 2023-06-12
+ */
+public interface ISocialUserService {
+
+ /**
+ * 查询授权关系
+ */
+ SocialUserVo queryById(Long id);
+
+ /**
+ * 查询授权列表
+ */
+ TableDataInfo queryPageList(SocialUserBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询授权列表
+ */
+ List queryList(SocialUserBo bo);
+
+ /**
+ * 新增授权关系
+ */
+ Boolean insertByBo(SocialUserBo bo);
+
+ /**
+ * 修改授权关系
+ */
+ Boolean updateByBo(SocialUserBo bo);
+
+ /**
+ * 校验并批量删除社会化关系信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+
+ /**
+ * 删除社会化关系信息
+ */
+ Boolean deleteWithValidById(Long id);
+
+
+ /**
+ * 根据用户ID查询授权关系
+ */
+ Boolean isExistByUserIdAndSource(Long userId, String source);
+
+
+ /**
+ * 根据authId查询SocialUser表和SysUser表,返回SocialUserAuthResult映射的对象
+ * @param authId 认证ID
+ * @return SocialUser
+ */
+ SocialUserVo selectSocialUserByAuthId(String authId);
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SocialUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SocialUserServiceImpl.java
new file mode 100644
index 000000000..c130fb7e6
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SocialUserServiceImpl.java
@@ -0,0 +1,162 @@
+package org.dromara.system.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.dromara.system.domain.bo.SysUserBo;
+import org.dromara.system.domain.vo.SysUserVo;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.SocialUserBo;
+import org.dromara.system.domain.vo.SocialUserVo;
+import org.dromara.system.domain.SocialUser;
+import org.dromara.system.mapper.SocialUserMapper;
+import org.dromara.system.service.ISocialUserService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 社会化关系Service业务层处理
+ *
+ * @author thiszhc
+ * @date 2023-06-12
+ */
+@RequiredArgsConstructor
+@Service
+public class SocialUserServiceImpl implements ISocialUserService {
+
+ private final SocialUserMapper baseMapper;
+
+ /**
+ * 查询社会化关系
+ */
+ @Override
+ public SocialUserVo queryById(Long id) {
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 查询社会化关系列表
+ */
+ @Override
+ public TableDataInfo queryPageList(SocialUserBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询社会化关系列表
+ */
+ @Override
+ public List queryList(SocialUserBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(SocialUserBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(StringUtils.isNotBlank(bo.getAuthId()), SocialUser::getAuthId, bo.getAuthId());
+ lqw.eq(StringUtils.isNotBlank(bo.getSource()), SocialUser::getSource, bo.getSource());
+ lqw.eq(StringUtils.isNotBlank(bo.getAccessToken()), SocialUser::getAccessToken, bo.getAccessToken());
+ lqw.eq(bo.getExpireIn() != 0, SocialUser::getExpireIn, bo.getExpireIn());
+ lqw.eq(StringUtils.isNotBlank(bo.getRefreshToken()), SocialUser::getRefreshToken, bo.getRefreshToken());
+ lqw.eq(StringUtils.isNotBlank(bo.getOpenId()), SocialUser::getOpenId, bo.getOpenId());
+ lqw.eq(StringUtils.isNotBlank(bo.getScope()), SocialUser::getScope, bo.getScope());
+ lqw.eq(StringUtils.isNotBlank(bo.getAccessCode()), SocialUser::getAccessCode, bo.getAccessCode());
+ lqw.eq(StringUtils.isNotBlank(bo.getUnionId()), SocialUser::getUnionId, bo.getUnionId());
+ lqw.eq(StringUtils.isNotBlank(bo.getScope()), SocialUser::getScope, bo.getScope());
+ lqw.eq(StringUtils.isNotBlank(bo.getTokenType()), SocialUser::getTokenType, bo.getTokenType());
+ lqw.eq(StringUtils.isNotBlank(bo.getIdToken()), SocialUser::getIdToken, bo.getIdToken());
+ lqw.eq(StringUtils.isNotBlank(bo.getMacAlgorithm()), SocialUser::getMacAlgorithm, bo.getMacAlgorithm());
+ lqw.eq(StringUtils.isNotBlank(bo.getMacKey()), SocialUser::getMacKey, bo.getMacKey());
+ lqw.eq(StringUtils.isNotBlank(bo.getCode()), SocialUser::getCode, bo.getCode());
+ lqw.eq(StringUtils.isNotBlank(bo.getOauthToken()), SocialUser::getOauthToken, bo.getOauthToken());
+ lqw.eq(StringUtils.isNotBlank(bo.getOauthTokenSecret()), SocialUser::getOauthTokenSecret, bo.getOauthTokenSecret());
+ return lqw;
+ }
+
+ /**
+ * 新增社会化关系
+ */
+ @Override
+ public Boolean insertByBo(SocialUserBo bo) {
+ SocialUser add = MapstructUtils.convert(bo, SocialUser.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改社会化关系
+ */
+ @Override
+ public Boolean updateByBo(SocialUserBo bo) {
+ SocialUser update = MapstructUtils.convert(bo, SocialUser.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(SocialUser entity) {
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 批量删除社会化关系
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if (isValid) {
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteBatchIds(ids) > 0;
+ }
+
+ /**
+ * 删除社会化关系
+ */
+ @Override
+ public Boolean deleteWithValidById(Long id) {
+ return baseMapper.deleteById(id) > 0;
+ }
+
+ /**
+ * 根据用户id和来源查询用户是否存在
+ *
+ * @param userId 用户id
+ * @param source 来源
+ * @return 是否存在
+ */
+ @Override
+ public Boolean isExistByUserIdAndSource(Long userId, String source) {
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(SocialUser::getUserId, userId);
+ lqw.eq(SocialUser::getSource, source);
+ return baseMapper.selectCount(lqw) > 0;
+ }
+
+ /**
+ * 根据authId查询用户信息
+ *
+ * @param authId 用户id
+ * @return 用户信息
+ */
+ @Override
+ public SocialUserVo selectSocialUserByAuthId(String authId) {
+ return baseMapper.selectSocialUserByAuthId(authId);
+ }
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SocialUserMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SocialUserMapper.xml
new file mode 100644
index 000000000..fb636b162
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SocialUserMapper.xml
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+ select id,
+ user_id,
+ tenant_id,
+ auth_id,
+ source,
+ open_id,
+ access_token,
+ expire_in,
+ refresh_token,
+ access_code,
+ union_id,
+ scope,
+ token_type,
+ id_token,
+ mac_algorithm,
+ mac_key,
+ code,
+ oauth_token,
+ oauth_token_secret,
+ create_dept,
+ create_by,
+ create_time,
+ update_by,
+ update_time
+ from social_user
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/script/sql/ry_vue_5.X.sql b/script/sql/ry_vue_5.X.sql
index 713d962d4..8c10bb2c2 100644
--- a/script/sql/ry_vue_5.X.sql
+++ b/script/sql/ry_vue_5.X.sql
@@ -1,136 +1,208 @@
+
+-- ----------------------------
+-- 第三方平台授权表
+-- ----------------------------
+CREATE TABLE `social_user`
+(
+ `id` bigint unsigned NOT NULL COMMENT '主键',
+ `user_id` bigint NOT NULL COMMENT '用户ID',
+ `tenant_id` varchar(20) DEFAULT NULL COMMENT '租户id',
+ `auth_id` varchar(255) NOT NULL COMMENT '授权+授权openid',
+ `source` varchar(255) NOT NULL COMMENT '用户来源',
+ `open_id` varchar(255) DEFAULT NULL COMMENT '原生open id',
+ `user_name` varchar(30) NOT NULL COMMENT '登录账号',
+ `nick_name` varchar(30) DEFAULT '' COMMENT '用户昵称',
+ `email` varchar(255) DEFAULT '' COMMENT '用户邮箱',
+ `avatar` varchar(500) DEFAULT '' COMMENT '头像地址',
+ `access_token` varchar(255) NOT NULL COMMENT '用户的授权令牌',
+ `expire_in` int DEFAULT NULL COMMENT '用户的授权令牌的有效期,部分平台可能没有',
+ `refresh_token` varchar(255) DEFAULT NULL COMMENT '刷新令牌,部分平台可能没有',
+ `access_code` varchar(255) DEFAULT NULL COMMENT '平台的授权信息,部分平台可能没有',
+ `union_id` varchar(255) DEFAULT NULL COMMENT '用户的 unionid',
+ `scope` varchar(255) DEFAULT NULL COMMENT '授予的权限,部分平台可能没有',
+ `token_type` varchar(255) DEFAULT NULL COMMENT '个别平台的授权信息,部分平台可能没有',
+ `id_token` varchar(255) DEFAULT NULL COMMENT 'id token,部分平台可能没有',
+ `mac_algorithm` varchar(255) DEFAULT NULL COMMENT '小米平台用户的附带属性,部分平台可能没有',
+ `mac_key` varchar(255) DEFAULT NULL COMMENT '小米平台用户的附带属性,部分平台可能没有',
+ `code` varchar(255) DEFAULT NULL COMMENT '用户的授权code,部分平台可能没有',
+ `oauth_token` varchar(255) DEFAULT NULL COMMENT 'Twitter平台用户的附带属性,部分平台可能没有',
+ `oauth_token_secret` varchar(255) DEFAULT NULL COMMENT 'Twitter平台用户的附带属性,部分平台可能没有',
+ `create_dept` bigint DEFAULT NULL COMMENT '创建部门',
+ `create_by` bigint NOT NULL COMMENT '创建人',
+ `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_by` bigint NOT NULL COMMENT '更新人',
+ `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+ `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_general_ci
+ ROW_FORMAT = DYNAMIC COMMENT ='社会化关系表';
+
-- ----------------------------
-- 租户表
-- ----------------------------
drop table if exists sys_tenant;
create table sys_tenant
(
- id bigint(20) not null comment 'id',
- tenant_id varchar(20) not null comment '租户编号',
- contact_user_name varchar(20) comment '联系人',
- contact_phone varchar(20) comment '联系电话',
- company_name varchar(50) comment '企业名称',
- license_number varchar(30) comment '统一社会信用代码',
- address varchar(200) comment '地址',
- intro varchar(200) comment '企业简介',
- domain varchar(200) comment '域名',
- remark varchar(200) comment '备注',
- package_id bigint(20) comment '租户套餐编号',
- expire_time datetime comment '过期时间',
- account_count int default -1 comment '用户数量(-1不限制)',
- status char(1) default '0' comment '租户状态(0正常 1停用)',
- del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)',
- create_dept bigint(20) comment '创建部门',
- create_by bigint(20) comment '创建者',
- create_time datetime comment '创建时间',
- update_by bigint(20) comment '更新者',
- update_time datetime comment '更新时间',
+ id bigint(20) not null comment 'id',
+ tenant_id varchar(20) not null comment '租户编号',
+ contact_user_name varchar(20) comment '联系人',
+ contact_phone varchar(20) comment '联系电话',
+ company_name varchar(50) comment '企业名称',
+ license_number varchar(30) comment '统一社会信用代码',
+ address varchar(200) comment '地址',
+ intro varchar(200) comment '企业简介',
+ domain varchar(200) comment '域名',
+ remark varchar(200) comment '备注',
+ package_id bigint(20) comment '租户套餐编号',
+ expire_time datetime comment '过期时间',
+ account_count int default -1 comment '用户数量(-1不限制)',
+ status char(1) default '0' comment '租户状态(0正常 1停用)',
+ del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)',
+ create_dept bigint(20) comment '创建部门',
+ create_by bigint(20) comment '创建者',
+ create_time datetime comment '创建时间',
+ update_by bigint(20) comment '更新者',
+ update_time datetime comment '更新时间',
primary key (id)
-) engine=innodb comment = '租户表';
+) engine = innodb comment = '租户表';
-- ----------------------------
-- 初始化-租户表数据
-- ----------------------------
-insert into sys_tenant values(1, '000000', '管理组', '15888888888', 'XXX有限公司', NULL, NULL, '多租户通用后台管理管理系统', NULL, NULL, NULL, NULL, -1, '0', '0', 103, 1, sysdate(), NULL, NULL);
+insert into sys_tenant
+values (1, '000000', '管理组', '15888888888', 'XXX有限公司', NULL, NULL, '多租户通用后台管理管理系统', NULL, NULL, NULL,
+ NULL, -1, '0', '0', 103, 1, sysdate(), NULL, NULL);
-- ----------------------------
-- 租户套餐表
-- ----------------------------
drop table if exists sys_tenant_package;
-create table sys_tenant_package (
- package_id bigint(20) not null comment '租户套餐id',
- package_name varchar(20) comment '套餐名称',
- menu_ids varchar(3000) comment '关联菜单id',
- remark varchar(200) comment '备注',
- menu_check_strictly tinyint(1) default 1 comment '菜单树选择项是否关联显示',
- status char(1) default '0' comment '状态(0正常 1停用)',
- del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)',
- create_dept bigint(20) comment '创建部门',
- create_by bigint(20) comment '创建者',
- create_time datetime comment '创建时间',
- update_by bigint(20) comment '更新者',
- update_time datetime comment '更新时间',
+create table sys_tenant_package
+(
+ package_id bigint(20) not null comment '租户套餐id',
+ package_name varchar(20) comment '套餐名称',
+ menu_ids varchar(3000) comment '关联菜单id',
+ remark varchar(200) comment '备注',
+ menu_check_strictly tinyint(1) default 1 comment '菜单树选择项是否关联显示',
+ status char(1) default '0' comment '状态(0正常 1停用)',
+ del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)',
+ create_dept bigint(20) comment '创建部门',
+ create_by bigint(20) comment '创建者',
+ create_time datetime comment '创建时间',
+ update_by bigint(20) comment '更新者',
+ update_time datetime comment '更新时间',
primary key (package_id)
-) engine=innodb comment = '租户套餐表';
+) engine = innodb comment = '租户套餐表';
-- ----------------------------
-- 1、部门表
-- ----------------------------
drop table if exists sys_dept;
-create table sys_dept (
- dept_id bigint(20) not null comment '部门id',
- tenant_id varchar(20) default '000000' comment '租户编号',
- parent_id bigint(20) default 0 comment '父部门id',
- ancestors varchar(500) default '' comment '祖级列表',
- dept_name varchar(30) default '' comment '部门名称',
- order_num int(4) default 0 comment '显示顺序',
- leader varchar(20) default null comment '负责人',
- phone varchar(11) default null comment '联系电话',
- email varchar(50) default null comment '邮箱',
- status char(1) default '0' comment '部门状态(0正常 1停用)',
- del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)',
- create_dept bigint(20) default null comment '创建部门',
- create_by bigint(20) default null comment '创建者',
- create_time datetime comment '创建时间',
- update_by bigint(20) default null comment '更新者',
- update_time datetime comment '更新时间',
- primary key (dept_id)
-) engine=innodb comment = '部门表';
+create table sys_dept
+(
+ dept_id bigint(20) not null comment '部门id',
+ tenant_id varchar(20) default '000000' comment '租户编号',
+ parent_id bigint(20) default 0 comment '父部门id',
+ ancestors varchar(500) default '' comment '祖级列表',
+ dept_name varchar(30) default '' comment '部门名称',
+ order_num int(4) default 0 comment '显示顺序',
+ leader varchar(20) default null comment '负责人',
+ phone varchar(11) default null comment '联系电话',
+ email varchar(50) default null comment '邮箱',
+ status char(1) default '0' comment '部门状态(0正常 1停用)',
+ del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)',
+ create_dept bigint(20) default null comment '创建部门',
+ create_by bigint(20) default null comment '创建者',
+ create_time datetime comment '创建时间',
+ update_by bigint(20) default null comment '更新者',
+ update_time datetime comment '更新时间',
+ primary key (dept_id)
+) engine = innodb comment = '部门表';
-- ----------------------------
-- 初始化-部门表数据
-- ----------------------------
-insert into sys_dept values(100, '000000', 0, '0', 'XXX科技', 0, '疯狂的狮子Li', '15888888888', 'xxx@qq.com', '0', '0', 103, 1, sysdate(), null, null);
-insert into sys_dept values(101, '000000', 100, '0,100', '深圳总公司', 1, '疯狂的狮子Li', '15888888888', 'xxx@qq.com', '0', '0', 103, 1, sysdate(), null, null);
-insert into sys_dept values(102, '000000', 100, '0,100', '长沙分公司', 2, '疯狂的狮子Li', '15888888888', 'xxx@qq.com', '0', '0', 103, 1, sysdate(), null, null);
-insert into sys_dept values(103, '000000', 101, '0,100,101', '研发部门', 1, '疯狂的狮子Li', '15888888888', 'xxx@qq.com', '0', '0', 103, 1, sysdate(), null, null);
-insert into sys_dept values(104, '000000', 101, '0,100,101', '市场部门', 2, '疯狂的狮子Li', '15888888888', 'xxx@qq.com', '0', '0', 103, 1, sysdate(), null, null);
-insert into sys_dept values(105, '000000', 101, '0,100,101', '测试部门', 3, '疯狂的狮子Li', '15888888888', 'xxx@qq.com', '0', '0', 103, 1, sysdate(), null, null);
-insert into sys_dept values(106, '000000', 101, '0,100,101', '财务部门', 4, '疯狂的狮子Li', '15888888888', 'xxx@qq.com', '0', '0', 103, 1, sysdate(), null, null);
-insert into sys_dept values(107, '000000', 101, '0,100,101', '运维部门', 5, '疯狂的狮子Li', '15888888888', 'xxx@qq.com', '0', '0', 103, 1, sysdate(), null, null);
-insert into sys_dept values(108, '000000', 102, '0,100,102', '市场部门', 1, '疯狂的狮子Li', '15888888888', 'xxx@qq.com', '0', '0', 103, 1, sysdate(), null, null);
-insert into sys_dept values(109, '000000', 102, '0,100,102', '财务部门', 2, '疯狂的狮子Li', '15888888888', 'xxx@qq.com', '0', '0', 103, 1, sysdate(), null, null);
+insert into sys_dept
+values (100, '000000', 0, '0', 'XXX科技', 0, '疯狂的狮子Li', '15888888888', 'xxx@qq.com', '0', '0', 103, 1, sysdate(),
+ null, null);
+insert into sys_dept
+values (101, '000000', 100, '0,100', '深圳总公司', 1, '疯狂的狮子Li', '15888888888', 'xxx@qq.com', '0', '0', 103, 1,
+ sysdate(), null, null);
+insert into sys_dept
+values (102, '000000', 100, '0,100', '长沙分公司', 2, '疯狂的狮子Li', '15888888888', 'xxx@qq.com', '0', '0', 103, 1,
+ sysdate(), null, null);
+insert into sys_dept
+values (103, '000000', 101, '0,100,101', '研发部门', 1, '疯狂的狮子Li', '15888888888', 'xxx@qq.com', '0', '0', 103, 1,
+ sysdate(), null, null);
+insert into sys_dept
+values (104, '000000', 101, '0,100,101', '市场部门', 2, '疯狂的狮子Li', '15888888888', 'xxx@qq.com', '0', '0', 103, 1,
+ sysdate(), null, null);
+insert into sys_dept
+values (105, '000000', 101, '0,100,101', '测试部门', 3, '疯狂的狮子Li', '15888888888', 'xxx@qq.com', '0', '0', 103, 1,
+ sysdate(), null, null);
+insert into sys_dept
+values (106, '000000', 101, '0,100,101', '财务部门', 4, '疯狂的狮子Li', '15888888888', 'xxx@qq.com', '0', '0', 103, 1,
+ sysdate(), null, null);
+insert into sys_dept
+values (107, '000000', 101, '0,100,101', '运维部门', 5, '疯狂的狮子Li', '15888888888', 'xxx@qq.com', '0', '0', 103, 1,
+ sysdate(), null, null);
+insert into sys_dept
+values (108, '000000', 102, '0,100,102', '市场部门', 1, '疯狂的狮子Li', '15888888888', 'xxx@qq.com', '0', '0', 103, 1,
+ sysdate(), null, null);
+insert into sys_dept
+values (109, '000000', 102, '0,100,102', '财务部门', 2, '疯狂的狮子Li', '15888888888', 'xxx@qq.com', '0', '0', 103, 1,
+ sysdate(), null, null);
-- ----------------------------
-- 2、用户信息表
-- ----------------------------
drop table if exists sys_user;
-create table sys_user (
- user_id bigint(20) not null comment '用户ID',
- tenant_id varchar(20) default '000000' comment '租户编号',
- dept_id bigint(20) default null comment '部门ID',
- user_name varchar(30) not null comment '用户账号',
- nick_name varchar(30) not null comment '用户昵称',
- user_type varchar(10) default 'sys_user' comment '用户类型(sys_user系统用户)',
- email varchar(50) default '' comment '用户邮箱',
- phonenumber varchar(11) default '' comment '手机号码',
- sex char(1) default '0' comment '用户性别(0男 1女 2未知)',
- avatar bigint(20) comment '头像地址',
- password varchar(100) default '' comment '密码',
- status char(1) default '0' comment '帐号状态(0正常 1停用)',
- del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)',
- login_ip varchar(128) default '' comment '最后登录IP',
- login_date datetime comment '最后登录时间',
- create_dept bigint(20) default null comment '创建部门',
- create_by bigint(20) default null comment '创建者',
- create_time datetime comment '创建时间',
- update_by bigint(20) default null comment '更新者',
- update_time datetime comment '更新时间',
- remark varchar(500) default null comment '备注',
- primary key (user_id)
-) engine=innodb comment = '用户信息表';
+create table sys_user
+(
+ user_id bigint(20) not null comment '用户ID',
+ tenant_id varchar(20) default '000000' comment '租户编号',
+ dept_id bigint(20) default null comment '部门ID',
+ user_name varchar(30) not null comment '用户账号',
+ nick_name varchar(30) not null comment '用户昵称',
+ user_type varchar(10) default 'sys_user' comment '用户类型(sys_user系统用户)',
+ email varchar(50) default '' comment '用户邮箱',
+ phonenumber varchar(11) default '' comment '手机号码',
+ sex char(1) default '0' comment '用户性别(0男 1女 2未知)',
+ avatar bigint(20) comment '头像地址',
+ password varchar(100) default '' comment '密码',
+ status char(1) default '0' comment '帐号状态(0正常 1停用)',
+ del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)',
+ login_ip varchar(128) default '' comment '最后登录IP',
+ login_date datetime comment '最后登录时间',
+ create_dept bigint(20) default null comment '创建部门',
+ create_by bigint(20) default null comment '创建者',
+ create_time datetime comment '创建时间',
+ update_by bigint(20) default null comment '更新者',
+ update_time datetime comment '更新时间',
+ remark varchar(500) default null comment '备注',
+ primary key (user_id)
+) engine = innodb comment = '用户信息表';
-- ----------------------------
-- 初始化-用户信息表数据
-- ----------------------------
-insert into sys_user values(1, '000000', 103, 'admin', '疯狂的狮子Li', 'sys_user', 'crazyLionLi@163.com', '15888888888', '1', null, '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', sysdate(), 103, 1, sysdate(), null, null, '管理员');
-insert into sys_user values(2, '000000', 105, 'lionli', '疯狂的狮子Li', 'sys_user', 'crazyLionLi@qq.com', '15666666666', '1', null, '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', sysdate(), 103, 1, sysdate(), null, null, '测试员');
+insert into sys_user
+values (1, '000000', 103, 'admin', '疯狂的狮子Li', 'sys_user', 'crazyLionLi@163.com', '15888888888', '1', null,
+ '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', sysdate(), 103, 1,
+ sysdate(), null, null, '管理员');
+insert into sys_user
+values (2, '000000', 105, 'lionli', '疯狂的狮子Li', 'sys_user', 'crazyLionLi@qq.com', '15666666666', '1', null,
+ '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', sysdate(), 103, 1,
+ sysdate(), null, null, '测试员');
-- ----------------------------
@@ -139,339 +211,626 @@ insert into sys_user values(2, '000000', 105, 'lionli', '疯狂的狮子Li', 'sy
drop table if exists sys_post;
create table sys_post
(
- post_id bigint(20) not null comment '岗位ID',
- tenant_id varchar(20) default '000000' comment '租户编号',
- post_code varchar(64) not null comment '岗位编码',
- post_name varchar(50) not null comment '岗位名称',
- post_sort int(4) not null comment '显示顺序',
- status char(1) not null comment '状态(0正常 1停用)',
- create_dept bigint(20) default null comment '创建部门',
- create_by bigint(20) default null comment '创建者',
- create_time datetime comment '创建时间',
- update_by bigint(20) default null comment '更新者',
- update_time datetime comment '更新时间',
- remark varchar(500) default null comment '备注',
- primary key (post_id)
-) engine=innodb comment = '岗位信息表';
+ post_id bigint(20) not null comment '岗位ID',
+ tenant_id varchar(20) default '000000' comment '租户编号',
+ post_code varchar(64) not null comment '岗位编码',
+ post_name varchar(50) not null comment '岗位名称',
+ post_sort int(4) not null comment '显示顺序',
+ status char(1) not null comment '状态(0正常 1停用)',
+ create_dept bigint(20) default null comment '创建部门',
+ create_by bigint(20) default null comment '创建者',
+ create_time datetime comment '创建时间',
+ update_by bigint(20) default null comment '更新者',
+ update_time datetime comment '更新时间',
+ remark varchar(500) default null comment '备注',
+ primary key (post_id)
+) engine = innodb comment = '岗位信息表';
-- ----------------------------
-- 初始化-岗位信息表数据
-- ----------------------------
-insert into sys_post values(1, '000000', 'ceo', '董事长', 1, '0', 103, 1, sysdate(), null, null, '');
-insert into sys_post values(2, '000000', 'se', '项目经理', 2, '0', 103, 1, sysdate(), null, null, '');
-insert into sys_post values(3, '000000', 'hr', '人力资源', 3, '0', 103, 1, sysdate(), null, null, '');
-insert into sys_post values(4, '000000', 'user', '普通员工', 4, '0', 103, 1, sysdate(), null, null, '');
+insert into sys_post
+values (1, '000000', 'ceo', '董事长', 1, '0', 103, 1, sysdate(), null, null, '');
+insert into sys_post
+values (2, '000000', 'se', '项目经理', 2, '0', 103, 1, sysdate(), null, null, '');
+insert into sys_post
+values (3, '000000', 'hr', '人力资源', 3, '0', 103, 1, sysdate(), null, null, '');
+insert into sys_post
+values (4, '000000', 'user', '普通员工', 4, '0', 103, 1, sysdate(), null, null, '');
-- ----------------------------
-- 4、角色信息表
-- ----------------------------
drop table if exists sys_role;
-create table sys_role (
- role_id bigint(20) not null comment '角色ID',
- tenant_id varchar(20) default '000000' comment '租户编号',
- role_name varchar(30) not null comment '角色名称',
- role_key varchar(100) not null comment '角色权限字符串',
- role_sort int(4) not null comment '显示顺序',
- data_scope char(1) default '1' comment '数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)',
- menu_check_strictly tinyint(1) default 1 comment '菜单树选择项是否关联显示',
- dept_check_strictly tinyint(1) default 1 comment '部门树选择项是否关联显示',
- status char(1) not null comment '角色状态(0正常 1停用)',
- del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)',
- create_dept bigint(20) default null comment '创建部门',
- create_by bigint(20) default null comment '创建者',
- create_time datetime comment '创建时间',
- update_by bigint(20) default null comment '更新者',
- update_time datetime comment '更新时间',
- remark varchar(500) default null comment '备注',
- primary key (role_id)
-) engine=innodb comment = '角色信息表';
+create table sys_role
+(
+ role_id bigint(20) not null comment '角色ID',
+ tenant_id varchar(20) default '000000' comment '租户编号',
+ role_name varchar(30) not null comment '角色名称',
+ role_key varchar(100) not null comment '角色权限字符串',
+ role_sort int(4) not null comment '显示顺序',
+ data_scope char(1) default '1' comment '数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)',
+ menu_check_strictly tinyint(1) default 1 comment '菜单树选择项是否关联显示',
+ dept_check_strictly tinyint(1) default 1 comment '部门树选择项是否关联显示',
+ status char(1) not null comment '角色状态(0正常 1停用)',
+ del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)',
+ create_dept bigint(20) default null comment '创建部门',
+ create_by bigint(20) default null comment '创建者',
+ create_time datetime comment '创建时间',
+ update_by bigint(20) default null comment '更新者',
+ update_time datetime comment '更新时间',
+ remark varchar(500) default null comment '备注',
+ primary key (role_id)
+) engine = innodb comment = '角色信息表';
-- ----------------------------
-- 初始化-角色信息表数据
-- ----------------------------
-insert into sys_role values(1, '000000', '超级管理员', 'superadmin', 1, 1, 1, 1, '0', '0', 103, 1, sysdate(), null, null, '超级管理员');
-insert into sys_role values(2, '000000', '普通角色', 'common', 2, 2, 1, 1, '0', '0', 103, 1, sysdate(), null, null, '普通角色');
+insert into sys_role
+values (1, '000000', '超级管理员', 'superadmin', 1, 1, 1, 1, '0', '0', 103, 1, sysdate(), null, null, '超级管理员');
+insert into sys_role
+values (2, '000000', '普通角色', 'common', 2, 2, 1, 1, '0', '0', 103, 1, sysdate(), null, null, '普通角色');
-- ----------------------------
-- 5、菜单权限表
-- ----------------------------
drop table if exists sys_menu;
-create table sys_menu (
- menu_id bigint(20) not null comment '菜单ID',
- menu_name varchar(50) not null comment '菜单名称',
- parent_id bigint(20) default 0 comment '父菜单ID',
- order_num int(4) default 0 comment '显示顺序',
- path varchar(200) default '' comment '路由地址',
- component varchar(255) default null comment '组件路径',
- query_param varchar(255) default null comment '路由参数',
- is_frame int(1) default 1 comment '是否为外链(0是 1否)',
- is_cache int(1) default 0 comment '是否缓存(0缓存 1不缓存)',
- menu_type char(1) default '' comment '菜单类型(M目录 C菜单 F按钮)',
- visible char(1) default 0 comment '显示状态(0显示 1隐藏)',
- status char(1) default 0 comment '菜单状态(0正常 1停用)',
- perms varchar(100) default null comment '权限标识',
- icon varchar(100) default '#' comment '菜单图标',
- create_dept bigint(20) default null comment '创建部门',
- create_by bigint(20) default null comment '创建者',
- create_time datetime comment '创建时间',
- update_by bigint(20) default null comment '更新者',
- update_time datetime comment '更新时间',
- remark varchar(500) default '' comment '备注',
- primary key (menu_id)
-) engine=innodb comment = '菜单权限表';
+create table sys_menu
+(
+ menu_id bigint(20) not null comment '菜单ID',
+ menu_name varchar(50) not null comment '菜单名称',
+ parent_id bigint(20) default 0 comment '父菜单ID',
+ order_num int(4) default 0 comment '显示顺序',
+ path varchar(200) default '' comment '路由地址',
+ component varchar(255) default null comment '组件路径',
+ query_param varchar(255) default null comment '路由参数',
+ is_frame int(1) default 1 comment '是否为外链(0是 1否)',
+ is_cache int(1) default 0 comment '是否缓存(0缓存 1不缓存)',
+ menu_type char(1) default '' comment '菜单类型(M目录 C菜单 F按钮)',
+ visible char(1) default 0 comment '显示状态(0显示 1隐藏)',
+ status char(1) default 0 comment '菜单状态(0正常 1停用)',
+ perms varchar(100) default null comment '权限标识',
+ icon varchar(100) default '#' comment '菜单图标',
+ create_dept bigint(20) default null comment '创建部门',
+ create_by bigint(20) default null comment '创建者',
+ create_time datetime comment '创建时间',
+ update_by bigint(20) default null comment '更新者',
+ update_time datetime comment '更新时间',
+ remark varchar(500) default '' comment '备注',
+ primary key (menu_id)
+) engine = innodb comment = '菜单权限表';
-- ----------------------------
-- 初始化-菜单信息表数据
-- ----------------------------
-- 一级菜单
-insert into sys_menu values('1', '系统管理', '0', '1', 'system', null, '', 1, 0, 'M', '0', '0', '', 'system', 103, 1, sysdate(), null, null, '系统管理目录');
-insert into sys_menu values('6', '租户管理', '0', '2', 'tenant', null, '', 1, 0, 'M', '0', '0', '', 'chart', 103, 1, sysdate(), null, null, '租户管理目录');
-insert into sys_menu values('2', '系统监控', '0', '3', 'monitor', null, '', 1, 0, 'M', '0', '0', '', 'monitor', 103, 1, sysdate(), null, null, '系统监控目录');
-insert into sys_menu values('3', '系统工具', '0', '4', 'tool', null, '', 1, 0, 'M', '0', '0', '', 'tool', 103, 1, sysdate(), null, null, '系统工具目录');
-insert into sys_menu values('4', 'PLUS官网', '0', '5', 'https://gitee.com/dromara/RuoYi-Vue-Plus', null, '', 0, 0, 'M', '0', '0', '', 'guide', 103, 1, sysdate(), null, null, 'RuoYi-Vue-Plus官网地址');
+insert into sys_menu
+values ('1', '系统管理', '0', '1', 'system', null, '', 1, 0, 'M', '0', '0', '', 'system', 103, 1, sysdate(), null, null,
+ '系统管理目录');
+insert into sys_menu
+values ('6', '租户管理', '0', '2', 'tenant', null, '', 1, 0, 'M', '0', '0', '', 'chart', 103, 1, sysdate(), null, null,
+ '租户管理目录');
+insert into sys_menu
+values ('2', '系统监控', '0', '3', 'monitor', null, '', 1, 0, 'M', '0', '0', '', 'monitor', 103, 1, sysdate(), null,
+ null, '系统监控目录');
+insert into sys_menu
+values ('3', '系统工具', '0', '4', 'tool', null, '', 1, 0, 'M', '0', '0', '', 'tool', 103, 1, sysdate(), null, null,
+ '系统工具目录');
+insert into sys_menu
+values ('4', 'PLUS官网', '0', '5', 'https://gitee.com/dromara/RuoYi-Vue-Plus', null, '', 0, 0, 'M', '0', '0', '',
+ 'guide', 103, 1, sysdate(), null, null, 'RuoYi-Vue-Plus官网地址');
-- 二级菜单
-insert into sys_menu values('100', '用户管理', '1', '1', 'user', 'system/user/index', '', 1, 0, 'C', '0', '0', 'system:user:list', 'user', 103, 1, sysdate(), null, null, '用户管理菜单');
-insert into sys_menu values('101', '角色管理', '1', '2', 'role', 'system/role/index', '', 1, 0, 'C', '0', '0', 'system:role:list', 'peoples', 103, 1, sysdate(), null, null, '角色管理菜单');
-insert into sys_menu values('102', '菜单管理', '1', '3', 'menu', 'system/menu/index', '', 1, 0, 'C', '0', '0', 'system:menu:list', 'tree-table', 103, 1, sysdate(), null, null, '菜单管理菜单');
-insert into sys_menu values('103', '部门管理', '1', '4', 'dept', 'system/dept/index', '', 1, 0, 'C', '0', '0', 'system:dept:list', 'tree', 103, 1, sysdate(), null, null, '部门管理菜单');
-insert into sys_menu values('104', '岗位管理', '1', '5', 'post', 'system/post/index', '', 1, 0, 'C', '0', '0', 'system:post:list', 'post', 103, 1, sysdate(), null, null, '岗位管理菜单');
-insert into sys_menu values('105', '字典管理', '1', '6', 'dict', 'system/dict/index', '', 1, 0, 'C', '0', '0', 'system:dict:list', 'dict', 103, 1, sysdate(), null, null, '字典管理菜单');
-insert into sys_menu values('106', '参数设置', '1', '7', 'config', 'system/config/index', '', 1, 0, 'C', '0', '0', 'system:config:list', 'edit', 103, 1, sysdate(), null, null, '参数设置菜单');
-insert into sys_menu values('107', '通知公告', '1', '8', 'notice', 'system/notice/index', '', 1, 0, 'C', '0', '0', 'system:notice:list', 'message', 103, 1, sysdate(), null, null, '通知公告菜单');
-insert into sys_menu values('108', '日志管理', '1', '9', 'log', '', '', 1, 0, 'M', '0', '0', '', 'log', 103, 1, sysdate(), null, null, '日志管理菜单');
-insert into sys_menu values('109', '在线用户', '2', '1', 'online', 'monitor/online/index', '', 1, 0, 'C', '0', '0', 'monitor:online:list', 'online', 103, 1, sysdate(), null, null, '在线用户菜单');
-insert into sys_menu values('113', '缓存监控', '2', '5', 'cache', 'monitor/cache/index', '', 1, 0, 'C', '0', '0', 'monitor:cache:list', 'redis', 103, 1, sysdate(), null, null, '缓存监控菜单');
-insert into sys_menu values('114', '表单构建', '3', '1', 'build', 'tool/build/index', '', 1, 0, 'C', '0', '0', 'tool:build:list', 'build', 103, 1, sysdate(), null, null, '表单构建菜单');
-insert into sys_menu values('115', '代码生成', '3', '2', 'gen', 'tool/gen/index', '', 1, 0, 'C', '0', '0', 'tool:gen:list', 'code', 103, 1, sysdate(), null, null, '代码生成菜单');
-insert into sys_menu values ('121', '租户管理', '6', '1', 'tenant', 'system/tenant/index', '', 1, 0, 'C', '0', '0', 'system:tenant:list', 'list', 103, 1, sysdate(), null, null, '租户管理菜单');
-insert into sys_menu values ('122', '租户套餐管理', '6', '2', 'tenantPackage', 'system/tenantPackage/index', '', 1, 0, 'C', '0', '0', 'system:tenantPackage:list', 'form', 103, 1, sysdate(), null, null, '租户套餐管理菜单');
+insert into sys_menu
+values ('100', '用户管理', '1', '1', 'user', 'system/user/index', '', 1, 0, 'C', '0', '0', 'system:user:list', 'user',
+ 103, 1, sysdate(), null, null, '用户管理菜单');
+insert into sys_menu
+values ('101', '角色管理', '1', '2', 'role', 'system/role/index', '', 1, 0, 'C', '0', '0', 'system:role:list',
+ 'peoples', 103, 1, sysdate(), null, null, '角色管理菜单');
+insert into sys_menu
+values ('102', '菜单管理', '1', '3', 'menu', 'system/menu/index', '', 1, 0, 'C', '0', '0', 'system:menu:list',
+ 'tree-table', 103, 1, sysdate(), null, null, '菜单管理菜单');
+insert into sys_menu
+values ('103', '部门管理', '1', '4', 'dept', 'system/dept/index', '', 1, 0, 'C', '0', '0', 'system:dept:list', 'tree',
+ 103, 1, sysdate(), null, null, '部门管理菜单');
+insert into sys_menu
+values ('104', '岗位管理', '1', '5', 'post', 'system/post/index', '', 1, 0, 'C', '0', '0', 'system:post:list', 'post',
+ 103, 1, sysdate(), null, null, '岗位管理菜单');
+insert into sys_menu
+values ('105', '字典管理', '1', '6', 'dict', 'system/dict/index', '', 1, 0, 'C', '0', '0', 'system:dict:list', 'dict',
+ 103, 1, sysdate(), null, null, '字典管理菜单');
+insert into sys_menu
+values ('106', '参数设置', '1', '7', 'config', 'system/config/index', '', 1, 0, 'C', '0', '0', 'system:config:list',
+ 'edit', 103, 1, sysdate(), null, null, '参数设置菜单');
+insert into sys_menu
+values ('107', '通知公告', '1', '8', 'notice', 'system/notice/index', '', 1, 0, 'C', '0', '0', 'system:notice:list',
+ 'message', 103, 1, sysdate(), null, null, '通知公告菜单');
+insert into sys_menu
+values ('108', '日志管理', '1', '9', 'log', '', '', 1, 0, 'M', '0', '0', '', 'log', 103, 1, sysdate(), null, null,
+ '日志管理菜单');
+insert into sys_menu
+values ('109', '在线用户', '2', '1', 'online', 'monitor/online/index', '', 1, 0, 'C', '0', '0', 'monitor:online:list',
+ 'online', 103, 1, sysdate(), null, null, '在线用户菜单');
+insert into sys_menu
+values ('113', '缓存监控', '2', '5', 'cache', 'monitor/cache/index', '', 1, 0, 'C', '0', '0', 'monitor:cache:list',
+ 'redis', 103, 1, sysdate(), null, null, '缓存监控菜单');
+insert into sys_menu
+values ('114', '表单构建', '3', '1', 'build', 'tool/build/index', '', 1, 0, 'C', '0', '0', 'tool:build:list', 'build',
+ 103, 1, sysdate(), null, null, '表单构建菜单');
+insert into sys_menu
+values ('115', '代码生成', '3', '2', 'gen', 'tool/gen/index', '', 1, 0, 'C', '0', '0', 'tool:gen:list', 'code', 103, 1,
+ sysdate(), null, null, '代码生成菜单');
+insert into sys_menu
+values ('121', '租户管理', '6', '1', 'tenant', 'system/tenant/index', '', 1, 0, 'C', '0', '0', 'system:tenant:list',
+ 'list', 103, 1, sysdate(), null, null, '租户管理菜单');
+insert into sys_menu
+values ('122', '租户套餐管理', '6', '2', 'tenantPackage', 'system/tenantPackage/index', '', 1, 0, 'C', '0', '0',
+ 'system:tenantPackage:list', 'form', 103, 1, sysdate(), null, null, '租户套餐管理菜单');
-- springboot-admin监控
-insert into sys_menu values('117', 'Admin监控', '2', '5', 'Admin', 'monitor/admin/index', '', 1, 0, 'C', '0', '0', 'monitor:admin:list', 'dashboard', 103, 1, sysdate(), null, null, 'Admin监控菜单');
+insert into sys_menu
+values ('117', 'Admin监控', '2', '5', 'Admin', 'monitor/admin/index', '', 1, 0, 'C', '0', '0', 'monitor:admin:list',
+ 'dashboard', 103, 1, sysdate(), null, null, 'Admin监控菜单');
-- oss菜单
-insert into sys_menu values('118', '文件管理', '1', '10', 'oss', 'system/oss/index', '', 1, 0, 'C', '0', '0', 'system:oss:list', 'upload', 103, 1, sysdate(), null, null, '文件管理菜单');
+insert into sys_menu
+values ('118', '文件管理', '1', '10', 'oss', 'system/oss/index', '', 1, 0, 'C', '0', '0', 'system:oss:list', 'upload',
+ 103, 1, sysdate(), null, null, '文件管理菜单');
-- xxl-job-admin控制台
-insert into sys_menu values('120', '任务调度中心', '2', '5', 'XxlJob', 'monitor/xxljob/index', '', 1, 0, 'C', '0', '0', 'monitor:xxljob:list', 'job', 103, 1, sysdate(), null, null, 'Xxl-Job控制台菜单');
+insert into sys_menu
+values ('120', '任务调度中心', '2', '5', 'XxlJob', 'monitor/xxljob/index', '', 1, 0, 'C', '0', '0',
+ 'monitor:xxljob:list', 'job', 103, 1, sysdate(), null, null, 'Xxl-Job控制台菜单');
-- 三级菜单
-insert into sys_menu values('500', '操作日志', '108', '1', 'operlog', 'monitor/operlog/index', '', 1, 0, 'C', '0', '0', 'monitor:operlog:list', 'form', 103, 1, sysdate(), null, null, '操作日志菜单');
-insert into sys_menu values('501', '登录日志', '108', '2', 'logininfor', 'monitor/logininfor/index', '', 1, 0, 'C', '0', '0', 'monitor:logininfor:list', 'logininfor', 103, 1, sysdate(), null, null, '登录日志菜单');
+insert into sys_menu
+values ('500', '操作日志', '108', '1', 'operlog', 'monitor/operlog/index', '', 1, 0, 'C', '0', '0',
+ 'monitor:operlog:list', 'form', 103, 1, sysdate(), null, null, '操作日志菜单');
+insert into sys_menu
+values ('501', '登录日志', '108', '2', 'logininfor', 'monitor/logininfor/index', '', 1, 0, 'C', '0', '0',
+ 'monitor:logininfor:list', 'logininfor', 103, 1, sysdate(), null, null, '登录日志菜单');
-- 用户管理按钮
-insert into sys_menu values('1001', '用户查询', '100', '1', '', '', '', 1, 0, 'F', '0', '0', 'system:user:query', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1002', '用户新增', '100', '2', '', '', '', 1, 0, 'F', '0', '0', 'system:user:add', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1003', '用户修改', '100', '3', '', '', '', 1, 0, 'F', '0', '0', 'system:user:edit', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1004', '用户删除', '100', '4', '', '', '', 1, 0, 'F', '0', '0', 'system:user:remove', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1005', '用户导出', '100', '5', '', '', '', 1, 0, 'F', '0', '0', 'system:user:export', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1006', '用户导入', '100', '6', '', '', '', 1, 0, 'F', '0', '0', 'system:user:import', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1007', '重置密码', '100', '7', '', '', '', 1, 0, 'F', '0', '0', 'system:user:resetPwd', '#', 103, 1, sysdate(), null, null, '');
+insert into sys_menu
+values ('1001', '用户查询', '100', '1', '', '', '', 1, 0, 'F', '0', '0', 'system:user:query', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1002', '用户新增', '100', '2', '', '', '', 1, 0, 'F', '0', '0', 'system:user:add', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1003', '用户修改', '100', '3', '', '', '', 1, 0, 'F', '0', '0', 'system:user:edit', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1004', '用户删除', '100', '4', '', '', '', 1, 0, 'F', '0', '0', 'system:user:remove', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1005', '用户导出', '100', '5', '', '', '', 1, 0, 'F', '0', '0', 'system:user:export', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1006', '用户导入', '100', '6', '', '', '', 1, 0, 'F', '0', '0', 'system:user:import', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1007', '重置密码', '100', '7', '', '', '', 1, 0, 'F', '0', '0', 'system:user:resetPwd', '#', 103, 1, sysdate(),
+ null, null, '');
-- 角色管理按钮
-insert into sys_menu values('1008', '角色查询', '101', '1', '', '', '', 1, 0, 'F', '0', '0', 'system:role:query', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1009', '角色新增', '101', '2', '', '', '', 1, 0, 'F', '0', '0', 'system:role:add', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1010', '角色修改', '101', '3', '', '', '', 1, 0, 'F', '0', '0', 'system:role:edit', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1011', '角色删除', '101', '4', '', '', '', 1, 0, 'F', '0', '0', 'system:role:remove', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1012', '角色导出', '101', '5', '', '', '', 1, 0, 'F', '0', '0', 'system:role:export', '#', 103, 1, sysdate(), null, null, '');
+insert into sys_menu
+values ('1008', '角色查询', '101', '1', '', '', '', 1, 0, 'F', '0', '0', 'system:role:query', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1009', '角色新增', '101', '2', '', '', '', 1, 0, 'F', '0', '0', 'system:role:add', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1010', '角色修改', '101', '3', '', '', '', 1, 0, 'F', '0', '0', 'system:role:edit', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1011', '角色删除', '101', '4', '', '', '', 1, 0, 'F', '0', '0', 'system:role:remove', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1012', '角色导出', '101', '5', '', '', '', 1, 0, 'F', '0', '0', 'system:role:export', '#', 103, 1, sysdate(),
+ null, null, '');
-- 菜单管理按钮
-insert into sys_menu values('1013', '菜单查询', '102', '1', '', '', '', 1, 0, 'F', '0', '0', 'system:menu:query', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1014', '菜单新增', '102', '2', '', '', '', 1, 0, 'F', '0', '0', 'system:menu:add', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1015', '菜单修改', '102', '3', '', '', '', 1, 0, 'F', '0', '0', 'system:menu:edit', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1016', '菜单删除', '102', '4', '', '', '', 1, 0, 'F', '0', '0', 'system:menu:remove', '#', 103, 1, sysdate(), null, null, '');
+insert into sys_menu
+values ('1013', '菜单查询', '102', '1', '', '', '', 1, 0, 'F', '0', '0', 'system:menu:query', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1014', '菜单新增', '102', '2', '', '', '', 1, 0, 'F', '0', '0', 'system:menu:add', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1015', '菜单修改', '102', '3', '', '', '', 1, 0, 'F', '0', '0', 'system:menu:edit', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1016', '菜单删除', '102', '4', '', '', '', 1, 0, 'F', '0', '0', 'system:menu:remove', '#', 103, 1, sysdate(),
+ null, null, '');
-- 部门管理按钮
-insert into sys_menu values('1017', '部门查询', '103', '1', '', '', '', 1, 0, 'F', '0', '0', 'system:dept:query', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1018', '部门新增', '103', '2', '', '', '', 1, 0, 'F', '0', '0', 'system:dept:add', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1019', '部门修改', '103', '3', '', '', '', 1, 0, 'F', '0', '0', 'system:dept:edit', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1020', '部门删除', '103', '4', '', '', '', 1, 0, 'F', '0', '0', 'system:dept:remove', '#', 103, 1, sysdate(), null, null, '');
+insert into sys_menu
+values ('1017', '部门查询', '103', '1', '', '', '', 1, 0, 'F', '0', '0', 'system:dept:query', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1018', '部门新增', '103', '2', '', '', '', 1, 0, 'F', '0', '0', 'system:dept:add', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1019', '部门修改', '103', '3', '', '', '', 1, 0, 'F', '0', '0', 'system:dept:edit', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1020', '部门删除', '103', '4', '', '', '', 1, 0, 'F', '0', '0', 'system:dept:remove', '#', 103, 1, sysdate(),
+ null, null, '');
-- 岗位管理按钮
-insert into sys_menu values('1021', '岗位查询', '104', '1', '', '', '', 1, 0, 'F', '0', '0', 'system:post:query', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1022', '岗位新增', '104', '2', '', '', '', 1, 0, 'F', '0', '0', 'system:post:add', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1023', '岗位修改', '104', '3', '', '', '', 1, 0, 'F', '0', '0', 'system:post:edit', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1024', '岗位删除', '104', '4', '', '', '', 1, 0, 'F', '0', '0', 'system:post:remove', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1025', '岗位导出', '104', '5', '', '', '', 1, 0, 'F', '0', '0', 'system:post:export', '#', 103, 1, sysdate(), null, null, '');
+insert into sys_menu
+values ('1021', '岗位查询', '104', '1', '', '', '', 1, 0, 'F', '0', '0', 'system:post:query', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1022', '岗位新增', '104', '2', '', '', '', 1, 0, 'F', '0', '0', 'system:post:add', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1023', '岗位修改', '104', '3', '', '', '', 1, 0, 'F', '0', '0', 'system:post:edit', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1024', '岗位删除', '104', '4', '', '', '', 1, 0, 'F', '0', '0', 'system:post:remove', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1025', '岗位导出', '104', '5', '', '', '', 1, 0, 'F', '0', '0', 'system:post:export', '#', 103, 1, sysdate(),
+ null, null, '');
-- 字典管理按钮
-insert into sys_menu values('1026', '字典查询', '105', '1', '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:query', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1027', '字典新增', '105', '2', '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:add', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1028', '字典修改', '105', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:edit', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1029', '字典删除', '105', '4', '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:remove', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1030', '字典导出', '105', '5', '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:export', '#', 103, 1, sysdate(), null, null, '');
+insert into sys_menu
+values ('1026', '字典查询', '105', '1', '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:query', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1027', '字典新增', '105', '2', '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:add', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1028', '字典修改', '105', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:edit', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1029', '字典删除', '105', '4', '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:remove', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1030', '字典导出', '105', '5', '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:export', '#', 103, 1, sysdate(),
+ null, null, '');
-- 参数设置按钮
-insert into sys_menu values('1031', '参数查询', '106', '1', '#', '', '', 1, 0, 'F', '0', '0', 'system:config:query', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1032', '参数新增', '106', '2', '#', '', '', 1, 0, 'F', '0', '0', 'system:config:add', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1033', '参数修改', '106', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:config:edit', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1034', '参数删除', '106', '4', '#', '', '', 1, 0, 'F', '0', '0', 'system:config:remove', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1035', '参数导出', '106', '5', '#', '', '', 1, 0, 'F', '0', '0', 'system:config:export', '#', 103, 1, sysdate(), null, null, '');
+insert into sys_menu
+values ('1031', '参数查询', '106', '1', '#', '', '', 1, 0, 'F', '0', '0', 'system:config:query', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1032', '参数新增', '106', '2', '#', '', '', 1, 0, 'F', '0', '0', 'system:config:add', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1033', '参数修改', '106', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:config:edit', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1034', '参数删除', '106', '4', '#', '', '', 1, 0, 'F', '0', '0', 'system:config:remove', '#', 103, 1,
+ sysdate(), null, null, '');
+insert into sys_menu
+values ('1035', '参数导出', '106', '5', '#', '', '', 1, 0, 'F', '0', '0', 'system:config:export', '#', 103, 1,
+ sysdate(), null, null, '');
-- 通知公告按钮
-insert into sys_menu values('1036', '公告查询', '107', '1', '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:query', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1037', '公告新增', '107', '2', '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:add', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1038', '公告修改', '107', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:edit', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1039', '公告删除', '107', '4', '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:remove', '#', 103, 1, sysdate(), null, null, '');
+insert into sys_menu
+values ('1036', '公告查询', '107', '1', '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:query', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1037', '公告新增', '107', '2', '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:add', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1038', '公告修改', '107', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:edit', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1039', '公告删除', '107', '4', '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:remove', '#', 103, 1,
+ sysdate(), null, null, '');
-- 操作日志按钮
-insert into sys_menu values('1040', '操作查询', '500', '1', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:operlog:query', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1041', '操作删除', '500', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:operlog:remove', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1042', '日志导出', '500', '4', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:operlog:export', '#', 103, 1, sysdate(), null, null, '');
+insert into sys_menu
+values ('1040', '操作查询', '500', '1', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:operlog:query', '#', 103, 1,
+ sysdate(), null, null, '');
+insert into sys_menu
+values ('1041', '操作删除', '500', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:operlog:remove', '#', 103, 1,
+ sysdate(), null, null, '');
+insert into sys_menu
+values ('1042', '日志导出', '500', '4', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:operlog:export', '#', 103, 1,
+ sysdate(), null, null, '');
-- 登录日志按钮
-insert into sys_menu values('1043', '登录查询', '501', '1', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:query', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1044', '登录删除', '501', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:remove', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1045', '日志导出', '501', '3', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:export', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1050', '账户解锁', '501', '4', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:unlock', '#', 103, 1, sysdate(), null, null, '');
+insert into sys_menu
+values ('1043', '登录查询', '501', '1', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:query', '#', 103, 1,
+ sysdate(), null, null, '');
+insert into sys_menu
+values ('1044', '登录删除', '501', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:remove', '#', 103, 1,
+ sysdate(), null, null, '');
+insert into sys_menu
+values ('1045', '日志导出', '501', '3', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:export', '#', 103, 1,
+ sysdate(), null, null, '');
+insert into sys_menu
+values ('1050', '账户解锁', '501', '4', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:unlock', '#', 103, 1,
+ sysdate(), null, null, '');
-- 在线用户按钮
-insert into sys_menu values('1046', '在线查询', '109', '1', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:query', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1047', '批量强退', '109', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:batchLogout', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1048', '单条强退', '109', '3', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:forceLogout', '#', 103, 1, sysdate(), null, null, '');
+insert into sys_menu
+values ('1046', '在线查询', '109', '1', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:query', '#', 103, 1,
+ sysdate(), null, null, '');
+insert into sys_menu
+values ('1047', '批量强退', '109', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:batchLogout', '#', 103, 1,
+ sysdate(), null, null, '');
+insert into sys_menu
+values ('1048', '单条强退', '109', '3', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:forceLogout', '#', 103, 1,
+ sysdate(), null, null, '');
-- 代码生成按钮
-insert into sys_menu values('1055', '生成查询', '115', '1', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:query', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1056', '生成修改', '115', '2', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:edit', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1057', '生成删除', '115', '3', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:remove', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1058', '导入代码', '115', '2', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:import', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1059', '预览代码', '115', '4', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:preview', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1060', '生成代码', '115', '5', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:code', '#', 103, 1, sysdate(), null, null, '');
+insert into sys_menu
+values ('1055', '生成查询', '115', '1', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:query', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1056', '生成修改', '115', '2', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:edit', '#', 103, 1, sysdate(), null,
+ null, '');
+insert into sys_menu
+values ('1057', '生成删除', '115', '3', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:remove', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1058', '导入代码', '115', '2', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:import', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1059', '预览代码', '115', '4', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:preview', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1060', '生成代码', '115', '5', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:code', '#', 103, 1, sysdate(), null,
+ null, '');
-- oss相关按钮
-insert into sys_menu values('1600', '文件查询', '118', '1', '#', '', '', 1, 0, 'F', '0', '0', 'system:oss:query', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1601', '文件上传', '118', '2', '#', '', '', 1, 0, 'F', '0', '0', 'system:oss:upload', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1602', '文件下载', '118', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:oss:download', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1603', '文件删除', '118', '4', '#', '', '', 1, 0, 'F', '0', '0', 'system:oss:remove', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1604', '配置添加', '118', '5', '#', '', '', 1, 0, 'F', '0', '0', 'system:oss:add', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values('1605', '配置编辑', '118', '6', '#', '', '', 1, 0, 'F', '0', '0', 'system:oss:edit', '#', 103, 1, sysdate(), null, null, '');
+insert into sys_menu
+values ('1600', '文件查询', '118', '1', '#', '', '', 1, 0, 'F', '0', '0', 'system:oss:query', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1601', '文件上传', '118', '2', '#', '', '', 1, 0, 'F', '0', '0', 'system:oss:upload', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1602', '文件下载', '118', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:oss:download', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1603', '文件删除', '118', '4', '#', '', '', 1, 0, 'F', '0', '0', 'system:oss:remove', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1604', '配置添加', '118', '5', '#', '', '', 1, 0, 'F', '0', '0', 'system:oss:add', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1605', '配置编辑', '118', '6', '#', '', '', 1, 0, 'F', '0', '0', 'system:oss:edit', '#', 103, 1, sysdate(),
+ null, null, '');
-- 租户管理相关按钮
-insert into sys_menu values ('1606', '租户查询', '121', '1', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenant:query', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values ('1607', '租户新增', '121', '2', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenant:add', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values ('1608', '租户修改', '121', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenant:edit', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values ('1609', '租户删除', '121', '4', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenant:remove', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values ('1610', '租户导出', '121', '5', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenant:export', '#', 103, 1, sysdate(), null, null, '');
+insert into sys_menu
+values ('1606', '租户查询', '121', '1', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenant:query', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1607', '租户新增', '121', '2', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenant:add', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1608', '租户修改', '121', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenant:edit', '#', 103, 1, sysdate(),
+ null, null, '');
+insert into sys_menu
+values ('1609', '租户删除', '121', '4', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenant:remove', '#', 103, 1,
+ sysdate(), null, null, '');
+insert into sys_menu
+values ('1610', '租户导出', '121', '5', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenant:export', '#', 103, 1,
+ sysdate(), null, null, '');
-- 租户套餐管理相关按钮
-insert into sys_menu values ('1611', '租户套餐查询', '122', '1', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenantPackage:query', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values ('1612', '租户套餐新增', '122', '2', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenantPackage:add', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values ('1613', '租户套餐修改', '122', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenantPackage:edit', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values ('1614', '租户套餐删除', '122', '4', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenantPackage:remove', '#', 103, 1, sysdate(), null, null, '');
-insert into sys_menu values ('1615', '租户套餐导出', '122', '5', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenantPackage:export', '#', 103, 1, sysdate(), null, null, '');
+insert into sys_menu
+values ('1611', '租户套餐查询', '122', '1', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenantPackage:query', '#', 103, 1,
+ sysdate(), null, null, '');
+insert into sys_menu
+values ('1612', '租户套餐新增', '122', '2', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenantPackage:add', '#', 103, 1,
+ sysdate(), null, null, '');
+insert into sys_menu
+values ('1613', '租户套餐修改', '122', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenantPackage:edit', '#', 103, 1,
+ sysdate(), null, null, '');
+insert into sys_menu
+values ('1614', '租户套餐删除', '122', '4', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenantPackage:remove', '#', 103,
+ 1, sysdate(), null, null, '');
+insert into sys_menu
+values ('1615', '租户套餐导出', '122', '5', '#', '', '', 1, 0, 'F', '0', '0', 'system:tenantPackage:export', '#', 103,
+ 1, sysdate(), null, null, '');
-- ----------------------------
-- 6、用户和角色关联表 用户N-1角色
-- ----------------------------
drop table if exists sys_user_role;
-create table sys_user_role (
- user_id bigint(20) not null comment '用户ID',
- role_id bigint(20) not null comment '角色ID',
- primary key(user_id, role_id)
-) engine=innodb comment = '用户和角色关联表';
+create table sys_user_role
+(
+ user_id bigint(20) not null comment '用户ID',
+ role_id bigint(20) not null comment '角色ID',
+ primary key (user_id, role_id)
+) engine = innodb comment = '用户和角色关联表';
-- ----------------------------
-- 初始化-用户和角色关联表数据
-- ----------------------------
-insert into sys_user_role values ('1', '1');
-insert into sys_user_role values ('2', '2');
+insert into sys_user_role
+values ('1', '1');
+insert into sys_user_role
+values ('2', '2');
-- ----------------------------
-- 7、角色和菜单关联表 角色1-N菜单
-- ----------------------------
drop table if exists sys_role_menu;
-create table sys_role_menu (
- role_id bigint(20) not null comment '角色ID',
- menu_id bigint(20) not null comment '菜单ID',
- primary key(role_id, menu_id)
-) engine=innodb comment = '角色和菜单关联表';
+create table sys_role_menu
+(
+ role_id bigint(20) not null comment '角色ID',
+ menu_id bigint(20) not null comment '菜单ID',
+ primary key (role_id, menu_id)
+) engine = innodb comment = '角色和菜单关联表';
-- ----------------------------
-- 初始化-角色和菜单关联表数据
-- ----------------------------
-insert into sys_role_menu values ('2', '1');
-insert into sys_role_menu values ('2', '2');
-insert into sys_role_menu values ('2', '3');
-insert into sys_role_menu values ('2', '4');
-insert into sys_role_menu values ('2', '100');
-insert into sys_role_menu values ('2', '101');
-insert into sys_role_menu values ('2', '102');
-insert into sys_role_menu values ('2', '103');
-insert into sys_role_menu values ('2', '104');
-insert into sys_role_menu values ('2', '105');
-insert into sys_role_menu values ('2', '106');
-insert into sys_role_menu values ('2', '107');
-insert into sys_role_menu values ('2', '108');
-insert into sys_role_menu values ('2', '109');
-insert into sys_role_menu values ('2', '110');
-insert into sys_role_menu values ('2', '111');
-insert into sys_role_menu values ('2', '112');
-insert into sys_role_menu values ('2', '113');
-insert into sys_role_menu values ('2', '114');
-insert into sys_role_menu values ('2', '115');
-insert into sys_role_menu values ('2', '116');
-insert into sys_role_menu values ('2', '500');
-insert into sys_role_menu values ('2', '501');
-insert into sys_role_menu values ('2', '1000');
-insert into sys_role_menu values ('2', '1001');
-insert into sys_role_menu values ('2', '1002');
-insert into sys_role_menu values ('2', '1003');
-insert into sys_role_menu values ('2', '1004');
-insert into sys_role_menu values ('2', '1005');
-insert into sys_role_menu values ('2', '1006');
-insert into sys_role_menu values ('2', '1007');
-insert into sys_role_menu values ('2', '1008');
-insert into sys_role_menu values ('2', '1009');
-insert into sys_role_menu values ('2', '1010');
-insert into sys_role_menu values ('2', '1011');
-insert into sys_role_menu values ('2', '1012');
-insert into sys_role_menu values ('2', '1013');
-insert into sys_role_menu values ('2', '1014');
-insert into sys_role_menu values ('2', '1015');
-insert into sys_role_menu values ('2', '1016');
-insert into sys_role_menu values ('2', '1017');
-insert into sys_role_menu values ('2', '1018');
-insert into sys_role_menu values ('2', '1019');
-insert into sys_role_menu values ('2', '1020');
-insert into sys_role_menu values ('2', '1021');
-insert into sys_role_menu values ('2', '1022');
-insert into sys_role_menu values ('2', '1023');
-insert into sys_role_menu values ('2', '1024');
-insert into sys_role_menu values ('2', '1025');
-insert into sys_role_menu values ('2', '1026');
-insert into sys_role_menu values ('2', '1027');
-insert into sys_role_menu values ('2', '1028');
-insert into sys_role_menu values ('2', '1029');
-insert into sys_role_menu values ('2', '1030');
-insert into sys_role_menu values ('2', '1031');
-insert into sys_role_menu values ('2', '1032');
-insert into sys_role_menu values ('2', '1033');
-insert into sys_role_menu values ('2', '1034');
-insert into sys_role_menu values ('2', '1035');
-insert into sys_role_menu values ('2', '1036');
-insert into sys_role_menu values ('2', '1037');
-insert into sys_role_menu values ('2', '1038');
-insert into sys_role_menu values ('2', '1039');
-insert into sys_role_menu values ('2', '1040');
-insert into sys_role_menu values ('2', '1041');
-insert into sys_role_menu values ('2', '1042');
-insert into sys_role_menu values ('2', '1043');
-insert into sys_role_menu values ('2', '1044');
-insert into sys_role_menu values ('2', '1045');
-insert into sys_role_menu values ('2', '1050');
-insert into sys_role_menu values ('2', '1046');
-insert into sys_role_menu values ('2', '1047');
-insert into sys_role_menu values ('2', '1048');
-insert into sys_role_menu values ('2', '1055');
-insert into sys_role_menu values ('2', '1056');
-insert into sys_role_menu values ('2', '1057');
-insert into sys_role_menu values ('2', '1058');
-insert into sys_role_menu values ('2', '1059');
-insert into sys_role_menu values ('2', '1060');
+insert into sys_role_menu
+values ('2', '1');
+insert into sys_role_menu
+values ('2', '2');
+insert into sys_role_menu
+values ('2', '3');
+insert into sys_role_menu
+values ('2', '4');
+insert into sys_role_menu
+values ('2', '100');
+insert into sys_role_menu
+values ('2', '101');
+insert into sys_role_menu
+values ('2', '102');
+insert into sys_role_menu
+values ('2', '103');
+insert into sys_role_menu
+values ('2', '104');
+insert into sys_role_menu
+values ('2', '105');
+insert into sys_role_menu
+values ('2', '106');
+insert into sys_role_menu
+values ('2', '107');
+insert into sys_role_menu
+values ('2', '108');
+insert into sys_role_menu
+values ('2', '109');
+insert into sys_role_menu
+values ('2', '110');
+insert into sys_role_menu
+values ('2', '111');
+insert into sys_role_menu
+values ('2', '112');
+insert into sys_role_menu
+values ('2', '113');
+insert into sys_role_menu
+values ('2', '114');
+insert into sys_role_menu
+values ('2', '115');
+insert into sys_role_menu
+values ('2', '116');
+insert into sys_role_menu
+values ('2', '500');
+insert into sys_role_menu
+values ('2', '501');
+insert into sys_role_menu
+values ('2', '1000');
+insert into sys_role_menu
+values ('2', '1001');
+insert into sys_role_menu
+values ('2', '1002');
+insert into sys_role_menu
+values ('2', '1003');
+insert into sys_role_menu
+values ('2', '1004');
+insert into sys_role_menu
+values ('2', '1005');
+insert into sys_role_menu
+values ('2', '1006');
+insert into sys_role_menu
+values ('2', '1007');
+insert into sys_role_menu
+values ('2', '1008');
+insert into sys_role_menu
+values ('2', '1009');
+insert into sys_role_menu
+values ('2', '1010');
+insert into sys_role_menu
+values ('2', '1011');
+insert into sys_role_menu
+values ('2', '1012');
+insert into sys_role_menu
+values ('2', '1013');
+insert into sys_role_menu
+values ('2', '1014');
+insert into sys_role_menu
+values ('2', '1015');
+insert into sys_role_menu
+values ('2', '1016');
+insert into sys_role_menu
+values ('2', '1017');
+insert into sys_role_menu
+values ('2', '1018');
+insert into sys_role_menu
+values ('2', '1019');
+insert into sys_role_menu
+values ('2', '1020');
+insert into sys_role_menu
+values ('2', '1021');
+insert into sys_role_menu
+values ('2', '1022');
+insert into sys_role_menu
+values ('2', '1023');
+insert into sys_role_menu
+values ('2', '1024');
+insert into sys_role_menu
+values ('2', '1025');
+insert into sys_role_menu
+values ('2', '1026');
+insert into sys_role_menu
+values ('2', '1027');
+insert into sys_role_menu
+values ('2', '1028');
+insert into sys_role_menu
+values ('2', '1029');
+insert into sys_role_menu
+values ('2', '1030');
+insert into sys_role_menu
+values ('2', '1031');
+insert into sys_role_menu
+values ('2', '1032');
+insert into sys_role_menu
+values ('2', '1033');
+insert into sys_role_menu
+values ('2', '1034');
+insert into sys_role_menu
+values ('2', '1035');
+insert into sys_role_menu
+values ('2', '1036');
+insert into sys_role_menu
+values ('2', '1037');
+insert into sys_role_menu
+values ('2', '1038');
+insert into sys_role_menu
+values ('2', '1039');
+insert into sys_role_menu
+values ('2', '1040');
+insert into sys_role_menu
+values ('2', '1041');
+insert into sys_role_menu
+values ('2', '1042');
+insert into sys_role_menu
+values ('2', '1043');
+insert into sys_role_menu
+values ('2', '1044');
+insert into sys_role_menu
+values ('2', '1045');
+insert into sys_role_menu
+values ('2', '1050');
+insert into sys_role_menu
+values ('2', '1046');
+insert into sys_role_menu
+values ('2', '1047');
+insert into sys_role_menu
+values ('2', '1048');
+insert into sys_role_menu
+values ('2', '1055');
+insert into sys_role_menu
+values ('2', '1056');
+insert into sys_role_menu
+values ('2', '1057');
+insert into sys_role_menu
+values ('2', '1058');
+insert into sys_role_menu
+values ('2', '1059');
+insert into sys_role_menu
+values ('2', '1060');
-- ----------------------------
-- 8、角色和部门关联表 角色1-N部门
-- ----------------------------
drop table if exists sys_role_dept;
-create table sys_role_dept (
- role_id bigint(20) not null comment '角色ID',
- dept_id bigint(20) not null comment '部门ID',
- primary key(role_id, dept_id)
-) engine=innodb comment = '角色和部门关联表';
+create table sys_role_dept
+(
+ role_id bigint(20) not null comment '角色ID',
+ dept_id bigint(20) not null comment '部门ID',
+ primary key (role_id, dept_id)
+) engine = innodb comment = '角色和部门关联表';
-- ----------------------------
-- 初始化-角色和部门关联表数据
-- ----------------------------
-insert into sys_role_dept values ('2', '100');
-insert into sys_role_dept values ('2', '101');
-insert into sys_role_dept values ('2', '105');
+insert into sys_role_dept
+values ('2', '100');
+insert into sys_role_dept
+values ('2', '101');
+insert into sys_role_dept
+values ('2', '105');
-- ----------------------------
@@ -480,46 +839,49 @@ insert into sys_role_dept values ('2', '105');
drop table if exists sys_user_post;
create table sys_user_post
(
- user_id bigint(20) not null comment '用户ID',
- post_id bigint(20) not null comment '岗位ID',
- primary key (user_id, post_id)
-) engine=innodb comment = '用户与岗位关联表';
+ user_id bigint(20) not null comment '用户ID',
+ post_id bigint(20) not null comment '岗位ID',
+ primary key (user_id, post_id)
+) engine = innodb comment = '用户与岗位关联表';
-- ----------------------------
-- 初始化-用户与岗位关联表数据
-- ----------------------------
-insert into sys_user_post values ('1', '1');
-insert into sys_user_post values ('2', '2');
+insert into sys_user_post
+values ('1', '1');
+insert into sys_user_post
+values ('2', '2');
-- ----------------------------
-- 10、操作日志记录
-- ----------------------------
drop table if exists sys_oper_log;
-create table sys_oper_log (
- oper_id bigint(20) not null comment '日志主键',
- tenant_id varchar(20) default '000000' comment '租户编号',
- title varchar(50) default '' comment '模块标题',
- business_type int(2) default 0 comment '业务类型(0其它 1新增 2修改 3删除)',
- method varchar(100) default '' comment '方法名称',
- request_method varchar(10) default '' comment '请求方式',
- operator_type int(1) default 0 comment '操作类别(0其它 1后台用户 2手机端用户)',
- oper_name varchar(50) default '' comment '操作人员',
- dept_name varchar(50) default '' comment '部门名称',
- oper_url varchar(255) default '' comment '请求URL',
- oper_ip varchar(128) default '' comment '主机地址',
- oper_location varchar(255) default '' comment '操作地点',
- oper_param varchar(2000) default '' comment '请求参数',
- json_result varchar(2000) default '' comment '返回参数',
- status int(1) default 0 comment '操作状态(0正常 1异常)',
- error_msg varchar(2000) default '' comment '错误消息',
- oper_time datetime comment '操作时间',
- cost_time bigint(20) default 0 comment '消耗时间',
- primary key (oper_id),
- key idx_sys_oper_log_bt (business_type),
- key idx_sys_oper_log_s (status),
- key idx_sys_oper_log_ot (oper_time)
-) engine=innodb comment = '操作日志记录';
+create table sys_oper_log
+(
+ oper_id bigint(20) not null comment '日志主键',
+ tenant_id varchar(20) default '000000' comment '租户编号',
+ title varchar(50) default '' comment '模块标题',
+ business_type int(2) default 0 comment '业务类型(0其它 1新增 2修改 3删除)',
+ method varchar(100) default '' comment '方法名称',
+ request_method varchar(10) default '' comment '请求方式',
+ operator_type int(1) default 0 comment '操作类别(0其它 1后台用户 2手机端用户)',
+ oper_name varchar(50) default '' comment '操作人员',
+ dept_name varchar(50) default '' comment '部门名称',
+ oper_url varchar(255) default '' comment '请求URL',
+ oper_ip varchar(128) default '' comment '主机地址',
+ oper_location varchar(255) default '' comment '操作地点',
+ oper_param varchar(2000) default '' comment '请求参数',
+ json_result varchar(2000) default '' comment '返回参数',
+ status int(1) default 0 comment '操作状态(0正常 1异常)',
+ error_msg varchar(2000) default '' comment '错误消息',
+ oper_time datetime comment '操作时间',
+ cost_time bigint(20) default 0 comment '消耗时间',
+ primary key (oper_id),
+ key idx_sys_oper_log_bt (business_type),
+ key idx_sys_oper_log_s (status),
+ key idx_sys_oper_log_ot (oper_time)
+) engine = innodb comment = '操作日志记录';
-- ----------------------------
@@ -528,29 +890,37 @@ create table sys_oper_log (
drop table if exists sys_dict_type;
create table sys_dict_type
(
- dict_id bigint(20) not null comment '字典主键',
- tenant_id varchar(20) default '000000' comment '租户编号',
- dict_name varchar(100) default '' comment '字典名称',
- dict_type varchar(100) default '' comment '字典类型',
- status char(1) default '0' comment '状态(0正常 1停用)',
- create_dept bigint(20) default null comment '创建部门',
- create_by bigint(20) default null comment '创建者',
- create_time datetime comment '创建时间',
- update_by bigint(20) default null comment '更新者',
- update_time datetime comment '更新时间',
- remark varchar(500) default null comment '备注',
- primary key (dict_id),
- unique (tenant_id, dict_type)
-) engine=innodb comment = '字典类型表';
+ dict_id bigint(20) not null comment '字典主键',
+ tenant_id varchar(20) default '000000' comment '租户编号',
+ dict_name varchar(100) default '' comment '字典名称',
+ dict_type varchar(100) default '' comment '字典类型',
+ status char(1) default '0' comment '状态(0正常 1停用)',
+ create_dept bigint(20) default null comment '创建部门',
+ create_by bigint(20) default null comment '创建者',
+ create_time datetime comment '创建时间',
+ update_by bigint(20) default null comment '更新者',
+ update_time datetime comment '更新时间',
+ remark varchar(500) default null comment '备注',
+ primary key (dict_id),
+ unique (tenant_id, dict_type)
+) engine = innodb comment = '字典类型表';
-insert into sys_dict_type values(1, '000000', '用户性别', 'sys_user_sex', '0', 103, 1, sysdate(), null, null, '用户性别列表');
-insert into sys_dict_type values(2, '000000', '菜单状态', 'sys_show_hide', '0', 103, 1, sysdate(), null, null, '菜单状态列表');
-insert into sys_dict_type values(3, '000000', '系统开关', 'sys_normal_disable', '0', 103, 1, sysdate(), null, null, '系统开关列表');
-insert into sys_dict_type values(6, '000000', '系统是否', 'sys_yes_no', '0', 103, 1, sysdate(), null, null, '系统是否列表');
-insert into sys_dict_type values(7, '000000', '通知类型', 'sys_notice_type', '0', 103, 1, sysdate(), null, null, '通知类型列表');
-insert into sys_dict_type values(8, '000000', '通知状态', 'sys_notice_status', '0', 103, 1, sysdate(), null, null, '通知状态列表');
-insert into sys_dict_type values(9, '000000', '操作类型', 'sys_oper_type', '0', 103, 1, sysdate(), null, null, '操作类型列表');
-insert into sys_dict_type values(10, '000000', '系统状态', 'sys_common_status', '0', 103, 1, sysdate(), null, null, '登录状态列表');
+insert into sys_dict_type
+values (1, '000000', '用户性别', 'sys_user_sex', '0', 103, 1, sysdate(), null, null, '用户性别列表');
+insert into sys_dict_type
+values (2, '000000', '菜单状态', 'sys_show_hide', '0', 103, 1, sysdate(), null, null, '菜单状态列表');
+insert into sys_dict_type
+values (3, '000000', '系统开关', 'sys_normal_disable', '0', 103, 1, sysdate(), null, null, '系统开关列表');
+insert into sys_dict_type
+values (6, '000000', '系统是否', 'sys_yes_no', '0', 103, 1, sysdate(), null, null, '系统是否列表');
+insert into sys_dict_type
+values (7, '000000', '通知类型', 'sys_notice_type', '0', 103, 1, sysdate(), null, null, '通知类型列表');
+insert into sys_dict_type
+values (8, '000000', '通知状态', 'sys_notice_status', '0', 103, 1, sysdate(), null, null, '通知状态列表');
+insert into sys_dict_type
+values (9, '000000', '操作类型', 'sys_oper_type', '0', 103, 1, sysdate(), null, null, '操作类型列表');
+insert into sys_dict_type
+values (10, '000000', '系统状态', 'sys_common_status', '0', 103, 1, sysdate(), null, null, '登录状态列表');
-- ----------------------------
@@ -559,239 +929,313 @@ insert into sys_dict_type values(10, '000000', '系统状态', 'sys_common_statu
drop table if exists sys_dict_data;
create table sys_dict_data
(
- dict_code bigint(20) not null comment '字典编码',
- tenant_id varchar(20) default '000000' comment '租户编号',
- dict_sort int(4) default 0 comment '字典排序',
- dict_label varchar(100) default '' comment '字典标签',
- dict_value varchar(100) default '' comment '字典键值',
- dict_type varchar(100) default '' comment '字典类型',
- css_class varchar(100) default null comment '样式属性(其他样式扩展)',
- list_class varchar(100) default null comment '表格回显样式',
- is_default char(1) default 'N' comment '是否默认(Y是 N否)',
- status char(1) default '0' comment '状态(0正常 1停用)',
- create_dept bigint(20) default null comment '创建部门',
- create_by bigint(20) default null comment '创建者',
- create_time datetime comment '创建时间',
- update_by bigint(20) default null comment '更新者',
- update_time datetime comment '更新时间',
- remark varchar(500) default null comment '备注',
- primary key (dict_code)
-) engine=innodb comment = '字典数据表';
+ dict_code bigint(20) not null comment '字典编码',
+ tenant_id varchar(20) default '000000' comment '租户编号',
+ dict_sort int(4) default 0 comment '字典排序',
+ dict_label varchar(100) default '' comment '字典标签',
+ dict_value varchar(100) default '' comment '字典键值',
+ dict_type varchar(100) default '' comment '字典类型',
+ css_class varchar(100) default null comment '样式属性(其他样式扩展)',
+ list_class varchar(100) default null comment '表格回显样式',
+ is_default char(1) default 'N' comment '是否默认(Y是 N否)',
+ status char(1) default '0' comment '状态(0正常 1停用)',
+ create_dept bigint(20) default null comment '创建部门',
+ create_by bigint(20) default null comment '创建者',
+ create_time datetime comment '创建时间',
+ update_by bigint(20) default null comment '更新者',
+ update_time datetime comment '更新时间',
+ remark varchar(500) default null comment '备注',
+ primary key (dict_code)
+) engine = innodb comment = '字典数据表';
-insert into sys_dict_data values(1, '000000', 1, '男', '0', 'sys_user_sex', '', '', 'Y', '0', 103, 1, sysdate(), null, null, '性别男');
-insert into sys_dict_data values(2, '000000', 2, '女', '1', 'sys_user_sex', '', '', 'N', '0', 103, 1, sysdate(), null, null, '性别女');
-insert into sys_dict_data values(3, '000000', 3, '未知', '2', 'sys_user_sex', '', '', 'N', '0', 103, 1, sysdate(), null, null, '性别未知');
-insert into sys_dict_data values(4, '000000', 1, '显示', '0', 'sys_show_hide', '', 'primary', 'Y', '0', 103, 1, sysdate(), null, null, '显示菜单');
-insert into sys_dict_data values(5, '000000', 2, '隐藏', '1', 'sys_show_hide', '', 'danger', 'N', '0', 103, 1, sysdate(), null, null, '隐藏菜单');
-insert into sys_dict_data values(6, '000000', 1, '正常', '0', 'sys_normal_disable', '', 'primary', 'Y', '0', 103, 1, sysdate(), null, null, '正常状态');
-insert into sys_dict_data values(7, '000000', 2, '停用', '1', 'sys_normal_disable', '', 'danger', 'N', '0', 103, 1, sysdate(), null, null, '停用状态');
-insert into sys_dict_data values(12, '000000', 1, '是', 'Y', 'sys_yes_no', '', 'primary', 'Y', '0', 103, 1, sysdate(), null, null, '系统默认是');
-insert into sys_dict_data values(13, '000000', 2, '否', 'N', 'sys_yes_no', '', 'danger', 'N', '0', 103, 1, sysdate(), null, null, '系统默认否');
-insert into sys_dict_data values(14, '000000', 1, '通知', '1', 'sys_notice_type', '', 'warning', 'Y', '0', 103, 1, sysdate(), null, null, '通知');
-insert into sys_dict_data values(15, '000000', 2, '公告', '2', 'sys_notice_type', '', 'success', 'N', '0', 103, 1, sysdate(), null, null, '公告');
-insert into sys_dict_data values(16, '000000', 1, '正常', '0', 'sys_notice_status', '', 'primary', 'Y', '0', 103, 1, sysdate(), null, null, '正常状态');
-insert into sys_dict_data values(17, '000000', 2, '关闭', '1', 'sys_notice_status', '', 'danger', 'N', '0', 103, 1, sysdate(), null, null, '关闭状态');
-insert into sys_dict_data values(29, '000000', 99, '其他', '0', 'sys_oper_type', '', 'info', 'N', '0', 103, 1, sysdate(), null, null, '其他操作');
-insert into sys_dict_data values(18, '000000', 1, '新增', '1', 'sys_oper_type', '', 'info', 'N', '0', 103, 1, sysdate(), null, null, '新增操作');
-insert into sys_dict_data values(19, '000000', 2, '修改', '2', 'sys_oper_type', '', 'info', 'N', '0', 103, 1, sysdate(), null, null, '修改操作');
-insert into sys_dict_data values(20, '000000', 3, '删除', '3', 'sys_oper_type', '', 'danger', 'N', '0', 103, 1, sysdate(), null, null, '删除操作');
-insert into sys_dict_data values(21, '000000', 4, '授权', '4', 'sys_oper_type', '', 'primary', 'N', '0', 103, 1, sysdate(), null, null, '授权操作');
-insert into sys_dict_data values(22, '000000', 5, '导出', '5', 'sys_oper_type', '', 'warning', 'N', '0', 103, 1, sysdate(), null, null, '导出操作');
-insert into sys_dict_data values(23, '000000', 6, '导入', '6', 'sys_oper_type', '', 'warning', 'N', '0', 103, 1, sysdate(), null, null, '导入操作');
-insert into sys_dict_data values(24, '000000', 7, '强退', '7', 'sys_oper_type', '', 'danger', 'N', '0', 103, 1, sysdate(), null, null, '强退操作');
-insert into sys_dict_data values(25, '000000', 8, '生成代码', '8', 'sys_oper_type', '', 'warning', 'N', '0', 103, 1, sysdate(), null, null, '生成操作');
-insert into sys_dict_data values(26, '000000', 9, '清空数据', '9', 'sys_oper_type', '', 'danger', 'N', '0', 103, 1, sysdate(), null, null, '清空操作');
-insert into sys_dict_data values(27, '000000', 1, '成功', '0', 'sys_common_status', '', 'primary', 'N', '0', 103, 1, sysdate(), null, null, '正常状态');
-insert into sys_dict_data values(28, '000000', 2, '失败', '1', 'sys_common_status', '', 'danger', 'N', '0', 103, 1, sysdate(), null, null, '停用状态');
+insert into sys_dict_data
+values (1, '000000', 1, '男', '0', 'sys_user_sex', '', '', 'Y', '0', 103, 1, sysdate(), null, null, '性别男');
+insert into sys_dict_data
+values (2, '000000', 2, '女', '1', 'sys_user_sex', '', '', 'N', '0', 103, 1, sysdate(), null, null, '性别女');
+insert into sys_dict_data
+values (3, '000000', 3, '未知', '2', 'sys_user_sex', '', '', 'N', '0', 103, 1, sysdate(), null, null, '性别未知');
+insert into sys_dict_data
+values (4, '000000', 1, '显示', '0', 'sys_show_hide', '', 'primary', 'Y', '0', 103, 1, sysdate(), null, null,
+ '显示菜单');
+insert into sys_dict_data
+values (5, '000000', 2, '隐藏', '1', 'sys_show_hide', '', 'danger', 'N', '0', 103, 1, sysdate(), null, null,
+ '隐藏菜单');
+insert into sys_dict_data
+values (6, '000000', 1, '正常', '0', 'sys_normal_disable', '', 'primary', 'Y', '0', 103, 1, sysdate(), null, null,
+ '正常状态');
+insert into sys_dict_data
+values (7, '000000', 2, '停用', '1', 'sys_normal_disable', '', 'danger', 'N', '0', 103, 1, sysdate(), null, null,
+ '停用状态');
+insert into sys_dict_data
+values (12, '000000', 1, '是', 'Y', 'sys_yes_no', '', 'primary', 'Y', '0', 103, 1, sysdate(), null, null, '系统默认是');
+insert into sys_dict_data
+values (13, '000000', 2, '否', 'N', 'sys_yes_no', '', 'danger', 'N', '0', 103, 1, sysdate(), null, null, '系统默认否');
+insert into sys_dict_data
+values (14, '000000', 1, '通知', '1', 'sys_notice_type', '', 'warning', 'Y', '0', 103, 1, sysdate(), null, null,
+ '通知');
+insert into sys_dict_data
+values (15, '000000', 2, '公告', '2', 'sys_notice_type', '', 'success', 'N', '0', 103, 1, sysdate(), null, null,
+ '公告');
+insert into sys_dict_data
+values (16, '000000', 1, '正常', '0', 'sys_notice_status', '', 'primary', 'Y', '0', 103, 1, sysdate(), null, null,
+ '正常状态');
+insert into sys_dict_data
+values (17, '000000', 2, '关闭', '1', 'sys_notice_status', '', 'danger', 'N', '0', 103, 1, sysdate(), null, null,
+ '关闭状态');
+insert into sys_dict_data
+values (29, '000000', 99, '其他', '0', 'sys_oper_type', '', 'info', 'N', '0', 103, 1, sysdate(), null, null,
+ '其他操作');
+insert into sys_dict_data
+values (18, '000000', 1, '新增', '1', 'sys_oper_type', '', 'info', 'N', '0', 103, 1, sysdate(), null, null, '新增操作');
+insert into sys_dict_data
+values (19, '000000', 2, '修改', '2', 'sys_oper_type', '', 'info', 'N', '0', 103, 1, sysdate(), null, null, '修改操作');
+insert into sys_dict_data
+values (20, '000000', 3, '删除', '3', 'sys_oper_type', '', 'danger', 'N', '0', 103, 1, sysdate(), null, null,
+ '删除操作');
+insert into sys_dict_data
+values (21, '000000', 4, '授权', '4', 'sys_oper_type', '', 'primary', 'N', '0', 103, 1, sysdate(), null, null,
+ '授权操作');
+insert into sys_dict_data
+values (22, '000000', 5, '导出', '5', 'sys_oper_type', '', 'warning', 'N', '0', 103, 1, sysdate(), null, null,
+ '导出操作');
+insert into sys_dict_data
+values (23, '000000', 6, '导入', '6', 'sys_oper_type', '', 'warning', 'N', '0', 103, 1, sysdate(), null, null,
+ '导入操作');
+insert into sys_dict_data
+values (24, '000000', 7, '强退', '7', 'sys_oper_type', '', 'danger', 'N', '0', 103, 1, sysdate(), null, null,
+ '强退操作');
+insert into sys_dict_data
+values (25, '000000', 8, '生成代码', '8', 'sys_oper_type', '', 'warning', 'N', '0', 103, 1, sysdate(), null, null,
+ '生成操作');
+insert into sys_dict_data
+values (26, '000000', 9, '清空数据', '9', 'sys_oper_type', '', 'danger', 'N', '0', 103, 1, sysdate(), null, null,
+ '清空操作');
+insert into sys_dict_data
+values (27, '000000', 1, '成功', '0', 'sys_common_status', '', 'primary', 'N', '0', 103, 1, sysdate(), null, null,
+ '正常状态');
+insert into sys_dict_data
+values (28, '000000', 2, '失败', '1', 'sys_common_status', '', 'danger', 'N', '0', 103, 1, sysdate(), null, null,
+ '停用状态');
-- ----------------------------
-- 13、参数配置表
-- ----------------------------
drop table if exists sys_config;
-create table sys_config (
- config_id bigint(20) not null comment '参数主键',
- tenant_id varchar(20) default '000000' comment '租户编号',
- config_name varchar(100) default '' comment '参数名称',
- config_key varchar(100) default '' comment '参数键名',
- config_value varchar(500) default '' comment '参数键值',
- config_type char(1) default 'N' comment '系统内置(Y是 N否)',
- create_dept bigint(20) default null comment '创建部门',
- create_by bigint(20) default null comment '创建者',
- create_time datetime comment '创建时间',
- update_by bigint(20) default null comment '更新者',
- update_time datetime comment '更新时间',
- remark varchar(500) default null comment '备注',
- primary key (config_id)
-) engine=innodb comment = '参数配置表';
+create table sys_config
+(
+ config_id bigint(20) not null comment '参数主键',
+ tenant_id varchar(20) default '000000' comment '租户编号',
+ config_name varchar(100) default '' comment '参数名称',
+ config_key varchar(100) default '' comment '参数键名',
+ config_value varchar(500) default '' comment '参数键值',
+ config_type char(1) default 'N' comment '系统内置(Y是 N否)',
+ create_dept bigint(20) default null comment '创建部门',
+ create_by bigint(20) default null comment '创建者',
+ create_time datetime comment '创建时间',
+ update_by bigint(20) default null comment '更新者',
+ update_time datetime comment '更新时间',
+ remark varchar(500) default null comment '备注',
+ primary key (config_id)
+) engine = innodb comment = '参数配置表';
-insert into sys_config values(1, '000000', '主框架页-默认皮肤样式名称', 'sys.index.skinName', 'skin-blue', 'Y', 103, 1, sysdate(), null, null, '蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow' );
-insert into sys_config values(2, '000000', '用户管理-账号初始密码', 'sys.user.initPassword', '123456', 'Y', 103, 1, sysdate(), null, null, '初始化密码 123456' );
-insert into sys_config values(3, '000000', '主框架页-侧边栏主题', 'sys.index.sideTheme', 'theme-dark', 'Y', 103, 1, sysdate(), null, null, '深色主题theme-dark,浅色主题theme-light' );
-insert into sys_config values(5, '000000', '账号自助-是否开启用户注册功能', 'sys.account.registerUser', 'false', 'Y', 103, 1, sysdate(), null, null, '是否开启注册用户功能(true开启,false关闭)');
-insert into sys_config values(11, '000000', 'OSS预览列表资源开关', 'sys.oss.previewListResource', 'true', 'Y', 103, 1, sysdate(), null, null, 'true:开启, false:关闭');
+insert into sys_config
+values (1, '000000', '主框架页-默认皮肤样式名称', 'sys.index.skinName', 'skin-blue', 'Y', 103, 1, sysdate(), null, null,
+ '蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow');
+insert into sys_config
+values (2, '000000', '用户管理-账号初始密码', 'sys.user.initPassword', '123456', 'Y', 103, 1, sysdate(), null, null,
+ '初始化密码 123456');
+insert into sys_config
+values (3, '000000', '主框架页-侧边栏主题', 'sys.index.sideTheme', 'theme-dark', 'Y', 103, 1, sysdate(), null, null,
+ '深色主题theme-dark,浅色主题theme-light');
+insert into sys_config
+values (5, '000000', '账号自助-是否开启用户注册功能', 'sys.account.registerUser', 'false', 'Y', 103, 1, sysdate(), null,
+ null, '是否开启注册用户功能(true开启,false关闭)');
+insert into sys_config
+values (11, '000000', 'OSS预览列表资源开关', 'sys.oss.previewListResource', 'true', 'Y', 103, 1, sysdate(), null, null,
+ 'true:开启, false:关闭');
-- ----------------------------
-- 14、系统访问记录
-- ----------------------------
drop table if exists sys_logininfor;
-create table sys_logininfor (
- info_id bigint(20) not null comment '访问ID',
- tenant_id varchar(20) default '000000' comment '租户编号',
- user_name varchar(50) default '' comment '用户账号',
- ipaddr varchar(128) default '' comment '登录IP地址',
- login_location varchar(255) default '' comment '登录地点',
- browser varchar(50) default '' comment '浏览器类型',
- os varchar(50) default '' comment '操作系统',
- status char(1) default '0' comment '登录状态(0成功 1失败)',
- msg varchar(255) default '' comment '提示消息',
- login_time datetime comment '访问时间',
- primary key (info_id),
- key idx_sys_logininfor_s (status),
- key idx_sys_logininfor_lt (login_time)
-) engine=innodb comment = '系统访问记录';
+create table sys_logininfor
+(
+ info_id bigint(20) not null comment '访问ID',
+ tenant_id varchar(20) default '000000' comment '租户编号',
+ user_name varchar(50) default '' comment '用户账号',
+ ipaddr varchar(128) default '' comment '登录IP地址',
+ login_location varchar(255) default '' comment '登录地点',
+ browser varchar(50) default '' comment '浏览器类型',
+ os varchar(50) default '' comment '操作系统',
+ status char(1) default '0' comment '登录状态(0成功 1失败)',
+ msg varchar(255) default '' comment '提示消息',
+ login_time datetime comment '访问时间',
+ primary key (info_id),
+ key idx_sys_logininfor_s (status),
+ key idx_sys_logininfor_lt (login_time)
+) engine = innodb comment = '系统访问记录';
-- ----------------------------
-- 17、通知公告表
-- ----------------------------
drop table if exists sys_notice;
-create table sys_notice (
- notice_id bigint(20) not null comment '公告ID',
- tenant_id varchar(20) default '000000' comment '租户编号',
- notice_title varchar(50) not null comment '公告标题',
- notice_type char(1) not null comment '公告类型(1通知 2公告)',
- notice_content longblob default null comment '公告内容',
- status char(1) default '0' comment '公告状态(0正常 1关闭)',
- create_dept bigint(20) default null comment '创建部门',
- create_by bigint(20) default null comment '创建者',
- create_time datetime comment '创建时间',
- update_by bigint(20) default null comment '更新者',
- update_time datetime comment '更新时间',
- remark varchar(255) default null comment '备注',
- primary key (notice_id)
-) engine=innodb comment = '通知公告表';
+create table sys_notice
+(
+ notice_id bigint(20) not null comment '公告ID',
+ tenant_id varchar(20) default '000000' comment '租户编号',
+ notice_title varchar(50) not null comment '公告标题',
+ notice_type char(1) not null comment '公告类型(1通知 2公告)',
+ notice_content longblob default null comment '公告内容',
+ status char(1) default '0' comment '公告状态(0正常 1关闭)',
+ create_dept bigint(20) default null comment '创建部门',
+ create_by bigint(20) default null comment '创建者',
+ create_time datetime comment '创建时间',
+ update_by bigint(20) default null comment '更新者',
+ update_time datetime comment '更新时间',
+ remark varchar(255) default null comment '备注',
+ primary key (notice_id)
+) engine = innodb comment = '通知公告表';
-- ----------------------------
-- 初始化-公告信息表数据
-- ----------------------------
-insert into sys_notice values('1', '000000', '温馨提醒:2018-07-01 新版本发布啦', '2', '新版本内容', '0', 103, 1, sysdate(), null, null, '管理员');
-insert into sys_notice values('2', '000000', '维护通知:2018-07-01 系统凌晨维护', '1', '维护内容', '0', 103, 1, sysdate(), null, null, '管理员');
+insert into sys_notice
+values ('1', '000000', '温馨提醒:2018-07-01 新版本发布啦', '2', '新版本内容', '0', 103, 1, sysdate(), null, null,
+ '管理员');
+insert into sys_notice
+values ('2', '000000', '维护通知:2018-07-01 系统凌晨维护', '1', '维护内容', '0', 103, 1, sysdate(), null, null,
+ '管理员');
-- ----------------------------
-- 18、代码生成业务表
-- ----------------------------
drop table if exists gen_table;
-create table gen_table (
- table_id bigint(20) not null comment '编号',
- data_name varchar(200) default '' comment '数据源名称',
- table_name varchar(200) default '' comment '表名称',
- table_comment varchar(500) default '' comment '表描述',
- sub_table_name varchar(64) default null comment '关联子表的表名',
- sub_table_fk_name varchar(64) default null comment '子表关联的外键名',
- class_name varchar(100) default '' comment '实体类名称',
- tpl_category varchar(200) default 'crud' comment '使用的模板(crud单表操作 tree树表操作)',
- package_name varchar(100) comment '生成包路径',
- module_name varchar(30) comment '生成模块名',
- business_name varchar(30) comment '生成业务名',
- function_name varchar(50) comment '生成功能名',
- function_author varchar(50) comment '生成功能作者',
- gen_type char(1) default '0' comment '生成代码方式(0zip压缩包 1自定义路径)',
- gen_path varchar(200) default '/' comment '生成路径(不填默认项目路径)',
- options varchar(1000) comment '其它生成选项',
- create_dept bigint(20) default null comment '创建部门',
- create_by bigint(20) default null comment '创建者',
- create_time datetime comment '创建时间',
- update_by bigint(20) default null comment '更新者',
- update_time datetime comment '更新时间',
- remark varchar(500) default null comment '备注',
- primary key (table_id)
-) engine=innodb comment = '代码生成业务表';
+create table gen_table
+(
+ table_id bigint(20) not null comment '编号',
+ data_name varchar(200) default '' comment '数据源名称',
+ table_name varchar(200) default '' comment '表名称',
+ table_comment varchar(500) default '' comment '表描述',
+ sub_table_name varchar(64) default null comment '关联子表的表名',
+ sub_table_fk_name varchar(64) default null comment '子表关联的外键名',
+ class_name varchar(100) default '' comment '实体类名称',
+ tpl_category varchar(200) default 'crud' comment '使用的模板(crud单表操作 tree树表操作)',
+ package_name varchar(100) comment '生成包路径',
+ module_name varchar(30) comment '生成模块名',
+ business_name varchar(30) comment '生成业务名',
+ function_name varchar(50) comment '生成功能名',
+ function_author varchar(50) comment '生成功能作者',
+ gen_type char(1) default '0' comment '生成代码方式(0zip压缩包 1自定义路径)',
+ gen_path varchar(200) default '/' comment '生成路径(不填默认项目路径)',
+ options varchar(1000) comment '其它生成选项',
+ create_dept bigint(20) default null comment '创建部门',
+ create_by bigint(20) default null comment '创建者',
+ create_time datetime comment '创建时间',
+ update_by bigint(20) default null comment '更新者',
+ update_time datetime comment '更新时间',
+ remark varchar(500) default null comment '备注',
+ primary key (table_id)
+) engine = innodb comment = '代码生成业务表';
-- ----------------------------
-- 19、代码生成业务表字段
-- ----------------------------
drop table if exists gen_table_column;
-create table gen_table_column (
- column_id bigint(20) not null comment '编号',
- table_id bigint(20) comment '归属表编号',
- column_name varchar(200) comment '列名称',
- column_comment varchar(500) comment '列描述',
- column_type varchar(100) comment '列类型',
- java_type varchar(500) comment 'JAVA类型',
- java_field varchar(200) comment 'JAVA字段名',
- is_pk char(1) comment '是否主键(1是)',
- is_increment char(1) comment '是否自增(1是)',
- is_required char(1) comment '是否必填(1是)',
- is_insert char(1) comment '是否为插入字段(1是)',
- is_edit char(1) comment '是否编辑字段(1是)',
- is_list char(1) comment '是否列表字段(1是)',
- is_query char(1) comment '是否查询字段(1是)',
- query_type varchar(200) default 'EQ' comment '查询方式(等于、不等于、大于、小于、范围)',
- html_type varchar(200) comment '显示类型(文本框、文本域、下拉框、复选框、单选框、日期控件)',
- dict_type varchar(200) default '' comment '字典类型',
- sort int comment '排序',
- create_dept bigint(20) default null comment '创建部门',
- create_by bigint(20) default null comment '创建者',
- create_time datetime comment '创建时间',
- update_by bigint(20) default null comment '更新者',
- update_time datetime comment '更新时间',
- primary key (column_id)
-) engine=innodb comment = '代码生成业务表字段';
+create table gen_table_column
+(
+ column_id bigint(20) not null comment '编号',
+ table_id bigint(20) comment '归属表编号',
+ column_name varchar(200) comment '列名称',
+ column_comment varchar(500) comment '列描述',
+ column_type varchar(100) comment '列类型',
+ java_type varchar(500) comment 'JAVA类型',
+ java_field varchar(200) comment 'JAVA字段名',
+ is_pk char(1) comment '是否主键(1是)',
+ is_increment char(1) comment '是否自增(1是)',
+ is_required char(1) comment '是否必填(1是)',
+ is_insert char(1) comment '是否为插入字段(1是)',
+ is_edit char(1) comment '是否编辑字段(1是)',
+ is_list char(1) comment '是否列表字段(1是)',
+ is_query char(1) comment '是否查询字段(1是)',
+ query_type varchar(200) default 'EQ' comment '查询方式(等于、不等于、大于、小于、范围)',
+ html_type varchar(200) comment '显示类型(文本框、文本域、下拉框、复选框、单选框、日期控件)',
+ dict_type varchar(200) default '' comment '字典类型',
+ sort int comment '排序',
+ create_dept bigint(20) default null comment '创建部门',
+ create_by bigint(20) default null comment '创建者',
+ create_time datetime comment '创建时间',
+ update_by bigint(20) default null comment '更新者',
+ update_time datetime comment '更新时间',
+ primary key (column_id)
+) engine = innodb comment = '代码生成业务表字段';
-- ----------------------------
-- OSS对象存储表
-- ----------------------------
drop table if exists sys_oss;
-create table sys_oss (
- oss_id bigint(20) not null comment '对象存储主键',
- tenant_id varchar(20) default '000000' comment '租户编号',
- file_name varchar(255) not null default '' comment '文件名',
- original_name varchar(255) not null default '' comment '原名',
- file_suffix varchar(10) not null default '' comment '文件后缀名',
- url varchar(500) not null comment 'URL地址',
- create_dept bigint(20) default null comment '创建部门',
- create_time datetime default null comment '创建时间',
- create_by bigint(20) default null comment '上传人',
- update_time datetime default null comment '更新时间',
- update_by bigint(20) default null comment '更新人',
- service varchar(20) not null default 'minio' comment '服务商',
- primary key (oss_id)
-) engine=innodb comment ='OSS对象存储表';
+create table sys_oss
+(
+ oss_id bigint(20) not null comment '对象存储主键',
+ tenant_id varchar(20) default '000000' comment '租户编号',
+ file_name varchar(255) not null default '' comment '文件名',
+ original_name varchar(255) not null default '' comment '原名',
+ file_suffix varchar(10) not null default '' comment '文件后缀名',
+ url varchar(500) not null comment 'URL地址',
+ create_dept bigint(20) default null comment '创建部门',
+ create_time datetime default null comment '创建时间',
+ create_by bigint(20) default null comment '上传人',
+ update_time datetime default null comment '更新时间',
+ update_by bigint(20) default null comment '更新人',
+ service varchar(20) not null default 'minio' comment '服务商',
+ primary key (oss_id)
+) engine = innodb comment ='OSS对象存储表';
-- ----------------------------
-- OSS对象存储动态配置表
-- ----------------------------
drop table if exists sys_oss_config;
-create table sys_oss_config (
- oss_config_id bigint(20) not null comment '主建',
- tenant_id varchar(20) default '000000'comment '租户编号',
- config_key varchar(20) not null default '' comment '配置key',
- access_key varchar(255) default '' comment 'accessKey',
- secret_key varchar(255) default '' comment '秘钥',
- bucket_name varchar(255) default '' comment '桶名称',
- prefix varchar(255) default '' comment '前缀',
- endpoint varchar(255) default '' comment '访问站点',
- domain varchar(255) default '' comment '自定义域名',
- is_https char(1) default 'N' comment '是否https(Y=是,N=否)',
- region varchar(255) default '' comment '域',
- access_policy char(1) not null default '1' comment '桶权限类型(0=private 1=public 2=custom)',
- status char(1) default '1' comment '是否默认(0=是,1=否)',
- ext1 varchar(255) default '' comment '扩展字段',
- create_dept bigint(20) default null comment '创建部门',
- create_by bigint(20) default null comment '创建者',
- create_time datetime default null comment '创建时间',
- update_by bigint(20) default null comment '更新者',
- update_time datetime default null comment '更新时间',
- remark varchar(500) default null comment '备注',
- primary key (oss_config_id)
-) engine=innodb comment='对象存储配置表';
+create table sys_oss_config
+(
+ oss_config_id bigint(20) not null comment '主建',
+ tenant_id varchar(20) default '000000' comment '租户编号',
+ config_key varchar(20) not null default '' comment '配置key',
+ access_key varchar(255) default '' comment 'accessKey',
+ secret_key varchar(255) default '' comment '秘钥',
+ bucket_name varchar(255) default '' comment '桶名称',
+ prefix varchar(255) default '' comment '前缀',
+ endpoint varchar(255) default '' comment '访问站点',
+ domain varchar(255) default '' comment '自定义域名',
+ is_https char(1) default 'N' comment '是否https(Y=是,N=否)',
+ region varchar(255) default '' comment '域',
+ access_policy char(1) not null default '1' comment '桶权限类型(0=private 1=public 2=custom)',
+ status char(1) default '1' comment '是否默认(0=是,1=否)',
+ ext1 varchar(255) default '' comment '扩展字段',
+ create_dept bigint(20) default null comment '创建部门',
+ create_by bigint(20) default null comment '创建者',
+ create_time datetime default null comment '创建时间',
+ update_by bigint(20) default null comment '更新者',
+ update_time datetime default null comment '更新时间',
+ remark varchar(500) default null comment '备注',
+ primary key (oss_config_id)
+) engine = innodb comment ='对象存储配置表';
-insert into sys_oss_config values (1, '000000', 'minio', 'ruoyi', 'ruoyi123', 'ruoyi', '', '127.0.0.1:9000', '','N', '', '1' ,'0', '', 103, 1, sysdate(), 1, sysdate(), NULL);
-insert into sys_oss_config values (2, '000000', 'qiniu', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 's3-cn-north-1.qiniucs.com', '','N', '', '1' ,'1', '', 103, 1, sysdate(), 1, sysdate(), NULL);
-insert into sys_oss_config values (3, '000000', 'aliyun', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 'oss-cn-beijing.aliyuncs.com', '','N', '', '1' ,'1', '', 103, 1, sysdate(), 1, sysdate(), NULL);
-insert into sys_oss_config values (4, '000000', 'qcloud', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi-1250000000', '', 'cos.ap-beijing.myqcloud.com', '','N', 'ap-beijing', '1' ,'1', '', 103, 1, sysdate(), 1, sysdate(), NULL);
-insert into sys_oss_config values (5, '000000', 'image', 'ruoyi', 'ruoyi123', 'ruoyi', 'image', '127.0.0.1:9000', '','N', '', '1' ,'1', '', 103, 1, sysdate(), 1, sysdate(), NULL);
+insert into sys_oss_config
+values (1, '000000', 'minio', 'ruoyi', 'ruoyi123', 'ruoyi', '', '127.0.0.1:9000', '', 'N', '', '1', '0', '', 103, 1,
+ sysdate(), 1, sysdate(), NULL);
+insert into sys_oss_config
+values (2, '000000', 'qiniu', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 's3-cn-north-1.qiniucs.com', '', 'N',
+ '', '1', '1', '', 103, 1, sysdate(), 1, sysdate(), NULL);
+insert into sys_oss_config
+values (3, '000000', 'aliyun', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 'oss-cn-beijing.aliyuncs.com', '',
+ 'N', '', '1', '1', '', 103, 1, sysdate(), 1, sysdate(), NULL);
+insert into sys_oss_config
+values (4, '000000', 'qcloud', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi-1250000000', '',
+ 'cos.ap-beijing.myqcloud.com', '', 'N', 'ap-beijing', '1', '1', '', 103, 1, sysdate(), 1, sysdate(), NULL);
+insert into sys_oss_config
+values (5, '000000', 'image', 'ruoyi', 'ruoyi123', 'ruoyi', 'image', '127.0.0.1:9000', '', 'N', '', '1', '1', '', 103,
+ 1, sysdate(), 1, sysdate(), NULL);