mirror of
https://gitee.com/youlaitech/youlai-mall.git
synced 2024-12-22 12:48:59 +08:00
refactor: 项目重构
This commit is contained in:
parent
b0a21d41ca
commit
01d0f17565
32
CHANGELOG.md
32
CHANGELOG.md
@ -1,4 +1,34 @@
|
|||||||
# 2.0.0 (2022-1-30)
|
# 2.1.0 (2022/11/6)
|
||||||
|
|
||||||
|
> 升级需同步更新SQL、Nacos配置和前端应用
|
||||||
|
|
||||||
|
### 🍉 build
|
||||||
|
|
||||||
|
- SpringBoot 版本升级至2.7.5
|
||||||
|
- SpringCloud 版本2021.0.0升级至2021.0.5
|
||||||
|
|
||||||
|
### 🍏 feat
|
||||||
|
- 完善部门数据权限,增加本部门和本人数据权限
|
||||||
|
|
||||||
|
|
||||||
|
### 🍎 fix
|
||||||
|
- 用户名唯一索引,未校验是否存在,导致新增用户失败。 [#9cc6b34](https://gitee.com/youlaitech/youlai-mall/commit/9cc6b340a6761edc01b7917e0b2030636a4b5d52)
|
||||||
|
|
||||||
|
### 🍑 docs
|
||||||
|
- SQL脚本更新
|
||||||
|
- Nacos配置更新
|
||||||
|
- README 文档修改
|
||||||
|
|
||||||
|
### 🍇 refactor
|
||||||
|
- 网关统一鉴权移除,token 网关中继各资源服务器进行有效和权限校验;
|
||||||
|
|
||||||
|
|
||||||
|
### 🍌 other
|
||||||
|
|
||||||
|
- 认证中心端口 8000 → 9000
|
||||||
|
|
||||||
|
|
||||||
|
# 2.0.0 (2022/1/30)
|
||||||
|
|
||||||
### 🍉 build
|
### 🍉 build
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="https://img.shields.io/badge/SpringBoot-2.7.3-brightgreen.svg"/>
|
<img src="https://img.shields.io/badge/SpringBoot-2.7.5-brightgreen.svg"/>
|
||||||
<img src="https://img.shields.io/badge/SpringCloud & Alibaba -2021-green.svg"/>
|
<img src="https://img.shields.io/badge/SpringCloud & Alibaba -2021-green.svg"/>
|
||||||
<a src="https://github.com/hxrui" target="_blank">
|
<a src="https://github.com/hxrui" target="_blank">
|
||||||
<img src="https://img.shields.io/github/stars/youlaitech/youlai-mall.svg?style=social&label=Stars"/>
|
<img src="https://img.shields.io/github/stars/youlaitech/youlai-mall.svg?style=social&label=Stars"/>
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -6,7 +6,11 @@
|
|||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- 系统管理数据库
|
-- 系统管理数据库
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
CREATE DATABASE IF NOT EXISTS youlai DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
|
CREATE DATABASE IF NOT EXISTS youlai_system DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
|
||||||
|
-- ----------------------------
|
||||||
|
-- OAuth2数据库
|
||||||
|
-- ----------------------------
|
||||||
|
CREATE DATABASE IF NOT EXISTS oauth2 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- 商城会员数据库
|
-- 商城会员数据库
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
|
127
docs/sql/mysql5.x/oauth2.sql
Normal file
127
docs/sql/mysql5.x/oauth2.sql
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
/*
|
||||||
|
Navicat Premium Data Transfer
|
||||||
|
|
||||||
|
Source Server : www.youlai.tech
|
||||||
|
Source Server Type : MySQL
|
||||||
|
Source Server Version : 80029
|
||||||
|
Source Host : www.youlai.tech:3306
|
||||||
|
Source Schema : oauth2
|
||||||
|
|
||||||
|
Target Server Type : MySQL
|
||||||
|
Target Server Version : 80029
|
||||||
|
File Encoding : 65001
|
||||||
|
|
||||||
|
Date: 06/11/2022 22:10:58
|
||||||
|
*/
|
||||||
|
|
||||||
|
SET NAMES utf8;
|
||||||
|
SET FOREIGN_KEY_CHECKS = 0;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for oauth_access_token
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `oauth_access_token`;
|
||||||
|
CREATE TABLE `oauth_access_token` (
|
||||||
|
`token_id` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
||||||
|
`token` longblob NULL,
|
||||||
|
`authentication_id` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
|
||||||
|
`user_name` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
||||||
|
`client_id` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
||||||
|
`authentication` longblob NULL,
|
||||||
|
`refresh_token` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`authentication_id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of oauth_access_token
|
||||||
|
-- ----------------------------
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for oauth_approvals
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `oauth_approvals`;
|
||||||
|
CREATE TABLE `oauth_approvals` (
|
||||||
|
`userId` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
||||||
|
`clientId` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
||||||
|
`scope` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
||||||
|
`status` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
||||||
|
`expiresAt` timestamp(0) NULL DEFAULT NULL,
|
||||||
|
`lastModifiedAt` timestamp(0) NULL DEFAULT NULL
|
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of oauth_approvals
|
||||||
|
-- ----------------------------
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for oauth_client_details
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `oauth_client_details`;
|
||||||
|
CREATE TABLE `oauth_client_details` (
|
||||||
|
`client_id` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
|
||||||
|
`resource_ids` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
||||||
|
`client_secret` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
||||||
|
`scope` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
||||||
|
`authorized_grant_types` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
||||||
|
`web_server_redirect_uri` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
||||||
|
`authorities` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
||||||
|
`access_token_validity` int(0) NULL DEFAULT NULL,
|
||||||
|
`refresh_token_validity` int(0) NULL DEFAULT NULL,
|
||||||
|
`additional_information` varchar(4096) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
||||||
|
`autoapprove` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`client_id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of oauth_client_details
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `oauth_client_details` VALUES ('client', '', '{noop}123456', 'all', 'password,refresh_token', NULL, NULL, 3600, 7200, NULL, 'true');
|
||||||
|
INSERT INTO `oauth_client_details` VALUES ('mall-admin', '', '{noop}123456', 'all', 'password,refresh_token,captcha', NULL, '', 3600, 7200, NULL, 'true');
|
||||||
|
INSERT INTO `oauth_client_details` VALUES ('mall-app', '', '{noop}123456', 'all', 'sms_code,refresh_token', NULL, NULL, 3600, 7200, NULL, 'true');
|
||||||
|
INSERT INTO `oauth_client_details` VALUES ('mall-weapp', '', '{noop}123456', 'all', 'sms_code,refresh_token', NULL, NULL, 3600, 7200, NULL, 'true');
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for oauth_client_token
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `oauth_client_token`;
|
||||||
|
CREATE TABLE `oauth_client_token` (
|
||||||
|
`token_id` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
||||||
|
`token` longblob NULL,
|
||||||
|
`authentication_id` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
|
||||||
|
`user_name` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
||||||
|
`client_id` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`authentication_id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of oauth_client_token
|
||||||
|
-- ----------------------------
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for oauth_code
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `oauth_code`;
|
||||||
|
CREATE TABLE `oauth_code` (
|
||||||
|
`code` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
||||||
|
`authentication` longblob NULL
|
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of oauth_code
|
||||||
|
-- ----------------------------
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for oauth_refresh_token
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `oauth_refresh_token`;
|
||||||
|
CREATE TABLE `oauth_refresh_token` (
|
||||||
|
`token_id` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
||||||
|
`token` longblob NULL,
|
||||||
|
`authentication` longblob NULL
|
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of oauth_refresh_token
|
||||||
|
-- ----------------------------
|
||||||
|
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1;
|
@ -1,356 +0,0 @@
|
|||||||
/*
|
|
||||||
Navicat Premium Data Transfer
|
|
||||||
|
|
||||||
Source Server : localhost5.7
|
|
||||||
Source Server Type : MySQL
|
|
||||||
Source Server Version : 50739
|
|
||||||
Source Host : localhost:3307
|
|
||||||
Source Schema : youlai
|
|
||||||
|
|
||||||
Target Server Type : MySQL
|
|
||||||
Target Server Version : 50739
|
|
||||||
File Encoding : 65001
|
|
||||||
|
|
||||||
Date: 19/09/2022 01:07:09
|
|
||||||
*/
|
|
||||||
|
|
||||||
SET NAMES utf8mb4;
|
|
||||||
SET FOREIGN_KEY_CHECKS = 0;
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Table structure for sys_dept
|
|
||||||
-- ----------------------------
|
|
||||||
DROP TABLE IF EXISTS `sys_dept`;
|
|
||||||
CREATE TABLE `sys_dept` (
|
|
||||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
||||||
`name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '部门名称',
|
|
||||||
`parent_id` bigint(20) NULL DEFAULT 0 COMMENT '父节点id',
|
|
||||||
`tree_path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '父节点id路径',
|
|
||||||
`sort` int(11) NULL DEFAULT 0 COMMENT '显示顺序',
|
|
||||||
`status` tinyint(4) NULL DEFAULT 1 COMMENT '状态(1:正常;0:禁用)',
|
|
||||||
`deleted` tinyint(4) NULL DEFAULT 0 COMMENT '逻辑删除标识(1:已删除;0:未删除)',
|
|
||||||
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
|
||||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
|
||||||
PRIMARY KEY (`id`) USING BTREE
|
|
||||||
) ENGINE = InnoDB AUTO_INCREMENT = 47 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '部门表' ROW_FORMAT = DYNAMIC;
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Records of sys_dept
|
|
||||||
-- ----------------------------
|
|
||||||
INSERT INTO `sys_dept` VALUES (1, '有来技术', 0, '0', 1, 1, 0, NULL, NULL);
|
|
||||||
INSERT INTO `sys_dept` VALUES (2, '研发部门', 1, '0,1', 1, 1, 0, NULL, '2022-04-19 12:46:37');
|
|
||||||
INSERT INTO `sys_dept` VALUES (3, '测试部门', 1, '0,1', 2, 1, 0, NULL, NULL);
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Table structure for sys_dict_item
|
|
||||||
-- ----------------------------
|
|
||||||
DROP TABLE IF EXISTS `sys_dict_item`;
|
|
||||||
CREATE TABLE `sys_dict_item` (
|
|
||||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
||||||
`type_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '字典类型编码',
|
|
||||||
`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '字典项名称',
|
|
||||||
`value` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '字典项值',
|
|
||||||
`sort` int(11) NULL DEFAULT 0 COMMENT '排序',
|
|
||||||
`status` tinyint(4) NULL DEFAULT 0 COMMENT '状态(1:正常;0:禁用)',
|
|
||||||
`defaulted` tinyint(4) NULL DEFAULT 0 COMMENT '是否默认(1:是;0:否)',
|
|
||||||
`remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '备注',
|
|
||||||
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
|
||||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
|
||||||
PRIMARY KEY (`id`) USING BTREE
|
|
||||||
) ENGINE = InnoDB AUTO_INCREMENT = 35 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '字典数据表' ROW_FORMAT = DYNAMIC;
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Records of sys_dict_item
|
|
||||||
-- ----------------------------
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (1, 'gender', '男', '1', 1, 1, 0, NULL, '2019-05-05 13:07:52', '2022-06-12 23:20:39');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (2, 'gender', '女', '2', 2, 1, 0, NULL, '2019-04-19 11:33:00', '2019-07-02 14:23:05');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (3, 'gender', '未知', '0', 1, 1, 0, NULL, '2020-10-17 08:09:31', '2020-10-17 08:09:31');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (6, 'grant_type', '密码模式', 'password', 1, 1, 0, NULL, '2020-10-17 09:11:52', '2021-01-31 09:48:18');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (7, 'grant_type', '授权码模式', 'authorization_code', 1, 1, 0, NULL, '2020-10-17 09:12:15', '2020-12-14 10:11:00');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (8, 'grant_type', '客户端模式', 'client_credentials', 1, 1, 0, NULL, '2020-10-17 09:12:36', '2020-12-14 10:11:00');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (9, 'grant_type', '刷新模式', 'refresh_token', 1, 1, 0, NULL, '2020-10-17 09:12:57', '2021-01-08 17:33:12');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (10, 'grant_type', '简化模式', 'implicit', 1, 1, 0, NULL, '2020-10-17 09:13:23', '2020-12-14 10:11:00');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (11, 'micro_service', '系统服务', 'youlai-admin', 1, 1, 0, NULL, '2021-06-17 00:14:12', '2021-06-17 00:14:12');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (12, 'micro_service', '会员服务', 'youlai-ums', 2, 1, 0, NULL, '2021-06-17 00:15:06', '2021-06-17 00:15:06');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (13, 'micro_service', '商品服务', 'youlai-pms', 3, 1, 0, NULL, '2021-06-17 00:15:26', '2021-06-17 00:16:18');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (14, 'micro_service', '订单服务', 'youlai-oms', 4, 1, 0, NULL, '2021-06-17 00:15:40', '2021-06-17 00:16:10');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (15, 'micro_service', '营销服务', 'youlai-sms', 5, 1, 0, NULL, '2021-06-17 00:16:01', '2021-06-17 00:16:01');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (16, 'request_method', '不限', '*', 1, 1, 0, NULL, '2021-06-17 00:18:34', '2021-06-17 00:18:34');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (17, 'request_method', 'GET', 'GET', 2, 1, 0, NULL, '2021-06-17 00:18:55', '2021-06-17 00:18:55');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (18, 'request_method', 'POST', 'POST', 3, 1, 0, NULL, '2021-06-17 00:19:06', '2021-06-17 00:19:06');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (19, 'request_method', 'PUT', 'PUT', 4, 1, 0, NULL, '2021-06-17 00:19:17', '2021-06-17 00:19:17');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (20, 'request_method', 'DELETE', 'DELETE', 5, 1, 0, NULL, '2021-06-17 00:19:30', '2021-06-17 00:19:30');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (21, 'request_method', 'PATCH', 'PATCH', 6, 1, 0, NULL, '2021-06-17 00:19:42', '2021-06-17 00:19:42');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (22, 'grant_type', '验证码', 'captcha', 1, 1, 0, '', '2022-05-28 11:44:28', '2022-05-28 11:44:28');
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Table structure for sys_dict_type
|
|
||||||
-- ----------------------------
|
|
||||||
DROP TABLE IF EXISTS `sys_dict_type`;
|
|
||||||
CREATE TABLE `sys_dict_type` (
|
|
||||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键 ',
|
|
||||||
`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '类型名称',
|
|
||||||
`code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '类型编码',
|
|
||||||
`status` tinyint(1) NULL DEFAULT 0 COMMENT '状态(0:正常;1:禁用)',
|
|
||||||
`remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注',
|
|
||||||
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
|
||||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
|
||||||
PRIMARY KEY (`id`) USING BTREE,
|
|
||||||
UNIQUE INDEX `type_code`(`code`) USING BTREE
|
|
||||||
) ENGINE = InnoDB AUTO_INCREMENT = 31 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '字典类型表' ROW_FORMAT = DYNAMIC;
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Records of sys_dict_type
|
|
||||||
-- ----------------------------
|
|
||||||
INSERT INTO `sys_dict_type` VALUES (1, '性别', 'gender', 1, NULL, '2019-12-06 19:03:32', '2022-06-12 16:21:28');
|
|
||||||
INSERT INTO `sys_dict_type` VALUES (2, '授权方式', 'grant_type', 1, NULL, '2020-10-17 08:09:50', '2021-01-31 09:48:24');
|
|
||||||
INSERT INTO `sys_dict_type` VALUES (3, '微服务列表', 'micro_service', 1, NULL, '2021-06-17 00:13:43', '2021-06-17 00:17:22');
|
|
||||||
INSERT INTO `sys_dict_type` VALUES (4, '请求方式', 'request_method', 1, NULL, '2021-06-17 00:18:07', '2021-06-17 00:18:07');
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Table structure for sys_menu
|
|
||||||
-- ----------------------------
|
|
||||||
DROP TABLE IF EXISTS `sys_menu`;
|
|
||||||
CREATE TABLE `sys_menu` (
|
|
||||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
|
||||||
`parent_id` bigint(20) NULL DEFAULT NULL COMMENT '父菜单ID',
|
|
||||||
`name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '菜单名称',
|
|
||||||
`path` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '路由路径(浏览器地址栏路径)',
|
|
||||||
`component` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '组件路径(vue页面完整路径,省略.vue后缀)',
|
|
||||||
`icon` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '菜单图标',
|
|
||||||
`sort` int(11) NULL DEFAULT 0 COMMENT '排序',
|
|
||||||
`visible` tinyint(1) NULL DEFAULT 1 COMMENT '状态(0:禁用;1:开启)',
|
|
||||||
`redirect` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '跳转路径',
|
|
||||||
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
|
||||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
|
||||||
`type` tinyint(4) NULL DEFAULT NULL COMMENT '菜单类型(1:菜单;2:目录;3:外链)',
|
|
||||||
PRIMARY KEY (`id`) USING BTREE
|
|
||||||
) ENGINE = InnoDB AUTO_INCREMENT = 40 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '菜单管理' ROW_FORMAT = DYNAMIC;
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Records of sys_menu
|
|
||||||
-- ----------------------------
|
|
||||||
INSERT INTO `sys_menu` VALUES (1, 0, '系统管理', '/system', 'Layout', 'system', 1, 1, '/system/user', '2021-08-28 09:12:21', '2021-08-28 09:12:21', 2);
|
|
||||||
INSERT INTO `sys_menu` VALUES (2, 1, '用户管理', 'user', 'system/user/index', 'user', 1, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (3, 1, '角色管理', 'role', 'system/role/index', 'role', 2, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (4, 1, '菜单管理', 'cmenu', 'system/menu/index', 'menu', 3, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (5, 1, '部门管理', 'dept', 'system/dept/index', 'tree', 4, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (6, 1, '字典管理', 'dict', 'system/dict/index', 'dict', 5, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (7, 1, '客户端管理', 'client', 'system/client/index', 'client', 6, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (9, 0, '营销管理', '/sms', 'Layout', 'number', 5, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 2);
|
|
||||||
INSERT INTO `sys_menu` VALUES (10, 9, '广告列表', 'advert', 'sms/advert/index', 'advert', 1, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (11, 0, '商品管理', '/pms', 'Layout', 'goods', 2, 1, '/pms/goods', '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (12, 11, '商品列表', 'goods', 'pms/goods/index', 'goods-list', 1, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (13, 0, '订单管理', '/oms', 'Layout', 'shopping', 3, 1, '/oms/order', '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (14, 13, '订单列表', 'order', 'oms/order/index', 'order', 1, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (15, 0, '会员管理', '/ums', 'Layout', 'user', 4, 1, '/ums/member', '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (16, 15, '会员列表', 'member', 'ums/member/index', 'peoples', 1, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (17, 11, '品牌管理', 'brand', 'pms/brand/index', 'brand', 5, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (18, 11, '商品分类', 'category', 'pms/category/index', 'menu', 3, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (19, 11, '商品上架', 'goods-detail', 'pms/goods/detail', 'publish', 2, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (20, 0, '多级菜单', '/multi-level-menu', 'Layout', 'nested', 7, 1, '/nested/level1/level2', '2022-02-16 23:11:00', '2022-02-16 23:11:00', 2);
|
|
||||||
INSERT INTO `sys_menu` VALUES (21, 20, '菜单一级', 'nested_level1_index', 'nested/level1/index', '', 1, 1, '/nested/level1/level2', '2022-02-16 23:13:38', '2022-02-16 23:13:38', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (22, 21, '菜单二级', 'nested_level1_level2_index', 'nested/level1/level2/index', '', 1, 1, '/nested/level1/level2/level3', '2022-02-16 23:14:23', '2022-02-16 23:14:23', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (23, 22, '菜单三级-1', 'nested_level1_level2_level3_index1', 'nested/level1/level2/level3/index1', '', 1, 1, '', '2022-02-16 23:14:51', '2022-02-16 23:14:51', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (24, 22, '菜单三级-2', 'nested_level1_level2_level3_index2', 'nested/level1/level2/level3/index2', '', 2, 1, '', '2022-02-16 23:15:08', '2022-02-16 23:15:08', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (26, 0, '外部链接', '/external-link', 'Layout', 'link', 9, 1, 'noredirect', '2022-02-17 22:51:20', '2022-02-17 22:51:20', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (30, 26, 'document', 'https://www.cnblogs.com/haoxianrui/', '', 'link', 1, 1, '', '2022-02-18 00:01:40', '2022-02-18 00:01:40', 3);
|
|
||||||
INSERT INTO `sys_menu` VALUES (32, 0, '实验室', '/lab', 'Layout', 'lab', 8, 1, 'noredirect', '2022-04-19 09:35:38', '2022-04-19 09:35:38', 2);
|
|
||||||
INSERT INTO `sys_menu` VALUES (33, 32, 'Seata', 'seata', 'lab/seata/index', 'security', 1, 1, '', '2022-04-19 09:35:38', '2022-04-19 09:35:38', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (34, 32, 'RabbitMQ', 'rabbitmq', 'lab/rabbit/index', 'rabbitmq', 2, 1, '', '2022-04-19 09:38:25', '2022-04-19 09:38:25', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (37, 9, '优惠券列表', 'coupon', 'sms/coupon/index', 'input', 2, 1, '', '2022-05-29 00:24:07', '2022-05-29 00:24:07', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (38, 1, '分配权限', 'assign-perm', 'system/role/AssignPerm', 'perm', 1, 0, '', '2022-06-01 08:49:22', '2022-06-01 08:49:22', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (39, 32, 'Sentinel', 'sentinel', 'lab/sentinel/index', 'security', 2, 1, '', '2022-07-23 09:52:41', '2022-07-23 09:52:41', 1);
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Table structure for sys_oauth_client
|
|
||||||
-- ----------------------------
|
|
||||||
DROP TABLE IF EXISTS `sys_oauth_client`;
|
|
||||||
CREATE TABLE `sys_oauth_client` (
|
|
||||||
`client_id` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
|
|
||||||
`resource_ids` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
|
||||||
`client_secret` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
|
||||||
`scope` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
|
||||||
`authorized_grant_types` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
|
||||||
`web_server_redirect_uri` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
|
||||||
`authorities` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
|
||||||
`access_token_validity` int(11) NULL DEFAULT NULL,
|
|
||||||
`refresh_token_validity` int(11) NULL DEFAULT NULL,
|
|
||||||
`additional_information` varchar(4096) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
|
||||||
`autoapprove` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
|
||||||
PRIMARY KEY (`client_id`) USING BTREE
|
|
||||||
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Records of sys_oauth_client
|
|
||||||
-- ----------------------------
|
|
||||||
INSERT INTO `sys_oauth_client` VALUES ('client', '', '123456', 'all', 'password,refresh_token', NULL, NULL, 3600, 7200, NULL, 'true');
|
|
||||||
INSERT INTO `sys_oauth_client` VALUES ('mall-admin-web', '', '123456', 'all', 'password,refresh_token,captcha', NULL, '', 3600, 7200, NULL, 'true');
|
|
||||||
INSERT INTO `sys_oauth_client` VALUES ('mall-app', '', '123456', 'all', 'sms_code,refresh_token', NULL, NULL, 3600, 7200, NULL, 'true');
|
|
||||||
INSERT INTO `sys_oauth_client` VALUES ('mall-weapp', '', '123456', 'all', 'wechat,refresh_token', NULL, NULL, 3600, 7200, NULL, 'true');
|
|
||||||
INSERT INTO `sys_oauth_client` VALUES ('youlai-admin', '', '123456', 'all', 'password,client_credentials,refresh_token,authorization_code', NULL, '', 3600, 7200, NULL, 'true');
|
|
||||||
INSERT INTO `sys_oauth_client` VALUES ('youlai-mall-app', '', '123456', 'all', 'authorization_code,password,refresh_token,implicit,wechat,refresh_token', NULL, NULL, 3600, 7200, NULL, 'true');
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Table structure for sys_permission
|
|
||||||
-- ----------------------------
|
|
||||||
DROP TABLE IF EXISTS `sys_permission`;
|
|
||||||
CREATE TABLE `sys_permission` (
|
|
||||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
||||||
`name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '权限名称',
|
|
||||||
`menu_id` int(11) NULL DEFAULT NULL COMMENT '菜单模块ID\r\n',
|
|
||||||
`url_perm` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'URL权限标识',
|
|
||||||
`btn_perm` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '按钮权限标识',
|
|
||||||
`create_time` datetime NULL DEFAULT NULL,
|
|
||||||
`update_time` datetime NULL DEFAULT NULL,
|
|
||||||
PRIMARY KEY (`id`) USING BTREE,
|
|
||||||
INDEX `id`(`id`, `name`) USING BTREE
|
|
||||||
) ENGINE = InnoDB AUTO_INCREMENT = 29 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '权限表' ROW_FORMAT = DYNAMIC;
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Records of sys_permission
|
|
||||||
-- ----------------------------
|
|
||||||
INSERT INTO `sys_permission` VALUES (1, '查看用户', 2, 'GET:/youlai-admin/api/v1/users/*', 'sys:user:view', '2021-02-02 14:16:07', '2021-06-16 22:25:24');
|
|
||||||
INSERT INTO `sys_permission` VALUES (2, '编辑用户', 2, 'PUT:/youlai-admin/users/*', 'sys:user:edit', '2021-06-16 16:19:44', '2021-06-16 23:36:53');
|
|
||||||
INSERT INTO `sys_permission` VALUES (3, '新增用户', 2, 'POST:/youlai-admin/api/v1/users', 'sys:user:add', '2021-06-16 23:36:37', '2021-06-16 23:37:03');
|
|
||||||
INSERT INTO `sys_permission` VALUES (4, '删除用户', 2, 'DELETE:/youlai-admin/api/v1/users/*', 'sys:user:delete', '2021-06-16 23:43:54', '2021-06-16 23:43:54');
|
|
||||||
INSERT INTO `sys_permission` VALUES (5, '路由列表', 4, 'GET:/youlai-admin/api/v1/menus/route', 'sys:route:query', NULL, NULL);
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Table structure for sys_role
|
|
||||||
-- ----------------------------
|
|
||||||
DROP TABLE IF EXISTS `sys_role`;
|
|
||||||
CREATE TABLE `sys_role` (
|
|
||||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
|
||||||
`name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '角色名称',
|
|
||||||
`code` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色编码',
|
|
||||||
`sort` int(11) NULL DEFAULT NULL COMMENT '显示顺序',
|
|
||||||
`status` tinyint(1) NULL DEFAULT 1 COMMENT '角色状态(1-正常;0-停用)',
|
|
||||||
`deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标识(0-未删除;1-已删除)',
|
|
||||||
`create_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
|
||||||
`update_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
|
||||||
`data_scope` int(1) NULL DEFAULT 1 COMMENT '数据范围(1:全部数据权限 2:本部门数据权限 3:本部门及以下数据权限 4:本人数据)',
|
|
||||||
PRIMARY KEY (`id`) USING BTREE,
|
|
||||||
UNIQUE INDEX `name`(`name`) USING BTREE
|
|
||||||
) ENGINE = InnoDB AUTO_INCREMENT = 21 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色表' ROW_FORMAT = DYNAMIC;
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Records of sys_role
|
|
||||||
-- ----------------------------
|
|
||||||
INSERT INTO `sys_role` VALUES (1, '超级管理员', 'ROOT', 1, 1, 0, '2021-05-21 14:56:51', '2018-12-23 16:00:00', 1);
|
|
||||||
INSERT INTO `sys_role` VALUES (2, '系统管理员', 'ADMIN', 2, 1, 0, '2021-03-25 12:39:54', '2022-06-12 23:19:11', 1);
|
|
||||||
INSERT INTO `sys_role` VALUES (3, '访问游客', 'GUEST', 3, 1, 0, '2021-05-26 15:49:05', '2019-05-05 16:00:00', 1);
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Table structure for sys_role_menu
|
|
||||||
-- ----------------------------
|
|
||||||
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'
|
|
||||||
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色和菜单关联表' ROW_FORMAT = DYNAMIC;
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Records of sys_role_menu
|
|
||||||
-- ----------------------------
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 1);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 2);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, -1);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 38);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 3);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 4);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, -1);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 5);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 6);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 7);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, -1);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 11);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 12);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 19);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 18);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 17);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 13);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 14);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 15);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 16);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 9);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 10);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 37);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 20);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 21);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 22);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 23);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 24);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 32);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 33);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 34);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 26);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 30);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 39);
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Table structure for sys_role_permission
|
|
||||||
-- ----------------------------
|
|
||||||
DROP TABLE IF EXISTS `sys_role_permission`;
|
|
||||||
CREATE TABLE `sys_role_permission` (
|
|
||||||
`role_id` int(11) NULL DEFAULT NULL COMMENT '角色id',
|
|
||||||
`permission_id` int(11) NULL DEFAULT NULL COMMENT '资源id',
|
|
||||||
INDEX `role_id`(`role_id`) USING BTREE,
|
|
||||||
INDEX `permission_id`(`permission_id`) USING BTREE
|
|
||||||
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色权限表' ROW_FORMAT = DYNAMIC;
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Records of sys_role_permission
|
|
||||||
-- ----------------------------
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (2, 1);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (2, 2);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (2, 3);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (2, 4);
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Table structure for sys_user
|
|
||||||
-- ----------------------------
|
|
||||||
DROP TABLE IF EXISTS `sys_user`;
|
|
||||||
CREATE TABLE `sys_user` (
|
|
||||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
||||||
`username` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名',
|
|
||||||
`nickname` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '昵称',
|
|
||||||
`gender` tinyint(1) NULL DEFAULT 1 COMMENT '性别((1:男;2:女))',
|
|
||||||
`password` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '密码',
|
|
||||||
`dept_id` int(11) NULL DEFAULT NULL COMMENT '部门ID',
|
|
||||||
`avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '用户头像',
|
|
||||||
`mobile` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '联系方式',
|
|
||||||
`status` tinyint(1) NULL DEFAULT 1 COMMENT '用户状态((1:正常;0:禁用))',
|
|
||||||
`email` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户邮箱',
|
|
||||||
`deleted` tinyint(1) NULL DEFAULT 0 COMMENT '逻辑删除标识(0:未删除;1:已删除)',
|
|
||||||
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
|
||||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
|
||||||
PRIMARY KEY (`id`) USING BTREE,
|
|
||||||
UNIQUE INDEX `login_name`(`username`) USING BTREE
|
|
||||||
) ENGINE = InnoDB AUTO_INCREMENT = 99 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户信息表' ROW_FORMAT = DYNAMIC;
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Records of sys_user
|
|
||||||
-- ----------------------------
|
|
||||||
INSERT INTO `sys_user` VALUES (1, 'root', '有来技术', 0, '$2a$10$xVWsNOhHrCxh5UbpCE7/HuJ.PAOKcYAqRxD2CO2nVnJS.IAXkr5aq', NULL, 'https://s2.loli.net/2022/04/07/gw1L2Z5sPtS8GIl.gif', '17621590365', 1, 'youlaitech@163.com', 0, NULL, NULL);
|
|
||||||
INSERT INTO `sys_user` VALUES (2, 'admin', '系统管理员', 1, '$2a$10$8/8PxGHA.30EeWg8x4/4BuWuCUJubFbGJXyUYRs7RaJEdVvEMRbWe', 2, 'https://s2.loli.net/2022/04/07/gw1L2Z5sPtS8GIl.gif', '17621210366', 1, '', 0, '2019-10-10 13:41:22', '2022-06-12 15:32:43');
|
|
||||||
INSERT INTO `sys_user` VALUES (3, 'test', '测试小用户', 1, '$2a$10$MPJkNw.hKT/fZOgwYP8q9eu/rFJJDsNov697AmdkHNJkpjIpVSw2q', 3, 'https://s2.loli.net/2022/04/07/gw1L2Z5sPtS8GIl.gif', '17621210366', 1, 'youlaitech@163.com', 0, '2021-06-05 01:31:29', '2021-06-05 01:31:29');
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Table structure for sys_user_role
|
|
||||||
-- ----------------------------
|
|
||||||
DROP TABLE IF EXISTS `sys_user_role`;
|
|
||||||
CREATE TABLE `sys_user_role` (
|
|
||||||
`user_id` int(11) NOT NULL COMMENT '用户ID',
|
|
||||||
`role_id` int(11) NOT NULL COMMENT '角色ID',
|
|
||||||
PRIMARY KEY (`user_id`, `role_id`) USING BTREE
|
|
||||||
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户和角色关联表' ROW_FORMAT = DYNAMIC;
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Records of sys_user_role
|
|
||||||
-- ----------------------------
|
|
||||||
INSERT INTO `sys_user_role` VALUES (1, 1);
|
|
||||||
INSERT INTO `sys_user_role` VALUES (2, 2);
|
|
||||||
INSERT INTO `sys_user_role` VALUES (3, 3);
|
|
||||||
|
|
||||||
SET FOREIGN_KEY_CHECKS = 1;
|
|
285
docs/sql/mysql5.x/youlai_system.sql
Normal file
285
docs/sql/mysql5.x/youlai_system.sql
Normal file
@ -0,0 +1,285 @@
|
|||||||
|
/*
|
||||||
|
Navicat Premium Data Transfer
|
||||||
|
|
||||||
|
Source Server : www.youlai.tech
|
||||||
|
Source Server Type : MySQL
|
||||||
|
Source Server Version : 80029
|
||||||
|
Source Host : www.youlai.tech:3306
|
||||||
|
Source Schema : youlai_system
|
||||||
|
|
||||||
|
Target Server Type : MySQL
|
||||||
|
Target Server Version : 80029
|
||||||
|
File Encoding : 65001
|
||||||
|
|
||||||
|
Date: 06/11/2022 22:12:28
|
||||||
|
*/
|
||||||
|
|
||||||
|
SET NAMES utf8;
|
||||||
|
SET FOREIGN_KEY_CHECKS = 0;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for sys_dept
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `sys_dept`;
|
||||||
|
CREATE TABLE `sys_dept` (
|
||||||
|
`id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
`name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '部门名称',
|
||||||
|
`parent_id` bigint(0) NULL DEFAULT 0 COMMENT '父节点id',
|
||||||
|
`tree_path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '父节点id路径',
|
||||||
|
`sort` int(0) NULL DEFAULT 0 COMMENT '显示顺序',
|
||||||
|
`status` tinyint(0) NULL DEFAULT 1 COMMENT '状态(1:正常;0:禁用)',
|
||||||
|
`deleted` tinyint(0) NULL DEFAULT 0 COMMENT '逻辑删除标识(1:已删除;0:未删除)',
|
||||||
|
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 160 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '部门表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of sys_dept
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `sys_dept` VALUES (1, '有来技术', 0, '0', 1, 1, 0, NULL, NULL);
|
||||||
|
INSERT INTO `sys_dept` VALUES (2, '研发部门', 1, '0,1', 1, 1, 0, NULL, '2022-04-19 12:46:37');
|
||||||
|
INSERT INTO `sys_dept` VALUES (3, '测试部门', 1, '0,1', 1, 1, 0, NULL, '2022-04-19 12:46:37');
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for sys_dict_item
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `sys_dict_item`;
|
||||||
|
CREATE TABLE `sys_dict_item` (
|
||||||
|
`id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
`type_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '字典类型编码',
|
||||||
|
`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '字典项名称',
|
||||||
|
`value` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '字典项值',
|
||||||
|
`sort` int(0) NULL DEFAULT 0 COMMENT '排序',
|
||||||
|
`status` tinyint(0) NULL DEFAULT 0 COMMENT '状态(1:正常;0:禁用)',
|
||||||
|
`defaulted` tinyint(0) NULL DEFAULT 0 COMMENT '是否默认(1:是;0:否)',
|
||||||
|
`remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '备注',
|
||||||
|
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 35 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '字典数据表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of sys_dict_item
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (1, 'gender', '男', '1', 1, 1, 0, NULL, '2019-05-05 13:07:52', '2022-06-12 23:20:39');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (2, 'gender', '女', '2', 2, 1, 0, NULL, '2019-04-19 11:33:00', '2019-07-02 14:23:05');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (3, 'gender', '未知', '0', 1, 1, 0, NULL, '2020-10-17 08:09:31', '2020-10-17 08:09:31');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (6, 'grant_type', '密码模式', 'password', 1, 1, 0, NULL, '2020-10-17 09:11:52', '2021-01-31 09:48:18');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (7, 'grant_type', '授权码模式', 'authorization_code', 1, 1, 0, NULL, '2020-10-17 09:12:15', '2020-12-14 10:11:00');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (8, 'grant_type', '客户端模式', 'client_credentials', 1, 1, 0, NULL, '2020-10-17 09:12:36', '2020-12-14 10:11:00');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (9, 'grant_type', '刷新模式', 'refresh_token', 1, 1, 0, NULL, '2020-10-17 09:12:57', '2021-01-08 17:33:12');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (10, 'grant_type', '简化模式', 'implicit', 1, 1, 0, NULL, '2020-10-17 09:13:23', '2020-12-14 10:11:00');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (11, 'micro_service', '系统服务', 'youlai-admin', 1, 1, 0, NULL, '2021-06-17 00:14:12', '2021-06-17 00:14:12');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (12, 'micro_service', '会员服务', 'youlai-ums', 2, 1, 0, NULL, '2021-06-17 00:15:06', '2021-06-17 00:15:06');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (13, 'micro_service', '商品服务', 'youlai-pms', 3, 1, 0, NULL, '2021-06-17 00:15:26', '2021-06-17 00:16:18');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (14, 'micro_service', '订单服务', 'youlai-oms', 4, 1, 0, NULL, '2021-06-17 00:15:40', '2021-06-17 00:16:10');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (15, 'micro_service', '营销服务', 'youlai-sms', 5, 1, 0, NULL, '2021-06-17 00:16:01', '2021-06-17 00:16:01');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (16, 'request_method', '不限', '*', 1, 1, 0, NULL, '2021-06-17 00:18:34', '2021-06-17 00:18:34');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (17, 'request_method', 'GET', 'GET', 2, 1, 0, NULL, '2021-06-17 00:18:55', '2021-06-17 00:18:55');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (18, 'request_method', 'POST', 'POST', 3, 1, 0, NULL, '2021-06-17 00:19:06', '2021-06-17 00:19:06');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (19, 'request_method', 'PUT', 'PUT', 4, 1, 0, NULL, '2021-06-17 00:19:17', '2021-06-17 00:19:17');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (20, 'request_method', 'DELETE', 'DELETE', 5, 1, 0, NULL, '2021-06-17 00:19:30', '2021-06-17 00:19:30');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (21, 'request_method', 'PATCH', 'PATCH', 6, 1, 0, NULL, '2021-06-17 00:19:42', '2021-06-17 00:19:42');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (22, 'grant_type', '验证码', 'captcha', 1, 1, 0, '', '2022-05-28 11:44:28', '2022-05-28 11:44:28');
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for sys_dict_type
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `sys_dict_type`;
|
||||||
|
CREATE TABLE `sys_dict_type` (
|
||||||
|
`id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '主键 ',
|
||||||
|
`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '类型名称',
|
||||||
|
`code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '类型编码',
|
||||||
|
`status` tinyint(1) NULL DEFAULT 0 COMMENT '状态(0:正常;1:禁用)',
|
||||||
|
`remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注',
|
||||||
|
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE,
|
||||||
|
UNIQUE INDEX `type_code`(`code`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 31 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '字典类型表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of sys_dict_type
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `sys_dict_type` VALUES (1, '性别', 'gender', 1, NULL, '2019-12-06 19:03:32', '2022-06-12 16:21:28');
|
||||||
|
INSERT INTO `sys_dict_type` VALUES (2, '授权方式', 'grant_type', 1, NULL, '2020-10-17 08:09:50', '2021-01-31 09:48:24');
|
||||||
|
INSERT INTO `sys_dict_type` VALUES (3, '微服务列表', 'micro_service', 1, NULL, '2021-06-17 00:13:43', '2021-06-17 00:17:22');
|
||||||
|
INSERT INTO `sys_dict_type` VALUES (4, '请求方式', 'request_method', 1, NULL, '2021-06-17 00:18:07', '2021-06-17 00:18:07');
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for sys_menu
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `sys_menu`;
|
||||||
|
CREATE TABLE `sys_menu` (
|
||||||
|
`id` bigint(0) NOT NULL AUTO_INCREMENT,
|
||||||
|
`parent_id` bigint(0) NULL DEFAULT NULL COMMENT '父菜单ID',
|
||||||
|
`type` tinyint(0) NULL DEFAULT NULL COMMENT '菜单类型(1:菜单;2:目录;3:外链;4:按钮)',
|
||||||
|
`name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '菜单名称',
|
||||||
|
`path` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '路由路径(浏览器地址栏路径)',
|
||||||
|
`component` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '组件路径(vue页面完整路径,省略.vue后缀)',
|
||||||
|
`perm` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '按钮权限标识',
|
||||||
|
`icon` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '菜单图标',
|
||||||
|
`sort` int(0) NULL DEFAULT 0 COMMENT '排序',
|
||||||
|
`visible` tinyint(1) NULL DEFAULT 1 COMMENT '状态(0:禁用;1:开启)',
|
||||||
|
`redirect` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '跳转路径',
|
||||||
|
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 43 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '菜单管理' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of sys_menu
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `sys_menu` VALUES (1, 0, 2, '系统管理', '/system', 'Layout', NULL, 'system', 1, 1, '/system/user', '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (2, 1, 1, '用户管理', 'user', 'system/user/index', NULL, 'user', 1, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (3, 1, 1, '角色管理', 'role', 'system/role/index', NULL, 'role', 2, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (4, 1, 1, '菜单管理', 'cmenu', 'system/menu/index', NULL, 'menu', 3, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (5, 1, 1, '部门管理', 'dept', 'system/dept/index', NULL, 'tree', 4, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (6, 1, 1, '字典管理', 'dict', 'system/dict/index', NULL, 'dict', 5, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (7, 1, 1, '客户端管理', 'client', 'system/client/index', NULL, 'client', 6, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (9, 0, 2, '营销管理', '/sms', 'Layout', NULL, 'number', 5, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (10, 9, 1, '广告列表', 'advert', 'sms/advert/index', NULL, 'advert', 1, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (11, 0, 1, '商品管理', '/pms', 'Layout', NULL, 'goods', 2, 1, '/pms/goods', '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (12, 11, 1, '商品列表', 'goods', 'pms/goods/index', NULL, 'goods-list', 1, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (13, 0, 1, '订单管理', '/oms', 'Layout', NULL, 'shopping', 3, 1, '/oms/order', '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (14, 13, 1, '订单列表', 'order', 'oms/order/index', NULL, 'order', 1, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (15, 0, 1, '会员管理', '/ums', 'Layout', NULL, 'user', 4, 1, '/ums/member', '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (16, 15, 1, '会员列表', 'member', 'ums/member/index', NULL, 'peoples', 1, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (17, 11, 1, '品牌管理', 'brand', 'pms/brand/index', NULL, 'brand', 5, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (18, 11, 1, '商品分类', 'category', 'pms/category/index', NULL, 'menu', 3, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (19, 11, 1, '商品上架', 'goods-detail', 'pms/goods/detail', NULL, 'publish', 2, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (20, 0, 2, '多级菜单', '/multi-level-menu', 'Layout', NULL, 'nested', 7, 1, '/nested/level1/level2', '2022-02-16 23:11:00', '2022-02-16 23:11:00');
|
||||||
|
INSERT INTO `sys_menu` VALUES (21, 20, 1, '菜单一级', 'nested_level1_index', 'nested/level1/index', NULL, '', 1, 1, '/nested/level1/level2', '2022-02-16 23:13:38', '2022-02-16 23:13:38');
|
||||||
|
INSERT INTO `sys_menu` VALUES (22, 21, 1, '菜单二级', 'nested_level1_level2_index', 'nested/level1/level2/index', NULL, '', 1, 1, '/nested/level1/level2/level3', '2022-02-16 23:14:23', '2022-02-16 23:14:23');
|
||||||
|
INSERT INTO `sys_menu` VALUES (23, 22, 1, '菜单三级-1', 'nested_level1_level2_level3_index1', 'nested/level1/level2/level3/index1', NULL, '', 1, 1, '', '2022-02-16 23:14:51', '2022-02-16 23:14:51');
|
||||||
|
INSERT INTO `sys_menu` VALUES (24, 22, 1, '菜单三级-2', 'nested_level1_level2_level3_index2', 'nested/level1/level2/level3/index2', NULL, '', 2, 1, '', '2022-02-16 23:15:08', '2022-02-16 23:15:08');
|
||||||
|
INSERT INTO `sys_menu` VALUES (26, 0, 1, '外部链接', '/external-link', 'Layout', NULL, 'link', 9, 1, 'noredirect', '2022-02-17 22:51:20', '2022-02-17 22:51:20');
|
||||||
|
INSERT INTO `sys_menu` VALUES (30, 26, 3, 'document', 'https://www.cnblogs.com/haoxianrui/', '', NULL, 'link', 1, 1, '', '2022-02-18 00:01:40', '2022-02-18 00:01:40');
|
||||||
|
INSERT INTO `sys_menu` VALUES (32, 0, 2, '实验室', '/lab', 'Layout', NULL, 'lab', 8, 1, 'noredirect', '2022-04-19 09:35:38', '2022-04-19 09:35:38');
|
||||||
|
INSERT INTO `sys_menu` VALUES (33, 32, 1, 'Seata', 'seata', 'lab/seata/index', NULL, 'security', 1, 1, '', '2022-04-19 09:35:38', '2022-04-19 09:35:38');
|
||||||
|
INSERT INTO `sys_menu` VALUES (34, 32, 1, 'RabbitMQ', 'rabbitmq', 'lab/rabbit/index', NULL, 'rabbitmq', 2, 1, '', '2022-04-19 09:38:25', '2022-04-19 09:38:25');
|
||||||
|
INSERT INTO `sys_menu` VALUES (37, 9, 1, '优惠券列表', 'coupon', 'sms/coupon/index', NULL, 'input', 2, 1, '', '2022-05-29 00:24:07', '2022-05-29 00:24:07');
|
||||||
|
INSERT INTO `sys_menu` VALUES (39, 32, 1, 'Sentinel', 'sentinel', 'lab/sentinel/index', NULL, 'security', 2, 1, '', '2022-07-23 09:52:41', '2022-07-23 09:52:41');
|
||||||
|
INSERT INTO `sys_menu` VALUES (40, 2, 4, '新增用户', '', NULL, 'sys:user:add', '', 1, 1, '', NULL, NULL);
|
||||||
|
INSERT INTO `sys_menu` VALUES (41, 2, 4, '修改用户', '', NULL, 'sys:user:edit', '', 2, 1, '', '2022-11-05 01:26:44', '2022-11-05 01:26:44');
|
||||||
|
INSERT INTO `sys_menu` VALUES (42, 2, 4, '删除用户', '', NULL, 'sys:user:del', '', 3, 1, '', '2022-11-05 01:27:13', '2022-11-05 01:27:13');
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for sys_role
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `sys_role`;
|
||||||
|
CREATE TABLE `sys_role` (
|
||||||
|
`id` bigint(0) NOT NULL AUTO_INCREMENT,
|
||||||
|
`name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '角色名称',
|
||||||
|
`code` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色编码',
|
||||||
|
`sort` int(0) NULL DEFAULT NULL COMMENT '显示顺序',
|
||||||
|
`status` tinyint(0) NULL DEFAULT 1 COMMENT '角色状态(1-正常;0-停用)',
|
||||||
|
`deleted` tinyint(0) NOT NULL DEFAULT 0 COMMENT '逻辑删除标识(0-未删除;1-已删除)',
|
||||||
|
`data_scope` tinyint(0) NULL DEFAULT NULL,
|
||||||
|
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE,
|
||||||
|
UNIQUE INDEX `name`(`name`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 21 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of sys_role
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `sys_role` VALUES (1, '超级管理员', 'ROOT', 1, 1, 0, 0, '2021-05-21 14:56:51', '2018-12-23 16:00:00');
|
||||||
|
INSERT INTO `sys_role` VALUES (2, '系统管理员', 'ADMIN', 1, 1, 0, 0, '2021-03-25 12:39:54', '2022-11-05 00:22:02');
|
||||||
|
INSERT INTO `sys_role` VALUES (3, '访问游客', 'GUEST', 3, 1, 0, 30, '2021-05-26 15:49:05', '2019-05-05 16:00:00');
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for sys_role_menu
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `sys_role_menu`;
|
||||||
|
CREATE TABLE `sys_role_menu` (
|
||||||
|
`role_id` bigint(0) NOT NULL COMMENT '角色ID',
|
||||||
|
`menu_id` bigint(0) NOT NULL COMMENT '菜单ID'
|
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色和菜单关联表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of sys_role_menu
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 1);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 2);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 40);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 41);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 42);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 3);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 4);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 5);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 6);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 7);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 11);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 12);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 19);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 18);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 17);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 13);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 14);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 15);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 16);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 9);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 10);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 37);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 20);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 21);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 22);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 23);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 24);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 32);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 33);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 34);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 39);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 26);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 30);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for sys_user
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `sys_user`;
|
||||||
|
CREATE TABLE `sys_user` (
|
||||||
|
`id` int(0) NOT NULL AUTO_INCREMENT,
|
||||||
|
`username` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名',
|
||||||
|
`nickname` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '昵称',
|
||||||
|
`gender` tinyint(1) NULL DEFAULT 1 COMMENT '性别((1:男;2:女))',
|
||||||
|
`password` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '密码',
|
||||||
|
`dept_id` int(0) NULL DEFAULT NULL COMMENT '部门ID',
|
||||||
|
`avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '用户头像',
|
||||||
|
`mobile` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '联系方式',
|
||||||
|
`status` tinyint(1) NULL DEFAULT 1 COMMENT '用户状态((1:正常;0:禁用))',
|
||||||
|
`email` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户邮箱',
|
||||||
|
`deleted` tinyint(1) NULL DEFAULT 0 COMMENT '逻辑删除标识(0:未删除;1:已删除)',
|
||||||
|
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE,
|
||||||
|
UNIQUE INDEX `login_name`(`username`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 100 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户信息表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of sys_user
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `sys_user` VALUES (1, 'root', '有来技术', 0, '$2a$10$xVWsNOhHrCxh5UbpCE7/HuJ.PAOKcYAqRxD2CO2nVnJS.IAXkr5aq', NULL, 'https://s2.loli.net/2022/04/07/gw1L2Z5sPtS8GIl.gif', '17621590365', 1, 'youlaitech@163.com', 0, NULL, NULL);
|
||||||
|
INSERT INTO `sys_user` VALUES (2, 'admin', '系统管理员', 1, '$2a$10$8/8PxGHA.30EeWg8x4/4BuWuCUJubFbGJXyUYRs7RaJEdVvEMRbWe', 2, 'https://s2.loli.net/2022/04/07/gw1L2Z5sPtS8GIl.gif', '17621210366', 1, '', 0, '2019-10-10 13:41:22', '2022-06-12 15:32:43');
|
||||||
|
INSERT INTO `sys_user` VALUES (3, 'test', '测试小用户', 1, '$2a$10$MPJkNw.hKT/fZOgwYP8q9eu/rFJJDsNov697AmdkHNJkpjIpVSw2q', 3, 'https://s2.loli.net/2022/04/07/gw1L2Z5sPtS8GIl.gif', '17621210366', 1, 'youlaitech@163.com', 0, '2021-06-05 01:31:29', '2021-06-05 01:31:29');
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for sys_user_role
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `sys_user_role`;
|
||||||
|
CREATE TABLE `sys_user_role` (
|
||||||
|
`user_id` int(0) NOT NULL COMMENT '用户ID',
|
||||||
|
`role_id` int(0) NOT NULL COMMENT '角色ID',
|
||||||
|
PRIMARY KEY (`user_id`, `role_id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户和角色关联表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of sys_user_role
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `sys_user_role` VALUES (1, 1);
|
||||||
|
INSERT INTO `sys_user_role` VALUES (2, 2);
|
||||||
|
INSERT INTO `sys_user_role` VALUES (3, 3);
|
||||||
|
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1;
|
@ -6,7 +6,7 @@
|
|||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- 系统管理数据库
|
-- 系统管理数据库
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
CREATE DATABASE IF NOT EXISTS youlai DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;
|
CREATE DATABASE IF NOT EXISTS youlai_system DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- OAuth2数据库
|
-- OAuth2数据库
|
||||||
|
@ -1,56 +1,127 @@
|
|||||||
/**
|
/*
|
||||||
OAuth2 数据库
|
Navicat Premium Data Transfer
|
||||||
SQL脚本在线地址: https://github.com/spring-attic/spring-security-oauth/blob/main/spring-security-oauth2/src/test/resources/schema.sql
|
|
||||||
*/
|
|
||||||
|
|
||||||
use oauth2;
|
Source Server : www.youlai.tech
|
||||||
create table oauth_client_details (
|
Source Server Type : MySQL
|
||||||
client_id VARCHAR(256) PRIMARY KEY,
|
Source Server Version : 80029
|
||||||
resource_ids VARCHAR(256),
|
Source Host : www.youlai.tech:3306
|
||||||
client_secret VARCHAR(256),
|
Source Schema : oauth2
|
||||||
scope VARCHAR(256),
|
|
||||||
authorized_grant_types VARCHAR(256),
|
|
||||||
web_server_redirect_uri VARCHAR(256),
|
|
||||||
authorities VARCHAR(256),
|
|
||||||
access_token_validity INTEGER,
|
|
||||||
refresh_token_validity INTEGER,
|
|
||||||
additional_information VARCHAR(4096),
|
|
||||||
autoapprove VARCHAR(256)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table oauth_client_token (
|
Target Server Type : MySQL
|
||||||
token_id VARCHAR(256),
|
Target Server Version : 80029
|
||||||
token LONGBLOB,
|
File Encoding : 65001
|
||||||
authentication_id VARCHAR(256) PRIMARY KEY,
|
|
||||||
user_name VARCHAR(256),
|
|
||||||
client_id VARCHAR(256)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table oauth_access_token (
|
Date: 06/11/2022 22:10:58
|
||||||
token_id VARCHAR(256),
|
*/
|
||||||
token LONGBLOB,
|
|
||||||
authentication_id VARCHAR(256) PRIMARY KEY,
|
|
||||||
user_name VARCHAR(256),
|
|
||||||
client_id VARCHAR(256),
|
|
||||||
authentication LONGBLOB,
|
|
||||||
refresh_token VARCHAR(256)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table oauth_refresh_token (
|
SET NAMES utf8mb4;
|
||||||
token_id VARCHAR(256),
|
SET FOREIGN_KEY_CHECKS = 0;
|
||||||
token LONGBLOB,
|
|
||||||
authentication LONGBLOB
|
|
||||||
);
|
|
||||||
|
|
||||||
create table oauth_code (
|
-- ----------------------------
|
||||||
code VARCHAR(256), authentication LONGBLOB
|
-- Table structure for oauth_access_token
|
||||||
);
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `oauth_access_token`;
|
||||||
|
CREATE TABLE `oauth_access_token` (
|
||||||
|
`token_id` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`token` longblob NULL,
|
||||||
|
`authentication_id` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||||
|
`user_name` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`client_id` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`authentication` longblob NULL,
|
||||||
|
`refresh_token` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`authentication_id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
create table oauth_approvals (
|
-- ----------------------------
|
||||||
userId VARCHAR(256),
|
-- Records of oauth_access_token
|
||||||
clientId VARCHAR(256),
|
-- ----------------------------
|
||||||
scope VARCHAR(256),
|
|
||||||
status VARCHAR(10),
|
-- ----------------------------
|
||||||
expiresAt TIMESTAMP,
|
-- Table structure for oauth_approvals
|
||||||
lastModifiedAt TIMESTAMP
|
-- ----------------------------
|
||||||
);
|
DROP TABLE IF EXISTS `oauth_approvals`;
|
||||||
|
CREATE TABLE `oauth_approvals` (
|
||||||
|
`userId` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`clientId` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`scope` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`status` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`expiresAt` timestamp(0) NULL DEFAULT NULL,
|
||||||
|
`lastModifiedAt` timestamp(0) NULL DEFAULT NULL
|
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of oauth_approvals
|
||||||
|
-- ----------------------------
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for oauth_client_details
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `oauth_client_details`;
|
||||||
|
CREATE TABLE `oauth_client_details` (
|
||||||
|
`client_id` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||||
|
`resource_ids` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`client_secret` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`scope` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`authorized_grant_types` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`web_server_redirect_uri` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`authorities` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`access_token_validity` int(0) NULL DEFAULT NULL,
|
||||||
|
`refresh_token_validity` int(0) NULL DEFAULT NULL,
|
||||||
|
`additional_information` varchar(4096) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`autoapprove` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`client_id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of oauth_client_details
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `oauth_client_details` VALUES ('client', '', '{noop}123456', 'all', 'password,refresh_token', NULL, NULL, 3600, 7200, NULL, 'true');
|
||||||
|
INSERT INTO `oauth_client_details` VALUES ('mall-admin', '', '{noop}123456', 'all', 'password,refresh_token,captcha', NULL, '', 3600, 7200, NULL, 'true');
|
||||||
|
INSERT INTO `oauth_client_details` VALUES ('mall-app', '', '{noop}123456', 'all', 'sms_code,refresh_token', NULL, NULL, 3600, 7200, NULL, 'true');
|
||||||
|
INSERT INTO `oauth_client_details` VALUES ('mall-weapp', '', '{noop}123456', 'all', 'sms_code,refresh_token', NULL, NULL, 3600, 7200, NULL, 'true');
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for oauth_client_token
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `oauth_client_token`;
|
||||||
|
CREATE TABLE `oauth_client_token` (
|
||||||
|
`token_id` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`token` longblob NULL,
|
||||||
|
`authentication_id` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
||||||
|
`user_name` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`client_id` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`authentication_id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of oauth_client_token
|
||||||
|
-- ----------------------------
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for oauth_code
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `oauth_code`;
|
||||||
|
CREATE TABLE `oauth_code` (
|
||||||
|
`code` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`authentication` longblob NULL
|
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of oauth_code
|
||||||
|
-- ----------------------------
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for oauth_refresh_token
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `oauth_refresh_token`;
|
||||||
|
CREATE TABLE `oauth_refresh_token` (
|
||||||
|
`token_id` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
||||||
|
`token` longblob NULL,
|
||||||
|
`authentication` longblob NULL
|
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of oauth_refresh_token
|
||||||
|
-- ----------------------------
|
||||||
|
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
|
@ -1,508 +0,0 @@
|
|||||||
/*
|
|
||||||
Navicat Premium Data Transfer
|
|
||||||
|
|
||||||
Source Server : mysql8.0
|
|
||||||
Source Server Type : MySQL
|
|
||||||
Source Server Version : 80023
|
|
||||||
Source Host : localhost:3306
|
|
||||||
Source Schema : youlai
|
|
||||||
|
|
||||||
Target Server Type : MySQL
|
|
||||||
Target Server Version : 80023
|
|
||||||
File Encoding : 65001
|
|
||||||
|
|
||||||
Date: 21/09/2022 00:03:49
|
|
||||||
*/
|
|
||||||
|
|
||||||
SET NAMES utf8mb4;
|
|
||||||
SET FOREIGN_KEY_CHECKS = 0;
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Table structure for sys_dept
|
|
||||||
-- ----------------------------
|
|
||||||
DROP TABLE IF EXISTS `sys_dept`;
|
|
||||||
CREATE TABLE `sys_dept` (
|
|
||||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
||||||
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '部门名称',
|
|
||||||
`parent_id` bigint NULL DEFAULT 0 COMMENT '父节点id',
|
|
||||||
`tree_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '父节点id路径',
|
|
||||||
`sort` int NULL DEFAULT 0 COMMENT '显示顺序',
|
|
||||||
`status` tinyint NULL DEFAULT 1 COMMENT '状态(1:正常;0:禁用)',
|
|
||||||
`deleted` tinyint NULL DEFAULT 0 COMMENT '逻辑删除标识(1:已删除;0:未删除)',
|
|
||||||
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
|
||||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
|
||||||
PRIMARY KEY (`id`) USING BTREE
|
|
||||||
) ENGINE = InnoDB AUTO_INCREMENT = 51 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '部门表' ROW_FORMAT = DYNAMIC;
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Records of sys_dept
|
|
||||||
-- ----------------------------
|
|
||||||
INSERT INTO `sys_dept` VALUES (1, '有来技术', 0, '0', 1, 1, 0, NULL, NULL);
|
|
||||||
INSERT INTO `sys_dept` VALUES (2, '研发部门', 1, '0,1', 1, 1, 0, NULL, '2022-04-19 12:46:37');
|
|
||||||
INSERT INTO `sys_dept` VALUES (3, '测试部门', 1, '0,1', 2, 1, 0, NULL, NULL);
|
|
||||||
INSERT INTO `sys_dept` VALUES (47, '研发子部门1', 2, '0,1,2', 1, 1, 0, '2022-09-19 22:06:23', '2022-09-19 22:06:23');
|
|
||||||
INSERT INTO `sys_dept` VALUES (48, '研发子部门2', 2, '0,1,2', 1, 1, 0, '2022-09-19 22:06:41', '2022-09-19 22:06:41');
|
|
||||||
INSERT INTO `sys_dept` VALUES (49, '测试子部门1', 3, '0,1,3', 1, 1, 0, '2022-09-19 22:06:57', '2022-09-19 22:06:57');
|
|
||||||
INSERT INTO `sys_dept` VALUES (50, '测试子部门2', 3, '0,1,3', 1, 1, 0, '2022-09-19 22:07:11', '2022-09-19 22:07:11');
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Table structure for sys_dict_item
|
|
||||||
-- ----------------------------
|
|
||||||
DROP TABLE IF EXISTS `sys_dict_item`;
|
|
||||||
CREATE TABLE `sys_dict_item` (
|
|
||||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
||||||
`type_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字典类型编码',
|
|
||||||
`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '字典项名称',
|
|
||||||
`value` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '字典项值',
|
|
||||||
`sort` int NULL DEFAULT 0 COMMENT '排序',
|
|
||||||
`status` tinyint NULL DEFAULT 0 COMMENT '状态(1:正常;0:禁用)',
|
|
||||||
`defaulted` tinyint NULL DEFAULT 0 COMMENT '是否默认(1:是;0:否)',
|
|
||||||
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '备注',
|
|
||||||
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
|
||||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
|
||||||
PRIMARY KEY (`id`) USING BTREE
|
|
||||||
) ENGINE = InnoDB AUTO_INCREMENT = 35 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '字典数据表' ROW_FORMAT = DYNAMIC;
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Records of sys_dict_item
|
|
||||||
-- ----------------------------
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (1, 'gender', '男', '1', 1, 1, 0, NULL, '2019-05-05 13:07:52', '2022-06-12 23:20:39');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (2, 'gender', '女', '2', 2, 1, 0, NULL, '2019-04-19 11:33:00', '2019-07-02 14:23:05');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (3, 'gender', '未知', '0', 1, 1, 0, NULL, '2020-10-17 08:09:31', '2020-10-17 08:09:31');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (6, 'grant_type', '密码模式', 'password', 1, 1, 0, NULL, '2020-10-17 09:11:52', '2021-01-31 09:48:18');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (7, 'grant_type', '授权码模式', 'authorization_code', 1, 1, 0, NULL, '2020-10-17 09:12:15', '2020-12-14 10:11:00');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (8, 'grant_type', '客户端模式', 'client_credentials', 1, 1, 0, NULL, '2020-10-17 09:12:36', '2020-12-14 10:11:00');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (9, 'grant_type', '刷新模式', 'refresh_token', 1, 1, 0, NULL, '2020-10-17 09:12:57', '2021-01-08 17:33:12');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (10, 'grant_type', '简化模式', 'implicit', 1, 1, 0, NULL, '2020-10-17 09:13:23', '2020-12-14 10:11:00');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (11, 'micro_service', '系统服务', 'youlai-admin', 1, 1, 0, NULL, '2021-06-17 00:14:12', '2021-06-17 00:14:12');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (12, 'micro_service', '会员服务', 'youlai-ums', 2, 1, 0, NULL, '2021-06-17 00:15:06', '2021-06-17 00:15:06');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (13, 'micro_service', '商品服务', 'youlai-pms', 3, 1, 0, NULL, '2021-06-17 00:15:26', '2021-06-17 00:16:18');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (14, 'micro_service', '订单服务', 'youlai-oms', 4, 1, 0, NULL, '2021-06-17 00:15:40', '2021-06-17 00:16:10');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (15, 'micro_service', '营销服务', 'youlai-sms', 5, 1, 0, NULL, '2021-06-17 00:16:01', '2021-06-17 00:16:01');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (16, 'request_method', '不限', '*', 1, 1, 0, NULL, '2021-06-17 00:18:34', '2021-06-17 00:18:34');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (17, 'request_method', 'GET', 'GET', 2, 1, 0, NULL, '2021-06-17 00:18:55', '2021-06-17 00:18:55');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (18, 'request_method', 'POST', 'POST', 3, 1, 0, NULL, '2021-06-17 00:19:06', '2021-06-17 00:19:06');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (19, 'request_method', 'PUT', 'PUT', 4, 1, 0, NULL, '2021-06-17 00:19:17', '2021-06-17 00:19:17');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (20, 'request_method', 'DELETE', 'DELETE', 5, 1, 0, NULL, '2021-06-17 00:19:30', '2021-06-17 00:19:30');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (21, 'request_method', 'PATCH', 'PATCH', 6, 1, 0, NULL, '2021-06-17 00:19:42', '2021-06-17 00:19:42');
|
|
||||||
INSERT INTO `sys_dict_item` VALUES (22, 'grant_type', '验证码', 'captcha', 1, 1, 0, '', '2022-05-28 11:44:28', '2022-05-28 11:44:28');
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Table structure for sys_dict_type
|
|
||||||
-- ----------------------------
|
|
||||||
DROP TABLE IF EXISTS `sys_dict_type`;
|
|
||||||
CREATE TABLE `sys_dict_type` (
|
|
||||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键 ',
|
|
||||||
`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '类型名称',
|
|
||||||
`code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '类型编码',
|
|
||||||
`status` tinyint(1) NULL DEFAULT 0 COMMENT '状态(0:正常;1:禁用)',
|
|
||||||
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
|
|
||||||
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
|
||||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
|
||||||
PRIMARY KEY (`id`) USING BTREE,
|
|
||||||
UNIQUE INDEX `type_code`(`code`) USING BTREE
|
|
||||||
) ENGINE = InnoDB AUTO_INCREMENT = 31 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '字典类型表' ROW_FORMAT = DYNAMIC;
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Records of sys_dict_type
|
|
||||||
-- ----------------------------
|
|
||||||
INSERT INTO `sys_dict_type` VALUES (1, '性别', 'gender', 1, NULL, '2019-12-06 19:03:32', '2022-06-12 16:21:28');
|
|
||||||
INSERT INTO `sys_dict_type` VALUES (2, '授权方式', 'grant_type', 1, NULL, '2020-10-17 08:09:50', '2021-01-31 09:48:24');
|
|
||||||
INSERT INTO `sys_dict_type` VALUES (3, '微服务列表', 'micro_service', 1, NULL, '2021-06-17 00:13:43', '2021-06-17 00:17:22');
|
|
||||||
INSERT INTO `sys_dict_type` VALUES (4, '请求方式', 'request_method', 1, NULL, '2021-06-17 00:18:07', '2021-06-17 00:18:07');
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Table structure for sys_menu
|
|
||||||
-- ----------------------------
|
|
||||||
DROP TABLE IF EXISTS `sys_menu`;
|
|
||||||
CREATE TABLE `sys_menu` (
|
|
||||||
`id` bigint NOT NULL AUTO_INCREMENT,
|
|
||||||
`parent_id` bigint NULL DEFAULT NULL COMMENT '父菜单ID',
|
|
||||||
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '菜单名称',
|
|
||||||
`path` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '路由路径(浏览器地址栏路径)',
|
|
||||||
`component` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组件路径(vue页面完整路径,省略.vue后缀)',
|
|
||||||
`icon` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '菜单图标',
|
|
||||||
`sort` int NULL DEFAULT 0 COMMENT '排序',
|
|
||||||
`visible` tinyint(1) NULL DEFAULT 1 COMMENT '状态(0:禁用;1:开启)',
|
|
||||||
`redirect` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '跳转路径',
|
|
||||||
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
|
||||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
|
||||||
`type` tinyint NULL DEFAULT NULL COMMENT '菜单类型(1:菜单;2:目录;3:外链)',
|
|
||||||
PRIMARY KEY (`id`) USING BTREE
|
|
||||||
) ENGINE = InnoDB AUTO_INCREMENT = 40 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '菜单管理' ROW_FORMAT = DYNAMIC;
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Records of sys_menu
|
|
||||||
-- ----------------------------
|
|
||||||
INSERT INTO `sys_menu` VALUES (1, 0, '系统管理', '/system', 'Layout', 'system', 1, 1, '/system/user', '2021-08-28 09:12:21', '2021-08-28 09:12:21', 2);
|
|
||||||
INSERT INTO `sys_menu` VALUES (2, 1, '用户管理', 'user', 'system/user/index', 'user', 1, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (3, 1, '角色管理', 'role', 'system/role/index', 'role', 2, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (4, 1, '菜单管理', 'cmenu', 'system/menu/index', 'menu', 3, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (5, 1, '部门管理', 'dept', 'system/dept/index', 'tree', 4, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (6, 1, '字典管理', 'dict', 'system/dict/index', 'dict', 5, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (7, 1, '客户端管理', 'client', 'system/client/index', 'client', 6, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (9, 0, '营销管理', '/sms', 'Layout', 'number', 5, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 2);
|
|
||||||
INSERT INTO `sys_menu` VALUES (10, 9, '广告列表', 'advert', 'sms/advert/index', 'advert', 1, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (11, 0, '商品管理', '/pms', 'Layout', 'goods', 2, 1, '/pms/goods', '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (12, 11, '商品列表', 'goods', 'pms/goods/index', 'goods-list', 1, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (13, 0, '订单管理', '/oms', 'Layout', 'shopping', 3, 1, '/oms/order', '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (14, 13, '订单列表', 'order', 'oms/order/index', 'order', 1, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (15, 0, '会员管理', '/ums', 'Layout', 'user', 4, 1, '/ums/member', '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (16, 15, '会员列表', 'member', 'ums/member/index', 'peoples', 1, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (17, 11, '品牌管理', 'brand', 'pms/brand/index', 'brand', 5, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (18, 11, '商品分类', 'category', 'pms/category/index', 'menu', 3, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (19, 11, '商品上架', 'goods-detail', 'pms/goods/detail', 'publish', 2, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (20, 0, '多级菜单', '/multi-level-menu', 'Layout', 'nested', 7, 1, '/nested/level1/level2', '2022-02-16 23:11:00', '2022-02-16 23:11:00', 2);
|
|
||||||
INSERT INTO `sys_menu` VALUES (21, 20, '菜单一级', 'nested_level1_index', 'nested/level1/index', '', 1, 1, '/nested/level1/level2', '2022-02-16 23:13:38', '2022-02-16 23:13:38', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (22, 21, '菜单二级', 'nested_level1_level2_index', 'nested/level1/level2/index', '', 1, 1, '/nested/level1/level2/level3', '2022-02-16 23:14:23', '2022-02-16 23:14:23', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (23, 22, '菜单三级-1', 'nested_level1_level2_level3_index1', 'nested/level1/level2/level3/index1', '', 1, 1, '', '2022-02-16 23:14:51', '2022-02-16 23:14:51', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (24, 22, '菜单三级-2', 'nested_level1_level2_level3_index2', 'nested/level1/level2/level3/index2', '', 2, 1, '', '2022-02-16 23:15:08', '2022-02-16 23:15:08', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (26, 0, '外部链接', '/external-link', 'Layout', 'link', 9, 1, 'noredirect', '2022-02-17 22:51:20', '2022-02-17 22:51:20', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (30, 26, 'document', 'https://www.cnblogs.com/haoxianrui/', '', 'link', 1, 1, '', '2022-02-18 00:01:40', '2022-02-18 00:01:40', 3);
|
|
||||||
INSERT INTO `sys_menu` VALUES (32, 0, '实验室', '/lab', 'Layout', 'lab', 8, 1, 'noredirect', '2022-04-19 09:35:38', '2022-04-19 09:35:38', 2);
|
|
||||||
INSERT INTO `sys_menu` VALUES (33, 32, 'Seata', 'seata', 'lab/seata/index', 'security', 1, 1, '', '2022-04-19 09:35:38', '2022-04-19 09:35:38', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (34, 32, 'RabbitMQ', 'rabbitmq', 'lab/rabbit/index', 'rabbitmq', 2, 1, '', '2022-04-19 09:38:25', '2022-04-19 09:38:25', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (37, 9, '优惠券列表', 'coupon', 'sms/coupon/index', 'input', 2, 1, '', '2022-05-29 00:24:07', '2022-05-29 00:24:07', 1);
|
|
||||||
INSERT INTO `sys_menu` VALUES (39, 32, 'Sentinel', 'sentinel', 'lab/sentinel/index', 'security', 2, 1, '', '2022-07-23 09:52:41', '2022-07-23 09:52:41', 1);
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Table structure for sys_oauth_client
|
|
||||||
-- ----------------------------
|
|
||||||
DROP TABLE IF EXISTS `sys_oauth_client`;
|
|
||||||
CREATE TABLE `sys_oauth_client` (
|
|
||||||
`client_id` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
|
||||||
`resource_ids` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
|
||||||
`client_secret` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
|
||||||
`scope` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
|
||||||
`authorized_grant_types` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
|
||||||
`web_server_redirect_uri` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
|
||||||
`authorities` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
|
||||||
`access_token_validity` int NULL DEFAULT NULL,
|
|
||||||
`refresh_token_validity` int NULL DEFAULT NULL,
|
|
||||||
`additional_information` varchar(4096) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
|
||||||
`autoapprove` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
|
|
||||||
PRIMARY KEY (`client_id`) USING BTREE
|
|
||||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Records of sys_oauth_client
|
|
||||||
-- ----------------------------
|
|
||||||
INSERT INTO `sys_oauth_client` VALUES ('client', '', '123456', 'all', 'password,refresh_token', NULL, NULL, 3600, 7200, NULL, 'true');
|
|
||||||
INSERT INTO `sys_oauth_client` VALUES ('mall-admin-web', '', '123456', 'all', 'password,refresh_token,captcha', NULL, '', 3600, 7200, NULL, 'true');
|
|
||||||
INSERT INTO `sys_oauth_client` VALUES ('mall-app', '', '123456', 'all', 'sms_code,refresh_token', NULL, NULL, 3600, 7200, NULL, 'true');
|
|
||||||
INSERT INTO `sys_oauth_client` VALUES ('mall-weapp', '', '123456', 'all', 'wechat,refresh_token', NULL, NULL, 3600, 7200, NULL, 'true');
|
|
||||||
INSERT INTO `sys_oauth_client` VALUES ('youlai-admin', '', '123456', 'all', 'password,client_credentials,refresh_token,authorization_code', NULL, '', 3600, 7200, NULL, 'true');
|
|
||||||
INSERT INTO `sys_oauth_client` VALUES ('youlai-mall-app', '', '123456', 'all', 'authorization_code,password,refresh_token,implicit,wechat,refresh_token', NULL, NULL, 3600, 7200, NULL, 'true');
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Table structure for sys_permission
|
|
||||||
-- ----------------------------
|
|
||||||
DROP TABLE IF EXISTS `sys_permission`;
|
|
||||||
CREATE TABLE `sys_permission` (
|
|
||||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
||||||
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '权限名称',
|
|
||||||
`menu_id` int NULL DEFAULT NULL COMMENT '菜单模块ID\r\n',
|
|
||||||
`url_perm` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'URL权限标识',
|
|
||||||
`btn_perm` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '按钮权限标识',
|
|
||||||
`create_time` datetime NULL DEFAULT NULL,
|
|
||||||
`update_time` datetime NULL DEFAULT NULL,
|
|
||||||
PRIMARY KEY (`id`) USING BTREE,
|
|
||||||
INDEX `id`(`id`, `name`) USING BTREE
|
|
||||||
) ENGINE = InnoDB AUTO_INCREMENT = 29 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '权限表' ROW_FORMAT = DYNAMIC;
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Records of sys_permission
|
|
||||||
-- ----------------------------
|
|
||||||
INSERT INTO `sys_permission` VALUES (1, '查看用户', 2, 'GET:/youlai-admin/api/v1/users/*', 'sys:user:view', '2021-02-02 14:16:07', '2021-06-16 22:25:24');
|
|
||||||
INSERT INTO `sys_permission` VALUES (2, '编辑用户', 2, 'PUT:/youlai-admin/users/*', 'sys:user:edit', '2021-06-16 16:19:44', '2021-06-16 23:36:53');
|
|
||||||
INSERT INTO `sys_permission` VALUES (3, '新增用户', 2, 'POST:/youlai-admin/api/v1/users', 'sys:user:add', '2021-06-16 23:36:37', '2021-06-16 23:37:03');
|
|
||||||
INSERT INTO `sys_permission` VALUES (4, '删除用户', 2, 'DELETE:/youlai-admin/api/v1/users/*', 'sys:user:delete', '2021-06-16 23:43:54', '2021-06-16 23:43:54');
|
|
||||||
INSERT INTO `sys_permission` VALUES (5, '路由列表', 4, 'GET:/youlai-admin/api/v1/menus/route', 'sys:route:query', NULL, NULL);
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Table structure for sys_role
|
|
||||||
-- ----------------------------
|
|
||||||
DROP TABLE IF EXISTS `sys_role`;
|
|
||||||
CREATE TABLE `sys_role` (
|
|
||||||
`id` bigint NOT NULL AUTO_INCREMENT,
|
|
||||||
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '角色名称',
|
|
||||||
`code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '角色编码',
|
|
||||||
`sort` int NULL DEFAULT NULL COMMENT '显示顺序',
|
|
||||||
`status` tinyint(1) NULL DEFAULT 1 COMMENT '角色状态(1-正常;0-停用)',
|
|
||||||
`deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标识(0-未删除;1-已删除)',
|
|
||||||
`create_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
|
||||||
`update_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
|
||||||
`data_scope` int NULL DEFAULT 1 COMMENT '数据范围(1:全部数据权限 2:本部门数据权限 3:本部门及以下数据权限 4:本人数据)',
|
|
||||||
PRIMARY KEY (`id`) USING BTREE,
|
|
||||||
UNIQUE INDEX `name`(`name`) USING BTREE
|
|
||||||
) ENGINE = InnoDB AUTO_INCREMENT = 31 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '角色表' ROW_FORMAT = DYNAMIC;
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Records of sys_role
|
|
||||||
-- ----------------------------
|
|
||||||
INSERT INTO `sys_role` VALUES (1, '超级管理员', 'ROOT', 1, 1, 0, '2021-05-21 14:56:51', '2018-12-23 16:00:00', 1);
|
|
||||||
INSERT INTO `sys_role` VALUES (2, '系统管理员', 'ADMIN', 2, 1, 0, '2021-03-25 12:39:54', '2022-09-19 22:05:50', 2);
|
|
||||||
INSERT INTO `sys_role` VALUES (3, '访问游客', 'GUEST', 3, 1, 0, '2021-05-26 15:49:05', '2022-09-18 23:02:42', 2);
|
|
||||||
INSERT INTO `sys_role` VALUES (21, '研发部经理', 'YF', 0, 1, 0, '2022-09-19 22:10:42', '2022-09-21 00:01:37', 3);
|
|
||||||
INSERT INTO `sys_role` VALUES (22, '研发子部门1经理', 'YF1', 0, 1, 0, '2022-09-19 22:11:30', '2022-09-19 22:11:30', 2);
|
|
||||||
INSERT INTO `sys_role` VALUES (23, '研发子部门2经理', 'YF2', NULL, 1, 0, '2022-09-19 22:12:01', '2022-09-19 22:17:58', 3);
|
|
||||||
INSERT INTO `sys_role` VALUES (24, '测试部门经理', 'TEST', 1, 1, 0, '2022-09-19 22:12:36', '2022-09-19 22:12:42', 3);
|
|
||||||
INSERT INTO `sys_role` VALUES (25, '测试子部门1经理', 'TEST1', 0, 1, 0, '2022-09-19 22:13:13', '2022-09-19 22:17:50', 3);
|
|
||||||
INSERT INTO `sys_role` VALUES (26, '测试子部门2经理', 'TEST2', 1, 1, 0, '2022-09-19 22:13:39', '2022-09-19 22:18:08', 3);
|
|
||||||
INSERT INTO `sys_role` VALUES (27, '研发部1-1', 'YF1-1', 0, 1, 0, '2022-09-19 22:17:13', '2022-09-19 22:17:13', 2);
|
|
||||||
INSERT INTO `sys_role` VALUES (28, '研发部2-1', 'YF2-1', 0, 1, 0, '2022-09-19 22:17:42', '2022-09-19 22:19:54', 2);
|
|
||||||
INSERT INTO `sys_role` VALUES (29, '测试部1-1', 'TEST1-1', 1, 1, 0, '2022-09-19 22:18:54', '2022-09-19 22:18:54', 2);
|
|
||||||
INSERT INTO `sys_role` VALUES (30, '测试部2-1', 'TEST2-1', 1, 1, 0, '2022-09-19 22:19:33', '2022-09-19 22:19:33', 2);
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Table structure for sys_role_menu
|
|
||||||
-- ----------------------------
|
|
||||||
DROP TABLE IF EXISTS `sys_role_menu`;
|
|
||||||
CREATE TABLE `sys_role_menu` (
|
|
||||||
`role_id` bigint NOT NULL COMMENT '角色ID',
|
|
||||||
`menu_id` bigint NOT NULL COMMENT '菜单ID'
|
|
||||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '角色和菜单关联表' ROW_FORMAT = DYNAMIC;
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Records of sys_role_menu
|
|
||||||
-- ----------------------------
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 1);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 2);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, -1);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 38);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 3);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 4);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, -1);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 5);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 6);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 7);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, -1);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 11);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 12);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 19);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 18);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 17);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 13);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 14);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 15);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 16);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 9);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 10);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 37);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 20);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 21);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 22);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 23);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 24);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 32);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 33);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 34);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 26);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 30);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (2, 39);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (21, 1);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (21, 2);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (21, 3);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (21, 4);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (21, 5);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (21, 6);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (21, 7);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (22, 1);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (22, 2);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (22, 3);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (22, 4);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (22, 5);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (22, 6);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (22, 7);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (23, 1);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (23, 2);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (23, 3);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (23, 4);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (23, 5);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (23, 6);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (23, 7);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (24, 1);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (24, 2);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (24, 3);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (24, 4);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (24, 5);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (24, 6);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (24, 7);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (25, 1);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (25, 2);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (25, 3);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (25, 4);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (25, 5);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (25, 6);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (25, 7);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (26, 1);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (26, 2);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (26, 3);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (26, 4);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (26, 5);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (26, 6);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (26, 7);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (27, 1);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (27, 2);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (27, 3);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (27, 4);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (27, 5);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (27, 6);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (27, 7);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (28, 1);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (28, 2);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (28, 3);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (28, 4);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (28, 5);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (28, 6);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (28, 7);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (29, 1);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (29, 2);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (29, 3);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (29, 4);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (29, 5);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (29, 6);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (29, 7);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (30, 1);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (30, 2);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (30, 3);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (30, 4);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (30, 5);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (30, 6);
|
|
||||||
INSERT INTO `sys_role_menu` VALUES (30, 7);
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Table structure for sys_role_permission
|
|
||||||
-- ----------------------------
|
|
||||||
DROP TABLE IF EXISTS `sys_role_permission`;
|
|
||||||
CREATE TABLE `sys_role_permission` (
|
|
||||||
`role_id` int NULL DEFAULT NULL COMMENT '角色id',
|
|
||||||
`permission_id` int NULL DEFAULT NULL COMMENT '资源id',
|
|
||||||
INDEX `role_id`(`role_id`) USING BTREE,
|
|
||||||
INDEX `permission_id`(`permission_id`) USING BTREE
|
|
||||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '角色权限表' ROW_FORMAT = DYNAMIC;
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Records of sys_role_permission
|
|
||||||
-- ----------------------------
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (2, 1);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (2, 2);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (2, 3);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (2, 4);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (21, 1);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (21, 2);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (21, 3);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (21, 4);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (21, 5);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (22, 1);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (22, 2);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (22, 3);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (22, 4);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (22, 5);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (23, 1);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (23, 2);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (23, 3);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (23, 4);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (23, 5);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (24, 1);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (24, 2);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (24, 3);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (24, 4);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (24, 5);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (25, 1);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (25, 2);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (25, 3);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (25, 4);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (25, 5);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (26, 1);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (26, 2);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (26, 3);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (26, 4);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (26, 5);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (27, 1);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (27, 2);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (27, 3);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (27, 4);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (27, 5);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (28, 1);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (28, 2);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (28, 3);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (28, 4);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (28, 5);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (29, 1);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (29, 2);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (29, 3);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (29, 4);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (29, 5);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (30, 1);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (30, 2);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (30, 3);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (30, 4);
|
|
||||||
INSERT INTO `sys_role_permission` VALUES (30, 5);
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Table structure for sys_user
|
|
||||||
-- ----------------------------
|
|
||||||
DROP TABLE IF EXISTS `sys_user`;
|
|
||||||
CREATE TABLE `sys_user` (
|
|
||||||
`id` int NOT NULL AUTO_INCREMENT,
|
|
||||||
`username` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户名',
|
|
||||||
`nickname` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '昵称',
|
|
||||||
`gender` tinyint(1) NULL DEFAULT 1 COMMENT '性别((1:男;2:女))',
|
|
||||||
`password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '密码',
|
|
||||||
`dept_id` int NULL DEFAULT NULL COMMENT '部门ID',
|
|
||||||
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '用户头像',
|
|
||||||
`mobile` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '联系方式',
|
|
||||||
`status` tinyint(1) NULL DEFAULT 1 COMMENT '用户状态((1:正常;0:禁用))',
|
|
||||||
`email` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户邮箱',
|
|
||||||
`deleted` tinyint(1) NULL DEFAULT 0 COMMENT '逻辑删除标识(0:未删除;1:已删除)',
|
|
||||||
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
|
||||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
|
||||||
PRIMARY KEY (`id`) USING BTREE,
|
|
||||||
UNIQUE INDEX `login_name`(`username`) USING BTREE
|
|
||||||
) ENGINE = InnoDB AUTO_INCREMENT = 108 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户信息表' ROW_FORMAT = DYNAMIC;
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Records of sys_user
|
|
||||||
-- ----------------------------
|
|
||||||
INSERT INTO `sys_user` VALUES (1, 'root', '有来技术', 0, '$2a$10$xVWsNOhHrCxh5UbpCE7/HuJ.PAOKcYAqRxD2CO2nVnJS.IAXkr5aq', NULL, 'https://s2.loli.net/2022/04/07/gw1L2Z5sPtS8GIl.gif', '17621590365', 1, 'youlaitech@163.com', 0, NULL, NULL);
|
|
||||||
INSERT INTO `sys_user` VALUES (2, 'admin', '系统管理员', 1, '$2a$10$8/8PxGHA.30EeWg8x4/4BuWuCUJubFbGJXyUYRs7RaJEdVvEMRbWe', 2, 'https://s2.loli.net/2022/04/07/gw1L2Z5sPtS8GIl.gif', '17621210366', 1, '', 0, '2019-10-10 13:41:22', '2022-09-20 23:16:09');
|
|
||||||
INSERT INTO `sys_user` VALUES (3, 'test', '测试小用户', 1, '$2a$10$MPJkNw.hKT/fZOgwYP8q9eu/rFJJDsNov697AmdkHNJkpjIpVSw2q', 3, 'https://s2.loli.net/2022/04/07/gw1L2Z5sPtS8GIl.gif', '17621210366', 1, 'youlaitech@163.com', 0, '2021-06-05 01:31:29', '2021-06-05 01:31:29');
|
|
||||||
INSERT INTO `sys_user` VALUES (99, '研发经理', '研发经理', 1, '$2a$10$aphBXZpRqU.uo3dqfJuIWuzVpL628iok6wufUj2z0yFgGw1nusQP2', 2, 'https://s2.loli.net/2022/04/07/gw1L2Z5sPtS8GIl.gif', NULL, 1, NULL, 0, '2022-09-19 22:15:03', '2022-09-19 22:15:03');
|
|
||||||
INSERT INTO `sys_user` VALUES (100, '研发1-1', '研发1-1', 1, '$2a$10$YscLYog22KpHrSjEgpsXOeYSpxyW8R3TEPxadw5W1QY3KLb6mf9Pi', 47, 'https://s2.loli.net/2022/04/07/gw1L2Z5sPtS8GIl.gif', NULL, 1, NULL, 0, '2022-09-19 22:16:01', '2022-09-19 22:21:54');
|
|
||||||
INSERT INTO `sys_user` VALUES (101, '研发2-1', '研发2-1', 1, '$2a$10$cw.JNXZ..ynlVsvRzpyOYu0w0JjQ/VHV9UkxERs.LuEW5R8cHIwFm', 48, 'https://s2.loli.net/2022/04/07/gw1L2Z5sPtS8GIl.gif', NULL, 1, NULL, 0, '2022-09-19 22:22:35', '2022-09-19 22:22:35');
|
|
||||||
INSERT INTO `sys_user` VALUES (102, '研发1-1-1', '研发1-1-1', 1, '$2a$10$9zfzDEGMkwdSuwLmro82LOST7cGu5j.Aln1UGnpdFVqpjZs7Ub2e.', 47, 'https://s2.loli.net/2022/04/07/gw1L2Z5sPtS8GIl.gif', NULL, 1, NULL, 0, '2022-09-19 22:23:11', '2022-09-19 22:23:11');
|
|
||||||
INSERT INTO `sys_user` VALUES (103, '研发2-1-1', '研发2-1-1', 1, '$2a$10$PwhfVrPeI12Ia.n6H6jjw.LT2H51YJPZPmi4tVCNLI4tO7OFzFa.y', 48, 'https://s2.loli.net/2022/04/07/gw1L2Z5sPtS8GIl.gif', NULL, 1, NULL, 0, '2022-09-19 22:23:45', '2022-09-19 22:23:45');
|
|
||||||
INSERT INTO `sys_user` VALUES (104, '测试经理', '测试经理', 1, '$2a$10$6v4RAwspGShJbkwF4tPuue5jDmOYZBc0czZg0ly8JyP4KkxN7GWWG', 3, 'https://s2.loli.net/2022/04/07/gw1L2Z5sPtS8GIl.gif', NULL, 1, NULL, 0, '2022-09-19 22:24:16', '2022-09-19 22:24:16');
|
|
||||||
INSERT INTO `sys_user` VALUES (105, '测试1-1', '测试1-1', 1, '$2a$10$CRJdFobDJk8nxRNPDHNqsuDQXTSpkD1rSZjX4PA8wToLCIqaK.04W', 49, 'https://s2.loli.net/2022/04/07/gw1L2Z5sPtS8GIl.gif', NULL, 1, NULL, 0, '2022-09-19 22:26:05', '2022-09-19 22:26:05');
|
|
||||||
INSERT INTO `sys_user` VALUES (106, '测试1-1-1', '测试1-1-1', 1, '$2a$10$2iMk0z5urtG4EnzzWC4/Xu7pl.CSS4/q5Yvl21LamyY2doMSL8NEe', 49, 'https://s2.loli.net/2022/04/07/gw1L2Z5sPtS8GIl.gif', NULL, 1, NULL, 0, '2022-09-19 22:26:48', '2022-09-19 22:26:48');
|
|
||||||
INSERT INTO `sys_user` VALUES (107, '测试2-1-1', '测试2-1-1', 1, '$2a$10$Raf3uyTP/OEmf0laUkGxSur1zgq/cQ.fScAYOSKxFa0rSzbYkQ4tW', 50, 'https://s2.loli.net/2022/04/07/gw1L2Z5sPtS8GIl.gif', NULL, 1, NULL, 0, '2022-09-19 22:27:12', '2022-09-19 22:27:12');
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Table structure for sys_user_role
|
|
||||||
-- ----------------------------
|
|
||||||
DROP TABLE IF EXISTS `sys_user_role`;
|
|
||||||
CREATE TABLE `sys_user_role` (
|
|
||||||
`user_id` int NOT NULL COMMENT '用户ID',
|
|
||||||
`role_id` int NOT NULL COMMENT '角色ID',
|
|
||||||
PRIMARY KEY (`user_id`, `role_id`) USING BTREE
|
|
||||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户和角色关联表' ROW_FORMAT = DYNAMIC;
|
|
||||||
|
|
||||||
-- ----------------------------
|
|
||||||
-- Records of sys_user_role
|
|
||||||
-- ----------------------------
|
|
||||||
INSERT INTO `sys_user_role` VALUES (1, 1);
|
|
||||||
INSERT INTO `sys_user_role` VALUES (2, 2);
|
|
||||||
INSERT INTO `sys_user_role` VALUES (2, 21);
|
|
||||||
INSERT INTO `sys_user_role` VALUES (3, 3);
|
|
||||||
INSERT INTO `sys_user_role` VALUES (99, 21);
|
|
||||||
INSERT INTO `sys_user_role` VALUES (100, 22);
|
|
||||||
INSERT INTO `sys_user_role` VALUES (101, 23);
|
|
||||||
INSERT INTO `sys_user_role` VALUES (102, 27);
|
|
||||||
INSERT INTO `sys_user_role` VALUES (103, 28);
|
|
||||||
INSERT INTO `sys_user_role` VALUES (104, 24);
|
|
||||||
INSERT INTO `sys_user_role` VALUES (105, 25);
|
|
||||||
INSERT INTO `sys_user_role` VALUES (106, 29);
|
|
||||||
INSERT INTO `sys_user_role` VALUES (107, 30);
|
|
||||||
|
|
||||||
SET FOREIGN_KEY_CHECKS = 1;
|
|
285
docs/sql/mysql8.x/youlai_system.sql
Normal file
285
docs/sql/mysql8.x/youlai_system.sql
Normal file
@ -0,0 +1,285 @@
|
|||||||
|
/*
|
||||||
|
Navicat Premium Data Transfer
|
||||||
|
|
||||||
|
Source Server : www.youlai.tech
|
||||||
|
Source Server Type : MySQL
|
||||||
|
Source Server Version : 80029
|
||||||
|
Source Host : www.youlai.tech:3306
|
||||||
|
Source Schema : youlai_system
|
||||||
|
|
||||||
|
Target Server Type : MySQL
|
||||||
|
Target Server Version : 80029
|
||||||
|
File Encoding : 65001
|
||||||
|
|
||||||
|
Date: 06/11/2022 22:12:28
|
||||||
|
*/
|
||||||
|
|
||||||
|
SET NAMES utf8mb4;
|
||||||
|
SET FOREIGN_KEY_CHECKS = 0;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for sys_dept
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `sys_dept`;
|
||||||
|
CREATE TABLE `sys_dept` (
|
||||||
|
`id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '部门名称',
|
||||||
|
`parent_id` bigint(0) NULL DEFAULT 0 COMMENT '父节点id',
|
||||||
|
`tree_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '父节点id路径',
|
||||||
|
`sort` int(0) NULL DEFAULT 0 COMMENT '显示顺序',
|
||||||
|
`status` tinyint(0) NULL DEFAULT 1 COMMENT '状态(1:正常;0:禁用)',
|
||||||
|
`deleted` tinyint(0) NULL DEFAULT 0 COMMENT '逻辑删除标识(1:已删除;0:未删除)',
|
||||||
|
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 160 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '部门表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of sys_dept
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `sys_dept` VALUES (1, '有来技术', 0, '0', 1, 1, 0, NULL, NULL);
|
||||||
|
INSERT INTO `sys_dept` VALUES (2, '研发部门', 1, '0,1', 1, 1, 0, NULL, '2022-04-19 12:46:37');
|
||||||
|
INSERT INTO `sys_dept` VALUES (3, '测试部门', 1, '0,1', 1, 1, 0, NULL, '2022-04-19 12:46:37');
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for sys_dict_item
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `sys_dict_item`;
|
||||||
|
CREATE TABLE `sys_dict_item` (
|
||||||
|
`id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
`type_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字典类型编码',
|
||||||
|
`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '字典项名称',
|
||||||
|
`value` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '字典项值',
|
||||||
|
`sort` int(0) NULL DEFAULT 0 COMMENT '排序',
|
||||||
|
`status` tinyint(0) NULL DEFAULT 0 COMMENT '状态(1:正常;0:禁用)',
|
||||||
|
`defaulted` tinyint(0) NULL DEFAULT 0 COMMENT '是否默认(1:是;0:否)',
|
||||||
|
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '备注',
|
||||||
|
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 35 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '字典数据表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of sys_dict_item
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (1, 'gender', '男', '1', 1, 1, 0, NULL, '2019-05-05 13:07:52', '2022-06-12 23:20:39');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (2, 'gender', '女', '2', 2, 1, 0, NULL, '2019-04-19 11:33:00', '2019-07-02 14:23:05');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (3, 'gender', '未知', '0', 1, 1, 0, NULL, '2020-10-17 08:09:31', '2020-10-17 08:09:31');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (6, 'grant_type', '密码模式', 'password', 1, 1, 0, NULL, '2020-10-17 09:11:52', '2021-01-31 09:48:18');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (7, 'grant_type', '授权码模式', 'authorization_code', 1, 1, 0, NULL, '2020-10-17 09:12:15', '2020-12-14 10:11:00');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (8, 'grant_type', '客户端模式', 'client_credentials', 1, 1, 0, NULL, '2020-10-17 09:12:36', '2020-12-14 10:11:00');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (9, 'grant_type', '刷新模式', 'refresh_token', 1, 1, 0, NULL, '2020-10-17 09:12:57', '2021-01-08 17:33:12');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (10, 'grant_type', '简化模式', 'implicit', 1, 1, 0, NULL, '2020-10-17 09:13:23', '2020-12-14 10:11:00');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (11, 'micro_service', '系统服务', 'youlai-admin', 1, 1, 0, NULL, '2021-06-17 00:14:12', '2021-06-17 00:14:12');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (12, 'micro_service', '会员服务', 'youlai-ums', 2, 1, 0, NULL, '2021-06-17 00:15:06', '2021-06-17 00:15:06');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (13, 'micro_service', '商品服务', 'youlai-pms', 3, 1, 0, NULL, '2021-06-17 00:15:26', '2021-06-17 00:16:18');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (14, 'micro_service', '订单服务', 'youlai-oms', 4, 1, 0, NULL, '2021-06-17 00:15:40', '2021-06-17 00:16:10');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (15, 'micro_service', '营销服务', 'youlai-sms', 5, 1, 0, NULL, '2021-06-17 00:16:01', '2021-06-17 00:16:01');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (16, 'request_method', '不限', '*', 1, 1, 0, NULL, '2021-06-17 00:18:34', '2021-06-17 00:18:34');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (17, 'request_method', 'GET', 'GET', 2, 1, 0, NULL, '2021-06-17 00:18:55', '2021-06-17 00:18:55');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (18, 'request_method', 'POST', 'POST', 3, 1, 0, NULL, '2021-06-17 00:19:06', '2021-06-17 00:19:06');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (19, 'request_method', 'PUT', 'PUT', 4, 1, 0, NULL, '2021-06-17 00:19:17', '2021-06-17 00:19:17');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (20, 'request_method', 'DELETE', 'DELETE', 5, 1, 0, NULL, '2021-06-17 00:19:30', '2021-06-17 00:19:30');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (21, 'request_method', 'PATCH', 'PATCH', 6, 1, 0, NULL, '2021-06-17 00:19:42', '2021-06-17 00:19:42');
|
||||||
|
INSERT INTO `sys_dict_item` VALUES (22, 'grant_type', '验证码', 'captcha', 1, 1, 0, '', '2022-05-28 11:44:28', '2022-05-28 11:44:28');
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for sys_dict_type
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `sys_dict_type`;
|
||||||
|
CREATE TABLE `sys_dict_type` (
|
||||||
|
`id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '主键 ',
|
||||||
|
`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '类型名称',
|
||||||
|
`code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '类型编码',
|
||||||
|
`status` tinyint(1) NULL DEFAULT 0 COMMENT '状态(0:正常;1:禁用)',
|
||||||
|
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
|
||||||
|
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE,
|
||||||
|
UNIQUE INDEX `type_code`(`code`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 31 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '字典类型表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of sys_dict_type
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `sys_dict_type` VALUES (1, '性别', 'gender', 1, NULL, '2019-12-06 19:03:32', '2022-06-12 16:21:28');
|
||||||
|
INSERT INTO `sys_dict_type` VALUES (2, '授权方式', 'grant_type', 1, NULL, '2020-10-17 08:09:50', '2021-01-31 09:48:24');
|
||||||
|
INSERT INTO `sys_dict_type` VALUES (3, '微服务列表', 'micro_service', 1, NULL, '2021-06-17 00:13:43', '2021-06-17 00:17:22');
|
||||||
|
INSERT INTO `sys_dict_type` VALUES (4, '请求方式', 'request_method', 1, NULL, '2021-06-17 00:18:07', '2021-06-17 00:18:07');
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for sys_menu
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `sys_menu`;
|
||||||
|
CREATE TABLE `sys_menu` (
|
||||||
|
`id` bigint(0) NOT NULL AUTO_INCREMENT,
|
||||||
|
`parent_id` bigint(0) NULL DEFAULT NULL COMMENT '父菜单ID',
|
||||||
|
`type` tinyint(0) NULL DEFAULT NULL COMMENT '菜单类型(1:菜单;2:目录;3:外链;4:按钮)',
|
||||||
|
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '菜单名称',
|
||||||
|
`path` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '路由路径(浏览器地址栏路径)',
|
||||||
|
`component` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组件路径(vue页面完整路径,省略.vue后缀)',
|
||||||
|
`perm` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '按钮权限标识',
|
||||||
|
`icon` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '菜单图标',
|
||||||
|
`sort` int(0) NULL DEFAULT 0 COMMENT '排序',
|
||||||
|
`visible` tinyint(1) NULL DEFAULT 1 COMMENT '状态(0:禁用;1:开启)',
|
||||||
|
`redirect` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '跳转路径',
|
||||||
|
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 43 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '菜单管理' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of sys_menu
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `sys_menu` VALUES (1, 0, 2, '系统管理', '/system', 'Layout', NULL, 'system', 1, 1, '/system/user', '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (2, 1, 1, '用户管理', 'user', 'system/user/index', NULL, 'user', 1, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (3, 1, 1, '角色管理', 'role', 'system/role/index', NULL, 'role', 2, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (4, 1, 1, '菜单管理', 'cmenu', 'system/menu/index', NULL, 'menu', 3, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (5, 1, 1, '部门管理', 'dept', 'system/dept/index', NULL, 'tree', 4, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (6, 1, 1, '字典管理', 'dict', 'system/dict/index', NULL, 'dict', 5, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (7, 1, 1, '客户端管理', 'client', 'system/client/index', NULL, 'client', 6, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (9, 0, 2, '营销管理', '/sms', 'Layout', NULL, 'number', 5, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (10, 9, 1, '广告列表', 'advert', 'sms/advert/index', NULL, 'advert', 1, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (11, 0, 1, '商品管理', '/pms', 'Layout', NULL, 'goods', 2, 1, '/pms/goods', '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (12, 11, 1, '商品列表', 'goods', 'pms/goods/index', NULL, 'goods-list', 1, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (13, 0, 1, '订单管理', '/oms', 'Layout', NULL, 'shopping', 3, 1, '/oms/order', '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (14, 13, 1, '订单列表', 'order', 'oms/order/index', NULL, 'order', 1, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (15, 0, 1, '会员管理', '/ums', 'Layout', NULL, 'user', 4, 1, '/ums/member', '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (16, 15, 1, '会员列表', 'member', 'ums/member/index', NULL, 'peoples', 1, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (17, 11, 1, '品牌管理', 'brand', 'pms/brand/index', NULL, 'brand', 5, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (18, 11, 1, '商品分类', 'category', 'pms/category/index', NULL, 'menu', 3, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (19, 11, 1, '商品上架', 'goods-detail', 'pms/goods/detail', NULL, 'publish', 2, 1, NULL, '2021-08-28 09:12:21', '2021-08-28 09:12:21');
|
||||||
|
INSERT INTO `sys_menu` VALUES (20, 0, 2, '多级菜单', '/multi-level-menu', 'Layout', NULL, 'nested', 7, 1, '/nested/level1/level2', '2022-02-16 23:11:00', '2022-02-16 23:11:00');
|
||||||
|
INSERT INTO `sys_menu` VALUES (21, 20, 1, '菜单一级', 'nested_level1_index', 'nested/level1/index', NULL, '', 1, 1, '/nested/level1/level2', '2022-02-16 23:13:38', '2022-02-16 23:13:38');
|
||||||
|
INSERT INTO `sys_menu` VALUES (22, 21, 1, '菜单二级', 'nested_level1_level2_index', 'nested/level1/level2/index', NULL, '', 1, 1, '/nested/level1/level2/level3', '2022-02-16 23:14:23', '2022-02-16 23:14:23');
|
||||||
|
INSERT INTO `sys_menu` VALUES (23, 22, 1, '菜单三级-1', 'nested_level1_level2_level3_index1', 'nested/level1/level2/level3/index1', NULL, '', 1, 1, '', '2022-02-16 23:14:51', '2022-02-16 23:14:51');
|
||||||
|
INSERT INTO `sys_menu` VALUES (24, 22, 1, '菜单三级-2', 'nested_level1_level2_level3_index2', 'nested/level1/level2/level3/index2', NULL, '', 2, 1, '', '2022-02-16 23:15:08', '2022-02-16 23:15:08');
|
||||||
|
INSERT INTO `sys_menu` VALUES (26, 0, 1, '外部链接', '/external-link', 'Layout', NULL, 'link', 9, 1, 'noredirect', '2022-02-17 22:51:20', '2022-02-17 22:51:20');
|
||||||
|
INSERT INTO `sys_menu` VALUES (30, 26, 3, 'document', 'https://www.cnblogs.com/haoxianrui/', '', NULL, 'link', 1, 1, '', '2022-02-18 00:01:40', '2022-02-18 00:01:40');
|
||||||
|
INSERT INTO `sys_menu` VALUES (32, 0, 2, '实验室', '/lab', 'Layout', NULL, 'lab', 8, 1, 'noredirect', '2022-04-19 09:35:38', '2022-04-19 09:35:38');
|
||||||
|
INSERT INTO `sys_menu` VALUES (33, 32, 1, 'Seata', 'seata', 'lab/seata/index', NULL, 'security', 1, 1, '', '2022-04-19 09:35:38', '2022-04-19 09:35:38');
|
||||||
|
INSERT INTO `sys_menu` VALUES (34, 32, 1, 'RabbitMQ', 'rabbitmq', 'lab/rabbit/index', NULL, 'rabbitmq', 2, 1, '', '2022-04-19 09:38:25', '2022-04-19 09:38:25');
|
||||||
|
INSERT INTO `sys_menu` VALUES (37, 9, 1, '优惠券列表', 'coupon', 'sms/coupon/index', NULL, 'input', 2, 1, '', '2022-05-29 00:24:07', '2022-05-29 00:24:07');
|
||||||
|
INSERT INTO `sys_menu` VALUES (39, 32, 1, 'Sentinel', 'sentinel', 'lab/sentinel/index', NULL, 'security', 2, 1, '', '2022-07-23 09:52:41', '2022-07-23 09:52:41');
|
||||||
|
INSERT INTO `sys_menu` VALUES (40, 2, 4, '新增用户', '', NULL, 'sys:user:add', '', 1, 1, '', NULL, NULL);
|
||||||
|
INSERT INTO `sys_menu` VALUES (41, 2, 4, '修改用户', '', NULL, 'sys:user:edit', '', 2, 1, '', '2022-11-05 01:26:44', '2022-11-05 01:26:44');
|
||||||
|
INSERT INTO `sys_menu` VALUES (42, 2, 4, '删除用户', '', NULL, 'sys:user:del', '', 3, 1, '', '2022-11-05 01:27:13', '2022-11-05 01:27:13');
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for sys_role
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `sys_role`;
|
||||||
|
CREATE TABLE `sys_role` (
|
||||||
|
`id` bigint(0) NOT NULL AUTO_INCREMENT,
|
||||||
|
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '角色名称',
|
||||||
|
`code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '角色编码',
|
||||||
|
`sort` int(0) NULL DEFAULT NULL COMMENT '显示顺序',
|
||||||
|
`status` tinyint(0) NULL DEFAULT 1 COMMENT '角色状态(1-正常;0-停用)',
|
||||||
|
`deleted` tinyint(0) NOT NULL DEFAULT 0 COMMENT '逻辑删除标识(0-未删除;1-已删除)',
|
||||||
|
`data_scope` tinyint(0) NULL DEFAULT NULL,
|
||||||
|
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE,
|
||||||
|
UNIQUE INDEX `name`(`name`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 21 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '角色表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of sys_role
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `sys_role` VALUES (1, '超级管理员', 'ROOT', 1, 1, 0, 0, '2021-05-21 14:56:51', '2018-12-23 16:00:00');
|
||||||
|
INSERT INTO `sys_role` VALUES (2, '系统管理员', 'ADMIN', 1, 1, 0, 0, '2021-03-25 12:39:54', '2022-11-05 00:22:02');
|
||||||
|
INSERT INTO `sys_role` VALUES (3, '访问游客', 'GUEST', 3, 1, 0, 30, '2021-05-26 15:49:05', '2019-05-05 16:00:00');
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for sys_role_menu
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `sys_role_menu`;
|
||||||
|
CREATE TABLE `sys_role_menu` (
|
||||||
|
`role_id` bigint(0) NOT NULL COMMENT '角色ID',
|
||||||
|
`menu_id` bigint(0) NOT NULL COMMENT '菜单ID'
|
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '角色和菜单关联表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of sys_role_menu
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 1);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 2);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 40);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 41);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 42);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 3);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 4);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 5);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 6);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 7);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 11);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 12);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 19);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 18);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 17);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 13);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 14);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 15);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 16);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 9);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 10);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 37);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 20);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 21);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 22);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 23);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 24);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 32);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 33);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 34);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 39);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 26);
|
||||||
|
INSERT INTO `sys_role_menu` VALUES (2, 30);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for sys_user
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `sys_user`;
|
||||||
|
CREATE TABLE `sys_user` (
|
||||||
|
`id` int(0) NOT NULL AUTO_INCREMENT,
|
||||||
|
`username` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户名',
|
||||||
|
`nickname` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '昵称',
|
||||||
|
`gender` tinyint(1) NULL DEFAULT 1 COMMENT '性别((1:男;2:女))',
|
||||||
|
`password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '密码',
|
||||||
|
`dept_id` int(0) NULL DEFAULT NULL COMMENT '部门ID',
|
||||||
|
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '用户头像',
|
||||||
|
`mobile` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '联系方式',
|
||||||
|
`status` tinyint(1) NULL DEFAULT 1 COMMENT '用户状态((1:正常;0:禁用))',
|
||||||
|
`email` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户邮箱',
|
||||||
|
`deleted` tinyint(1) NULL DEFAULT 0 COMMENT '逻辑删除标识(0:未删除;1:已删除)',
|
||||||
|
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE,
|
||||||
|
UNIQUE INDEX `login_name`(`username`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 100 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户信息表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of sys_user
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `sys_user` VALUES (1, 'root', '有来技术', 0, '$2a$10$xVWsNOhHrCxh5UbpCE7/HuJ.PAOKcYAqRxD2CO2nVnJS.IAXkr5aq', NULL, 'https://s2.loli.net/2022/04/07/gw1L2Z5sPtS8GIl.gif', '17621590365', 1, 'youlaitech@163.com', 0, NULL, NULL);
|
||||||
|
INSERT INTO `sys_user` VALUES (2, 'admin', '系统管理员', 1, '$2a$10$8/8PxGHA.30EeWg8x4/4BuWuCUJubFbGJXyUYRs7RaJEdVvEMRbWe', 2, 'https://s2.loli.net/2022/04/07/gw1L2Z5sPtS8GIl.gif', '17621210366', 1, '', 0, '2019-10-10 13:41:22', '2022-06-12 15:32:43');
|
||||||
|
INSERT INTO `sys_user` VALUES (3, 'test', '测试小用户', 1, '$2a$10$MPJkNw.hKT/fZOgwYP8q9eu/rFJJDsNov697AmdkHNJkpjIpVSw2q', 3, 'https://s2.loli.net/2022/04/07/gw1L2Z5sPtS8GIl.gif', '17621210366', 1, 'youlaitech@163.com', 0, '2021-06-05 01:31:29', '2021-06-05 01:31:29');
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for sys_user_role
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `sys_user_role`;
|
||||||
|
CREATE TABLE `sys_user_role` (
|
||||||
|
`user_id` int(0) NOT NULL COMMENT '用户ID',
|
||||||
|
`role_id` int(0) NOT NULL COMMENT '角色ID',
|
||||||
|
PRIMARY KEY (`user_id`, `role_id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户和角色关联表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of sys_user_role
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `sys_user_role` VALUES (1, 1);
|
||||||
|
INSERT INTO `sys_user_role` VALUES (2, 2);
|
||||||
|
INSERT INTO `sys_user_role` VALUES (3, 3);
|
||||||
|
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1;
|
@ -17,8 +17,8 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
|
|||||||
@SpringBootApplication
|
@SpringBootApplication
|
||||||
@EnableDiscoveryClient
|
@EnableDiscoveryClient
|
||||||
@EnableFeignClients(basePackageClasses = {OrderFeignClient.class, SkuFeignClient.class, MemberFeignClient.class})
|
@EnableFeignClients(basePackageClasses = {OrderFeignClient.class, SkuFeignClient.class, MemberFeignClient.class})
|
||||||
public class LabApplication {
|
public class LaboratoryApplication {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
SpringApplication.run(LabApplication.class, args);
|
SpringApplication.run(LaboratoryApplication.class, args);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -20,5 +20,4 @@ spring:
|
|||||||
# 公共配置
|
# 公共配置
|
||||||
shared-configs[0]:
|
shared-configs[0]:
|
||||||
data-id: youlai-common.yaml
|
data-id: youlai-common.yaml
|
||||||
namespace: develop-namespace-id
|
|
||||||
refresh: true
|
refresh: true
|
||||||
|
@ -13,14 +13,13 @@ spring:
|
|||||||
# 注册中心
|
# 注册中心
|
||||||
discovery:
|
discovery:
|
||||||
server-addr: http://c.youlai.tech:8848
|
server-addr: http://c.youlai.tech:8848
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
# 配置中心
|
# 配置中心
|
||||||
config:
|
config:
|
||||||
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
file-extension: yaml
|
file-extension: yaml
|
||||||
# 公共配置
|
# 公共配置
|
||||||
shared-configs[0]:
|
shared-configs[0]:
|
||||||
data-id: youlai-common.yaml
|
data-id: youlai-common.yaml
|
||||||
namespace: develop-namespace-id
|
|
||||||
refresh: true
|
refresh: true
|
||||||
|
@ -95,6 +95,11 @@
|
|||||||
<artifactId>common-rabbitmq</artifactId>
|
<artifactId>common-rabbitmq</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.youlai</groupId>
|
||||||
|
<artifactId>common-security</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.binarywang</groupId>
|
<groupId>com.github.binarywang</groupId>
|
||||||
<artifactId>weixin-java-pay</artifactId>
|
<artifactId>weixin-java-pay</artifactId>
|
||||||
|
@ -0,0 +1,55 @@
|
|||||||
|
package com.youlai.mall.oms.config;
|
||||||
|
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.core.convert.converter.Converter;
|
||||||
|
import org.springframework.security.authentication.AbstractAuthenticationToken;
|
||||||
|
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
|
||||||
|
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
||||||
|
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
||||||
|
import org.springframework.security.config.http.SessionCreationPolicy;
|
||||||
|
import org.springframework.security.oauth2.jwt.Jwt;
|
||||||
|
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationConverter;
|
||||||
|
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationProvider;
|
||||||
|
import org.springframework.security.oauth2.server.resource.authentication.JwtGrantedAuthoritiesConverter;
|
||||||
|
import org.springframework.security.web.SecurityFilterChain;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
@EnableWebSecurity
|
||||||
|
@EnableGlobalMethodSecurity(prePostEnabled = true)
|
||||||
|
public class ResourceServerConfig {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
|
||||||
|
http
|
||||||
|
.csrf().disable()
|
||||||
|
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
|
||||||
|
.and()
|
||||||
|
.authorizeRequests()
|
||||||
|
.antMatchers("/webjars/**", "/doc.html", "/swagger-resources/**", "/v2/api-docs").permitAll()
|
||||||
|
.anyRequest().authenticated();
|
||||||
|
http.oauth2ResourceServer()
|
||||||
|
.jwt()
|
||||||
|
.jwtAuthenticationConverter(jwtAuthenticationConverter())
|
||||||
|
;
|
||||||
|
return http.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义JWT Converter
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* @see JwtAuthenticationProvider#setJwtAuthenticationConverter(Converter)
|
||||||
|
*/
|
||||||
|
public Converter<Jwt, ? extends AbstractAuthenticationToken> jwtAuthenticationConverter() {
|
||||||
|
JwtGrantedAuthoritiesConverter jwtGrantedAuthoritiesConverter = new JwtGrantedAuthoritiesConverter();
|
||||||
|
jwtGrantedAuthoritiesConverter.setAuthorityPrefix("ROLE_");
|
||||||
|
jwtGrantedAuthoritiesConverter.setAuthoritiesClaimName("authorities");
|
||||||
|
|
||||||
|
JwtAuthenticationConverter jwtAuthenticationConverter = new JwtAuthenticationConverter();
|
||||||
|
jwtAuthenticationConverter.setJwtGrantedAuthoritiesConverter(jwtGrantedAuthoritiesConverter);
|
||||||
|
return jwtAuthenticationConverter;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -2,7 +2,7 @@ package com.youlai.mall.oms.controller.app;
|
|||||||
|
|
||||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||||
import com.youlai.common.result.Result;
|
import com.youlai.common.result.Result;
|
||||||
import com.youlai.common.web.util.MemberUtils;
|
import com.youlai.common.security.util.SecurityUtils;
|
||||||
import com.youlai.mall.oms.pojo.dto.CartItemDTO;
|
import com.youlai.mall.oms.pojo.dto.CartItemDTO;
|
||||||
import com.youlai.mall.oms.service.ICartService;
|
import com.youlai.mall.oms.service.ICartService;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
@ -31,7 +31,7 @@ public class CartController {
|
|||||||
@GetMapping
|
@GetMapping
|
||||||
@ApiOperationSupport(order = 1)
|
@ApiOperationSupport(order = 1)
|
||||||
public <T> Result<T> getCart() {
|
public <T> Result<T> getCart() {
|
||||||
Long memberId = MemberUtils.getMemberId();
|
Long memberId = SecurityUtils.getMemberId();
|
||||||
List<CartItemDTO> result = cartService.listCartItemByMemberId(memberId);
|
List<CartItemDTO> result = cartService.listCartItemByMemberId(memberId);
|
||||||
return Result.success((T) result);
|
return Result.success((T) result);
|
||||||
|
|
||||||
|
@ -3,8 +3,8 @@ package com.youlai.mall.oms.service.impl;
|
|||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
import com.youlai.common.result.ResultCode;
|
import com.youlai.common.result.ResultCode;
|
||||||
|
import com.youlai.common.security.util.SecurityUtils;
|
||||||
import com.youlai.common.web.exception.BusinessException;
|
import com.youlai.common.web.exception.BusinessException;
|
||||||
import com.youlai.common.web.util.MemberUtils;
|
|
||||||
import com.youlai.mall.oms.constant.OmsConstants;
|
import com.youlai.mall.oms.constant.OmsConstants;
|
||||||
import com.youlai.mall.oms.pojo.dto.CartItemDTO;
|
import com.youlai.mall.oms.pojo.dto.CartItemDTO;
|
||||||
import com.youlai.mall.oms.service.ICartService;
|
import com.youlai.mall.oms.service.ICartService;
|
||||||
@ -50,7 +50,7 @@ public class CartServiceImpl implements ICartService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean deleteCart() {
|
public boolean deleteCart() {
|
||||||
String key = OmsConstants.CART_PREFIX + MemberUtils.getMemberId();
|
String key = OmsConstants.CART_PREFIX + SecurityUtils.getMemberId();
|
||||||
redisTemplate.delete(key);
|
redisTemplate.delete(key);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -62,7 +62,7 @@ public class CartServiceImpl implements ICartService {
|
|||||||
public boolean addCartItem(Long skuId) {
|
public boolean addCartItem(Long skuId) {
|
||||||
Long memberId;
|
Long memberId;
|
||||||
try {
|
try {
|
||||||
memberId = MemberUtils.getMemberId();
|
memberId = SecurityUtils.getMemberId();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new BusinessException(ResultCode.TOKEN_INVALID_OR_EXPIRED);
|
throw new BusinessException(ResultCode.TOKEN_INVALID_OR_EXPIRED);
|
||||||
}
|
}
|
||||||
@ -103,7 +103,7 @@ public class CartServiceImpl implements ICartService {
|
|||||||
public boolean updateCartItem(CartItemDTO cartItem) {
|
public boolean updateCartItem(CartItemDTO cartItem) {
|
||||||
Long memberId;
|
Long memberId;
|
||||||
try {
|
try {
|
||||||
memberId = MemberUtils.getMemberId();
|
memberId = SecurityUtils.getMemberId();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new BusinessException(ResultCode.TOKEN_INVALID_OR_EXPIRED);
|
throw new BusinessException(ResultCode.TOKEN_INVALID_OR_EXPIRED);
|
||||||
}
|
}
|
||||||
@ -129,7 +129,7 @@ public class CartServiceImpl implements ICartService {
|
|||||||
public boolean removeCartItem(Long skuId) {
|
public boolean removeCartItem(Long skuId) {
|
||||||
Long memberId;
|
Long memberId;
|
||||||
try {
|
try {
|
||||||
memberId = MemberUtils.getMemberId();
|
memberId = SecurityUtils.getMemberId();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new BusinessException(ResultCode.TOKEN_INVALID_OR_EXPIRED);
|
throw new BusinessException(ResultCode.TOKEN_INVALID_OR_EXPIRED);
|
||||||
}
|
}
|
||||||
@ -147,7 +147,7 @@ public class CartServiceImpl implements ICartService {
|
|||||||
public boolean checkAll(boolean checked) {
|
public boolean checkAll(boolean checked) {
|
||||||
Long memberId;
|
Long memberId;
|
||||||
try {
|
try {
|
||||||
memberId = MemberUtils.getMemberId();
|
memberId = SecurityUtils.getMemberId();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new BusinessException(ResultCode.TOKEN_INVALID_OR_EXPIRED);
|
throw new BusinessException(ResultCode.TOKEN_INVALID_OR_EXPIRED);
|
||||||
}
|
}
|
||||||
@ -170,7 +170,7 @@ public class CartServiceImpl implements ICartService {
|
|||||||
public boolean removeCheckedItem() {
|
public boolean removeCheckedItem() {
|
||||||
Long memberId;
|
Long memberId;
|
||||||
try {
|
try {
|
||||||
memberId = MemberUtils.getMemberId();
|
memberId = SecurityUtils.getMemberId();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new BusinessException(ResultCode.TOKEN_INVALID_OR_EXPIRED);
|
throw new BusinessException(ResultCode.TOKEN_INVALID_OR_EXPIRED);
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package com.youlai.mall.oms.service.impl;
|
package com.youlai.mall.oms.service.impl;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.youlai.common.web.util.MemberUtils;
|
import com.youlai.common.security.util.SecurityUtils;
|
||||||
import com.youlai.mall.oms.mapper.OrderLogMapper;
|
import com.youlai.mall.oms.mapper.OrderLogMapper;
|
||||||
import com.youlai.mall.oms.pojo.entity.OmsOrderLog;
|
import com.youlai.mall.oms.pojo.entity.OmsOrderLog;
|
||||||
import com.youlai.mall.oms.service.IOrderLogService;
|
import com.youlai.mall.oms.service.IOrderLogService;
|
||||||
@ -24,7 +24,7 @@ public class OrderLogServiceImpl extends ServiceImpl<OrderLogMapper, OmsOrderLog
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addOrderLogs(Long orderId, Integer orderStatus, String detail) {
|
public void addOrderLogs(Long orderId, Integer orderStatus, String detail) {
|
||||||
Long memberId = MemberUtils.getMemberId();
|
Long memberId = SecurityUtils.getMemberId();
|
||||||
addOrderLogs(orderId, orderStatus, memberId.toString(), detail);
|
addOrderLogs(orderId, orderStatus, memberId.toString(), detail);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,8 +24,8 @@ import com.github.binarywang.wxpay.service.WxPayService;
|
|||||||
import com.youlai.common.enums.BusinessTypeEnum;
|
import com.youlai.common.enums.BusinessTypeEnum;
|
||||||
import com.youlai.common.redis.BusinessNoGenerator;
|
import com.youlai.common.redis.BusinessNoGenerator;
|
||||||
import com.youlai.common.result.Result;
|
import com.youlai.common.result.Result;
|
||||||
|
import com.youlai.common.security.util.SecurityUtils;
|
||||||
import com.youlai.common.web.exception.BusinessException;
|
import com.youlai.common.web.exception.BusinessException;
|
||||||
import com.youlai.common.web.util.MemberUtils;
|
|
||||||
import com.youlai.mall.oms.config.WxPayProperties;
|
import com.youlai.mall.oms.config.WxPayProperties;
|
||||||
import com.youlai.mall.oms.dto.OrderInfoDTO;
|
import com.youlai.mall.oms.dto.OrderInfoDTO;
|
||||||
import com.youlai.mall.oms.enums.OrderStatusEnum;
|
import com.youlai.mall.oms.enums.OrderStatusEnum;
|
||||||
@ -135,7 +135,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OmsOrder> impleme
|
|||||||
// 获取会员收获地址
|
// 获取会员收获地址
|
||||||
CompletableFuture<Void> getMemberAddressFuture = CompletableFuture.runAsync(() -> {
|
CompletableFuture<Void> getMemberAddressFuture = CompletableFuture.runAsync(() -> {
|
||||||
RequestContextHolder.setRequestAttributes(attributes);
|
RequestContextHolder.setRequestAttributes(attributes);
|
||||||
Long memberId = MemberUtils.getMemberId();
|
Long memberId = SecurityUtils.getMemberId();
|
||||||
Result<List<MemberAddressDTO>> getMemberAddressResult = memberFeignClient.listMemberAddresses(memberId);
|
Result<List<MemberAddressDTO>> getMemberAddressResult = memberFeignClient.listMemberAddresses(memberId);
|
||||||
List<MemberAddressDTO> memberAddresses;
|
List<MemberAddressDTO> memberAddresses;
|
||||||
if (Result.isSuccess(getMemberAddressResult) && (memberAddresses = getMemberAddressResult.getData()) != null) {
|
if (Result.isSuccess(getMemberAddressResult) && (memberAddresses = getMemberAddressResult.getData()) != null) {
|
||||||
@ -187,7 +187,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OmsOrder> impleme
|
|||||||
|
|
||||||
// 创建订单
|
// 创建订单
|
||||||
order = new OmsOrder().setOrderSn(orderToken) // 把orderToken赋值给订单编号
|
order = new OmsOrder().setOrderSn(orderToken) // 把orderToken赋值给订单编号
|
||||||
.setStatus(OrderStatusEnum.PENDING_PAYMENT.getCode()).setSourceType(OrderTypeEnum.APP.getCode()).setMemberId(MemberUtils.getMemberId()).setRemark(orderSubmitForm.getRemark()).setPayAmount(orderSubmitForm.getPayAmount()).setTotalQuantity(orderItems.stream().map(OrderItemDTO::getCount).reduce(0, Integer::sum)).setTotalAmount(orderItems.stream().map(item -> item.getPrice() * item.getCount()).reduce(0L, Long::sum));
|
.setStatus(OrderStatusEnum.PENDING_PAYMENT.getCode()).setSourceType(OrderTypeEnum.APP.getCode()).setMemberId(SecurityUtils.getMemberId()).setRemark(orderSubmitForm.getRemark()).setPayAmount(orderSubmitForm.getPayAmount()).setTotalQuantity(orderItems.stream().map(OrderItemDTO::getCount).reduce(0, Integer::sum)).setTotalAmount(orderItems.stream().map(item -> item.getPrice() * item.getCount()).reduce(0L, Long::sum));
|
||||||
boolean result = this.save(order);
|
boolean result = this.save(order);
|
||||||
|
|
||||||
// 添加订单明细
|
// 添加订单明细
|
||||||
@ -279,7 +279,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OmsOrder> impleme
|
|||||||
|
|
||||||
|
|
||||||
private WxPayUnifiedOrderV3Result.JsapiResult wxJsapiPay(String appId, OmsOrder order) {
|
private WxPayUnifiedOrderV3Result.JsapiResult wxJsapiPay(String appId, OmsOrder order) {
|
||||||
Long memberId = MemberUtils.getMemberId();
|
Long memberId = SecurityUtils.getMemberId();
|
||||||
Long payAmount = order.getPayAmount();
|
Long payAmount = order.getPayAmount();
|
||||||
// 如果已经有outTradeNo了就先进行关单
|
// 如果已经有outTradeNo了就先进行关单
|
||||||
if (PayTypeEnum.WX_JSAPI.getValue().equals(order.getPayType()) && StrUtil.isNotBlank(order.getOutTradeNo())) {
|
if (PayTypeEnum.WX_JSAPI.getValue().equals(order.getPayType()) && StrUtil.isNotBlank(order.getOutTradeNo())) {
|
||||||
@ -467,7 +467,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OmsOrder> impleme
|
|||||||
orderItemDTO.setCount(1); // 直接购买商品的数量为1
|
orderItemDTO.setCount(1); // 直接购买商品的数量为1
|
||||||
orderItems.add(orderItemDTO);
|
orderItems.add(orderItemDTO);
|
||||||
} else { // 购物车结算
|
} else { // 购物车结算
|
||||||
Long memberId = MemberUtils.getMemberId();
|
Long memberId = SecurityUtils.getMemberId();
|
||||||
log.info("购物车结算获取商品明细的memberId:{}", memberId);
|
log.info("购物车结算获取商品明细的memberId:{}", memberId);
|
||||||
List<CartItemDTO> cartItems = cartService.listCartItemByMemberId(memberId);
|
List<CartItemDTO> cartItems = cartService.listCartItemByMemberId(memberId);
|
||||||
orderItems = cartItems.stream().filter(CartItemDTO::getChecked).map(cartItem -> {
|
orderItems = cartItems.stream().filter(CartItemDTO::getChecked).map(cartItem -> {
|
||||||
|
@ -19,5 +19,4 @@ spring:
|
|||||||
# 公共配置
|
# 公共配置
|
||||||
shared-configs[0]:
|
shared-configs[0]:
|
||||||
data-id: youlai-common.yaml
|
data-id: youlai-common.yaml
|
||||||
namespace: develop-namespace-id
|
|
||||||
refresh: true
|
refresh: true
|
@ -11,14 +11,13 @@ spring:
|
|||||||
nacos:
|
nacos:
|
||||||
discovery:
|
discovery:
|
||||||
server-addr: nacos-headless.infrastructure:8848 # 使用k8s无头服务
|
server-addr: nacos-headless.infrastructure:8848 # 使用k8s无头服务
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
config:
|
config:
|
||||||
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
||||||
file-extension: yaml
|
file-extension: yaml
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
shared-configs[0]:
|
shared-configs[0]:
|
||||||
data-id: youlai-common.yaml
|
data-id: youlai-common.yaml
|
||||||
namespace: develop-namespace-id
|
|
||||||
refresh: true
|
refresh: true
|
||||||
|
|
||||||
|
|
||||||
|
@ -11,14 +11,13 @@ spring:
|
|||||||
nacos:
|
nacos:
|
||||||
discovery:
|
discovery:
|
||||||
server-addr: http://c.youlai.tech:8848
|
server-addr: http://c.youlai.tech:8848
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
config:
|
config:
|
||||||
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
||||||
file-extension: yaml
|
file-extension: yaml
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
shared-configs[0]:
|
shared-configs[0]:
|
||||||
data-id: youlai-common.yaml
|
data-id: youlai-common.yaml
|
||||||
namespace: develop-namespace-id
|
|
||||||
refresh: true
|
refresh: true
|
||||||
|
|
||||||
|
|
||||||
|
@ -67,7 +67,6 @@
|
|||||||
<artifactId>ums-api</artifactId>
|
<artifactId>ums-api</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.youlai</groupId>
|
<groupId>com.youlai</groupId>
|
||||||
<artifactId>common-mybatis</artifactId>
|
<artifactId>common-mybatis</artifactId>
|
||||||
@ -83,24 +82,28 @@
|
|||||||
<artifactId>common-redis</artifactId>
|
<artifactId>common-redis</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.youlai</groupId>
|
<groupId>com.youlai</groupId>
|
||||||
<artifactId>common-rabbitmq</artifactId>
|
<artifactId>common-rabbitmq</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.youlai</groupId>
|
||||||
|
<artifactId>common-security</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
<finalName>${project.artifactId}</finalName>
|
<finalName>${project.artifactId}</finalName>
|
||||||
|
|
||||||
<plugins>
|
<plugins>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
<version>${spring-boot.version}</version>
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
@ -0,0 +1,54 @@
|
|||||||
|
package com.youlai.mall.pms.config;
|
||||||
|
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.core.convert.converter.Converter;
|
||||||
|
import org.springframework.security.authentication.AbstractAuthenticationToken;
|
||||||
|
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
|
||||||
|
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
||||||
|
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
||||||
|
import org.springframework.security.config.http.SessionCreationPolicy;
|
||||||
|
import org.springframework.security.oauth2.jwt.Jwt;
|
||||||
|
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationConverter;
|
||||||
|
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationProvider;
|
||||||
|
import org.springframework.security.oauth2.server.resource.authentication.JwtGrantedAuthoritiesConverter;
|
||||||
|
import org.springframework.security.web.SecurityFilterChain;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
@EnableWebSecurity
|
||||||
|
@EnableGlobalMethodSecurity(prePostEnabled = true)
|
||||||
|
public class ResourceServerConfig {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
|
||||||
|
http
|
||||||
|
.csrf().disable()
|
||||||
|
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
|
||||||
|
.and()
|
||||||
|
.authorizeRequests()
|
||||||
|
.antMatchers("/webjars/**", "/doc.html", "/swagger-resources/**", "/v2/api-docs").permitAll()
|
||||||
|
.anyRequest().authenticated();
|
||||||
|
http.oauth2ResourceServer()
|
||||||
|
.jwt()
|
||||||
|
.jwtAuthenticationConverter(jwtAuthenticationConverter());
|
||||||
|
return http.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义JWT Converter
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* @see JwtAuthenticationProvider#setJwtAuthenticationConverter(Converter)
|
||||||
|
*/
|
||||||
|
public Converter<Jwt, ? extends AbstractAuthenticationToken> jwtAuthenticationConverter() {
|
||||||
|
JwtGrantedAuthoritiesConverter jwtGrantedAuthoritiesConverter = new JwtGrantedAuthoritiesConverter();
|
||||||
|
jwtGrantedAuthoritiesConverter.setAuthorityPrefix("ROLE_");
|
||||||
|
jwtGrantedAuthoritiesConverter.setAuthoritiesClaimName("authorities");
|
||||||
|
|
||||||
|
JwtAuthenticationConverter jwtAuthenticationConverter = new JwtAuthenticationConverter();
|
||||||
|
jwtAuthenticationConverter.setJwtGrantedAuthoritiesConverter(jwtGrantedAuthoritiesConverter);
|
||||||
|
return jwtAuthenticationConverter;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.youlai.common.web.util.MemberUtils;
|
import com.youlai.common.security.util.SecurityUtils;
|
||||||
import com.youlai.mall.pms.common.constant.PmsConstants;
|
import com.youlai.mall.pms.common.constant.PmsConstants;
|
||||||
import com.youlai.mall.pms.common.enums.AttributeTypeEnum;
|
import com.youlai.mall.pms.common.enums.AttributeTypeEnum;
|
||||||
import com.youlai.mall.pms.converter.SpuAttributeConverter;
|
import com.youlai.mall.pms.converter.SpuAttributeConverter;
|
||||||
@ -162,7 +162,7 @@ public class PmsSpuServiceImpl extends ServiceImpl<PmsSpuMapper, PmsSpu> impleme
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 添加用户浏览历史记录
|
// 添加用户浏览历史记录
|
||||||
Long loginUserId = MemberUtils.getMemberId();
|
Long loginUserId = SecurityUtils.getMemberId();
|
||||||
if (loginUserId != null) {
|
if (loginUserId != null) {
|
||||||
ProductHistoryVO vo = new ProductHistoryVO();
|
ProductHistoryVO vo = new ProductHistoryVO();
|
||||||
vo.setId(goodsInfo.getId());
|
vo.setId(goodsInfo.getId());
|
||||||
|
@ -21,7 +21,6 @@ spring:
|
|||||||
file-extension: yaml
|
file-extension: yaml
|
||||||
shared-configs[0]:
|
shared-configs[0]:
|
||||||
data-id: youlai-common.yaml
|
data-id: youlai-common.yaml
|
||||||
namespace: develop-namespace-id
|
|
||||||
refresh: true
|
refresh: true
|
||||||
|
|
||||||
|
|
||||||
|
@ -11,13 +11,12 @@ spring:
|
|||||||
nacos:
|
nacos:
|
||||||
discovery:
|
discovery:
|
||||||
server-addr: nacos-headless.infrastructure:8848 # 使用k8s无头服务
|
server-addr: nacos-headless.infrastructure:8848 # 使用k8s无头服务
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
config:
|
config:
|
||||||
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
||||||
file-extension: yaml
|
file-extension: yaml
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
# 公共配置
|
# 公共配置
|
||||||
shared-configs[0]:
|
shared-configs[0]:
|
||||||
data-id: youlai-common.yaml
|
data-id: youlai-common.yaml
|
||||||
namespace: develop-namespace-id
|
|
||||||
refresh: true
|
refresh: true
|
||||||
|
@ -11,13 +11,12 @@ spring:
|
|||||||
nacos:
|
nacos:
|
||||||
discovery:
|
discovery:
|
||||||
server-addr: http://c.youlai.tech:8848
|
server-addr: http://c.youlai.tech:8848
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
config:
|
config:
|
||||||
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
||||||
file-extension: yaml
|
file-extension: yaml
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
# 公共配置
|
# 公共配置
|
||||||
shared-configs[0]:
|
shared-configs[0]:
|
||||||
data-id: youlai-common.yaml
|
data-id: youlai-common.yaml
|
||||||
namespace: develop-namespace-id
|
|
||||||
refresh: true
|
refresh: true
|
||||||
|
@ -83,6 +83,11 @@
|
|||||||
<artifactId>mapstruct</artifactId>
|
<artifactId>mapstruct</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.youlai</groupId>
|
||||||
|
<artifactId>common-security</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
@ -91,8 +96,10 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
<version>${spring-boot.version}</version>
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
@ -0,0 +1,55 @@
|
|||||||
|
package com.youlai.mall.sms.config;
|
||||||
|
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.core.convert.converter.Converter;
|
||||||
|
import org.springframework.security.authentication.AbstractAuthenticationToken;
|
||||||
|
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
|
||||||
|
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
||||||
|
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
||||||
|
import org.springframework.security.config.http.SessionCreationPolicy;
|
||||||
|
import org.springframework.security.oauth2.jwt.Jwt;
|
||||||
|
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationConverter;
|
||||||
|
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationProvider;
|
||||||
|
import org.springframework.security.oauth2.server.resource.authentication.JwtGrantedAuthoritiesConverter;
|
||||||
|
import org.springframework.security.web.SecurityFilterChain;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
@EnableWebSecurity
|
||||||
|
@EnableGlobalMethodSecurity(prePostEnabled = true)
|
||||||
|
public class ResourceServerConfig {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
|
||||||
|
http
|
||||||
|
.csrf().disable()
|
||||||
|
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
|
||||||
|
.and()
|
||||||
|
.authorizeRequests()
|
||||||
|
.antMatchers("/webjars/**", "/doc.html", "/swagger-resources/**", "/v2/api-docs").permitAll()
|
||||||
|
.anyRequest().authenticated();
|
||||||
|
http.oauth2ResourceServer()
|
||||||
|
.jwt()
|
||||||
|
.jwtAuthenticationConverter(jwtAuthenticationConverter())
|
||||||
|
;
|
||||||
|
return http.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义JWT Converter
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* @see JwtAuthenticationProvider#setJwtAuthenticationConverter(Converter)
|
||||||
|
*/
|
||||||
|
public Converter<Jwt, ? extends AbstractAuthenticationToken> jwtAuthenticationConverter() {
|
||||||
|
JwtGrantedAuthoritiesConverter jwtGrantedAuthoritiesConverter = new JwtGrantedAuthoritiesConverter();
|
||||||
|
jwtGrantedAuthoritiesConverter.setAuthorityPrefix("ROLE_");
|
||||||
|
jwtGrantedAuthoritiesConverter.setAuthoritiesClaimName("authorities");
|
||||||
|
|
||||||
|
JwtAuthenticationConverter jwtAuthenticationConverter = new JwtAuthenticationConverter();
|
||||||
|
jwtAuthenticationConverter.setJwtGrantedAuthoritiesConverter(jwtGrantedAuthoritiesConverter);
|
||||||
|
return jwtAuthenticationConverter;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -1,7 +1,6 @@
|
|||||||
package com.youlai.mall.sms.service.impl;
|
package com.youlai.mall.sms.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.img.ImgUtil;
|
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
@ -21,5 +21,4 @@ spring:
|
|||||||
file-extension: yaml
|
file-extension: yaml
|
||||||
shared-configs[0]:
|
shared-configs[0]:
|
||||||
data-id: youlai-common.yaml
|
data-id: youlai-common.yaml
|
||||||
namespace: develop-namespace-id
|
|
||||||
refresh: true
|
refresh: true
|
@ -12,13 +12,12 @@ spring:
|
|||||||
# 注册中心
|
# 注册中心
|
||||||
discovery:
|
discovery:
|
||||||
server-addr: nacos-headless.infrastructure:8848 # 使用k8s无头服务
|
server-addr: nacos-headless.infrastructure:8848 # 使用k8s无头服务
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
# 配置中心
|
# 配置中心
|
||||||
config:
|
config:
|
||||||
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
||||||
file-extension: yaml
|
file-extension: yaml
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
shared-configs[0]:
|
shared-configs[0]:
|
||||||
data-id: youlai-common.yaml
|
data-id: youlai-common.yaml
|
||||||
namespace: develop-namespace-id
|
|
||||||
refresh: true
|
refresh: true
|
@ -12,13 +12,12 @@ spring:
|
|||||||
# 注册中心
|
# 注册中心
|
||||||
discovery:
|
discovery:
|
||||||
server-addr: http://c.youlai.tech:8848
|
server-addr: http://c.youlai.tech:8848
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
# 配置中心
|
# 配置中心
|
||||||
config:
|
config:
|
||||||
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
||||||
file-extension: yaml
|
file-extension: yaml
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
shared-configs[0]:
|
shared-configs[0]:
|
||||||
data-id: youlai-common.yaml
|
data-id: youlai-common.yaml
|
||||||
namespace: develop-namespace-id
|
|
||||||
refresh: true
|
refresh: true
|
@ -73,49 +73,20 @@
|
|||||||
<artifactId>common-redis</artifactId>
|
<artifactId>common-redis</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.youlai</groupId>
|
||||||
|
<artifactId>common-security</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
<finalName>${project.artifactId}</finalName>
|
<finalName>${project.artifactId}</finalName>
|
||||||
|
|
||||||
<plugins>
|
<plugins>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
</plugin>
|
<version>${spring-boot.version}</version>
|
||||||
<plugin>
|
|
||||||
<groupId>com.spotify</groupId>
|
|
||||||
<artifactId>docker-maven-plugin</artifactId>
|
|
||||||
<version>1.2.2</version>
|
|
||||||
|
|
||||||
<!--将插件绑定在某个phase执行-->
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<id>build-image</id>
|
|
||||||
<phase>package</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>build</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
<configuration>
|
|
||||||
<imageName>${project.artifactId}</imageName>
|
|
||||||
<!--指定标签-->
|
|
||||||
<imageTags>
|
|
||||||
<imageTag>latest</imageTag>
|
|
||||||
</imageTags>
|
|
||||||
<!-- 指定 Dockerfile 路径-->
|
|
||||||
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
|
|
||||||
<forceTags>true</forceTags>
|
|
||||||
<resources>
|
|
||||||
<resource>
|
|
||||||
<targetPath>/</targetPath>
|
|
||||||
<directory>${project.build.directory}</directory>
|
|
||||||
<include>${project.build.finalName}.jar</include>
|
|
||||||
</resource>
|
|
||||||
</resources>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
@ -0,0 +1,55 @@
|
|||||||
|
package com.youlai.mall.ums.config;
|
||||||
|
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.core.convert.converter.Converter;
|
||||||
|
import org.springframework.security.authentication.AbstractAuthenticationToken;
|
||||||
|
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
|
||||||
|
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
||||||
|
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
||||||
|
import org.springframework.security.config.http.SessionCreationPolicy;
|
||||||
|
import org.springframework.security.oauth2.jwt.Jwt;
|
||||||
|
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationConverter;
|
||||||
|
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationProvider;
|
||||||
|
import org.springframework.security.oauth2.server.resource.authentication.JwtGrantedAuthoritiesConverter;
|
||||||
|
import org.springframework.security.web.SecurityFilterChain;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
@EnableWebSecurity
|
||||||
|
@EnableGlobalMethodSecurity(prePostEnabled = true)
|
||||||
|
public class ResourceServerConfig {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
|
||||||
|
http
|
||||||
|
.csrf().disable()
|
||||||
|
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
|
||||||
|
.and()
|
||||||
|
.authorizeRequests()
|
||||||
|
.antMatchers("/webjars/**", "/doc.html", "/swagger-resources/**", "/v2/api-docs").permitAll()
|
||||||
|
.anyRequest().authenticated();
|
||||||
|
http.oauth2ResourceServer()
|
||||||
|
.jwt()
|
||||||
|
.jwtAuthenticationConverter(jwtAuthenticationConverter())
|
||||||
|
;
|
||||||
|
return http.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义JWT Converter
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* @see JwtAuthenticationProvider#setJwtAuthenticationConverter(Converter)
|
||||||
|
*/
|
||||||
|
public Converter<Jwt, ? extends AbstractAuthenticationToken> jwtAuthenticationConverter() {
|
||||||
|
JwtGrantedAuthoritiesConverter jwtGrantedAuthoritiesConverter = new JwtGrantedAuthoritiesConverter();
|
||||||
|
jwtGrantedAuthoritiesConverter.setAuthorityPrefix("ROLE_");
|
||||||
|
jwtGrantedAuthoritiesConverter.setAuthoritiesClaimName("authorities");
|
||||||
|
|
||||||
|
JwtAuthenticationConverter jwtAuthenticationConverter = new JwtAuthenticationConverter();
|
||||||
|
jwtAuthenticationConverter.setJwtGrantedAuthoritiesConverter(jwtGrantedAuthoritiesConverter);
|
||||||
|
return jwtAuthenticationConverter;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.youlai.common.result.Result;
|
import com.youlai.common.result.Result;
|
||||||
import com.youlai.common.result.ResultCode;
|
import com.youlai.common.result.ResultCode;
|
||||||
import com.youlai.common.web.util.MemberUtils;
|
import com.youlai.common.security.util.SecurityUtils;
|
||||||
import com.youlai.mall.pms.pojo.vo.ProductHistoryVO;
|
import com.youlai.mall.pms.pojo.vo.ProductHistoryVO;
|
||||||
import com.youlai.mall.ums.dto.MemberAddressDTO;
|
import com.youlai.mall.ums.dto.MemberAddressDTO;
|
||||||
import com.youlai.mall.ums.dto.MemberAuthDTO;
|
import com.youlai.mall.ums.dto.MemberAuthDTO;
|
||||||
@ -56,7 +56,7 @@ public class MemberController {
|
|||||||
@ApiOperation(value = "扣减会员余额")
|
@ApiOperation(value = "扣减会员余额")
|
||||||
@PutMapping("/current/balances/_deduct")
|
@PutMapping("/current/balances/_deduct")
|
||||||
public <T> Result<T> deductBalance(@RequestParam Long balances) {
|
public <T> Result<T> deductBalance(@RequestParam Long balances) {
|
||||||
Long memberId = MemberUtils.getMemberId();
|
Long memberId = SecurityUtils.getMemberId();
|
||||||
boolean result = memberService.update(new LambdaUpdateWrapper<UmsMember>()
|
boolean result = memberService.update(new LambdaUpdateWrapper<UmsMember>()
|
||||||
.setSql("balance = balance - " + balances)
|
.setSql("balance = balance - " + balances)
|
||||||
.eq(UmsMember::getId, memberId));
|
.eq(UmsMember::getId, memberId));
|
||||||
@ -66,7 +66,7 @@ public class MemberController {
|
|||||||
@ApiOperation(value = "添加浏览历史")
|
@ApiOperation(value = "添加浏览历史")
|
||||||
@PostMapping("/view/history")
|
@PostMapping("/view/history")
|
||||||
public <T> Result<T> addProductViewHistory(@RequestBody ProductHistoryVO product) {
|
public <T> Result<T> addProductViewHistory(@RequestBody ProductHistoryVO product) {
|
||||||
Long memberId = MemberUtils.getMemberId();
|
Long memberId = SecurityUtils.getMemberId();
|
||||||
memberService.addProductViewHistory(product, memberId);
|
memberService.addProductViewHistory(product, memberId);
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
@ -75,7 +75,7 @@ public class MemberController {
|
|||||||
@GetMapping("/view/history")
|
@GetMapping("/view/history")
|
||||||
public Result<Set<ProductHistoryVO>> getProductViewHistory() {
|
public Result<Set<ProductHistoryVO>> getProductViewHistory() {
|
||||||
try {
|
try {
|
||||||
Long memberId = MemberUtils.getMemberId();
|
Long memberId = SecurityUtils.getMemberId();
|
||||||
Set<ProductHistoryVO> historyList = memberService.getProductViewHistory(memberId);
|
Set<ProductHistoryVO> historyList = memberService.getProductViewHistory(memberId);
|
||||||
return Result.success(historyList);
|
return Result.success(historyList);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.youlai.common.constant.GlobalConstants;
|
import com.youlai.common.constant.GlobalConstants;
|
||||||
import com.youlai.common.web.util.MemberUtils;
|
import com.youlai.common.security.util.SecurityUtils;
|
||||||
import com.youlai.mall.ums.dto.MemberAddressDTO;
|
import com.youlai.mall.ums.dto.MemberAddressDTO;
|
||||||
import com.youlai.mall.ums.mapper.UmsAddressMapper;
|
import com.youlai.mall.ums.mapper.UmsAddressMapper;
|
||||||
import com.youlai.mall.ums.pojo.entity.UmsAddress;
|
import com.youlai.mall.ums.pojo.entity.UmsAddress;
|
||||||
@ -37,7 +37,7 @@ public class UmsAddressServiceImpl extends ServiceImpl<UmsAddressMapper, UmsAddr
|
|||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public boolean addAddress(AddressForm addressForm) {
|
public boolean addAddress(AddressForm addressForm) {
|
||||||
Long memberId = MemberUtils.getMemberId();
|
Long memberId = SecurityUtils.getMemberId();
|
||||||
|
|
||||||
UmsAddress umsAddress = new UmsAddress();
|
UmsAddress umsAddress = new UmsAddress();
|
||||||
BeanUtil.copyProperties(addressForm, umsAddress);
|
BeanUtil.copyProperties(addressForm, umsAddress);
|
||||||
@ -65,7 +65,7 @@ public class UmsAddressServiceImpl extends ServiceImpl<UmsAddressMapper, UmsAddr
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean updateAddress(AddressForm addressForm) {
|
public boolean updateAddress(AddressForm addressForm) {
|
||||||
Long memberId = MemberUtils.getMemberId();
|
Long memberId = SecurityUtils.getMemberId();
|
||||||
|
|
||||||
UmsAddress umsAddress = new UmsAddress();
|
UmsAddress umsAddress = new UmsAddress();
|
||||||
BeanUtil.copyProperties(addressForm, umsAddress);
|
BeanUtil.copyProperties(addressForm, umsAddress);
|
||||||
@ -93,7 +93,7 @@ public class UmsAddressServiceImpl extends ServiceImpl<UmsAddressMapper, UmsAddr
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<MemberAddressDTO> listCurrentMemberAddresses() {
|
public List<MemberAddressDTO> listCurrentMemberAddresses() {
|
||||||
Long memberId = MemberUtils.getMemberId();
|
Long memberId = SecurityUtils.getMemberId();
|
||||||
List<UmsAddress> umsAddressList = this.list(new LambdaQueryWrapper<UmsAddress>()
|
List<UmsAddress> umsAddressList = this.list(new LambdaQueryWrapper<UmsAddress>()
|
||||||
.eq(UmsAddress::getMemberId, memberId)
|
.eq(UmsAddress::getMemberId, memberId)
|
||||||
.orderByDesc(UmsAddress::getDefaulted) // 默认地址排在首位
|
.orderByDesc(UmsAddress::getDefaulted) // 默认地址排在首位
|
||||||
|
@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.youlai.common.web.util.MemberUtils;
|
import com.youlai.common.security.util.SecurityUtils;
|
||||||
import com.youlai.mall.pms.pojo.vo.ProductHistoryVO;
|
import com.youlai.mall.pms.pojo.vo.ProductHistoryVO;
|
||||||
import com.youlai.mall.ums.constant.UmsConstants;
|
import com.youlai.mall.ums.constant.UmsConstants;
|
||||||
import com.youlai.mall.ums.convert.AddressConvert;
|
import com.youlai.mall.ums.convert.AddressConvert;
|
||||||
@ -132,7 +132,7 @@ public class UmsMemberServiceImpl extends ServiceImpl<UmsMemberMapper, UmsMember
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public MemberVO getCurrMemberInfo() {
|
public MemberVO getCurrMemberInfo() {
|
||||||
Long memberId = MemberUtils.getMemberId();
|
Long memberId = SecurityUtils.getMemberId();
|
||||||
UmsMember umsMember = this.getOne(new LambdaQueryWrapper<UmsMember>()
|
UmsMember umsMember = this.getOne(new LambdaQueryWrapper<UmsMember>()
|
||||||
.eq(UmsMember::getId, memberId)
|
.eq(UmsMember::getId, memberId)
|
||||||
.select(UmsMember::getId,
|
.select(UmsMember::getId,
|
||||||
|
@ -18,5 +18,4 @@ spring:
|
|||||||
file-extension: yaml
|
file-extension: yaml
|
||||||
shared-configs[0]:
|
shared-configs[0]:
|
||||||
data-id: youlai-common.yaml
|
data-id: youlai-common.yaml
|
||||||
namespace: develop-namespace-id
|
|
||||||
refresh: true
|
refresh: true
|
@ -11,12 +11,11 @@ spring:
|
|||||||
nacos:
|
nacos:
|
||||||
discovery:
|
discovery:
|
||||||
server-addr: nacos-headless.infrastructure:8848 # 使用k8s无头服务
|
server-addr: nacos-headless.infrastructure:8848 # 使用k8s无头服务
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
config:
|
config:
|
||||||
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
||||||
file-extension: yaml
|
file-extension: yaml
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
shared-configs[0]:
|
shared-configs[0]:
|
||||||
data-id: youlai-common.yaml
|
data-id: youlai-common.yaml
|
||||||
namespace: develop-namespace-id
|
|
||||||
refresh: true
|
refresh: true
|
||||||
|
@ -11,12 +11,11 @@ spring:
|
|||||||
nacos:
|
nacos:
|
||||||
discovery:
|
discovery:
|
||||||
server-addr: http://c.youlai.tech:8848
|
server-addr: http://c.youlai.tech:8848
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
config:
|
config:
|
||||||
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
||||||
file-extension: yaml
|
file-extension: yaml
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
shared-configs[0]:
|
shared-configs[0]:
|
||||||
data-id: youlai-common.yaml
|
data-id: youlai-common.yaml
|
||||||
namespace: develop-namespace-id
|
|
||||||
refresh: true
|
refresh: true
|
||||||
|
8
pom.xml
8
pom.xml
@ -29,7 +29,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-parent</artifactId>
|
<artifactId>spring-boot-starter-parent</artifactId>
|
||||||
<version>2.7.3</version>
|
<version>2.7.5</version>
|
||||||
<relativePath/> <!-- lookup parent from repository -->
|
<relativePath/> <!-- lookup parent from repository -->
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
@ -43,10 +43,10 @@
|
|||||||
<docker.image.prefix>youlai</docker.image.prefix>
|
<docker.image.prefix>youlai</docker.image.prefix>
|
||||||
|
|
||||||
<!-- spring boot -->
|
<!-- spring boot -->
|
||||||
<spring-boot.version>2.7.3</spring-boot.version>
|
<spring-boot.version>2.7.5</spring-boot.version>
|
||||||
|
|
||||||
<!-- spring cloud -->
|
<!-- spring cloud -->
|
||||||
<spring-cloud.version>2021.0.2</spring-cloud.version>
|
<spring-cloud.version>2021.0.5</spring-cloud.version>
|
||||||
<spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version>
|
<spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version>
|
||||||
|
|
||||||
<!-- db && orm -->
|
<!-- db && orm -->
|
||||||
@ -73,7 +73,7 @@
|
|||||||
<logstash-logback-encoder.version>6.6</logstash-logback-encoder.version>
|
<logstash-logback-encoder.version>6.6</logstash-logback-encoder.version>
|
||||||
|
|
||||||
<!-- distributed -->
|
<!-- distributed -->
|
||||||
<seata.version>1.5.1</seata.version>
|
<seata.version>1.5.2</seata.version>
|
||||||
<redisson.version>3.16.8</redisson.version>
|
<redisson.version>3.16.8</redisson.version>
|
||||||
|
|
||||||
<!-- 阿里云短信 -->
|
<!-- 阿里云短信 -->
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
package com.youlai.auth.security.config;
|
package com.youlai.auth.config;
|
||||||
|
|
||||||
import cn.hutool.http.HttpStatus;
|
import cn.hutool.http.HttpStatus;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.youlai.auth.security.extension.captcha.CaptchaTokenGranter;
|
import com.youlai.auth.extension.captcha.CaptchaTokenGranter;
|
||||||
import com.youlai.auth.security.extension.mobile.SmsCodeTokenGranter;
|
import com.youlai.auth.extension.mobile.SmsCodeTokenGranter;
|
||||||
import com.youlai.auth.security.extension.refresh.PreAuthenticatedUserDetailsService;
|
import com.youlai.auth.extension.wechat.WechatTokenGranter;
|
||||||
import com.youlai.auth.security.extension.wechat.WechatTokenGranter;
|
import com.youlai.auth.extension.refresh.PreAuthenticatedUserDetailsService;
|
||||||
import com.youlai.auth.security.userdetails.member.MemberUserDetailsServiceImpl;
|
import com.youlai.auth.userdetails.member.MemberUserDetailsServiceImpl;
|
||||||
import com.youlai.auth.security.userdetails.user.SysUserDetailsServiceImpl;
|
import com.youlai.auth.userdetails.user.SysUserDetailsServiceImpl;
|
||||||
import com.youlai.common.constant.SecurityConstants;
|
import com.youlai.common.constant.SecurityConstants;
|
||||||
import com.youlai.common.result.Result;
|
import com.youlai.common.result.Result;
|
||||||
import com.youlai.common.result.ResultCode;
|
import com.youlai.common.result.ResultCode;
|
@ -1,8 +1,8 @@
|
|||||||
package com.youlai.auth.config;
|
package com.youlai.auth.config;
|
||||||
|
|
||||||
import cn.hutool.core.map.MapUtil;
|
import cn.hutool.core.map.MapUtil;
|
||||||
import com.youlai.auth.security.userdetails.member.MemberUserDetails;
|
import com.youlai.auth.userdetails.member.MemberUserDetails;
|
||||||
import com.youlai.auth.security.userdetails.user.SysUserDetails;
|
import com.youlai.auth.userdetails.user.SysUserDetails;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package com.youlai.auth.security.config;
|
package com.youlai.auth.config;
|
||||||
|
|
||||||
import cn.binarywang.wx.miniapp.api.WxMaService;
|
import cn.binarywang.wx.miniapp.api.WxMaService;
|
||||||
import com.youlai.auth.security.extension.mobile.SmsCodeAuthenticationProvider;
|
import com.youlai.auth.extension.mobile.SmsCodeAuthenticationProvider;
|
||||||
import com.youlai.auth.security.extension.wechat.WechatAuthenticationProvider;
|
import com.youlai.auth.extension.wechat.WechatAuthenticationProvider;
|
||||||
import com.youlai.mall.ums.api.MemberFeignClient;
|
import com.youlai.mall.ums.api.MemberFeignClient;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
@ -2,17 +2,14 @@ package com.youlai.auth.controller;
|
|||||||
|
|
||||||
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONObject;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.nimbusds.jose.jwk.JWKSet;
|
import com.youlai.auth.util.RequestUtils;
|
||||||
import com.nimbusds.jose.jwk.RSAKey;
|
|
||||||
import com.youlai.common.constant.SecurityConstants;
|
import com.youlai.common.constant.SecurityConstants;
|
||||||
import com.youlai.common.result.Result;
|
import com.youlai.common.result.Result;
|
||||||
import com.youlai.common.web.util.JwtUtils;
|
import com.youlai.common.web.util.JwtUtils;
|
||||||
import com.youlai.common.web.util.RequestUtils;
|
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParam;
|
||||||
import io.swagger.annotations.ApiImplicitParams;
|
import io.swagger.annotations.ApiImplicitParams;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
@ -22,9 +19,7 @@ import org.springframework.web.HttpRequestMethodNotSupportedException;
|
|||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import springfox.documentation.annotations.ApiIgnore;
|
import springfox.documentation.annotations.ApiIgnore;
|
||||||
|
|
||||||
import java.security.KeyPair;
|
|
||||||
import java.security.Principal;
|
import java.security.Principal;
|
||||||
import java.security.interfaces.RSAPublicKey;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
@ -60,7 +55,7 @@ public class AuthController {
|
|||||||
* 方式一:client_id、client_secret放在请求路径中(注:当前版本已废弃)
|
* 方式一:client_id、client_secret放在请求路径中(注:当前版本已废弃)
|
||||||
* 方式二:放在请求头(Request Headers)中的Authorization字段,且经过加密,例如 Basic Y2xpZW50OnNlY3JldA== 明文等于 client:secret
|
* 方式二:放在请求头(Request Headers)中的Authorization字段,且经过加密,例如 Basic Y2xpZW50OnNlY3JldA== 明文等于 client:secret
|
||||||
*/
|
*/
|
||||||
String clientId = RequestUtils.getOAuth2ClientId();
|
String clientId = RequestUtils.getClientId();
|
||||||
log.info("OAuth认证授权 客户端ID:{},请求参数:{}", clientId, JSONUtil.toJsonStr(parameters));
|
log.info("OAuth认证授权 客户端ID:{},请求参数:{}", clientId, JSONUtil.toJsonStr(parameters));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -93,7 +88,4 @@ public class AuthController {
|
|||||||
}
|
}
|
||||||
return Result.success("注销成功");
|
return Result.success("注销成功");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package com.youlai.auth.common.enums;
|
package com.youlai.auth.enums;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package com.youlai.auth.common.exception;
|
package com.youlai.auth.exception;
|
||||||
|
|
||||||
import com.youlai.common.result.Result;
|
import com.youlai.common.result.Result;
|
||||||
import com.youlai.common.result.ResultCode;
|
import com.youlai.common.result.ResultCode;
|
@ -1,4 +1,4 @@
|
|||||||
package com.youlai.auth.security.extension.captcha;
|
package com.youlai.auth.extension.captcha;
|
||||||
|
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
@ -49,11 +49,11 @@ public class CaptchaTokenGranter extends AbstractTokenGranter {
|
|||||||
Map<String, String> parameters = new LinkedHashMap(tokenRequest.getRequestParameters());
|
Map<String, String> parameters = new LinkedHashMap(tokenRequest.getRequestParameters());
|
||||||
|
|
||||||
// 验证码校验逻辑
|
// 验证码校验逻辑
|
||||||
String validateCode = parameters.get("code");
|
String validateCode = parameters.get("verifyCode");
|
||||||
String uuid = parameters.get("uuid");
|
String uuid = parameters.get("verifyCodeKey");
|
||||||
|
|
||||||
Assert.isTrue(StrUtil.isNotBlank(validateCode), "验证码不能为空");
|
Assert.isTrue(StrUtil.isNotBlank(validateCode), "验证码不能为空");
|
||||||
String validateCodeKey = SecurityConstants.VALIDATION_CODE_KEY_PREFIX + uuid;
|
String validateCodeKey = SecurityConstants.VERIFY_CODE_KEY_PREFIX + uuid;
|
||||||
|
|
||||||
// 从缓存取出正确的验证码和用户输入的验证码比对
|
// 从缓存取出正确的验证码和用户输入的验证码比对
|
||||||
String correctValidateCode = redisTemplate.opsForValue().get(validateCodeKey);
|
String correctValidateCode = redisTemplate.opsForValue().get(validateCodeKey);
|
||||||
@ -68,8 +68,8 @@ public class CaptchaTokenGranter extends AbstractTokenGranter {
|
|||||||
|
|
||||||
// 移除后续无用参数
|
// 移除后续无用参数
|
||||||
parameters.remove("password");
|
parameters.remove("password");
|
||||||
parameters.remove("code");
|
parameters.remove("verifyCode");
|
||||||
parameters.remove("uuid");
|
parameters.remove("verifyCodeKey");
|
||||||
|
|
||||||
// 和密码模式一样的逻辑
|
// 和密码模式一样的逻辑
|
||||||
Authentication userAuth = new UsernamePasswordAuthenticationToken(username, password);
|
Authentication userAuth = new UsernamePasswordAuthenticationToken(username, password);
|
@ -1,7 +1,7 @@
|
|||||||
package com.youlai.auth.security.extension.mobile;
|
package com.youlai.auth.extension.mobile;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.youlai.auth.security.userdetails.member.MemberUserDetailsServiceImpl;
|
import com.youlai.auth.userdetails.member.MemberUserDetailsServiceImpl;
|
||||||
import com.youlai.common.constant.SecurityConstants;
|
import com.youlai.common.constant.SecurityConstants;
|
||||||
import com.youlai.common.web.exception.BusinessException;
|
import com.youlai.common.web.exception.BusinessException;
|
||||||
import com.youlai.mall.ums.api.MemberFeignClient;
|
import com.youlai.mall.ums.api.MemberFeignClient;
|
@ -1,4 +1,4 @@
|
|||||||
package com.youlai.auth.security.extension.mobile;
|
package com.youlai.auth.extension.mobile;
|
||||||
|
|
||||||
import org.springframework.security.authentication.AbstractAuthenticationToken;
|
import org.springframework.security.authentication.AbstractAuthenticationToken;
|
||||||
import org.springframework.security.core.GrantedAuthority;
|
import org.springframework.security.core.GrantedAuthority;
|
@ -1,4 +1,4 @@
|
|||||||
package com.youlai.auth.security.extension.mobile;
|
package com.youlai.auth.extension.mobile;
|
||||||
|
|
||||||
import org.springframework.security.authentication.AbstractAuthenticationToken;
|
import org.springframework.security.authentication.AbstractAuthenticationToken;
|
||||||
import org.springframework.security.authentication.AccountStatusException;
|
import org.springframework.security.authentication.AccountStatusException;
|
@ -1,8 +1,9 @@
|
|||||||
package com.youlai.auth.security.extension.refresh;
|
package com.youlai.auth.extension.refresh;
|
||||||
|
|
||||||
import com.youlai.auth.security.userdetails.member.MemberUserDetailsServiceImpl;
|
import com.youlai.auth.config.AuthorizationServerConfig;
|
||||||
|
import com.youlai.auth.userdetails.member.MemberUserDetailsServiceImpl;
|
||||||
|
import com.youlai.auth.util.RequestUtils;
|
||||||
import com.youlai.common.constant.SecurityConstants;
|
import com.youlai.common.constant.SecurityConstants;
|
||||||
import com.youlai.common.web.util.RequestUtils;
|
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
import org.springframework.beans.factory.InitializingBean;
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
||||||
@ -27,7 +28,7 @@ public class PreAuthenticatedUserDetailsService<T extends Authentication> implem
|
|||||||
/**
|
/**
|
||||||
* 客户端ID和用户服务 UserDetailService 的映射
|
* 客户端ID和用户服务 UserDetailService 的映射
|
||||||
*
|
*
|
||||||
* @see com.youlai.auth.security.config.AuthorizationServerConfig#tokenServices(AuthorizationServerEndpointsConfigurer)
|
* @see AuthorizationServerConfig#tokenServices(AuthorizationServerEndpointsConfigurer)
|
||||||
*/
|
*/
|
||||||
private Map<String, UserDetailsService> userDetailsServiceMap;
|
private Map<String, UserDetailsService> userDetailsServiceMap;
|
||||||
|
|
||||||
@ -50,7 +51,7 @@ public class PreAuthenticatedUserDetailsService<T extends Authentication> implem
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public UserDetails loadUserDetails(T authentication) throws UsernameNotFoundException {
|
public UserDetails loadUserDetails(T authentication) throws UsernameNotFoundException {
|
||||||
String clientId = RequestUtils.getOAuth2ClientId();
|
String clientId = RequestUtils.getClientId();
|
||||||
// 获取认证身份标识,默认是用户名:username
|
// 获取认证身份标识,默认是用户名:username
|
||||||
UserDetailsService userDetailsService = userDetailsServiceMap.get(clientId);
|
UserDetailsService userDetailsService = userDetailsServiceMap.get(clientId);
|
||||||
if (clientId.equals(SecurityConstants.APP_CLIENT_ID)) {
|
if (clientId.equals(SecurityConstants.APP_CLIENT_ID)) {
|
@ -1,10 +1,10 @@
|
|||||||
package com.youlai.auth.security.extension.wechat;
|
package com.youlai.auth.extension.wechat;
|
||||||
|
|
||||||
import cn.binarywang.wx.miniapp.api.WxMaService;
|
import cn.binarywang.wx.miniapp.api.WxMaService;
|
||||||
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
|
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
|
||||||
import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
|
import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import com.youlai.auth.security.userdetails.member.MemberUserDetailsServiceImpl;
|
import com.youlai.auth.userdetails.member.MemberUserDetailsServiceImpl;
|
||||||
import com.youlai.common.result.Result;
|
import com.youlai.common.result.Result;
|
||||||
import com.youlai.common.result.ResultCode;
|
import com.youlai.common.result.ResultCode;
|
||||||
import com.youlai.mall.ums.api.MemberFeignClient;
|
import com.youlai.mall.ums.api.MemberFeignClient;
|
@ -1,4 +1,4 @@
|
|||||||
package com.youlai.auth.security.extension.wechat;
|
package com.youlai.auth.extension.wechat;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import org.springframework.security.authentication.AbstractAuthenticationToken;
|
import org.springframework.security.authentication.AbstractAuthenticationToken;
|
@ -1,4 +1,4 @@
|
|||||||
package com.youlai.auth.security.extension.wechat;
|
package com.youlai.auth.extension.wechat;
|
||||||
|
|
||||||
import org.springframework.security.authentication.*;
|
import org.springframework.security.authentication.*;
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
@ -1,4 +1,4 @@
|
|||||||
package com.youlai.auth.security.extension.wechat;
|
package com.youlai.auth.extension.wechat;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package com.youlai.auth.security.userdetails.member;
|
package com.youlai.auth.userdetails.member;
|
||||||
|
|
||||||
import com.youlai.common.constant.GlobalConstants;
|
import com.youlai.common.constant.GlobalConstants;
|
||||||
import com.youlai.mall.ums.dto.MemberAuthDTO;
|
import com.youlai.mall.ums.dto.MemberAuthDTO;
|
@ -1,4 +1,4 @@
|
|||||||
package com.youlai.auth.security.userdetails.member;
|
package com.youlai.auth.userdetails.member;
|
||||||
|
|
||||||
import com.youlai.common.result.Result;
|
import com.youlai.common.result.Result;
|
||||||
import com.youlai.common.result.ResultCode;
|
import com.youlai.common.result.ResultCode;
|
@ -1,11 +1,9 @@
|
|||||||
package com.youlai.auth.security.userdetails.user;
|
package com.youlai.auth.userdetails.user;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.youlai.common.enums.StatusEnum;
|
import com.youlai.common.enums.StatusEnum;
|
||||||
import com.youlai.system.dto.UserAuthInfo;
|
import com.youlai.system.dto.UserAuthInfo;
|
||||||
import com.youlai.auth.common.enums.PasswordEncoderTypeEnum;
|
import com.youlai.auth.enums.PasswordEncoderTypeEnum;
|
||||||
import com.youlai.common.constant.GlobalConstants;
|
|
||||||
import io.swagger.models.auth.In;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.springframework.security.core.GrantedAuthority;
|
import org.springframework.security.core.GrantedAuthority;
|
||||||
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
||||||
@ -14,7 +12,6 @@ import org.springframework.security.core.userdetails.UserDetails;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
@ -1,4 +1,4 @@
|
|||||||
package com.youlai.auth.security.userdetails.user;
|
package com.youlai.auth.userdetails.user;
|
||||||
|
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
import com.youlai.common.enums.StatusEnum;
|
import com.youlai.common.enums.StatusEnum;
|
@ -1,12 +1,6 @@
|
|||||||
package com.youlai.common.web.util;
|
package com.youlai.auth.util;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.json.JSONObject;
|
|
||||||
import cn.hutool.json.JSONUtil;
|
|
||||||
import com.nimbusds.jose.JWSObject;
|
|
||||||
import com.youlai.common.constant.SecurityConstants;
|
|
||||||
import lombok.SneakyThrows;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.web.context.request.RequestContextHolder;
|
import org.springframework.web.context.request.RequestContextHolder;
|
||||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||||
|
|
||||||
@ -14,16 +8,8 @@ import javax.servlet.http.HttpServletRequest;
|
|||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.Base64;
|
import java.util.Base64;
|
||||||
|
|
||||||
/**
|
|
||||||
* 请求工具类
|
|
||||||
*
|
|
||||||
* @author haoxr
|
|
||||||
* @date 2022/2/12
|
|
||||||
*/
|
|
||||||
@Slf4j
|
|
||||||
public class RequestUtils {
|
public class RequestUtils {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取登录认证的客户端ID
|
* 获取登录认证的客户端ID
|
||||||
* <p>
|
* <p>
|
||||||
@ -33,8 +19,7 @@ public class RequestUtils {
|
|||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@SneakyThrows
|
public static String getClientId() {
|
||||||
public static String getOAuth2ClientId() {
|
|
||||||
|
|
||||||
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
|
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
|
||||||
|
|
||||||
@ -53,5 +38,5 @@ public class RequestUtils {
|
|||||||
}
|
}
|
||||||
return clientId;
|
return clientId;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -13,9 +13,7 @@ spring:
|
|||||||
# 配置中心
|
# 配置中心
|
||||||
config:
|
config:
|
||||||
server-addr: http://c.youlai.tech:8848
|
server-addr: http://c.youlai.tech:8848
|
||||||
namespace: develop-namespace-id
|
|
||||||
file-extension: yaml
|
file-extension: yaml
|
||||||
shared-configs[0]:
|
shared-configs[0]:
|
||||||
data-id: youlai-common.yaml
|
data-id: youlai-common.yaml
|
||||||
namespace: develop-namespace-id
|
|
||||||
refresh: true
|
refresh: true
|
@ -13,13 +13,12 @@ spring:
|
|||||||
# 注册中心
|
# 注册中心
|
||||||
discovery:
|
discovery:
|
||||||
server-addr: nacos-headless.infrastructure:8848 # 使用k8s无头服务
|
server-addr: nacos-headless.infrastructure:8848 # 使用k8s无头服务
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
# 配置中心
|
# 配置中心
|
||||||
config:
|
config:
|
||||||
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
||||||
file-extension: yaml
|
file-extension: yaml
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
shared-configs[0]:
|
shared-configs[0]:
|
||||||
data-id: youlai-common.yaml
|
data-id: youlai-common.yaml
|
||||||
namespace: develop-namespace-id
|
|
||||||
refresh: true
|
refresh: true
|
@ -10,13 +10,12 @@ spring:
|
|||||||
# 注册中心
|
# 注册中心
|
||||||
discovery:
|
discovery:
|
||||||
server-addr: http://c.youlai.tech:8848
|
server-addr: http://c.youlai.tech:8848
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
# 配置中心
|
# 配置中心
|
||||||
config:
|
config:
|
||||||
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
||||||
file-extension: yaml
|
file-extension: yaml
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
shared-configs[0]:
|
shared-configs[0]:
|
||||||
data-id: youlai-common.yaml
|
data-id: youlai-common.yaml
|
||||||
namespace: develop-namespace-id
|
|
||||||
refresh: true
|
refresh: true
|
@ -1,8 +1,5 @@
|
|||||||
package com.youlai.common.constant;
|
package com.youlai.common.constant;
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public interface SecurityConstants {
|
public interface SecurityConstants {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -10,19 +7,10 @@ public interface SecurityConstants {
|
|||||||
*/
|
*/
|
||||||
String TOKEN_BLACKLIST_PREFIX = "auth:token:blacklist:";
|
String TOKEN_BLACKLIST_PREFIX = "auth:token:blacklist:";
|
||||||
|
|
||||||
|
|
||||||
String USER_NAME_KEY = "username";
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 认证身份标识
|
|
||||||
*/
|
|
||||||
String AUTHENTICATION_IDENTITY_KEY = "authenticationIdentity";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 验证码key前缀
|
* 验证码key前缀
|
||||||
*/
|
*/
|
||||||
String VALIDATION_CODE_KEY_PREFIX = "CAPTCHA:";
|
String VERIFY_CODE_KEY_PREFIX = "AUTH:VERIFY_CODE:";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 短信验证码key前缀
|
* 短信验证码key前缀
|
||||||
@ -37,7 +25,7 @@ public interface SecurityConstants {
|
|||||||
/**
|
/**
|
||||||
* 系统管理 web 客户端ID
|
* 系统管理 web 客户端ID
|
||||||
*/
|
*/
|
||||||
String ADMIN_CLIENT_ID = "mall-admin-web";
|
String ADMIN_CLIENT_ID = "mall-admin";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 移动端(H5/Android/IOS)客户端ID
|
* 移动端(H5/Android/IOS)客户端ID
|
||||||
@ -49,18 +37,4 @@ public interface SecurityConstants {
|
|||||||
*/
|
*/
|
||||||
String WEAPP_CLIENT_ID = "mall-weapp";
|
String WEAPP_CLIENT_ID = "mall-weapp";
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 线上环境放行的请求路径
|
|
||||||
*/
|
|
||||||
List<String> PERMIT_PATHS= Arrays.asList("/youlai-lab","/app-api","/youlai-auth/oauth/logout");
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 线上环境禁止的请求路径
|
|
||||||
*/
|
|
||||||
List<String> FORBID_PATHS= Arrays.asList("/youlai-admin/api/v1/menus","/mall-pms/api");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,6 @@ import com.youlai.common.mybatis.annotation.DataPermission;
|
|||||||
import com.youlai.common.security.util.SecurityUtils;
|
import com.youlai.common.security.util.SecurityUtils;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.sf.jsqlparser.JSQLParserException;
|
|
||||||
import net.sf.jsqlparser.expression.Expression;
|
import net.sf.jsqlparser.expression.Expression;
|
||||||
import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
|
import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
|
||||||
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
|
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
|
||||||
@ -20,7 +19,7 @@ import java.lang.reflect.Method;
|
|||||||
* 数据权限控制器
|
* 数据权限控制器
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:2256222053@qq.com">zc</a>
|
* @author <a href="mailto:2256222053@qq.com">zc</a>
|
||||||
* @Date 2021-12-10 13:28
|
* @date 2021-12-10 13:28
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class MyDataPermissionHandler implements DataPermissionHandler {
|
public class MyDataPermissionHandler implements DataPermissionHandler {
|
||||||
@ -35,7 +34,6 @@ public class MyDataPermissionHandler implements DataPermissionHandler {
|
|||||||
}
|
}
|
||||||
Class<?> clazz = Class.forName(mappedStatementId.substring(0, mappedStatementId.lastIndexOf(".")));
|
Class<?> clazz = Class.forName(mappedStatementId.substring(0, mappedStatementId.lastIndexOf(".")));
|
||||||
String methodName = mappedStatementId.substring(mappedStatementId.lastIndexOf(".") + 1);
|
String methodName = mappedStatementId.substring(mappedStatementId.lastIndexOf(".") + 1);
|
||||||
clazz.getAnnotatedSuperclass();
|
|
||||||
Method[] methods = clazz.getDeclaredMethods();
|
Method[] methods = clazz.getDeclaredMethods();
|
||||||
for (Method method : methods) {
|
for (Method method : methods) {
|
||||||
DataPermission annotation = method.getAnnotation(DataPermission.class);
|
DataPermission annotation = method.getAnnotation(DataPermission.class);
|
||||||
@ -66,7 +64,7 @@ public class MyDataPermissionHandler implements DataPermissionHandler {
|
|||||||
DataScopeEnum dataScopeEnum = IBaseEnum.getEnumByValue(dataScope, DataScopeEnum.class);
|
DataScopeEnum dataScopeEnum = IBaseEnum.getEnumByValue(dataScope, DataScopeEnum.class);
|
||||||
|
|
||||||
Long deptId, userId;
|
Long deptId, userId;
|
||||||
String appendSqlStr = null;
|
String appendSqlStr;
|
||||||
switch (dataScopeEnum) {
|
switch (dataScopeEnum) {
|
||||||
case ALL:
|
case ALL:
|
||||||
return where;
|
return where;
|
||||||
@ -91,10 +89,6 @@ public class MyDataPermissionHandler implements DataPermissionHandler {
|
|||||||
|
|
||||||
Expression appendExpression =CCJSqlParserUtil.parseCondExpression(appendSqlStr);
|
Expression appendExpression =CCJSqlParserUtil.parseCondExpression(appendSqlStr);
|
||||||
|
|
||||||
if (appendExpression == null) {
|
|
||||||
return where;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(where==null){
|
if(where==null){
|
||||||
return appendExpression;
|
return appendExpression;
|
||||||
}
|
}
|
||||||
|
@ -20,8 +20,6 @@ import java.util.Set;
|
|||||||
public class PermissionService {
|
public class PermissionService {
|
||||||
|
|
||||||
private final RedisTemplate redisTemplate;
|
private final RedisTemplate redisTemplate;
|
||||||
|
|
||||||
|
|
||||||
public boolean hasPermission(String perm) {
|
public boolean hasPermission(String perm) {
|
||||||
|
|
||||||
if (StrUtil.isBlank(perm)) {
|
if (StrUtil.isBlank(perm)) {
|
||||||
|
@ -33,6 +33,16 @@ public class SecurityUtils {
|
|||||||
return userId;
|
return userId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取会员ID
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static Long getMemberId() {
|
||||||
|
Long userId = Convert.toLong(getTokenAttributes().get("memberId"));
|
||||||
|
return userId;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取用户登录名
|
* 获取用户登录名
|
||||||
*
|
*
|
||||||
@ -60,16 +70,14 @@ public class SecurityUtils {
|
|||||||
*/
|
*/
|
||||||
public static Set<String> getRoles() {
|
public static Set<String> getRoles() {
|
||||||
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
|
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
|
||||||
|
if (authentication!=null && CollectionUtil.isNotEmpty(authentication.getAuthorities())) {
|
||||||
Set<String> roles;
|
Set<String> roles = authentication.getAuthorities()
|
||||||
if (CollectionUtil.isNotEmpty(authentication.getAuthorities())) {
|
|
||||||
roles = authentication.getAuthorities()
|
|
||||||
.stream()
|
.stream()
|
||||||
.map(item -> StrUtil.removePrefix(item.getAuthority(), "ROLE_")).collect(Collectors.toSet());
|
.map(item -> StrUtil.removePrefix(item.getAuthority(), "ROLE_"))
|
||||||
} else {
|
.collect(Collectors.toSet());
|
||||||
roles = Collections.EMPTY_SET;
|
return roles;
|
||||||
}
|
}
|
||||||
return roles;
|
return Collections.EMPTY_SET;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,88 +0,0 @@
|
|||||||
package com.youlai.common.web.security.advice;
|
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
|
||||||
import cn.hutool.core.convert.Convert;
|
|
||||||
import com.youlai.common.constant.GlobalConstants;
|
|
||||||
import com.youlai.common.result.Result;
|
|
||||||
import com.youlai.common.result.ResultCode;
|
|
||||||
import com.youlai.common.web.security.annotation.RequirePerms;
|
|
||||||
import com.youlai.common.web.util.UserUtils;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.aspectj.lang.ProceedingJoinPoint;
|
|
||||||
import org.aspectj.lang.annotation.Around;
|
|
||||||
import org.aspectj.lang.annotation.Aspect;
|
|
||||||
import org.aspectj.lang.annotation.Pointcut;
|
|
||||||
import org.aspectj.lang.reflect.MethodSignature;
|
|
||||||
import org.springframework.data.redis.core.RedisTemplate;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 权限校验切面
|
|
||||||
*
|
|
||||||
* TODO 整合SpEL表达式
|
|
||||||
*
|
|
||||||
* @author haoxr
|
|
||||||
* @date 2022/7/30
|
|
||||||
*/
|
|
||||||
@Component
|
|
||||||
@Aspect
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
@Slf4j
|
|
||||||
public class PermissionAdvice {
|
|
||||||
|
|
||||||
private final RedisTemplate redisTemplate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* -
|
|
||||||
* 权限切点定义
|
|
||||||
*/
|
|
||||||
@Pointcut("@annotation(com.youlai.common.web.security.annotation.RequirePerms)")
|
|
||||||
public void pointCut() {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Around("pointCut()")
|
|
||||||
public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
|
|
||||||
log.info("permission verification start.");
|
|
||||||
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
|
|
||||||
RequirePerms annotation = signature.getMethod().getAnnotation(RequirePerms.class);
|
|
||||||
|
|
||||||
String[] requiredPerms = annotation.value(); // 需要的权限标识集合
|
|
||||||
log.info("required perms :{}", requiredPerms);
|
|
||||||
|
|
||||||
// 权限校验
|
|
||||||
boolean passFlag = false;
|
|
||||||
List<String> userRoles = UserUtils.getRoles();
|
|
||||||
|
|
||||||
// 超级管理员放行
|
|
||||||
if (UserUtils.isRoot()) {
|
|
||||||
return joinPoint.proceed();
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, Object> permRolesMap = redisTemplate.opsForHash().entries(GlobalConstants.BTN_PERM_ROLES_KEY);
|
|
||||||
if (permRolesMap != null) {
|
|
||||||
for (String requiredPerm : requiredPerms) {
|
|
||||||
List<String> hasPermRoles = Convert.toList(String.class, permRolesMap.get(requiredPerm)); // 拥有访问权限的角色
|
|
||||||
if (CollectionUtil.isNotEmpty(hasPermRoles)) {
|
|
||||||
for (String hasPermRole : hasPermRoles) {
|
|
||||||
boolean hasPerm = userRoles.stream().anyMatch(userRole -> userRole.equals(hasPermRole));
|
|
||||||
if (hasPerm) {
|
|
||||||
passFlag = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
log.info("authentication result :{}", passFlag);
|
|
||||||
if (passFlag == false) {
|
|
||||||
return Result.failed(ResultCode.ACCESS_UNAUTHORIZED);
|
|
||||||
}
|
|
||||||
|
|
||||||
return joinPoint.proceed();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,19 +0,0 @@
|
|||||||
package com.youlai.common.web.security.annotation;
|
|
||||||
|
|
||||||
import java.lang.annotation.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 权限校验注解
|
|
||||||
*
|
|
||||||
* @author haoxr
|
|
||||||
* @Date 2022/7/30
|
|
||||||
*/
|
|
||||||
@Documented
|
|
||||||
@Target(ElementType.METHOD)
|
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
|
||||||
public @interface RequirePerms {
|
|
||||||
|
|
||||||
String[] value() default {};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
|||||||
package com.youlai.common.web.util;
|
|
||||||
|
|
||||||
import cn.hutool.json.JSONObject;
|
|
||||||
import com.youlai.common.constant.SecurityConstants;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author haoxr
|
|
||||||
* @date 2022/2/12 20:14
|
|
||||||
*/
|
|
||||||
public class MemberUtils {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取当前登录会员的ID
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static Long getMemberId() {
|
|
||||||
Long memberId = null;
|
|
||||||
JSONObject jwtPayload = JwtUtils.getJwtPayload();
|
|
||||||
if (jwtPayload != null) {
|
|
||||||
memberId = jwtPayload.getLong("memberId");
|
|
||||||
}
|
|
||||||
return memberId;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 解析JWT获取获取用户名
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static String getUsername() {
|
|
||||||
String username = JwtUtils.getJwtPayload().getStr(SecurityConstants.USER_NAME_KEY);
|
|
||||||
return username;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,105 +0,0 @@
|
|||||||
package com.youlai.common.web.util;
|
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
|
||||||
import cn.hutool.json.JSONObject;
|
|
||||||
import com.youlai.common.constant.SecurityConstants;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* JWT工具类
|
|
||||||
*
|
|
||||||
* @author haoxr
|
|
||||||
* @date 2022/2/5
|
|
||||||
*/
|
|
||||||
@Slf4j
|
|
||||||
public class UserUtils {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 解析JWT获取用户ID
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static Long getUserId() {
|
|
||||||
Long userId = null;
|
|
||||||
JSONObject jwtPayload = JwtUtils.getJwtPayload();
|
|
||||||
if (jwtPayload != null) {
|
|
||||||
userId = jwtPayload.getLong("userId");
|
|
||||||
}
|
|
||||||
return userId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Long getMemberId() {
|
|
||||||
Long memberId = null;
|
|
||||||
JSONObject jwtPayload = JwtUtils.getJwtPayload();
|
|
||||||
if (jwtPayload != null) {
|
|
||||||
memberId = jwtPayload.getLong("memberId");
|
|
||||||
}
|
|
||||||
return memberId;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 解析JWT获取用户ID
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static Long getDeptId() {
|
|
||||||
Long id = JwtUtils.getJwtPayload().getLong("deptId");
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 解析JWT获取获取用户名
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static String getUsername() {
|
|
||||||
String username = JwtUtils.getJwtPayload().getStr(SecurityConstants.USER_NAME_KEY);
|
|
||||||
return username;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* JWT获取用户角色列表
|
|
||||||
*
|
|
||||||
* @return 角色列表
|
|
||||||
*/
|
|
||||||
public static List<String> getRoles() {
|
|
||||||
List<String> roles;
|
|
||||||
JSONObject payload = JwtUtils.getJwtPayload();
|
|
||||||
if (payload.containsKey("authorities")) {
|
|
||||||
roles = payload.getJSONArray("authorities").toList(String.class);
|
|
||||||
} else {
|
|
||||||
roles = Collections.emptyList();
|
|
||||||
}
|
|
||||||
return roles;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* JWT获取用户数据权限列表
|
|
||||||
*
|
|
||||||
* @return 角色数据权限列表
|
|
||||||
*/
|
|
||||||
public static List<Integer> getDataScopes() {
|
|
||||||
List<Integer> dataScopes;
|
|
||||||
JSONObject payload = JwtUtils.getJwtPayload();
|
|
||||||
if (payload.containsKey("dataScopes")) {
|
|
||||||
dataScopes = payload.getJSONArray("dataScopes").toList(Integer.class);
|
|
||||||
} else {
|
|
||||||
dataScopes = Collections.emptyList();
|
|
||||||
}
|
|
||||||
return dataScopes;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 是否「超级管理员」
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static boolean isRoot() {
|
|
||||||
List<String> roles = getRoles();
|
|
||||||
return CollectionUtil.isNotEmpty(roles) && roles.contains("ROOT");
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,5 +1,4 @@
|
|||||||
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
|
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
|
||||||
com.youlai.common.web.config.WebMvcConfig,\
|
com.youlai.common.web.config.WebMvcConfig,\
|
||||||
com.youlai.common.web.config.FeignConfig,\
|
com.youlai.common.web.config.FeignConfig,\
|
||||||
com.youlai.common.web.exception.GlobalExceptionHandler,\
|
com.youlai.common.web.exception.GlobalExceptionHandler
|
||||||
com.youlai.common.web.security.advice.PermissionAdvice
|
|
||||||
|
@ -59,13 +59,13 @@ public class CaptchaHandler implements HandlerFunction<ServerResponse> {
|
|||||||
|
|
||||||
// 缓存验证码至Redis
|
// 缓存验证码至Redis
|
||||||
String uuid = IdUtil.simpleUUID();
|
String uuid = IdUtil.simpleUUID();
|
||||||
stringRedisTemplate.opsForValue().set(SecurityConstants.VALIDATION_CODE_KEY_PREFIX + uuid, captchaValue, captchaValueTtl, TimeUnit.SECONDS);
|
stringRedisTemplate.opsForValue().set(SecurityConstants.VERIFY_CODE_KEY_PREFIX + uuid, captchaValue, captchaValueTtl, TimeUnit.SECONDS);
|
||||||
|
|
||||||
// 获取到验证码Base64编码字符串
|
// 获取到验证码Base64编码字符串
|
||||||
String captchaBase64 = captcha.toBase64();
|
String captchaBase64 = captcha.toBase64();
|
||||||
Map<String, String> result = new HashMap<>(2);
|
Map<String, String> result = new HashMap<>(2);
|
||||||
result.put("uuid", uuid);
|
result.put("verifyCodeKey", uuid);
|
||||||
result.put("img", captchaBase64);
|
result.put("verifyCodeImg", captchaBase64);
|
||||||
|
|
||||||
return ServerResponse.ok().body(BodyInserters.fromValue(Result.success(result)));
|
return ServerResponse.ok().body(BodyInserters.fromValue(Result.success(result)));
|
||||||
}
|
}
|
||||||
|
@ -10,9 +10,7 @@ spring:
|
|||||||
# 配置中心
|
# 配置中心
|
||||||
config:
|
config:
|
||||||
server-addr: http://c.youlai.tech:8848
|
server-addr: http://c.youlai.tech:8848
|
||||||
namespace: develop-namespace-id
|
|
||||||
file-extension: yaml
|
file-extension: yaml
|
||||||
shared-configs[0]:
|
shared-configs[0]:
|
||||||
data-id: youlai-common.yaml
|
data-id: youlai-common.yaml
|
||||||
namespace: develop-namespace-id
|
|
||||||
refresh: true
|
refresh: true
|
||||||
|
@ -10,12 +10,11 @@ spring:
|
|||||||
nacos:
|
nacos:
|
||||||
discovery:
|
discovery:
|
||||||
server-addr: nacos-headless.infrastructure:8848 # 使用k8s无头服务
|
server-addr: nacos-headless.infrastructure:8848 # 使用k8s无头服务
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
config:
|
config:
|
||||||
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
||||||
file-extension: yaml
|
file-extension: yaml
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
shared-configs[0]:
|
shared-configs[0]:
|
||||||
data-id: youlai-common.yaml
|
data-id: youlai-common.yaml
|
||||||
namespace: develop-namespace-id
|
|
||||||
refresh: true
|
refresh: true
|
||||||
|
@ -10,12 +10,11 @@ spring:
|
|||||||
nacos:
|
nacos:
|
||||||
discovery:
|
discovery:
|
||||||
server-addr: http://c.youlai.tech:8848
|
server-addr: http://c.youlai.tech:8848
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
config:
|
config:
|
||||||
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
||||||
file-extension: yaml
|
file-extension: yaml
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
shared-configs[0]:
|
shared-configs[0]:
|
||||||
data-id: youlai-common.yaml
|
data-id: youlai-common.yaml
|
||||||
namespace: develop-namespace-id
|
|
||||||
refresh: true
|
refresh: true
|
||||||
|
@ -125,6 +125,7 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
<version>${spring-boot.version}</version>
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
@ -84,7 +84,7 @@ public class SysUserController {
|
|||||||
|
|
||||||
@ApiOperation(value = "删除用户")
|
@ApiOperation(value = "删除用户")
|
||||||
@DeleteMapping("/{ids}")
|
@DeleteMapping("/{ids}")
|
||||||
@PreAuthorize("hasAuthority('sys:user:delete')")
|
@PreAuthorize("hasAuthority('sys:user:del')")
|
||||||
public Result deleteUsers(
|
public Result deleteUsers(
|
||||||
@ApiParam("用户ID,多个以英文逗号(,)分割") @PathVariable String ids
|
@ApiParam("用户ID,多个以英文逗号(,)分割") @PathVariable String ids
|
||||||
) {
|
) {
|
||||||
|
@ -66,7 +66,7 @@ public class RouteBO {
|
|||||||
/**
|
/**
|
||||||
* 外链路径
|
* 外链路径
|
||||||
*/
|
*/
|
||||||
private String redirectUrl;
|
private String redirect;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 拥有路由的权限
|
* 拥有路由的权限
|
||||||
|
@ -40,7 +40,7 @@ public class SysMenu extends BaseEntity {
|
|||||||
|
|
||||||
private Integer visible;
|
private Integer visible;
|
||||||
|
|
||||||
private String redirectUrl;
|
private String redirect;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 菜单类型(1:菜单;2:目录;3:外链;4:按钮)
|
* 菜单类型(1:菜单;2:目录;3:外链;4:按钮)
|
||||||
|
@ -126,7 +126,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||||||
routeVO.setName(menu.getPath()); // 根据name路由跳转 this.$router.push({name:xxx})
|
routeVO.setName(menu.getPath()); // 根据name路由跳转 this.$router.push({name:xxx})
|
||||||
}
|
}
|
||||||
routeVO.setPath(menu.getPath()); // 根据path路由跳转 this.$router.push({path:xxx})
|
routeVO.setPath(menu.getPath()); // 根据path路由跳转 this.$router.push({path:xxx})
|
||||||
routeVO.setRedirect(menu.getRedirectUrl());
|
routeVO.setRedirect(menu.getRedirect());
|
||||||
routeVO.setComponent(menu.getComponent());
|
routeVO.setComponent(menu.getComponent());
|
||||||
|
|
||||||
RouteVO.Meta meta = new RouteVO.Meta();
|
RouteVO.Meta meta = new RouteVO.Meta();
|
||||||
|
@ -36,6 +36,7 @@ import com.youlai.common.base.IBaseEnum;
|
|||||||
import com.youlai.common.constant.SystemConstants;
|
import com.youlai.common.constant.SystemConstants;
|
||||||
import com.youlai.common.enums.GenderEnum;
|
import com.youlai.common.enums.GenderEnum;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@ -63,8 +64,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|||||||
private final UserImportListener userImportListener;
|
private final UserImportListener userImportListener;
|
||||||
private final UserConverter userConverter;
|
private final UserConverter userConverter;
|
||||||
private final SysMenuService menuService;
|
private final SysMenuService menuService;
|
||||||
|
|
||||||
private final SysRoleService roleService;
|
private final SysRoleService roleService;
|
||||||
|
private final RedisTemplate redisTemplate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取用户分页列表
|
* 获取用户分页列表
|
||||||
@ -81,10 +82,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|||||||
Page<UserBO> page = new Page<>(pageNum, pageSize);
|
Page<UserBO> page = new Page<>(pageNum, pageSize);
|
||||||
|
|
||||||
// 查询数据
|
// 查询数据
|
||||||
Page<UserBO> userBOPage = this.baseMapper.listUserPages(page, queryParams);
|
Page<UserBO> userBoPage = this.baseMapper.listUserPages(page, queryParams);
|
||||||
|
|
||||||
// 实体转换
|
// 实体转换
|
||||||
Page<UserVO> userVoPage = userConverter.bo2Vo(userBOPage);
|
Page<UserVO> userVoPage = userConverter.bo2Vo(userBoPage);
|
||||||
|
|
||||||
return userVoPage;
|
return userVoPage;
|
||||||
}
|
}
|
||||||
@ -350,6 +351,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|||||||
userLoginVO.setRoles(roles);
|
userLoginVO.setRoles(roles);
|
||||||
|
|
||||||
// 用户权限集合
|
// 用户权限集合
|
||||||
|
Set<String> perms = (Set<String>)redisTemplate.opsForValue().get("AUTH:USER_PERMS:" + user.getId());
|
||||||
|
userLoginVO.setPerms(perms);
|
||||||
|
|
||||||
return userLoginVO;
|
return userLoginVO;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
package com.youlai.system.pojo.vo.dept;
|
package com.youlai.system.pojo.vo.dept;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ -27,4 +29,10 @@ public class DeptVO {
|
|||||||
|
|
||||||
private List<DeptVO> children;
|
private List<DeptVO> children;
|
||||||
|
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private LocalDateTime updateTime;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
package com.youlai.system.pojo.vo.menu;
|
package com.youlai.system.pojo.vo.menu;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||||
import com.youlai.system.enums.MenuTypeEnum;
|
import com.youlai.system.enums.MenuTypeEnum;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ApiModel("菜单视图对象")
|
@ApiModel("菜单视图对象")
|
||||||
@ -37,4 +40,13 @@ public class MenuVO {
|
|||||||
@JsonInclude(value = JsonInclude.Include.NON_NULL)
|
@JsonInclude(value = JsonInclude.Include.NON_NULL)
|
||||||
private List<MenuVO> children;
|
private List<MenuVO> children;
|
||||||
|
|
||||||
|
@ApiModelProperty("按钮权限标识")
|
||||||
|
private String perm;
|
||||||
|
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private LocalDateTime updateTime;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户分页视图对象
|
* 用户分页视图对象
|
||||||
@ -49,6 +49,6 @@ public class UserVO {
|
|||||||
|
|
||||||
@ApiModelProperty("创建时间")
|
@ApiModelProperty("创建时间")
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
private Date createTime;
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,11 +2,6 @@ server:
|
|||||||
port: 8800
|
port: 8800
|
||||||
|
|
||||||
spring:
|
spring:
|
||||||
security:
|
|
||||||
oauth2:
|
|
||||||
resourceserver:
|
|
||||||
jwt:
|
|
||||||
jwk-set-uri: http://127.0.0.1:9000/rsa/publicKey
|
|
||||||
main:
|
main:
|
||||||
allow-circular-references: true
|
allow-circular-references: true
|
||||||
mvc:
|
mvc:
|
||||||
@ -20,11 +15,9 @@ spring:
|
|||||||
# 配置中心
|
# 配置中心
|
||||||
config:
|
config:
|
||||||
server-addr: http://c.youlai.tech:8848
|
server-addr: http://c.youlai.tech:8848
|
||||||
namespace: develop-namespace-id
|
|
||||||
file-extension: yaml
|
file-extension: yaml
|
||||||
# 公共配置
|
# 公共配置
|
||||||
shared-configs[0]:
|
shared-configs[0]:
|
||||||
data-id: youlai-common.yaml
|
data-id: youlai-common.yaml
|
||||||
namespace: develop-namespace-id
|
|
||||||
refresh: true
|
refresh: true
|
||||||
|
|
||||||
|
@ -11,13 +11,12 @@ spring:
|
|||||||
nacos:
|
nacos:
|
||||||
discovery:
|
discovery:
|
||||||
server-addr: nacos-headless.infrastructure:8848 # 使用k8s无头服务
|
server-addr: nacos-headless.infrastructure:8848 # 使用k8s无头服务
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
config:
|
config:
|
||||||
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
||||||
file-extension: yaml
|
file-extension: yaml
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
shared-configs[0]:
|
shared-configs[0]:
|
||||||
data-id: youlai-common.yaml
|
data-id: youlai-common.yaml
|
||||||
namespace: develop-namespace-id
|
|
||||||
refresh: true
|
refresh: true
|
||||||
|
|
||||||
|
@ -11,13 +11,12 @@ spring:
|
|||||||
nacos:
|
nacos:
|
||||||
discovery:
|
discovery:
|
||||||
server-addr: http://c.youlai.tech:8848
|
server-addr: http://c.youlai.tech:8848
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
config:
|
config:
|
||||||
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
||||||
file-extension: yaml
|
file-extension: yaml
|
||||||
namespace: youlai-namespace-id
|
namespace: prod-namespace-id
|
||||||
shared-configs[0]:
|
shared-configs[0]:
|
||||||
data-id: youlai-common.yaml
|
data-id: youlai-common.yaml
|
||||||
namespace: develop-namespace-id
|
|
||||||
refresh: true
|
refresh: true
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
<result property="parentId" column="parent_id" jdbcType="BIGINT"/>
|
<result property="parentId" column="parent_id" jdbcType="BIGINT"/>
|
||||||
<result property="path" column="path" jdbcType="VARCHAR"/>
|
<result property="path" column="path" jdbcType="VARCHAR"/>
|
||||||
<result property="component" column="component" jdbcType="VARCHAR"/>
|
<result property="component" column="component" jdbcType="VARCHAR"/>
|
||||||
<result property="redirectUrl" column="redirect_url" jdbcType="VARCHAR"/>
|
<result property="redirect" column="redirect" jdbcType="VARCHAR"/>
|
||||||
<result property="icon" column="icon" jdbcType="VARCHAR"/>
|
<result property="icon" column="icon" jdbcType="VARCHAR"/>
|
||||||
<result property="sort" column="sort" jdbcType="INTEGER"/>
|
<result property="sort" column="sort" jdbcType="INTEGER"/>
|
||||||
<result property="visible" column="visible" jdbcType="BOOLEAN"/>
|
<result property="visible" column="visible" jdbcType="BOOLEAN"/>
|
||||||
@ -32,7 +32,7 @@
|
|||||||
t1.icon,
|
t1.icon,
|
||||||
t1.sort,
|
t1.sort,
|
||||||
t1.visible,
|
t1.visible,
|
||||||
t1.redirect_url,
|
t1.redirect,
|
||||||
t1.type,
|
t1.type,
|
||||||
t3.code
|
t3.code
|
||||||
FROM
|
FROM
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.youlai.system.mapper.SysRoleMenuMapper">
|
<mapper namespace="com.youlai.system.mapper.SysRoleMenuMapper">
|
||||||
|
|
||||||
<!-- 获取角色拥有的菜单ID集合(父节点排除) -->
|
<!-- 获取角色拥有的菜单ID集合 -->
|
||||||
<select id="listMenuIdsByRoleId" resultType="java.lang.Long">
|
<select id="listMenuIdsByRoleId" resultType="java.lang.Long">
|
||||||
SELECT
|
SELECT
|
||||||
rm.menu_id
|
rm.menu_id
|
||||||
@ -13,6 +13,5 @@
|
|||||||
INNER JOIN sys_menu m ON rm.menu_id = m.id
|
INNER JOIN sys_menu m ON rm.menu_id = m.id
|
||||||
WHERE
|
WHERE
|
||||||
rm.role_id = #{roleId}
|
rm.role_id = #{roleId}
|
||||||
AND rm.menu_id NOT IN ( SELECT m.parent_id FROM sys_role_menu rm INNER JOIN sys_menu m ON rm.menu_id = m.id WHERE rm.role_id = #{roleId} )
|
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
LEFT JOIN sys_user_role ur ON u.id = ur.user_id
|
LEFT JOIN sys_user_role ur ON u.id = ur.user_id
|
||||||
LEFT JOIN sys_role r ON ur.role_id = r.id
|
LEFT JOIN sys_role r ON ur.role_id = r.id
|
||||||
<where>
|
<where>
|
||||||
u.deleted = 0
|
u.deleted = 0 AND u.username != 'root'
|
||||||
<if test='queryParams.keywords!=null and queryParams.keywords.trim() neq ""'>
|
<if test='queryParams.keywords!=null and queryParams.keywords.trim() neq ""'>
|
||||||
AND (
|
AND (
|
||||||
u.username LIKE CONCAT('%',#{queryParams.keywords},'%')
|
u.username LIKE CONCAT('%',#{queryParams.keywords},'%')
|
||||||
|
Loading…
Reference in New Issue
Block a user