commit
6adca77afd
2592 changed files with 434641 additions and 0 deletions
@ -0,0 +1,57 @@ |
|||||||
|
### gradle ### |
||||||
|
.gradle |
||||||
|
!gradle/wrapper/gradle-wrapper.jar |
||||||
|
|
||||||
|
### STS ### |
||||||
|
.settings/ |
||||||
|
.apt_generated |
||||||
|
.classpath |
||||||
|
.factorypath |
||||||
|
.project |
||||||
|
.settings |
||||||
|
.springBeans |
||||||
|
bin/ |
||||||
|
|
||||||
|
### IntelliJ IDEA ### |
||||||
|
.idea |
||||||
|
*.iws |
||||||
|
*.iml |
||||||
|
*.ipr |
||||||
|
rebel.xml |
||||||
|
|
||||||
|
### NetBeans ### |
||||||
|
nbproject/private/ |
||||||
|
nbbuild/ |
||||||
|
nbdist/ |
||||||
|
.nb-gradle/ |
||||||
|
|
||||||
|
### maven ### |
||||||
|
target/ |
||||||
|
*.war |
||||||
|
*.ear |
||||||
|
*.zip |
||||||
|
*.tar |
||||||
|
*.tar.gz |
||||||
|
*.versionsBackup |
||||||
|
|
||||||
|
### vscode ### |
||||||
|
.vscode |
||||||
|
|
||||||
|
### logs ### |
||||||
|
/logs/ |
||||||
|
*.log |
||||||
|
|
||||||
|
### temp ignore ### |
||||||
|
*.cache |
||||||
|
*.diff |
||||||
|
*.patch |
||||||
|
*.tmp |
||||||
|
*.java~ |
||||||
|
*.properties~ |
||||||
|
*.xml~ |
||||||
|
|
||||||
|
### system ignore ### |
||||||
|
.DS_Store |
||||||
|
Thumbs.db |
||||||
|
Servers |
||||||
|
.metadata |
||||||
@ -0,0 +1,49 @@ |
|||||||
|
# 🚀`kicc`(康来智慧冷链) 微服务架构平台 © 长沙康来生物有限公司版权所有 |
||||||
|
|
||||||
|
## 💡 简介 |
||||||
|
服务于医疗智慧冷链行业微服务架构平台,目前采用最新微服务技术栈搭建,支持标本箱配送,监控,地图路线规划, |
||||||
|
努力做成中国最好的智慧冷链平台。 |
||||||
|
|
||||||
|
## 🎡 功能特点 |
||||||
|
- 主体框架:采用最新的`Spring Cloud 2021.0.1`, `Spring Boot 2.6.4`, `Spring Cloud Alibaba 2021.1`版本进行系统设计; |
||||||
|
|
||||||
|
- 统一注册:支持`Nacos`作为注册中心,实现多配置、分群组、分命名空间、多业务模块的注册和发现功能; |
||||||
|
|
||||||
|
- 统一认证:统一`Oauth2`认证协议,并支持自定义grant_type实现手机号码登录,第三方登录集成JustAuth实现微信、支付宝等多种登录模式; |
||||||
|
|
||||||
|
- 业务监控:利用`Spring Boot Admin`来监控各个独立Service的运行状态。 |
||||||
|
|
||||||
|
- 内部调用:集成了`Feign`与自定义内部注解,支持内部调用。 |
||||||
|
|
||||||
|
- 业务熔断:采用`Sentinel`实现业务熔断处理,避免服务之间出现雪崩; |
||||||
|
|
||||||
|
- 在线文档:通过接入`Knife4j`,实现在线API文档的查看与调试; |
||||||
|
|
||||||
|
- 业务分离:采用前后端分离的框架设计,前端采用基于 `vben Admin` 的 `kicc-ui` |
||||||
|
|
||||||
|
- 多租户功能:集成`Mybatis Plus`,实现SAAS多租户功能 |
||||||
|
|
||||||
|
|
||||||
|
## 🎯 文件结构 |
||||||
|
```lua |
||||||
|
kicc -- 父项目,各模块分离,方便集成和微服务 |
||||||
|
│ ├─kicc-auth -- 认证授权中心,基于 spring security oAuth2 |
||||||
|
│ ├─kicc-common -- 公共通用模块,主模块 |
||||||
|
│ │ ├─kicc-common-bom -- 全局jar BOM标准定义 |
||||||
|
│ │ ├─kicc-common-core -- 公共工具类核心包 |
||||||
|
│ │ ├─kicc-common-data -- 数据服务核心包 |
||||||
|
│ │ ├─kicc-common-datasource -- 动态切换数据源组件 |
||||||
|
│ │ ├─kicc-common-feign -- feign-sentinel服务降级熔断、限流组件 |
||||||
|
│ │ ├─kicc-common-job -- 定时任务,基于xxl-job |
||||||
|
│ │ ├─kicc-common-log -- 日志服务 |
||||||
|
│ │ ├─kicc-common-mock -- 单元模拟测试工具类 |
||||||
|
│ │ ├─kicc-common-rocketmq -- 阿里 rocketmq 消息中间件 |
||||||
|
│ │ ├─kicc-common-seata -- 阿里巴巴-seata分布式事务解决方案 |
||||||
|
│ │ ├─kicc-common-security -- 安全工具类 |
||||||
|
│ │ ├─kicc-common-swagger -- 接口文档 |
||||||
|
│ │─kicc-common-demo -- 组件使用案列 |
||||||
|
│ │─kicc-gateway -- 服务网关,基于 spring cloud gateway |
||||||
|
│ │─kicc-register -- 注册配置中心 |
||||||
|
│ │─kicc-system -- 通用系统权限管理聚合模块 |
||||||
|
│ │─kicc-visual 图形化相关功能 |
||||||
|
``` |
||||||
@ -0,0 +1,31 @@ |
|||||||
|
注意所以打包部署全部写了docker-compose一键部署,需要了解更多信息,请参考kicc项目中docker-cloud文件夹 |
||||||
|
宿主机文件统一映射路径:/usr/software/dockerDatabase/** |
||||||
|
|
||||||
|
|
||||||
|
微服务端口:------------------------------------------ |
||||||
|
8051:prtainer-ce |
||||||
|
8052:mysql |
||||||
|
8053:redis |
||||||
|
9876:rocketmq:namesrv |
||||||
|
10909:rocketmq:broker:远程发送消息接口 |
||||||
|
10911:rocketmq:broker:远程快速发送消息接口 |
||||||
|
8091:seata-server |
||||||
|
8848:kicc-register:连接端口 |
||||||
|
9848:kicc-register:客户端向服务端发起连接和请求 |
||||||
|
9849:kicc-register:用于服务间同步等 |
||||||
|
8058:kicc-rocketmq |
||||||
|
8056:kicc-sentinel |
||||||
|
8057:kicc-job-admin |
||||||
|
8061:kicc-monitor |
||||||
|
9999:kicc-gateway |
||||||
|
3000:kicc-auth |
||||||
|
4000:kicc-system |
||||||
|
80:kicc-ui |
||||||
|
40003:demo-kicc-message-consumer |
||||||
|
40002:demo-kicc-message-producer |
||||||
|
60001:demo-kicc-seata-order |
||||||
|
60002:demo-kicc-seata-point |
||||||
|
60003:demo-kicc-seata-user |
||||||
|
8062:docker |
||||||
|
8065:gitea ssh端口服务 |
||||||
|
8066:gitea http端口服务 |
||||||
@ -0,0 +1,109 @@ |
|||||||
|
/* |
||||||
|
Navicat Premium Data Transfer |
||||||
|
|
||||||
|
Source Server : 本地 |
||||||
|
Source Server Type : MySQL |
||||||
|
Source Server Version : 50732 |
||||||
|
Source Host : localhost:3306 |
||||||
|
Source Schema : kicc-seata |
||||||
|
|
||||||
|
Target Server Type : MySQL |
||||||
|
Target Server Version : 50732 |
||||||
|
File Encoding : 65001 |
||||||
|
|
||||||
|
Date: 21/03/2022 21:49:52 |
||||||
|
*/ |
||||||
|
|
||||||
|
SET NAMES utf8mb4; |
||||||
|
SET FOREIGN_KEY_CHECKS = 0; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for branch_table |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `branch_table`; |
||||||
|
CREATE TABLE `branch_table` ( |
||||||
|
`branch_id` bigint(20) NOT NULL, |
||||||
|
`xid` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, |
||||||
|
`transaction_id` bigint(20) NULL DEFAULT NULL, |
||||||
|
`resource_group_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, |
||||||
|
`resource_id` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, |
||||||
|
`branch_type` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, |
||||||
|
`status` tinyint(4) NULL DEFAULT NULL, |
||||||
|
`client_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, |
||||||
|
`application_data` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, |
||||||
|
`gmt_create` datetime(6) NULL DEFAULT NULL, |
||||||
|
`gmt_modified` datetime(6) NULL DEFAULT NULL, |
||||||
|
PRIMARY KEY (`branch_id`) USING BTREE, |
||||||
|
INDEX `idx_xid`(`xid`) USING BTREE |
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of branch_table |
||||||
|
-- ---------------------------- |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for distributed_lock |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `distributed_lock`; |
||||||
|
CREATE TABLE `distributed_lock` ( |
||||||
|
`lock_key` char(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, |
||||||
|
`lock_value` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, |
||||||
|
`expire` bigint(20) NULL DEFAULT NULL, |
||||||
|
PRIMARY KEY (`lock_key`) USING BTREE |
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of distributed_lock |
||||||
|
-- ---------------------------- |
||||||
|
INSERT INTO `distributed_lock` VALUES ('HandleAllSession', ' ', 0); |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for global_table |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `global_table`; |
||||||
|
CREATE TABLE `global_table` ( |
||||||
|
`xid` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, |
||||||
|
`transaction_id` bigint(20) NULL DEFAULT NULL, |
||||||
|
`status` tinyint(4) NOT NULL, |
||||||
|
`application_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, |
||||||
|
`transaction_service_group` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, |
||||||
|
`transaction_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, |
||||||
|
`timeout` int(11) NULL DEFAULT NULL, |
||||||
|
`begin_time` bigint(20) NULL DEFAULT NULL, |
||||||
|
`application_data` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, |
||||||
|
`gmt_create` datetime NULL DEFAULT NULL, |
||||||
|
`gmt_modified` datetime NULL DEFAULT NULL, |
||||||
|
PRIMARY KEY (`xid`) USING BTREE, |
||||||
|
INDEX `idx_status_gmt_modified`(`status`, `gmt_modified`) USING BTREE, |
||||||
|
INDEX `idx_transaction_id`(`transaction_id`) USING BTREE |
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of global_table |
||||||
|
-- ---------------------------- |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for lock_table |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `lock_table`; |
||||||
|
CREATE TABLE `lock_table` ( |
||||||
|
`row_key` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, |
||||||
|
`xid` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, |
||||||
|
`transaction_id` bigint(20) NULL DEFAULT NULL, |
||||||
|
`branch_id` bigint(20) NOT NULL, |
||||||
|
`resource_id` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, |
||||||
|
`table_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, |
||||||
|
`pk` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, |
||||||
|
`status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '0:locked ,1:rollbacking', |
||||||
|
`gmt_create` datetime NULL DEFAULT NULL, |
||||||
|
`gmt_modified` datetime NULL DEFAULT NULL, |
||||||
|
PRIMARY KEY (`row_key`) USING BTREE, |
||||||
|
INDEX `idx_status`(`status`) USING BTREE, |
||||||
|
INDEX `idx_branch_id`(`branch_id`) USING BTREE |
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of lock_table |
||||||
|
-- ---------------------------- |
||||||
|
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1; |
||||||
@ -0,0 +1,681 @@ |
|||||||
|
/* |
||||||
|
Navicat Premium Data Transfer |
||||||
|
|
||||||
|
Source Server : 本地 |
||||||
|
Source Server Type : MySQL |
||||||
|
Source Server Version : 50732 |
||||||
|
Source Host : localhost:3306 |
||||||
|
Source Schema : kicc |
||||||
|
|
||||||
|
Target Server Type : MySQL |
||||||
|
Target Server Version : 50732 |
||||||
|
File Encoding : 65001 |
||||||
|
|
||||||
|
Date: 21/03/2022 21:50:21 |
||||||
|
*/ |
||||||
|
|
||||||
|
SET NAMES utf8mb4; |
||||||
|
SET FOREIGN_KEY_CHECKS = 0; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for demo_seata_order |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `demo_seata_order`; |
||||||
|
CREATE TABLE `demo_seata_order` ( |
||||||
|
`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键', |
||||||
|
`money` int(11) NULL DEFAULT NULL COMMENT '金额', |
||||||
|
PRIMARY KEY (`id`) USING BTREE |
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of demo_seata_order |
||||||
|
-- ---------------------------- |
||||||
|
INSERT INTO `demo_seata_order` VALUES ('1', 100); |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for demo_seata_point |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `demo_seata_point`; |
||||||
|
CREATE TABLE `demo_seata_point` ( |
||||||
|
`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键', |
||||||
|
`count` int(11) NULL DEFAULT NULL COMMENT '积分数量', |
||||||
|
PRIMARY KEY (`id`) USING BTREE |
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of demo_seata_point |
||||||
|
-- ---------------------------- |
||||||
|
INSERT INTO `demo_seata_point` VALUES ('2', 10); |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for demo_seata_user |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `demo_seata_user`; |
||||||
|
CREATE TABLE `demo_seata_user` ( |
||||||
|
`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键', |
||||||
|
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户名称', |
||||||
|
`age` int(11) NULL DEFAULT NULL COMMENT '用户年龄', |
||||||
|
PRIMARY KEY (`id`) USING BTREE |
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of demo_seata_user |
||||||
|
-- ---------------------------- |
||||||
|
INSERT INTO `demo_seata_user` VALUES ('2', '测试员', 18); |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for sys_config |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `sys_config`; |
||||||
|
CREATE TABLE `sys_config` ( |
||||||
|
`id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '编号', |
||||||
|
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '参数名称', |
||||||
|
`key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '参数键名', |
||||||
|
`value` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '参数键值', |
||||||
|
`is_sys` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '系统内置 0-是|1-否', |
||||||
|
`create_by_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建id', |
||||||
|
`create_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者', |
||||||
|
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', |
||||||
|
`update_by_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新id', |
||||||
|
`update_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', |
||||||
|
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', |
||||||
|
`remarks` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', |
||||||
|
`del_flag` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '删除标记', |
||||||
|
PRIMARY KEY (`id`) USING BTREE |
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of sys_config |
||||||
|
-- ---------------------------- |
||||||
|
INSERT INTO `sys_config` VALUES ('1', '初始密码', 'user.initPassword', '123456', '0', NULL, '', '2020-03-15 21:51:13', NULL, '', NULL, NULL, '0'); |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for sys_dept |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `sys_dept`; |
||||||
|
CREATE TABLE `sys_dept` ( |
||||||
|
`dept_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, |
||||||
|
`code` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '机构编码', |
||||||
|
`name` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '机构名称', |
||||||
|
`parent_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '父级编号', |
||||||
|
`ancestors` varchar(120) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '祖级列表', |
||||||
|
`sort` int(11) NULL DEFAULT 1 COMMENT '排序', |
||||||
|
`contacts` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '联系人', |
||||||
|
`phone` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '电话', |
||||||
|
`address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '联系地址', |
||||||
|
`email` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮箱', |
||||||
|
`status` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '帐号状态(0正常 1停用)', |
||||||
|
`create_by_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建id', |
||||||
|
`create_by_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', |
||||||
|
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', |
||||||
|
`update_by_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新id', |
||||||
|
`update_by_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新者', |
||||||
|
`update_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', |
||||||
|
`remarks` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注信息', |
||||||
|
`del_flag` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT '删除标记', |
||||||
|
PRIMARY KEY (`dept_id`) USING BTREE |
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of sys_dept |
||||||
|
-- ---------------------------- |
||||||
|
INSERT INTO `sys_dept` VALUES ('1', '100001', '康来生物长沙总公司', '0', '0', 1, '杨总', '15688888888', NULL, NULL, '0', NULL, 'entfrm', '2020-02-13 20:55:57', NULL, 'admin', '2020-03-19 20:49:29', NULL, '0'); |
||||||
|
INSERT INTO `sys_dept` VALUES ('2', '10000101', '康来生物北京分公司', '1', '0,1', 1, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, NULL, 'admin', '2020-03-15 20:22:11', NULL, '0'); |
||||||
|
INSERT INTO `sys_dept` VALUES ('3', '10000102', '康来生物上海分公司', '1', '0,1', 2, '123', '', NULL, NULL, '0', NULL, NULL, NULL, NULL, 'entfrm', '2020-03-15 20:37:02', NULL, '0'); |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for sys_dict |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `sys_dict`; |
||||||
|
CREATE TABLE `sys_dict` ( |
||||||
|
`id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, |
||||||
|
`name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '字典名称', |
||||||
|
`type` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '字典类型', |
||||||
|
`is_sys` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT '0-是|1-否', |
||||||
|
`status` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '状态(0正常 1停用)', |
||||||
|
`create_by_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建id', |
||||||
|
`create_by_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', |
||||||
|
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
||||||
|
`update_by_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新id', |
||||||
|
`update_by_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改人', |
||||||
|
`update_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', |
||||||
|
`remarks` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '备注', |
||||||
|
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '0' COMMENT '0-正常,1-删除', |
||||||
|
PRIMARY KEY (`id`) USING BTREE |
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of sys_dict |
||||||
|
-- ---------------------------- |
||||||
|
INSERT INTO `sys_dict` VALUES ('1', '用户性别', 'user_sex', '0', '0', NULL, 'admin', '2018-03-16 11:33:00', NULL, 'admin', '2020-03-17 14:19:40', '用户性别列表', '0'); |
||||||
|
INSERT INTO `sys_dict` VALUES ('10', '快捷方式类型', 'shortcut_type', '0', '0', NULL, 'entfrm', '2020-03-27 09:48:05', NULL, 'entfrm', '2020-03-27 10:14:27', '快捷方式类型列表', '0'); |
||||||
|
INSERT INTO `sys_dict` VALUES ('11', '模型分类', 'model_category', '0', '0', NULL, 'entfrm', '2020-04-04 22:09:36', '1', 'admin', '2022-03-21 21:23:55', '', '1'); |
||||||
|
INSERT INTO `sys_dict` VALUES ('12', '请假类型', 'leave_type', '0', '0', NULL, 'entfrm', '2020-04-05 10:08:18', '1', 'admin', '2022-03-21 21:23:55', '', '1'); |
||||||
|
INSERT INTO `sys_dict` VALUES ('13', '任务状态', 'job_status', '0', '0', NULL, 'entfrm', '2020-04-11 18:54:20', '1', 'admin', '2022-03-21 21:23:55', '', '1'); |
||||||
|
INSERT INTO `sys_dict` VALUES ('14', 'Activiti流程状态', 'process_status', '0', '0', NULL, 'entfrm', '2020-04-12 14:30:52', NULL, 'entfrm', '2021-05-12 01:37:16', 'Activiti流程状态', '1'); |
||||||
|
INSERT INTO `sys_dict` VALUES ('15', '应用类型', 'application_type', '0', '0', NULL, 'entfrm', '2020-04-23 18:54:07', '1', 'admin', '2022-03-21 21:23:55', '', '1'); |
||||||
|
INSERT INTO `sys_dict` VALUES ('16', '消息类型', 'msg_type', '0', '0', NULL, 'entfrm', '2020-05-10 16:02:20', '1', 'admin', '2022-03-21 21:23:55', '', '1'); |
||||||
|
INSERT INTO `sys_dict` VALUES ('17', '应用状态', 'application_status', '0', '0', NULL, 'entfrm', '2020-05-15 22:56:49', '1', 'admin', '2022-03-21 21:23:55', '应用状态列表', '1'); |
||||||
|
INSERT INTO `sys_dict` VALUES ('18', '消息通知类型', 'content_type', '0', '0', NULL, 'entfrm', '2020-05-25 15:45:41', '1', 'admin', '2022-03-21 21:23:55', '', '1'); |
||||||
|
INSERT INTO `sys_dict` VALUES ('19', '数据格式类型', 'data_type', '0', '0', NULL, 'entfrm', '2020-06-13 08:51:07', NULL, NULL, NULL, '', '0'); |
||||||
|
INSERT INTO `sys_dict` VALUES ('2', '菜单状态', 'menu_status', '0', '0', NULL, 'admin', '2018-03-16 11:33:00', NULL, 'admin', '2020-03-17 14:19:41', '菜单状态列表', '0'); |
||||||
|
INSERT INTO `sys_dict` VALUES ('20', '表单类型', 'form_type', '0', '0', NULL, 'entfrm', '2021-03-26 23:30:49', '1', 'admin', '2022-03-21 21:24:11', '', '1'); |
||||||
|
INSERT INTO `sys_dict` VALUES ('21', '流程状态', 'process_status', '1', '0', NULL, 'entfrm', '2021-05-12 01:37:30', '1', 'admin', '2022-03-21 21:24:11', 'Activiti流程状态', '1'); |
||||||
|
INSERT INTO `sys_dict` VALUES ('3', '是否', 'yes_no', '0', '0', NULL, 'admin', '2018-03-16 11:33:00', NULL, 'admin', '2020-03-17 14:19:42', '是否列表', '0'); |
||||||
|
INSERT INTO `sys_dict` VALUES ('4', '状态', 'status', '0', '0', NULL, 'admin', '2018-03-16 11:33:00', NULL, 'admin', '2020-03-17 14:19:42', '状态列表', '0'); |
||||||
|
INSERT INTO `sys_dict` VALUES ('5', '成功失败', 'success_fail', '0', '0', NULL, 'admin', '2019-08-24 10:02:57', NULL, 'admin', '2020-03-17 14:19:43', '成功失败列表', '0'); |
||||||
|
INSERT INTO `sys_dict` VALUES ('6', '文件类别', 'file_type', '0', '0', NULL, 'entfrm', '2020-03-17 13:57:44', NULL, 'entfrm', '2020-03-20 22:48:19', '文件类别列表', '0'); |
||||||
|
INSERT INTO `sys_dict` VALUES ('7', '数据库类型', 'datasource_type', '0', '0', NULL, 'entfrm', '2020-03-21 11:33:14', '1', 'admin', '2022-03-21 21:24:15', '数据库类型列表', '1'); |
||||||
|
INSERT INTO `sys_dict` VALUES ('8', '任务类型', 'job_type', '0', '0', NULL, 'entfrm', '2020-03-21 21:21:46', NULL, NULL, NULL, '任务类型列表', '0'); |
||||||
|
INSERT INTO `sys_dict` VALUES ('9', '登录类型', 'login_type', '0', '0', NULL, 'entfrm', '2020-03-22 09:55:59', NULL, NULL, NULL, '登录类型列表', '0'); |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for sys_dict_data |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `sys_dict_data`; |
||||||
|
CREATE TABLE `sys_dict_data` ( |
||||||
|
`id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '编号', |
||||||
|
`dict_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '字典编号', |
||||||
|
`dict_type` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '类型', |
||||||
|
`label` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '标签名', |
||||||
|
`value` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '数据值', |
||||||
|
`sort` int(10) NOT NULL COMMENT '排序(升序)', |
||||||
|
`create_by_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建id', |
||||||
|
`create_by_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', |
||||||
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
||||||
|
`update_by_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新id', |
||||||
|
`update_by_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改人', |
||||||
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', |
||||||
|
`remarks` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注信息', |
||||||
|
`del_flag` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT '删除标记', |
||||||
|
PRIMARY KEY (`id`) USING BTREE |
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of sys_dict_data |
||||||
|
-- ---------------------------- |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('1', '1', 'user_sex', '男', '0', 1, NULL, NULL, '2019-08-13 18:33:37', NULL, NULL, '2019-08-13 18:33:40', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('10', NULL, 'success_fail', '失败', '1', 20, NULL, 'admin', '2019-08-24 11:48:27', NULL, NULL, '2019-08-24 11:48:26', '', '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('11', NULL, 'file_type', '图片', 'image', 1, NULL, 'entfrm', '2020-03-20 22:48:39', NULL, NULL, '2020-03-28 16:27:48', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('12', NULL, 'file_type', '媒体', 'media', 2, NULL, 'entfrm', '2020-03-20 22:48:48', NULL, 'entfrm', '2020-03-28 16:28:32', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('13', NULL, 'file_type', '文档', 'file', 3, NULL, 'entfrm', '2020-03-20 22:49:03', NULL, NULL, '2020-03-28 16:28:21', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('14', NULL, 'datasource_type', 'Mysql', 'com.mysql.cj.jdbc.Driver', 1, NULL, 'entfrm', '2020-03-21 11:33:59', NULL, 'entfrm', '2020-03-21 11:33:59', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('15', NULL, 'datasource_type', 'Sqlserver', 'com.microsoft.sqlserver.jdbc.SQLServerDriver', 2, NULL, 'entfrm', '2020-03-21 11:34:59', NULL, 'entfrm', '2020-03-21 11:34:58', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('16', NULL, 'datasource_type', 'Postgresql', 'org.postgresql.Driver', 3, NULL, 'entfrm', '2020-03-21 11:36:16', NULL, NULL, '2020-03-21 11:36:15', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('17', NULL, 'job_type', 'Java类', '1', 1, NULL, 'entfrm', '2020-03-21 21:22:35', NULL, NULL, '2020-03-21 21:22:35', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('18', NULL, 'job_type', 'Spring bean名称', '2', 2, NULL, 'entfrm', '2020-03-21 21:22:50', NULL, NULL, '2020-03-21 21:22:50', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('19', NULL, 'job_type', 'Rest调用', '3', 3, NULL, 'entfrm', '2020-03-21 21:23:06', NULL, NULL, '2020-03-21 21:23:05', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('2', '1', 'user_sex', '女', '1', 2, NULL, NULL, '2019-08-13 18:34:03', NULL, NULL, '2019-08-13 18:34:07', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('20', NULL, 'job_type', 'Jar调用', '4', 4, NULL, 'entfrm', '2020-03-21 21:23:19', NULL, NULL, '2020-03-21 21:23:18', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('21', NULL, 'job_type', '其他', '5', 0, NULL, 'entfrm', '2020-03-21 21:23:24', NULL, NULL, '2020-03-21 21:23:24', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('22', NULL, 'login_type', '登录', '0', 1, NULL, 'entfrm', '2020-03-22 09:56:41', NULL, NULL, '2020-03-22 09:56:40', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('23', NULL, 'login_type', '退出', '1', 2, NULL, 'entfrm', '2020-03-22 09:56:51', NULL, NULL, '2020-03-22 09:56:51', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('24', NULL, 'shortcut_type', '顶部', '1', 1, NULL, 'entfrm', '2020-03-27 09:48:24', NULL, NULL, '2020-03-27 09:48:23', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('25', NULL, 'shortcut_type', '首页', '2', 2, NULL, 'entfrm', '2020-03-27 09:48:38', NULL, NULL, '2020-03-27 09:48:38', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('26', NULL, 'model_category', '办公流程', 'office', 1, NULL, 'entfrm', '2020-04-04 22:10:14', NULL, NULL, '2020-04-04 22:10:13', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('27', NULL, 'model_category', '项目流程', 'project', 2, NULL, 'entfrm', '2020-04-04 22:10:27', NULL, NULL, '2020-04-04 22:10:26', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('28', NULL, 'leave_type', '事假', '1', 1, NULL, 'entfrm', '2020-04-05 10:08:52', NULL, NULL, '2020-04-05 10:08:52', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('29', NULL, 'leave_type', '病假', '2', 2, NULL, 'entfrm', '2020-04-05 10:09:05', NULL, NULL, '2020-04-05 10:09:05', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('3', '2', 'menu_status', '隐藏', '1', 2, NULL, NULL, '2019-08-13 18:33:37', NULL, NULL, '2019-08-19 15:42:29', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('30', NULL, 'leave_type', '产假', '3', 3, NULL, 'entfrm', '2020-04-05 10:09:37', NULL, 'entfrm', '2020-04-05 10:09:37', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('31', NULL, 'job_status', '未发布', '1', 1, NULL, 'entfrm', '2020-04-11 18:54:37', NULL, NULL, '2020-04-11 18:54:37', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('32', NULL, 'job_status', '运行中', '2', 2, NULL, 'entfrm', '2020-04-11 18:54:48', NULL, NULL, '2020-04-11 18:54:47', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('33', NULL, 'job_status', '暂停', '3', 3, NULL, 'entfrm', '2020-04-11 18:54:57', NULL, NULL, '2020-04-11 18:54:57', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('34', NULL, 'leave_status', '未提交', '0', 0, NULL, 'entfrm', '2020-04-12 14:31:12', NULL, NULL, '2020-04-12 14:31:11', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('35', NULL, 'leave_status', '未审批', '1', 1, NULL, 'entfrm', '2020-04-12 14:31:29', NULL, NULL, '2020-04-12 14:31:28', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('36', NULL, 'leave_status', '批准', '2', 2, NULL, 'entfrm', '2020-04-12 14:31:38', NULL, NULL, '2020-04-12 14:31:38', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('37', NULL, 'leave_status', '驳回', '9', 3, NULL, 'entfrm', '2020-04-12 14:31:51', NULL, '小狗', '2020-04-12 14:31:51', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('38', NULL, 'application_type', 'PC', '1', 1, NULL, 'entfrm', '2020-04-23 18:54:36', NULL, NULL, '2020-04-23 18:54:36', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('39', NULL, 'application_type', 'APP', '2', 2, NULL, 'entfrm', '2020-04-23 18:54:44', NULL, NULL, '2020-04-23 18:54:44', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('4', '2', 'menu_status', '显示', '0', 1, NULL, NULL, '2019-08-13 18:33:37', NULL, NULL, '2019-08-19 15:42:28', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('40', NULL, 'application_type', '小程序', '3', 3, NULL, 'entfrm', '2020-04-23 18:54:58', NULL, NULL, '2020-04-23 18:54:57', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('41', NULL, 'msg_type', '短信', '0', 0, NULL, 'entfrm', '2020-05-10 16:02:40', NULL, NULL, '2020-05-10 16:02:40', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('42', NULL, 'msg_type', '邮件', '1', 1, NULL, 'entfrm', '2020-05-10 16:02:50', NULL, NULL, '2020-05-10 16:02:50', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('43', NULL, 'application_status', '未发布', '0', 0, NULL, 'entfrm', '2020-05-15 22:57:27', NULL, NULL, '2020-05-15 22:57:27', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('44', NULL, 'application_status', '已发布', '1', 1, NULL, 'entfrm', '2020-05-15 22:57:36', NULL, NULL, '2020-05-15 22:57:35', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('45', NULL, 'msg_type', 'PC', '2', 2, NULL, 'entfrm', '2020-05-25 15:44:18', NULL, NULL, '2020-05-25 15:44:17', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('46', NULL, 'msg_type', 'APP', '3', 3, NULL, 'entfrm', '2020-05-25 15:44:44', NULL, NULL, '2020-05-25 15:44:43', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('47', NULL, 'msg_type', '微信', '4', 4, NULL, 'entfrm', '2020-05-25 15:44:56', NULL, NULL, '2020-05-25 15:44:56', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('48', NULL, 'content_type', '通知', '0', 0, NULL, 'entfrm', '2020-05-25 15:46:28', NULL, NULL, '2020-05-25 15:46:28', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('49', NULL, 'content_type', '公告', '1', 1, NULL, 'entfrm', '2020-05-25 15:46:38', NULL, NULL, '2020-05-25 15:46:38', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('5', '3', 'yes_no', '是', '0', 1, NULL, NULL, '2019-08-13 18:33:37', NULL, 'admin', '2020-03-17 12:05:05', '', '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('50', NULL, 'content_type', '其他', '2', 2, NULL, 'entfrm', '2020-05-25 15:46:46', NULL, NULL, '2020-05-25 15:46:45', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('51', NULL, 'data_type', 'json', 'json', 1, NULL, 'entfrm', '2020-06-13 08:51:24', NULL, NULL, '2020-06-13 08:51:24', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('52', NULL, 'form_type', '普通表单', '0', 0, NULL, 'entfrm', '2021-03-26 23:31:12', NULL, NULL, '2021-03-26 23:31:12', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('53', NULL, 'form_type', '工作流表单', '1', 1, NULL, 'entfrm', '2021-03-26 23:31:20', NULL, NULL, '2021-03-26 23:31:19', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('54', NULL, 'leave_status', '作废', '8', 4, NULL, '小狗', '2021-04-15 01:03:15', NULL, NULL, '2021-04-15 01:03:14', '作废流程', '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('55', NULL, 'application_type', '已挂起', '0', 0, NULL, 'entfrm', '2021-05-12 01:37:45', NULL, NULL, '2021-05-12 01:37:45', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('56', NULL, 'process_status', '已挂起', '0', 0, NULL, 'entfrm', '2021-05-12 01:38:51', NULL, NULL, '2021-05-12 01:38:50', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('57', NULL, 'process_status', '等待审核', '1', 1, NULL, 'entfrm', '2021-05-12 01:38:59', NULL, 'entfrm', '2021-05-12 01:38:59', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('58', NULL, 'process_status', '审核通过', '2', 2, NULL, 'entfrm', '2021-05-12 01:39:08', NULL, 'entfrm', '2021-05-12 01:39:07', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('59', NULL, 'process_status', '流程撤回', '3', 3, NULL, 'entfrm', '2021-05-12 01:39:14', NULL, 'entfrm', '2021-05-12 01:39:14', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('6', '3', 'yes_no', '否', '1', 2, NULL, NULL, '2019-08-13 18:33:37', NULL, 'admin', '2020-03-17 12:05:06', '', '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('60', NULL, 'process_status', '审核驳回', '4', 4, NULL, 'entfrm', '2021-05-12 01:39:22', NULL, 'entfrm', '2021-05-12 01:39:21', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('61', NULL, 'process_status', '审核终止', '5', 5, NULL, 'entfrm', '2021-05-12 01:39:32', NULL, 'entfrm', '2021-05-12 01:39:31', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('62', NULL, 'process_status', '流程作废', '6', 6, NULL, 'entfrm', '2021-05-12 01:39:52', NULL, 'entfrm', '2021-05-12 01:39:51', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('7', '4', 'status', '停用', '1', 2, NULL, NULL, '2019-08-13 18:34:03', NULL, 'admin', '2019-08-19 15:43:00', '', '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('8', '4', 'status', '正常', '0', 1, NULL, NULL, '2019-08-13 18:33:37', NULL, NULL, '2019-08-19 15:42:59', NULL, '0'); |
||||||
|
INSERT INTO `sys_dict_data` VALUES ('9', NULL, 'success_fail', '成功', '0', 10, NULL, 'admin', '2019-08-24 11:48:18', NULL, 'entfrm', '2019-08-24 11:48:17', '', '0'); |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for sys_file |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `sys_file`; |
||||||
|
CREATE TABLE `sys_file` ( |
||||||
|
`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, |
||||||
|
`file_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, |
||||||
|
`bucket_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, |
||||||
|
`original` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, |
||||||
|
`type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, |
||||||
|
`file_size` bigint(20) NULL DEFAULT NULL COMMENT '文件大小', |
||||||
|
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '0-正常,1-删除', |
||||||
|
`create_by_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建id', |
||||||
|
`create_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建者', |
||||||
|
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', |
||||||
|
`update_by_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新id', |
||||||
|
`update_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人', |
||||||
|
`update_time` datetime NULL DEFAULT NULL COMMENT '修改时间', |
||||||
|
PRIMARY KEY (`id`) USING BTREE |
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '文件管理表' ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of sys_file |
||||||
|
-- ---------------------------- |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for sys_menu |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `sys_menu`; |
||||||
|
CREATE TABLE `sys_menu` ( |
||||||
|
`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编号', |
||||||
|
`name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '菜单名称', |
||||||
|
`parent_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '父菜单ID', |
||||||
|
`parent_ids` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '父菜单IDS', |
||||||
|
`type` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '菜单类型 ', |
||||||
|
`path` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '前端URL', |
||||||
|
`component` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '#' COMMENT 'VUE页面', |
||||||
|
`perms` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '菜单权限标识', |
||||||
|
`icon` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图标', |
||||||
|
`no_cache` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '1' COMMENT '路由缓存', |
||||||
|
`sort` int(11) NULL DEFAULT 1 COMMENT '排序值', |
||||||
|
`status` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '菜单状态(0显示 1隐藏)', |
||||||
|
`create_by_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建id', |
||||||
|
`create_by_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', |
||||||
|
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
||||||
|
`update_by_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新id', |
||||||
|
`update_by_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改人', |
||||||
|
`update_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', |
||||||
|
`remarks` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注', |
||||||
|
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '0' COMMENT '删除标识(0-正常,1-删除)', |
||||||
|
PRIMARY KEY (`id`) USING BTREE |
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of sys_menu |
||||||
|
-- ---------------------------- |
||||||
|
INSERT INTO `sys_menu` VALUES ('1', '系统管理', '0', NULL, 'M', 'system', '#', '', 'system', '0', 10, '0', NULL, 'admin', '2019-03-16 11:33:00', NULL, 'admin', '2020-03-16 20:45:21', '系统管理模块', '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('10', '机构删除', '4', NULL, 'F', NULL, '#', 'dept_del', NULL, '0', 3, '0', NULL, NULL, '2020-03-12 20:42:57', NULL, NULL, '2020-03-16 20:43:02', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('105', '快捷方式新增', '43', NULL, 'F', NULL, '#', 'shortcut_add', NULL, '0', 1, '0', NULL, 'entfrm', '2020-03-27 09:44:13', NULL, NULL, NULL, NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('106', '快捷方式修改', '43', NULL, 'F', NULL, '#', 'shortcut_edit', NULL, '0', 2, '0', NULL, 'entfrm', '2020-03-27 09:44:36', NULL, NULL, NULL, NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('107', '快捷方式删除', '43', NULL, 'F', NULL, '#', 'shortcut_del', NULL, '0', 3, '0', NULL, 'entfrm', '2020-03-27 09:44:57', NULL, NULL, NULL, NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('108', '快捷方式查看', '43', NULL, 'F', NULL, '#', 'shortcut_view', NULL, '0', 4, '0', NULL, 'entfrm', '2020-03-27 09:45:16', NULL, NULL, NULL, NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('11', '机构查看', '4', NULL, 'F', NULL, '#', 'dept_view', NULL, '0', 4, '0', NULL, NULL, '2020-03-12 20:43:03', NULL, NULL, '2020-03-16 20:43:06', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('13', '角色新增', '5', NULL, 'F', NULL, '#', 'role_add', NULL, '0', 1, '0', NULL, 'entfrm', '2020-03-16 11:50:24', NULL, NULL, '2020-03-16 20:41:51', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('139', '应用管理', '1', NULL, 'C', 'application', 'system/application/index', NULL, 'tool', '1', 0, '0', NULL, 'entfrm', '2020-04-23 18:35:21', '1', 'admin', '2022-03-21 20:29:25', NULL, '1'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('14', '角色修改', '5', NULL, 'F', NULL, '#', 'role_edit', NULL, '0', 2, '0', NULL, 'entfrm', '2020-03-16 11:51:05', NULL, NULL, '2020-03-16 20:41:44', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('140', '应用新增', '139', NULL, 'F', NULL, '#', 'application_add', '#', '1', 1, '0', NULL, 'entfrm', '2020-02-02 00:00:00', '1', 'admin', '2022-03-21 20:29:22', NULL, '1'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('141', '应用修改', '139', NULL, 'F', NULL, '#', 'application_edit', '#', '1', 2, '0', NULL, 'entfrm', '2020-02-02 00:00:00', '1', 'admin', '2022-03-21 20:29:20', NULL, '1'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('142', '应用删除', '139', NULL, 'F', NULL, '#', 'application_del', '#', '1', 3, '0', NULL, 'entfrm', '2020-02-02 00:00:00', '1', 'admin', '2022-03-21 20:29:18', NULL, '1'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('143', '应用查询', '139', NULL, 'F', NULL, '#', 'application_view', '#', '1', 4, '0', NULL, 'entfrm', '2020-02-02 00:00:00', '1', 'admin', '2022-03-21 20:29:16', NULL, '1'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('145', 'redis监控', '2', NULL, 'C', 'redis', 'monitor/redis/index', NULL, 'component', '1', 5, '1', NULL, 'entfrm', '2020-04-24 22:26:31', NULL, 'entfrm', '2020-05-17 16:49:59', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('15', '角色删除', '5', NULL, 'F', NULL, '#', 'role_del', NULL, '0', 3, '0', NULL, 'entfrm', '2020-03-16 11:51:21', NULL, NULL, '2020-03-16 20:41:41', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('16', '角色查看', '5', NULL, 'F', NULL, '#', 'role_view', NULL, '0', 4, '0', NULL, 'entfrm', '2020-03-16 11:51:40', NULL, NULL, '2020-03-16 20:41:37', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('17', '数据权限', '5', NULL, 'F', NULL, '#', 'role_data', NULL, '0', 5, '0', NULL, 'entfrm', '2020-03-16 12:15:50', NULL, NULL, '2020-03-16 20:41:34', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('18', '用户添加', '6', NULL, 'F', NULL, '#', 'user_add', NULL, '0', 1, '0', NULL, 'entfrm', '2020-03-16 20:31:15', NULL, NULL, '2020-03-16 20:41:31', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('19', '用户修改', '6', NULL, 'F', NULL, '#', 'user_edit', NULL, '0', 2, '0', NULL, 'entfrm', '2020-03-16 20:32:19', NULL, 'entfrm', '2020-03-16 20:41:28', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('2', '运维监控', '0', NULL, 'M', 'monitor', '#', '', 'monitor', '0', 20, '0', NULL, 'admin', '2019-03-16 11:33:00', NULL, 'admin', '2020-03-17 19:14:27', '运维监控模块', '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('20', '用户删除', '6', NULL, 'F', NULL, '#', 'user_del', NULL, '0', 3, '0', NULL, 'entfrm', '2020-03-16 20:32:41', NULL, NULL, '2020-03-16 20:41:25', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('21', '用户查看', '6', NULL, 'F', NULL, '#', 'user_view', NULL, '0', 4, '0', NULL, 'entfrm', '2020-03-16 20:33:11', NULL, NULL, '2020-03-16 20:41:20', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('22', '重置密码', '6', NULL, 'F', NULL, '#', 'user_reset', NULL, '0', 5, '0', NULL, 'entfrm', '2020-03-16 20:34:22', NULL, 'entfrm', '2020-03-16 20:41:17', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('236', '令牌管理', '2', NULL, 'C', 'token', 'monitor/token/index', NULL, 'documentation', '1', 10, '0', NULL, 'admin', '2022-02-25 15:28:56', NULL, 'admin', '2022-02-25 15:29:32', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('25', '菜单新增', '7', NULL, 'F', NULL, '#', 'menu_add', NULL, '0', 1, '0', NULL, 'entfrm', '2020-03-16 20:38:18', NULL, NULL, '2020-03-16 20:41:10', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('26', '菜单修改', '7', NULL, 'F', NULL, '#', 'menu_edit', NULL, '0', 2, '0', NULL, 'entfrm', '2020-03-16 20:38:41', NULL, 'entfrm', '2020-03-16 20:41:07', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('27', '菜单删除', '7', NULL, 'F', NULL, '#', 'menu_del', NULL, '0', 3, '0', NULL, 'entfrm', '2020-03-16 20:39:04', NULL, NULL, '2020-03-16 20:41:04', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('28', '菜单查看', '7', NULL, 'F', NULL, '#', 'menu_view', NULL, '0', 4, '0', NULL, 'entfrm', '2020-03-16 20:39:39', NULL, NULL, '2020-03-16 20:41:01', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('29', '字典管理', '1', '6', 'C', 'dict', 'system/dict/index', '', 'dict', '0', 5, '0', NULL, 'entfrm', '2020-03-16 11:33:00', NULL, '', '2020-03-16 11:33:00', '字典管理菜单', '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('30', '字典新增', '29', NULL, 'F', NULL, '#', 'dict_add', NULL, '0', 1, '0', NULL, 'entfrm', '2020-03-16 20:50:45', NULL, NULL, NULL, NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('31', '字典修改', '29', NULL, 'F', NULL, '#', 'dict_edit', NULL, '0', 2, '0', NULL, 'entfrm', '2020-03-16 20:51:01', NULL, NULL, NULL, NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('32', '字典删除', '29', NULL, 'F', NULL, '#', 'dict_del', NULL, '0', 3, '0', NULL, 'entfrm', '2020-03-16 20:52:18', NULL, NULL, NULL, NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('33', '字典查看', '29', NULL, 'F', NULL, '#', 'dict_view', NULL, '0', 4, '0', NULL, 'entfrm', '2020-03-16 20:52:38', NULL, NULL, NULL, NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('34', '数据增加', '29', NULL, 'F', NULL, '#', 'dictData_add', NULL, '0', 5, '0', NULL, 'entfrm', '2020-03-16 21:49:18', NULL, NULL, NULL, NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('35', '数据修改', '29', NULL, 'F', NULL, '#', 'dictData_edit', NULL, '0', 6, '0', NULL, 'entfrm', '2020-03-16 21:49:36', NULL, NULL, NULL, NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('36', '数据删除', '29', NULL, 'F', NULL, '#', 'dictData_del', NULL, '0', 7, '0', NULL, 'entfrm', '2020-03-16 21:50:00', NULL, NULL, NULL, NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('37', '数据查看', '29', NULL, 'F', NULL, '#', 'dictData_view', NULL, '0', 8, '0', NULL, 'entfrm', '2020-03-16 21:50:19', NULL, NULL, NULL, NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('38', '参数管理', '1', NULL, 'C', 'config', 'system/config/index', NULL, 'list', '0', 6, '0', NULL, 'entfrm', '2020-03-16 22:06:52', NULL, NULL, '2020-03-16 22:11:13', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('39', '参数新增', '38', NULL, 'F', NULL, '#', 'config_add', NULL, '0', 1, '0', NULL, 'entfrm', '2020-03-16 22:07:16', NULL, NULL, NULL, NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('4', '机构管理', '1', NULL, 'C', 'dept', 'system/dept/index', '', 'tree', '0', 1, '0', NULL, NULL, '2020-03-13 19:31:20', NULL, NULL, '2020-03-14 20:55:41', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('40', '参数修改', '38', NULL, 'F', NULL, '#', 'config_edit', NULL, '0', 2, '0', NULL, 'entfrm', '2020-03-16 22:07:30', NULL, NULL, NULL, NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('41', '参数删除', '38', NULL, 'F', NULL, '#', 'config_del', NULL, '0', 3, '0', NULL, 'entfrm', '2020-03-16 22:07:43', NULL, NULL, NULL, NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('42', '参数查看', '38', NULL, 'F', NULL, '#', 'config_view', NULL, '0', 4, '0', NULL, 'entfrm', '2020-03-16 22:08:06', NULL, NULL, NULL, NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('43', '快捷方式', '1', NULL, 'C', 'shortcut', 'system/shortcut/index', NULL, 'link', '0', 7, '0', NULL, 'entfrm', '2020-03-17 17:53:08', NULL, NULL, NULL, NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('49', '数据监控', '2', NULL, 'C', 'druid', 'monitor/druid/index', NULL, 'druid', '0', 3, '1', NULL, 'entfrm', '2020-03-17 18:08:56', NULL, 'admin', '2022-01-23 10:44:10', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('5', '角色管理', '1', NULL, 'C', 'role', 'system/role/index', '', 'peoples', '0', 2, '0', NULL, NULL, '2020-03-13 19:32:09', NULL, NULL, '2020-03-16 22:11:57', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('52', '日志监控', '2', NULL, 'M', 'log', '#', NULL, 'monitor', '0', 7, '0', NULL, 'entfrm', '2020-03-17 18:12:01', NULL, 'admin', '2020-05-17 16:48:23', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('54', '操作日志', '52', NULL, 'C', 'operLog', 'monitor/operLog/index', NULL, 'log', '0', 2, '0', NULL, 'entfrm', '2020-03-17 18:13:52', NULL, 'entfrm', '2020-03-18 22:31:36', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('6', '用户管理', '1', NULL, 'C', 'user', 'system/user/index', '', 'user', '0', 3, '0', NULL, NULL, '2020-03-13 19:32:30', NULL, NULL, '2020-03-16 22:11:59', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('66', '操作日志删除', '54', NULL, 'F', NULL, '#', 'operLog_del', NULL, '0', 1, '0', NULL, 'entfrm', '2020-03-19 11:52:25', NULL, NULL, NULL, NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('67', '操作日志查看', '54', NULL, 'F', NULL, '#', 'operLog_view', NULL, '0', 2, '0', NULL, 'entfrm', '2020-03-19 11:52:45', NULL, NULL, NULL, NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('68', '操作日志导出', '54', NULL, 'F', NULL, '#', 'operLog_export', NULL, '0', 3, '0', NULL, 'entfrm', '2020-03-19 11:53:09', NULL, NULL, NULL, NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('7', '菜单管理', '1', NULL, 'C', 'menu', 'system/menu/index', '', 'tree-table', '0', 4, '0', NULL, NULL, '2020-03-13 19:33:24', NULL, NULL, '2020-03-16 22:12:01', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('8', '机构新增', '4', NULL, 'F', NULL, '#', 'dept_add', NULL, '0', 1, '0', NULL, NULL, '2020-03-12 20:42:47', NULL, NULL, '2020-03-16 20:42:51', NULL, '0'); |
||||||
|
INSERT INTO `sys_menu` VALUES ('9', '机构修改', '4', NULL, 'F', NULL, '#', 'dept_edit', NULL, '0', 2, '0', NULL, NULL, '2020-03-12 20:42:52', NULL, NULL, '2020-03-16 20:42:56', NULL, '0'); |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for sys_oauth_client_details |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `sys_oauth_client_details`; |
||||||
|
CREATE TABLE `sys_oauth_client_details` ( |
||||||
|
`client_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '客户端ID', |
||||||
|
`resource_ids` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '资源列表', |
||||||
|
`client_secret` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '客户端密钥', |
||||||
|
`scope` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '域', |
||||||
|
`authorized_grant_types` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '认证类型', |
||||||
|
`web_server_redirect_uri` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '重定向地址', |
||||||
|
`authorities` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '角色列表', |
||||||
|
`access_token_validity` int(11) NULL DEFAULT NULL COMMENT 'token 有效期', |
||||||
|
`refresh_token_validity` int(11) NULL DEFAULT NULL COMMENT '刷新令牌有效期', |
||||||
|
`additional_information` varchar(4096) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '令牌扩展字段JSON', |
||||||
|
`autoapprove` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '是否自动放行', |
||||||
|
`create_by_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建id', |
||||||
|
`create_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人', |
||||||
|
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', |
||||||
|
`update_by_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新id', |
||||||
|
`update_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人', |
||||||
|
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', |
||||||
|
PRIMARY KEY (`client_id`) USING BTREE |
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '终端信息表' ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of sys_oauth_client_details |
||||||
|
-- ---------------------------- |
||||||
|
INSERT INTO `sys_oauth_client_details` VALUES ('app', NULL, 'app', 'server', 'app,refresh_token', NULL, NULL, NULL, NULL, NULL, 'true', NULL, NULL, NULL, NULL, NULL, NULL); |
||||||
|
INSERT INTO `sys_oauth_client_details` VALUES ('daemon', NULL, 'daemon', 'server', 'password,refresh_token', NULL, NULL, NULL, NULL, NULL, 'true', NULL, NULL, NULL, NULL, NULL, NULL); |
||||||
|
INSERT INTO `sys_oauth_client_details` VALUES ('kicc', NULL, 'kicc', 'server', 'password,app,refresh_token,authorization_code,client_credentials', 'https://www.baidu.com/', NULL, NULL, NULL, '{\"appName\":\"康来生物\",\"website\":\"https://www.kanglailab.com\"}', 'false', NULL, NULL, NULL, NULL, NULL, NULL); |
||||||
|
INSERT INTO `sys_oauth_client_details` VALUES ('test', NULL, 'test', 'server', 'password,app,refresh_token', NULL, NULL, NULL, NULL, NULL, 'true', NULL, NULL, NULL, NULL, NULL, NULL); |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for sys_oper_log |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `sys_oper_log`; |
||||||
|
CREATE TABLE `sys_oper_log` ( |
||||||
|
`id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '日志编号', |
||||||
|
`type` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '1' COMMENT '日志类型', |
||||||
|
`title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '日志标题', |
||||||
|
`method` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '方法名称', |
||||||
|
`service_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '服务ID', |
||||||
|
`user_agent` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '用户代理', |
||||||
|
`oper_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '操作人员', |
||||||
|
`client_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '终端', |
||||||
|
`oper_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '请求URL', |
||||||
|
`oper_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '主机地址', |
||||||
|
`oper_addr` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '操作地点', |
||||||
|
`oper_param` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '请求参数', |
||||||
|
`status` int(1) NULL DEFAULT 0 COMMENT '操作状态(0正常 1异常)', |
||||||
|
`error_msg` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '错误消息', |
||||||
|
`execute_time` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '执行时间', |
||||||
|
`oper_time` datetime NULL DEFAULT NULL COMMENT '操作时间', |
||||||
|
`create_by_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建id', |
||||||
|
`create_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人', |
||||||
|
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', |
||||||
|
`update_by_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新id', |
||||||
|
`update_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人', |
||||||
|
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', |
||||||
|
PRIMARY KEY (`id`) USING BTREE |
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of sys_oper_log |
||||||
|
-- ---------------------------- |
||||||
|
INSERT INTO `sys_oper_log` VALUES ('1505896326514978817', '0', '登录成功', 'POST', 'kicc', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36', 'admin', 'kicc', '/oauth/token', '127.0.0.1', '127.0.0.1', 'password=%5B123456%5D&code=%5Ba8bg%5D&grant_type=%5Bpassword%5D&scope=%5Bserver%5D&realKey=%5Bfb45a6b19c6fd3e7a0d75bb59c4bfb98%5D&username=%5Badmin%5D', 0, NULL, '2毫秒', '2022-03-21 21:17:15', '1', 'admin', '2022-03-21 21:17:17', '1', 'admin', NULL); |
||||||
|
INSERT INTO `sys_oper_log` VALUES ('1505897993692098561', '0', '字典删除', 'DELETE', 'kicc', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36', 'admin', 'kicc', '/system/dict/remove/11,12,13,15,16,17,18', '127.0.0.1', '127.0.0.1', '', 0, NULL, '25毫秒', '2022-03-21 21:23:54', '1', 'admin', '2022-03-21 21:23:55', '1', 'admin', NULL); |
||||||
|
INSERT INTO `sys_oper_log` VALUES ('1505898063552425985', '0', '字典删除', 'DELETE', 'kicc', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36', 'admin', 'kicc', '/system/dict/remove/20,21', '127.0.0.1', '127.0.0.1', '', 0, NULL, '3毫秒', '2022-03-21 21:24:11', '1', 'admin', '2022-03-21 21:24:11', '1', 'admin', NULL); |
||||||
|
INSERT INTO `sys_oper_log` VALUES ('1505898080786821121', '0', '字典删除', 'DELETE', 'kicc', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36', 'admin', 'kicc', '/system/dict/remove/7', '127.0.0.1', '127.0.0.1', '', 0, NULL, '3毫秒', '2022-03-21 21:24:15', '1', 'admin', '2022-03-21 21:24:15', '1', 'admin', NULL); |
||||||
|
INSERT INTO `sys_oper_log` VALUES ('1505902151899918338', '0', '角色新增', 'POST', 'kicc', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36', 'admin', 'kicc', '/system/role/save', '127.0.0.1', '127.0.0.1', '', 0, NULL, '12毫秒', '2022-03-21 21:40:25', '1', 'admin', '2022-03-21 21:40:26', '1', 'admin', NULL); |
||||||
|
INSERT INTO `sys_oper_log` VALUES ('1505902332351459330', '0', '退出成功', 'DELETE', 'kicc', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36', 'admin', 'kicc', '/token/logout', '127.0.0.1', '127.0.0.1', 'Bearer 84424c14-708b-4159-a9ff-886aca9a934b', 0, NULL, '0毫秒', '2022-03-21 21:41:08', '1', 'admin', '2022-03-21 21:41:09', '1', 'admin', NULL); |
||||||
|
INSERT INTO `sys_oper_log` VALUES ('1505902357383065602', '0', '登录成功', 'POST', 'kicc', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36', 'admin', 'kicc', '/oauth/token', '127.0.0.1', '127.0.0.1', 'password=%5B123456%5D&code=%5Buaw3%5D&grant_type=%5Bpassword%5D&scope=%5Bserver%5D&realKey=%5Be515f6bf162cb6cc28d48e2c6d831639%5D&username=%5Badmin%5D', 0, NULL, '0毫秒', '2022-03-21 21:41:14', '1', 'admin', '2022-03-21 21:41:15', '1', 'admin', NULL); |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for sys_role |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `sys_role`; |
||||||
|
CREATE TABLE `sys_role` ( |
||||||
|
`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, |
||||||
|
`name` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '角色名称', |
||||||
|
`code` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '角色代码', |
||||||
|
`data_scope` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '2' COMMENT '数据权限范围', |
||||||
|
`sort` int(11) NULL DEFAULT NULL COMMENT '排序', |
||||||
|
`status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '状态', |
||||||
|
`create_by_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建id', |
||||||
|
`create_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建者', |
||||||
|
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', |
||||||
|
`update_by_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修改id', |
||||||
|
`update_by_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改人', |
||||||
|
`update_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', |
||||||
|
`remarks` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注', |
||||||
|
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '0' COMMENT '删除标识(0-正常,1-删除)', |
||||||
|
PRIMARY KEY (`id`) USING BTREE |
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of sys_role |
||||||
|
-- ---------------------------- |
||||||
|
INSERT INTO `sys_role` VALUES ('1', '管理员', 'admin', '1', 1, '0', NULL, NULL, '2020-03-13 20:54:34', '1', 'entfrm', '2020-08-02 21:44:58', NULL, '0'); |
||||||
|
INSERT INTO `sys_role` VALUES ('1505902151883141121', '省长角色', 'scjs', '2', 0, '0', '1', 'admin', '2022-03-21 21:40:26', NULL, NULL, NULL, NULL, '0'); |
||||||
|
INSERT INTO `sys_role` VALUES ('2', '测试角色', 'test', '2', 1, '0', NULL, NULL, '2020-03-14 18:15:51', NULL, 'entfrm', '2020-08-02 21:44:57', NULL, '0'); |
||||||
|
INSERT INTO `sys_role` VALUES ('3', 'cs', 'cs', '2', 0, '0', NULL, NULL, '2022-03-10 16:53:08', NULL, 'admin', '2022-03-10 16:53:12', NULL, '1'); |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for sys_role_dept |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `sys_role_dept`; |
||||||
|
CREATE TABLE `sys_role_dept` ( |
||||||
|
`role_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色ID', |
||||||
|
`dept_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '部门ID' |
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of sys_role_dept |
||||||
|
-- ---------------------------- |
||||||
|
INSERT INTO `sys_role_dept` VALUES ('2', '2'); |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for sys_role_menu |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `sys_role_menu`; |
||||||
|
CREATE TABLE `sys_role_menu` ( |
||||||
|
`role_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, |
||||||
|
`menu_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL |
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of sys_role_menu |
||||||
|
-- ---------------------------- |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('2', '11'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('2', '16'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('2', '7'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('2', '25'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('2', '26'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('2', '27'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('2', '28'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('2', '33'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('2', '1'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('2', '4'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('2', '5'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('2', '29'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '4'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '8'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '9'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '10'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '11'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '5'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '13'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '14'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '15'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '16'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '17'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '6'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '18'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '19'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '20'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '21'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '22'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '7'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '25'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '26'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '27'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '28'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '29'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '30'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '31'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '32'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '33'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '34'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '35'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '36'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '37'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '38'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '39'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '40'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '41'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '42'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '43'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '105'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '106'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '107'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '108'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '2'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '52'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '54'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '66'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '67'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '68'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '236'); |
||||||
|
INSERT INTO `sys_role_menu` VALUES ('1', '1'); |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for sys_shortcut |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `sys_shortcut`; |
||||||
|
CREATE TABLE `sys_shortcut` ( |
||||||
|
`id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, |
||||||
|
`name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '名称', |
||||||
|
`region` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '区域', |
||||||
|
`icon` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图标', |
||||||
|
`bg_color` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '#409EFF' COMMENT '背景颜色', |
||||||
|
`path` varchar(120) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '路径', |
||||||
|
`sort` int(11) NULL DEFAULT NULL COMMENT '顺序', |
||||||
|
`create_by_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建id', |
||||||
|
`create_by_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建者', |
||||||
|
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', |
||||||
|
`update_by_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新id', |
||||||
|
`update_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', |
||||||
|
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', |
||||||
|
`remarks` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', |
||||||
|
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '0' COMMENT '0-正常,1-删除', |
||||||
|
PRIMARY KEY (`id`) USING BTREE |
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of sys_shortcut |
||||||
|
-- ---------------------------- |
||||||
|
INSERT INTO `sys_shortcut` VALUES ('1', '登录日志', '2', 'form', '#2883CD', 'monitor/log/loginLog', 1, NULL, NULL, '2020-03-27 10:09:11', NULL, '', '2020-03-27 10:12:39', '1', '0'); |
||||||
|
INSERT INTO `sys_shortcut` VALUES ('2', '内容管理', '2', 'edit', '#EB7024', '/cms/article', 2, NULL, NULL, '2020-04-15 22:44:58', NULL, '', '2020-06-02 08:59:06', NULL, '0'); |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for sys_user |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `sys_user`; |
||||||
|
CREATE TABLE `sys_user` ( |
||||||
|
`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, |
||||||
|
`user_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户账号', |
||||||
|
`nick_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户昵称', |
||||||
|
`type` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '00' COMMENT '用户类型(00系统用户)', |
||||||
|
`password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '密码', |
||||||
|
`dept_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '机构ID', |
||||||
|
`dept_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '机构名称', |
||||||
|
`email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '用户邮箱', |
||||||
|
`qq` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'QQ', |
||||||
|
`phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '手机号码', |
||||||
|
`sex` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '用户性别(0男 1女 2未知)', |
||||||
|
`avatar` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '头像地址', |
||||||
|
`status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '帐号状态(0正常 1停用)', |
||||||
|
`login_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '最后登陆IP', |
||||||
|
`login_time` datetime NULL DEFAULT NULL COMMENT '最后登陆时间', |
||||||
|
`create_by_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建id', |
||||||
|
`create_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建者', |
||||||
|
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', |
||||||
|
`update_by_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新id', |
||||||
|
`update_by_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者', |
||||||
|
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', |
||||||
|
`remarks` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', |
||||||
|
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)', |
||||||
|
PRIMARY KEY (`id`) USING BTREE |
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户信息表' ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of sys_user |
||||||
|
-- ---------------------------- |
||||||
|
INSERT INTO `sys_user` VALUES ('1', 'admin', '管理员', '00', '$2a$10$jvVGvS6QOtD.x3UwuZRSgepL.zKul6NRg2kVnRVDUdeN2FErIQgNy', '1', '康来生物长沙总公司', '111@qq.com', NULL, '15611111111', '0', '', '0', '', NULL, NULL, NULL, '2020-03-13 20:56:44', NULL, '', '2022-02-25 15:20:56', '全栈工程师', '0'); |
||||||
|
INSERT INTO `sys_user` VALUES ('2', 'test', '测试01', '00', '$2a$10$jvVGvS6QOtD.x3UwuZRSgepL.zKul6NRg2kVnRVDUdeN2FErIQgNy', '1', '康来生物长沙总公司', '182@11.com', NULL, '15780454444', '0', '', '0', '', NULL, NULL, NULL, '2020-03-14 18:14:11', NULL, '', '2022-01-15 13:53:59', NULL, '0'); |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for sys_user_role |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `sys_user_role`; |
||||||
|
CREATE TABLE `sys_user_role` ( |
||||||
|
`user_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, |
||||||
|
`role_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL |
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of sys_user_role |
||||||
|
-- ---------------------------- |
||||||
|
INSERT INTO `sys_user_role` VALUES ('4', '2'); |
||||||
|
INSERT INTO `sys_user_role` VALUES ('3', '2'); |
||||||
|
INSERT INTO `sys_user_role` VALUES ('5', '2'); |
||||||
|
INSERT INTO `sys_user_role` VALUES ('8', '2'); |
||||||
|
INSERT INTO `sys_user_role` VALUES ('9', '2'); |
||||||
|
INSERT INTO `sys_user_role` VALUES ('3', '1'); |
||||||
|
INSERT INTO `sys_user_role` VALUES ('4', '1'); |
||||||
|
INSERT INTO `sys_user_role` VALUES ('5', '1'); |
||||||
|
INSERT INTO `sys_user_role` VALUES ('6', '1'); |
||||||
|
INSERT INTO `sys_user_role` VALUES ('7', '1'); |
||||||
|
INSERT INTO `sys_user_role` VALUES ('8', '1'); |
||||||
|
INSERT INTO `sys_user_role` VALUES ('9', '1'); |
||||||
|
INSERT INTO `sys_user_role` VALUES ('10', '1'); |
||||||
|
INSERT INTO `sys_user_role` VALUES ('2', '1'); |
||||||
|
INSERT INTO `sys_user_role` VALUES ('1', '1'); |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for undo_log |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `undo_log`; |
||||||
|
CREATE TABLE `undo_log` ( |
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT, |
||||||
|
`branch_id` bigint(20) NOT NULL, |
||||||
|
`xid` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, |
||||||
|
`context` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, |
||||||
|
`rollback_info` longblob NOT NULL, |
||||||
|
`log_status` int(11) NOT NULL, |
||||||
|
`log_created` datetime NOT NULL, |
||||||
|
`log_modified` datetime NOT NULL, |
||||||
|
`ext` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, |
||||||
|
PRIMARY KEY (`id`) USING BTREE, |
||||||
|
UNIQUE INDEX `ux_undo_log`(`xid`, `branch_id`) USING BTREE |
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of undo_log |
||||||
|
-- ---------------------------- |
||||||
|
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1; |
||||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,209 @@ |
|||||||
|
/* |
||||||
|
Navicat Premium Data Transfer |
||||||
|
|
||||||
|
Source Server : 本地 |
||||||
|
Source Server Type : MySQL |
||||||
|
Source Server Version : 50732 |
||||||
|
Source Host : localhost:3306 |
||||||
|
Source Schema : kicc_job |
||||||
|
|
||||||
|
Target Server Type : MySQL |
||||||
|
Target Server Version : 50732 |
||||||
|
File Encoding : 65001 |
||||||
|
|
||||||
|
Date: 21/03/2022 21:50:01 |
||||||
|
*/ |
||||||
|
|
||||||
|
SET NAMES utf8mb4; |
||||||
|
SET FOREIGN_KEY_CHECKS = 0; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for xxl_job_group |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `xxl_job_group`; |
||||||
|
CREATE TABLE `xxl_job_group` ( |
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT, |
||||||
|
`app_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '执行器AppName', |
||||||
|
`title` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '执行器名称', |
||||||
|
`address_type` tinyint(4) NOT NULL DEFAULT 0 COMMENT '执行器地址类型:0=自动注册、1=手动录入', |
||||||
|
`address_list` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '执行器地址列表,多地址逗号分隔', |
||||||
|
`update_time` datetime NULL DEFAULT NULL, |
||||||
|
PRIMARY KEY (`id`) USING BTREE |
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of xxl_job_group |
||||||
|
-- ---------------------------- |
||||||
|
INSERT INTO `xxl_job_group` VALUES (1, 'xxl-job-executor-sample', '示例执行器', 0, NULL, '2022-03-13 16:10:40'); |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for xxl_job_info |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `xxl_job_info`; |
||||||
|
CREATE TABLE `xxl_job_info` ( |
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT, |
||||||
|
`job_group` int(11) NOT NULL COMMENT '执行器主键ID', |
||||||
|
`job_desc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, |
||||||
|
`add_time` datetime NULL DEFAULT NULL, |
||||||
|
`update_time` datetime NULL DEFAULT NULL, |
||||||
|
`author` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '作者', |
||||||
|
`alarm_email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '报警邮件', |
||||||
|
`schedule_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'NONE' COMMENT '调度类型', |
||||||
|
`schedule_conf` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '调度配置,值含义取决于调度类型', |
||||||
|
`misfire_strategy` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'DO_NOTHING' COMMENT '调度过期策略', |
||||||
|
`executor_route_strategy` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '执行器路由策略', |
||||||
|
`executor_handler` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '执行器任务handler', |
||||||
|
`executor_param` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '执行器任务参数', |
||||||
|
`executor_block_strategy` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '阻塞处理策略', |
||||||
|
`executor_timeout` int(11) NOT NULL DEFAULT 0 COMMENT '任务执行超时时间,单位秒', |
||||||
|
`executor_fail_retry_count` int(11) NOT NULL DEFAULT 0 COMMENT '失败重试次数', |
||||||
|
`glue_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'GLUE类型', |
||||||
|
`glue_source` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'GLUE源代码', |
||||||
|
`glue_remark` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'GLUE备注', |
||||||
|
`glue_updatetime` datetime NULL DEFAULT NULL COMMENT 'GLUE更新时间', |
||||||
|
`child_jobid` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '子任务ID,多个逗号分隔', |
||||||
|
`trigger_status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '调度状态:0-停止,1-运行', |
||||||
|
`trigger_last_time` bigint(13) NOT NULL DEFAULT 0 COMMENT '上次调度时间', |
||||||
|
`trigger_next_time` bigint(13) NOT NULL DEFAULT 0 COMMENT '下次调度时间', |
||||||
|
PRIMARY KEY (`id`) USING BTREE |
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of xxl_job_info |
||||||
|
-- ---------------------------- |
||||||
|
INSERT INTO `xxl_job_info` VALUES (1, 1, '测试任务1', '2018-11-03 22:21:31', '2018-11-03 22:21:31', 'XXL', '', 'CRON', '0 0 0 * * ? *', 'DO_NOTHING', 'FIRST', 'demoJobHandler', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2018-11-03 22:21:31', '', 0, 0, 0); |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for xxl_job_lock |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `xxl_job_lock`; |
||||||
|
CREATE TABLE `xxl_job_lock` ( |
||||||
|
`lock_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '锁名称', |
||||||
|
PRIMARY KEY (`lock_name`) USING BTREE |
||||||
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of xxl_job_lock |
||||||
|
-- ---------------------------- |
||||||
|
INSERT INTO `xxl_job_lock` VALUES ('schedule_lock'); |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for xxl_job_log |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `xxl_job_log`; |
||||||
|
CREATE TABLE `xxl_job_log` ( |
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT, |
||||||
|
`job_group` int(11) NOT NULL COMMENT '执行器主键ID', |
||||||
|
`job_id` int(11) NOT NULL COMMENT '任务,主键ID', |
||||||
|
`executor_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '执行器地址,本次执行的地址', |
||||||
|
`executor_handler` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '执行器任务handler', |
||||||
|
`executor_param` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '执行器任务参数', |
||||||
|
`executor_sharding_param` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '执行器任务分片参数,格式如 1/2', |
||||||
|
`executor_fail_retry_count` int(11) NOT NULL DEFAULT 0 COMMENT '失败重试次数', |
||||||
|
`trigger_time` datetime NULL DEFAULT NULL COMMENT '调度-时间', |
||||||
|
`trigger_code` int(11) NOT NULL COMMENT '调度-结果', |
||||||
|
`trigger_msg` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '调度-日志', |
||||||
|
`handle_time` datetime NULL DEFAULT NULL COMMENT '执行-时间', |
||||||
|
`handle_code` int(11) NOT NULL COMMENT '执行-状态', |
||||||
|
`handle_msg` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '执行-日志', |
||||||
|
`alarm_status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '告警状态:0-默认、1-无需告警、2-告警成功、3-告警失败', |
||||||
|
PRIMARY KEY (`id`) USING BTREE, |
||||||
|
INDEX `I_trigger_time`(`trigger_time`) USING BTREE, |
||||||
|
INDEX `I_handle_code`(`handle_code`) USING BTREE |
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of xxl_job_log |
||||||
|
-- ---------------------------- |
||||||
|
INSERT INTO `xxl_job_log` VALUES (1, 1, 1, NULL, 'demoJobHandler', '', NULL, 0, '2022-02-17 22:43:28', 500, '任务触发类型:手动触发<br>调度机器:192.168.3.126<br>执行器-注册方式:自动注册<br>执行器-地址列表:null<br>路由策略:第一个<br>阻塞处理策略:单机串行<br>任务超时时间:0<br>失败重试次数:0<br><br><span style=\"color:#00c0ef;\" > >>>>>>>>>>>触发调度<<<<<<<<<<< </span><br>调度失败:执行器地址为空<br><br>', NULL, 0, NULL, 1); |
||||||
|
INSERT INTO `xxl_job_log` VALUES (2, 1, 1, NULL, 'demoJobHandler', '', NULL, 0, '2022-03-01 22:40:54', 500, '任务触发类型:手动触发<br>调度机器:172.28.0.6<br>执行器-注册方式:自动注册<br>执行器-地址列表:null<br>路由策略:第一个<br>阻塞处理策略:单机串行<br>任务超时时间:0<br>失败重试次数:0<br><br><span style=\"color:#00c0ef;\" > >>>>>>>>>>>触发调度<<<<<<<<<<< </span><br>调度失败:执行器地址为空<br><br>', NULL, 0, NULL, 1); |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for xxl_job_log_report |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `xxl_job_log_report`; |
||||||
|
CREATE TABLE `xxl_job_log_report` ( |
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT, |
||||||
|
`trigger_day` datetime NULL DEFAULT NULL COMMENT '调度-时间', |
||||||
|
`running_count` int(11) NOT NULL DEFAULT 0 COMMENT '运行中-日志数量', |
||||||
|
`suc_count` int(11) NOT NULL DEFAULT 0 COMMENT '执行成功-日志数量', |
||||||
|
`fail_count` int(11) NOT NULL DEFAULT 0 COMMENT '执行失败-日志数量', |
||||||
|
`update_time` datetime NULL DEFAULT NULL, |
||||||
|
PRIMARY KEY (`id`) USING BTREE, |
||||||
|
UNIQUE INDEX `i_trigger_day`(`trigger_day`) USING BTREE |
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of xxl_job_log_report |
||||||
|
-- ---------------------------- |
||||||
|
INSERT INTO `xxl_job_log_report` VALUES (1, '2022-02-17 00:00:00', 0, 0, 1, NULL); |
||||||
|
INSERT INTO `xxl_job_log_report` VALUES (2, '2022-02-16 00:00:00', 0, 0, 0, NULL); |
||||||
|
INSERT INTO `xxl_job_log_report` VALUES (3, '2022-02-15 00:00:00', 0, 0, 0, NULL); |
||||||
|
INSERT INTO `xxl_job_log_report` VALUES (4, '2022-02-18 00:00:00', 0, 0, 0, NULL); |
||||||
|
INSERT INTO `xxl_job_log_report` VALUES (5, '2022-03-01 00:00:00', 0, 0, 1, NULL); |
||||||
|
INSERT INTO `xxl_job_log_report` VALUES (6, '2022-02-28 00:00:00', 0, 0, 0, NULL); |
||||||
|
INSERT INTO `xxl_job_log_report` VALUES (7, '2022-02-27 00:00:00', 0, 0, 0, NULL); |
||||||
|
INSERT INTO `xxl_job_log_report` VALUES (8, '2022-03-02 00:00:00', 0, 0, 0, NULL); |
||||||
|
INSERT INTO `xxl_job_log_report` VALUES (9, '2022-03-03 00:00:00', 0, 0, 0, NULL); |
||||||
|
INSERT INTO `xxl_job_log_report` VALUES (10, '2022-03-12 00:00:00', 0, 0, 0, NULL); |
||||||
|
INSERT INTO `xxl_job_log_report` VALUES (11, '2022-03-11 00:00:00', 0, 0, 0, NULL); |
||||||
|
INSERT INTO `xxl_job_log_report` VALUES (12, '2022-03-10 00:00:00', 0, 0, 0, NULL); |
||||||
|
INSERT INTO `xxl_job_log_report` VALUES (13, '2022-03-13 00:00:00', 0, 0, 0, NULL); |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for xxl_job_logglue |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `xxl_job_logglue`; |
||||||
|
CREATE TABLE `xxl_job_logglue` ( |
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT, |
||||||
|
`job_id` int(11) NOT NULL COMMENT '任务,主键ID', |
||||||
|
`glue_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'GLUE类型', |
||||||
|
`glue_source` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'GLUE源代码', |
||||||
|
`glue_remark` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'GLUE备注', |
||||||
|
`add_time` datetime NULL DEFAULT NULL, |
||||||
|
`update_time` datetime NULL DEFAULT NULL, |
||||||
|
PRIMARY KEY (`id`) USING BTREE |
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of xxl_job_logglue |
||||||
|
-- ---------------------------- |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for xxl_job_registry |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `xxl_job_registry`; |
||||||
|
CREATE TABLE `xxl_job_registry` ( |
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT, |
||||||
|
`registry_group` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, |
||||||
|
`registry_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, |
||||||
|
`registry_value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, |
||||||
|
`update_time` datetime NULL DEFAULT NULL, |
||||||
|
PRIMARY KEY (`id`) USING BTREE, |
||||||
|
INDEX `i_g_k_v`(`registry_group`, `registry_key`, `registry_value`) USING BTREE |
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of xxl_job_registry |
||||||
|
-- ---------------------------- |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Table structure for xxl_job_user |
||||||
|
-- ---------------------------- |
||||||
|
DROP TABLE IF EXISTS `xxl_job_user`; |
||||||
|
CREATE TABLE `xxl_job_user` ( |
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT, |
||||||
|
`username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '账号', |
||||||
|
`password` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '密码', |
||||||
|
`role` tinyint(4) NOT NULL COMMENT '角色:0-普通用户、1-管理员', |
||||||
|
`permission` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '权限:执行器ID列表,多个逗号分割', |
||||||
|
PRIMARY KEY (`id`) USING BTREE, |
||||||
|
UNIQUE INDEX `i_username`(`username`) USING BTREE |
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; |
||||||
|
|
||||||
|
-- ---------------------------- |
||||||
|
-- Records of xxl_job_user |
||||||
|
-- ---------------------------- |
||||||
|
INSERT INTO `xxl_job_user` VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL); |
||||||
|
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1; |
||||||
@ -0,0 +1,101 @@ |
|||||||
|
# PROJECT: 康来生物有限公司kicc(智慧冷链)分布式架构平台 |
||||||
|
# VERSION: 1.0.0 |
||||||
|
# Author: 康来生物科技有限公司-王翔 |
||||||
|
|
||||||
|
# https://support.websoft9.com/docs/docker/zh/solution-compose.html#command |
||||||
|
version: '3' |
||||||
|
services: |
||||||
|
# register配置 |
||||||
|
kicc-register: |
||||||
|
build: |
||||||
|
context: ../kicc-register |
||||||
|
restart: always |
||||||
|
container_name: kicc-register |
||||||
|
hostname: kicc-register |
||||||
|
image: kicc-register |
||||||
|
ports: |
||||||
|
- 8848:8848 |
||||||
|
# 服务端口,注意通过阅读官方文档,发现nacos2.x使用docker部署时一定要保持映射端口一致 |
||||||
|
# 不一样会出现本地服务访问不了服务端nacos: https://nacos.io/zh-cn/docs/2.0.0-compatibility.html |
||||||
|
# 经过测试使用docker部署时候,还需要开启对应供应商服务器的防火墙端口,不开第三方外部客户端连不上,会报错 |
||||||
|
- 9848:9848 |
||||||
|
- 9849:9849 |
||||||
|
|
||||||
|
# rocketmq-dashboard配置 |
||||||
|
kicc-rocketmq: |
||||||
|
build: |
||||||
|
context: ../kicc-visual/kicc-rocketmq-dashboard |
||||||
|
container_name: kicc-rocketmq |
||||||
|
image: kicc-rocketmq-dashboard |
||||||
|
hostname: kicc-rocketmq |
||||||
|
restart: always |
||||||
|
ports: |
||||||
|
- 8058:8058 |
||||||
|
|
||||||
|
# sentinel-dashboard配置 |
||||||
|
kicc-sentinel: |
||||||
|
build: |
||||||
|
context: ../kicc-visual/kicc-sentinel-dashboard |
||||||
|
container_name: kicc-sentinel |
||||||
|
image: kicc-sentinel-dashboard |
||||||
|
hostname: kicc-sentinel |
||||||
|
restart: always |
||||||
|
ports: |
||||||
|
- 8056:8056 |
||||||
|
|
||||||
|
# xxl-job-admin配置 |
||||||
|
kicc-job: |
||||||
|
build: |
||||||
|
context: ../kicc-visual/kicc-xxl-job-admin |
||||||
|
container_name: kicc-job |
||||||
|
image: kicc-xxl-job-admin |
||||||
|
hostname: kicc-job |
||||||
|
restart: always |
||||||
|
ports: |
||||||
|
- 8057:8057 |
||||||
|
|
||||||
|
# spring-admin配置 |
||||||
|
kicc-monitor: |
||||||
|
build: |
||||||
|
context: ../kicc-visual/kicc-monitor |
||||||
|
container_name: kicc-monitor |
||||||
|
restart: always |
||||||
|
image: kicc-monitor |
||||||
|
hostname: kicc-monitor |
||||||
|
ports: |
||||||
|
- 8061:8061 |
||||||
|
|
||||||
|
# gateway配置 |
||||||
|
kicc-gateway: |
||||||
|
build: |
||||||
|
context: ../kicc-gateway |
||||||
|
container_name: kicc-gateway |
||||||
|
environment: |
||||||
|
GATEWAY_HOST: 120.26.168.56 |
||||||
|
image: kicc-gateway |
||||||
|
hostname: kicc-gateway |
||||||
|
restart: always |
||||||
|
ports: |
||||||
|
- 9999:9999 |
||||||
|
|
||||||
|
# oauth2.0配置 |
||||||
|
kicc-auth: |
||||||
|
build: |
||||||
|
context: ../kicc-auth |
||||||
|
container_name: kicc-auth |
||||||
|
image: kicc-auth |
||||||
|
hostname: kicc-auth |
||||||
|
restart: always |
||||||
|
ports: |
||||||
|
- 3000:3000 |
||||||
|
|
||||||
|
# system-biz配置 |
||||||
|
kicc-system: |
||||||
|
build: |
||||||
|
context: ../kicc-system/kicc-system-biz |
||||||
|
container_name: kicc-system |
||||||
|
image: kicc-system-biz |
||||||
|
hostname: kicc-system |
||||||
|
restart: always |
||||||
|
ports: |
||||||
|
- 4000:4000 |
||||||
@ -0,0 +1,32 @@ |
|||||||
|
# PROJECT: 康来生物有限公司kicc(智慧冷链)分布式架构平台 |
||||||
|
# VERSION: 1.0.0 |
||||||
|
# Author: 康来生物科技有限公司-王翔 |
||||||
|
|
||||||
|
# 更多信息请参考官网:https://docs.gitea.io/en-us/install-with-docker/ |
||||||
|
version: "3" |
||||||
|
services: |
||||||
|
|
||||||
|
# git私有库,公司代码管理服务器 |
||||||
|
gitea-server: |
||||||
|
image: gitea/gitea:1.16.3 |
||||||
|
container_name: gitea-server |
||||||
|
environment: |
||||||
|
- GITEA__database__DB_TYPE=mysql |
||||||
|
- GITEA__database__HOST=120.26.168.56:8052 |
||||||
|
- GITEA__database__NAME=gitea |
||||||
|
- GITEA__database__USER=root |
||||||
|
- GITEA__database__PASSWD=kanglai@2022 |
||||||
|
hostname: gitea-server |
||||||
|
restart: always |
||||||
|
volumes: |
||||||
|
- gitea:/data |
||||||
|
- /usr/software/dockerDatabase/gitea/timezone:/etc/timezone:ro |
||||||
|
- /usr/software/dockerDatabase/gitea/localtime:/etc/localtime:ro |
||||||
|
ports: |
||||||
|
- 8066:3000 |
||||||
|
- 8065:22 |
||||||
|
|
||||||
|
# 配置卷 |
||||||
|
volumes: |
||||||
|
gitea: |
||||||
|
driver: local |
||||||
@ -0,0 +1,23 @@ |
|||||||
|
# PROJECT: 康来生物有限公司kicc(智慧冷链)分布式架构平台 |
||||||
|
# VERSION: 1.0.0 |
||||||
|
# Author: 康来生物科技有限公司-王翔 |
||||||
|
|
||||||
|
# 更多信息请参考官网:https://docs.gitea.io/en-us/install-with-docker/ |
||||||
|
version: "3" |
||||||
|
services: |
||||||
|
|
||||||
|
#团队项目生命周期管理工具 |
||||||
|
jira: |
||||||
|
build: |
||||||
|
context: ./image |
||||||
|
container_name: jira |
||||||
|
image: jira |
||||||
|
hostname: jira |
||||||
|
restart: always |
||||||
|
ports: |
||||||
|
- 9300:8080 |
||||||
|
volumes: |
||||||
|
- /usr/software/dockerDatabase/jira/data:/var/atlassian/jira |
||||||
|
- /usr/software/dockerDatabase/jira/logs:/opt/atlassian/jira/logs |
||||||
|
- /usr/share/zoneinfo/Asia/Shanghai:/usr/share/zoneinfo/Asia/Shanghai |
||||||
|
- /etc/localtime:/etc/localtime |
||||||
@ -0,0 +1,10 @@ |
|||||||
|
FROM cptactionhank/atlassian-jira-software:latest |
||||||
|
|
||||||
|
USER root |
||||||
|
|
||||||
|
# 将代理破解包加入容器 |
||||||
|
COPY "./lib/atlassian-agent.jar" /opt/atlassian/jira/ |
||||||
|
|
||||||
|
# 设置启动加载代理包 |
||||||
|
RUN echo 'export CATALINA_OPTS="-javaagent:/opt/atlassian/jira/atlassian-agent.jar ${CATALINA_OPTS}"' >> /opt/atlassian/jira/bin/setenv.sh |
||||||
|
|
||||||
@ -0,0 +1,5 @@ |
|||||||
|
|
||||||
|
```bash |
||||||
|
# atlassian-agent.jar证书生成命令 |
||||||
|
java -jar atlassian-agent.jar -p jira -m 1827945911@qq.com -n wangxiang -o wangxiang -s 更换自己的服务器ID |
||||||
|
``` |
||||||
Binary file not shown.
@ -0,0 +1,32 @@ |
|||||||
|
# PROJECT: 康来生物有限公司kicc(智慧冷链)分布式架构平台 |
||||||
|
# VERSION: 1.0.0 |
||||||
|
# Author: 康来生物科技有限公司-王翔 |
||||||
|
|
||||||
|
# https://support.websoft9.com/docs/docker/zh/solution-compose.html#command |
||||||
|
version: '3' |
||||||
|
services: |
||||||
|
# mysql 服务器 |
||||||
|
mysql: |
||||||
|
image: mysql:5.7.32 |
||||||
|
container_name: mysql |
||||||
|
hostname: mysql |
||||||
|
environment: |
||||||
|
TZ: Asia/Shanghai |
||||||
|
MYSQL_ROOT_PASSWORD: kanglai@2022 |
||||||
|
command: |
||||||
|
--character-set-server=utf8mb4 |
||||||
|
--collation-server=utf8mb4_general_ci |
||||||
|
--explicit_defaults_for_timestamp=true |
||||||
|
--lower_case_table_names=1 |
||||||
|
--max_allowed_packet=128M |
||||||
|
volumes: |
||||||
|
- mysql:/var/lib/mysql |
||||||
|
- /usr/software/dockerDatabase/mysql/my.cnf:/etc/my.cnf |
||||||
|
restart: always |
||||||
|
ports: |
||||||
|
- 8052:3306 |
||||||
|
|
||||||
|
# 配置卷 |
||||||
|
volumes: |
||||||
|
mysql: |
||||||
|
driver: local |
||||||
@ -0,0 +1,24 @@ |
|||||||
|
# PROJECT: 康来生物有限公司kicc(智慧冷链)分布式架构平台 |
||||||
|
# VERSION: 1.0.0 |
||||||
|
# Author: 康来生物科技有限公司-王翔 |
||||||
|
|
||||||
|
# https://support.websoft9.com/docs/docker/zh/solution-compose.html#command |
||||||
|
version: '3' |
||||||
|
services: |
||||||
|
|
||||||
|
# docker管理面板,已经中文汉化 |
||||||
|
portainer: |
||||||
|
image: 6053537/portainer-ce |
||||||
|
container_name: portainer |
||||||
|
hostname: portainer |
||||||
|
volumes: |
||||||
|
- portainer_data:/data |
||||||
|
- /usr/software/dockerDatabase/portainer/docker.sock:/var/run/docker.sock |
||||||
|
restart: always |
||||||
|
ports: |
||||||
|
- 8051:9000 |
||||||
|
|
||||||
|
# 配置卷 |
||||||
|
volumes: |
||||||
|
portainer_data: |
||||||
|
driver: local |
||||||
@ -0,0 +1,24 @@ |
|||||||
|
# PROJECT: 康来生物有限公司kicc(智慧冷链)分布式架构平台 |
||||||
|
# VERSION: 1.0.0 |
||||||
|
# Author: 康来生物科技有限公司-王翔 |
||||||
|
|
||||||
|
# https://support.websoft9.com/docs/docker/zh/solution-compose.html#command |
||||||
|
version: '3' |
||||||
|
services: |
||||||
|
|
||||||
|
# redis服务器 |
||||||
|
redis: |
||||||
|
image: redis:6.2.6 |
||||||
|
container_name: redis |
||||||
|
hostname: redis |
||||||
|
restart: always |
||||||
|
ports: |
||||||
|
- 6379:6379 |
||||||
|
volumes: |
||||||
|
- redis:/data |
||||||
|
- /usr/software/dockerDatabase/redis/redis.conf:/usr/local/etc/redis/redis.conf |
||||||
|
|
||||||
|
# 配置卷 |
||||||
|
volumes: |
||||||
|
redis: |
||||||
|
driver: local |
||||||
@ -0,0 +1,96 @@ |
|||||||
|
# Licensed to the Apache Software Foundation (ASF) under one or more |
||||||
|
# contributor license agreements. See the NOTICE file distributed with |
||||||
|
# this work for additional information regarding copyright ownership. |
||||||
|
# The ASF licenses this file to You under the Apache License, Version 2.0 |
||||||
|
# (the "License"); you may not use this file except in compliance with |
||||||
|
# the License. You may obtain a copy of the License at |
||||||
|
# |
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0 |
||||||
|
# |
||||||
|
# Unless required by applicable law or agreed to in writing, software |
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
# See the License for the specific language governing permissions and |
||||||
|
# limitations under the License. |
||||||
|
|
||||||
|
|
||||||
|
# 所属集群名字 |
||||||
|
brokerClusterName=DefaultCluster |
||||||
|
|
||||||
|
# broker 名字,注意此处不同的配置文件填写的不一样,如果在 broker-a.properties 使用: broker-a, |
||||||
|
# 在 broker-b.properties 使用: broker-b |
||||||
|
brokerName=broker-a |
||||||
|
|
||||||
|
# 0 表示 Master,> 0 表示 Slave |
||||||
|
brokerId=0 |
||||||
|
|
||||||
|
# nameServer地址,分号分割 |
||||||
|
# namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876 |
||||||
|
|
||||||
|
# 启动IP,如果 docker 报 com.alibaba.rocketmq.remoting.exception.RemotingConnectException: connect to <192.168.0.120:10909> failed |
||||||
|
# 解决方式1 加上一句 producer.setVipChannelEnabled(false);,解决方式2 brokerIP1 设置宿主机IP,不要使用docker 内部IP |
||||||
|
brokerIP1=120.26.168.56 |
||||||
|
|
||||||
|
# 在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 |
||||||
|
defaultTopicQueueNums=4 |
||||||
|
|
||||||
|
# 是否允许 Broker 自动创建 Topic,建议线下开启,线上关闭 !!!这里仔细看是 false,false,false |
||||||
|
autoCreateTopicEnable=true |
||||||
|
|
||||||
|
# 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 |
||||||
|
autoCreateSubscriptionGroup=true |
||||||
|
|
||||||
|
# Broker 对外服务的监听端口 |
||||||
|
listenPort=10911 |
||||||
|
|
||||||
|
# 删除文件时间点,默认凌晨4点 |
||||||
|
deleteWhen=04 |
||||||
|
|
||||||
|
# 文件保留时间,默认48小时 |
||||||
|
fileReservedTime=120 |
||||||
|
|
||||||
|
# commitLog 每个文件的大小默认1G |
||||||
|
mapedFileSizeCommitLog=1073741824 |
||||||
|
|
||||||
|
# ConsumeQueue 每个文件默认存 30W 条,根据业务情况调整 |
||||||
|
mapedFileSizeConsumeQueue=300000 |
||||||
|
|
||||||
|
# destroyMapedFileIntervalForcibly=120000 |
||||||
|
# redeleteHangedFileInterval=120000 |
||||||
|
# 检测物理文件磁盘空间 |
||||||
|
diskMaxUsedSpaceRatio=88 |
||||||
|
# 存储路径 |
||||||
|
# storePathRootDir=/home/ztztdata/rocketmq-all-4.1.0-incubating/store |
||||||
|
# commitLog 存储路径 |
||||||
|
# storePathCommitLog=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/commitlog |
||||||
|
# 消费队列存储 |
||||||
|
# storePathConsumeQueue=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/consumequeue |
||||||
|
# 消息索引存储路径 |
||||||
|
# storePathIndex=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/index |
||||||
|
# checkpoint 文件存储路径 |
||||||
|
# storeCheckpoint=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/checkpoint |
||||||
|
# abort 文件存储路径 |
||||||
|
# abortFile=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/abort |
||||||
|
# 限制的消息大小 |
||||||
|
maxMessageSize=65536 |
||||||
|
|
||||||
|
# flushCommitLogLeastPages=4 |
||||||
|
# flushConsumeQueueLeastPages=2 |
||||||
|
# flushCommitLogThoroughInterval=10000 |
||||||
|
# flushConsumeQueueThoroughInterval=60000 |
||||||
|
|
||||||
|
# Broker 的角色 |
||||||
|
# - ASYNC_MASTER 异步复制Master |
||||||
|
# - SYNC_MASTER 同步双写Master |
||||||
|
# - SLAVE |
||||||
|
brokerRole=ASYNC_MASTER |
||||||
|
|
||||||
|
# 刷盘方式 |
||||||
|
# - ASYNC_FLUSH 异步刷盘 |
||||||
|
# - SYNC_FLUSH 同步刷盘 |
||||||
|
flushDiskType=ASYNC_FLUSH |
||||||
|
|
||||||
|
# 发消息线程池数量 |
||||||
|
# sendMessageThreadPoolNums=128 |
||||||
|
# 拉消息线程池数量 |
||||||
|
# pullMessageThreadPoolNums=128 |
||||||
@ -0,0 +1,50 @@ |
|||||||
|
# PROJECT: 康来生物有限公司kicc(智慧冷链)分布式架构平台 |
||||||
|
# VERSION: 1.0.0 |
||||||
|
# Author: 康来生物科技有限公司-王翔 |
||||||
|
|
||||||
|
# https://support.websoft9.com/docs/docker/zh/solution-compose.html#command |
||||||
|
version: '3' |
||||||
|
services: |
||||||
|
# rocketmq代理发现注册服务 |
||||||
|
rmqnamesrv: |
||||||
|
image: foxiswho/rocketmq:server |
||||||
|
container_name: rmqnamesrv |
||||||
|
restart: always |
||||||
|
ports: |
||||||
|
- 9876:9876 |
||||||
|
volumes: |
||||||
|
- /usr/software/dockerDatabase/rocketmq/namesrv/logs:/opt/logs |
||||||
|
- /usr/software/dockerDatabase/rocketmq/namesrv/store:/opt/store |
||||||
|
networks: |
||||||
|
rmq: |
||||||
|
aliases: |
||||||
|
- rmqnamesrv |
||||||
|
|
||||||
|
# rocketmq核心消息发送存储代理 |
||||||
|
rmqbroker: |
||||||
|
image: foxiswho/rocketmq:broker |
||||||
|
container_name: rmqbroker |
||||||
|
restart: always |
||||||
|
ports: |
||||||
|
- 10909:10909 |
||||||
|
- 10911:10911 |
||||||
|
volumes: |
||||||
|
- /usr/software/dockerDatabase/rocketmq/namesrv/logs:/opt/logs |
||||||
|
- /usr/software/dockerDatabase/rocketmq/namesrv/store:/opt/store |
||||||
|
- /usr/software/dockerDatabase/rocketmq/broker/brokerconf/broker.conf:/etc/rocketmq/broker.conf |
||||||
|
environment: |
||||||
|
NAMESRV_ADDR: "rmqnamesrv:9876" |
||||||
|
JAVA_OPTS: "-Duser.home=/opt" |
||||||
|
JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m" |
||||||
|
command: mqbroker -c /etc/rocketmq/broker.conf |
||||||
|
depends_on: |
||||||
|
- rmqnamesrv |
||||||
|
networks: |
||||||
|
rmq: |
||||||
|
aliases: |
||||||
|
- rmqbroker |
||||||
|
|
||||||
|
# 局域网网关配置 |
||||||
|
networks: |
||||||
|
rmq: |
||||||
|
driver: bridge |
||||||
@ -0,0 +1,15 @@ |
|||||||
|
|
||||||
|
##nacos-config.sh |
||||||
|
| 命令 | 描述 | 默认 | |
||||||
|
|------|-----------|-------------| |
||||||
|
|-h | nacos主机地址 | 127.0.0.1 | |
||||||
|
|-p | nacos主机端口 | 8848 | |
||||||
|
|-g | nacos分组名称 | public | |
||||||
|
|-t | nacos命名空间 | DEFAULT_GROUP | |
||||||
|
|-u | nacos账户 | 无 | |
||||||
|
|-w | nacos密码 | 无 | |
||||||
|
|
||||||
|
```bash |
||||||
|
# nacos导入命令,把config.txt与nacos-config.sh传到服务器注意需要保持同级目录,然后运行下方命令 |
||||||
|
./nacos-config.sh -h 101.42.231.100 -g SEATA_GROUP -t kicc-seata |
||||||
|
``` |
||||||
@ -0,0 +1,134 @@ |
|||||||
|
# PROJECT: 康来生物有限公司kicc(智慧冷链)分布式架构平台 |
||||||
|
# VERSION: 1.0.0 |
||||||
|
# Author: 康来生物科技有限公司-王翔 |
||||||
|
# 有关配置项的详细信息,请参考:https://seata.io/zh-cn/docs/user/configurations.html |
||||||
|
|
||||||
|
# 客户端与服务端传输方式 |
||||||
|
transport.type=TCP |
||||||
|
transport.server=NIO |
||||||
|
transport.heartbeat=true |
||||||
|
transport.enableTmClientBatchSendRequest=false |
||||||
|
transport.enableRmClientBatchSendRequest=true |
||||||
|
transport.enableTcServerBatchSendResponse=false |
||||||
|
transport.rpcRmRequestTimeout=30000 |
||||||
|
transport.rpcTmRequestTimeout=30000 |
||||||
|
transport.rpcTcRequestTimeout=30000 |
||||||
|
transport.threadFactory.bossThreadPrefix=NettyBoss |
||||||
|
transport.threadFactory.workerThreadPrefix=NettyServerNIOWorker |
||||||
|
transport.threadFactory.serverExecutorThreadPrefix=NettyServerBizHandler |
||||||
|
transport.threadFactory.shareBossWorker=false |
||||||
|
transport.threadFactory.clientSelectorThreadPrefix=NettyClientSelector |
||||||
|
transport.threadFactory.clientSelectorThreadSize=1 |
||||||
|
transport.threadFactory.clientWorkerThreadPrefix=NettyClientWorkerThread |
||||||
|
transport.threadFactory.bossThreadSize=1 |
||||||
|
transport.threadFactory.workerThreadSize=default |
||||||
|
transport.shutdown.wait=3 |
||||||
|
transport.serialization=seata |
||||||
|
transport.compressor=none |
||||||
|
|
||||||
|
# 事务路由规则配置,仅针对客户端 |
||||||
|
# seata事务组编号,用于TC集群名,很重要,与项目配置文件的tx-service-group对应 |
||||||
|
service.vgroupMapping.default_tx_group=default |
||||||
|
# 默认的群组集群list,仅注册中心为file时使用,使用nacos注册中心不需要写了:https://github.com/seata/seata/issues/3473 |
||||||
|
service.default.grouplist=127.0.0.1:8091 |
||||||
|
service.enableDegrade=false |
||||||
|
service.disableGlobalTransaction=false |
||||||
|
|
||||||
|
# 事务规则配置,仅针对客户端 |
||||||
|
client.rm.asyncCommitBufferLimit=10000 |
||||||
|
client.rm.lock.retryInterval=10 |
||||||
|
client.rm.lock.retryTimes=30 |
||||||
|
client.rm.lock.retryPolicyBranchRollbackOnConflict=true |
||||||
|
client.rm.reportRetryCount=5 |
||||||
|
client.rm.tableMetaCheckEnable=false |
||||||
|
client.rm.tableMetaCheckerInterval=60000 |
||||||
|
client.rm.sqlParserType=druid |
||||||
|
client.rm.reportSuccessEnable=false |
||||||
|
client.rm.sagaBranchRegisterEnable=false |
||||||
|
client.rm.sagaJsonParser=fastjson |
||||||
|
client.rm.tccActionInterceptorOrder=-2147482648 |
||||||
|
client.tm.commitRetryCount=5 |
||||||
|
client.tm.rollbackRetryCount=5 |
||||||
|
client.tm.defaultGlobalTransactionTimeout=60000 |
||||||
|
client.tm.degradeCheck=false |
||||||
|
client.tm.degradeCheckAllowTimes=10 |
||||||
|
client.tm.degradeCheckPeriod=2000 |
||||||
|
client.tm.interceptorOrder=-2147482648 |
||||||
|
client.undo.dataValidation=true |
||||||
|
client.undo.logSerialization=jackson |
||||||
|
client.undo.onlyCareUpdateColumns=true |
||||||
|
server.undo.logSaveDays=7 |
||||||
|
server.undo.logDeletePeriod=86400000 |
||||||
|
client.undo.logTable=undo_log |
||||||
|
client.undo.compress.enable=true |
||||||
|
client.undo.compress.type=zip |
||||||
|
client.undo.compress.threshold=64k |
||||||
|
# 针对于TCC交易模式 |
||||||
|
tcc.fence.logTableName=tcc_fence_log |
||||||
|
tcc.fence.cleanPeriod=1h |
||||||
|
|
||||||
|
# 日志规则配置,用于客户端和服务器 |
||||||
|
log.exceptionRate=100 |
||||||
|
|
||||||
|
# 事务存储配置,file,db,redis为可选配置,推荐db模式 |
||||||
|
store.mode=db |
||||||
|
store.lock.mode=file |
||||||
|
store.session.mode=file |
||||||
|
# 用于密码加密 |
||||||
|
# store.publicKey= |
||||||
|
|
||||||
|
# 如果store.mode,store.lock.mode,store.session.mode不等于file可以移除配置块 |
||||||
|
store.file.dir=file_store/data |
||||||
|
store.file.maxBranchSessionSize=16384 |
||||||
|
store.file.maxGlobalSessionSize=512 |
||||||
|
store.file.fileWriteBufferCacheSize=16384 |
||||||
|
store.file.flushDiskMode=async |
||||||
|
store.file.sessionReloadReadSize=100 |
||||||
|
|
||||||
|
# 如果store.mode为db则需要这些配置,如果store.mode,store.lock.mode,store.session.mode不等于db可以移除配置块 |
||||||
|
store.db.datasource=druid |
||||||
|
# 如果为DB模式需要配置数据库,数据库默认数据库为mysql |
||||||
|
store.db.dbType=mysql |
||||||
|
store.db.driverClassName=com.mysql.jdbc.Driver |
||||||
|
store.db.url=jdbc:mysql://120.26.168.56:8052/kicc_seata?useUnicode=true&rewriteBatchedStatements=true |
||||||
|
store.db.user=root |
||||||
|
store.db.password=kanglai@2022 |
||||||
|
store.db.minConn=5 |
||||||
|
store.db.maxConn=30 |
||||||
|
store.db.globalTable=global_table |
||||||
|
store.db.branchTable=branch_table |
||||||
|
store.db.distributedLockTable=distributed_lock |
||||||
|
store.db.queryLimit=100 |
||||||
|
store.db.lockTable=lock_table |
||||||
|
store.db.maxWait=5000 |
||||||
|
|
||||||
|
# 如果store.mode为redis则需要这些配置,如果store.mode,store.lock.mode,store.session.mode不等于redis可以移除配置块 |
||||||
|
store.redis.mode=single |
||||||
|
store.redis.single.host=127.0.0.1 |
||||||
|
store.redis.single.port=6379 |
||||||
|
# store.redis.sentinel.masterName= |
||||||
|
# store.redis.sentinel.sentinelHosts= |
||||||
|
store.redis.maxConn=10 |
||||||
|
store.redis.minConn=1 |
||||||
|
store.redis.maxTotal=100 |
||||||
|
store.redis.database=0 |
||||||
|
# store.redis.password= |
||||||
|
store.redis.queryLimit=100 |
||||||
|
|
||||||
|
# 交易规则配置,只针对服务端 |
||||||
|
server.recovery.committingRetryPeriod=1000 |
||||||
|
server.recovery.asynCommittingRetryPeriod=1000 |
||||||
|
server.recovery.rollbackingRetryPeriod=1000 |
||||||
|
server.recovery.timeoutRetryPeriod=1000 |
||||||
|
server.maxCommitRetryTimeout=-1 |
||||||
|
server.maxRollbackRetryTimeout=-1 |
||||||
|
server.rollbackRetryTimeoutUnlockEnable=false |
||||||
|
server.distributedLockExpireTime=10000 |
||||||
|
server.session.branchAsyncQueueSize=5000 |
||||||
|
server.session.enableBranchAsyncRemove=true |
||||||
|
|
||||||
|
# 关闭metrics统计信息功能,提高性能:https://developer.aliyun.com/article/710333 |
||||||
|
metrics.enabled=false |
||||||
|
metrics.registryType=compact |
||||||
|
metrics.exporterList=prometheus |
||||||
|
metrics.exporterPrometheusPort=9898 |
||||||
@ -0,0 +1,120 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# Copyright 1999-2019 Seata.io Group. |
||||||
|
# |
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
# you may not use this file except in compliance with the License. |
||||||
|
# You may obtain a copy of the License at、 |
||||||
|
# |
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0 |
||||||
|
# |
||||||
|
# Unless required by applicable law or agreed to in writing, software |
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
# See the License for the specific language governing permissions and |
||||||
|
# limitations under the License. |
||||||
|
|
||||||
|
while getopts ":h:p:g:t:u:w:" opt |
||||||
|
do |
||||||
|
case $opt in |
||||||
|
h) |
||||||
|
host=$OPTARG |
||||||
|
;; |
||||||
|
p) |
||||||
|
port=$OPTARG |
||||||
|
;; |
||||||
|
g) |
||||||
|
group=$OPTARG |
||||||
|
;; |
||||||
|
t) |
||||||
|
tenant=$OPTARG |
||||||
|
;; |
||||||
|
u) |
||||||
|
username=$OPTARG |
||||||
|
;; |
||||||
|
w) |
||||||
|
password=$OPTARG |
||||||
|
;; |
||||||
|
?) |
||||||
|
echo " USAGE OPTION: $0 [-h host] [-p port] [-g group] [-t tenant] [-u username] [-w password] " |
||||||
|
exit 1 |
||||||
|
;; |
||||||
|
esac |
||||||
|
done |
||||||
|
|
||||||
|
if [ -z ${host} ]; then |
||||||
|
host=localhost |
||||||
|
fi |
||||||
|
if [ -z ${port} ]; then |
||||||
|
port=8848 |
||||||
|
fi |
||||||
|
if [ -z ${group} ]; then |
||||||
|
group="SEATA_GROUP" |
||||||
|
fi |
||||||
|
if [ -z ${tenant} ]; then |
||||||
|
tenant="" |
||||||
|
fi |
||||||
|
if [ -z ${username} ]; then |
||||||
|
username="" |
||||||
|
fi |
||||||
|
if [ -z ${password} ]; then |
||||||
|
password="" |
||||||
|
fi |
||||||
|
|
||||||
|
nacosAddr=$host:$port |
||||||
|
contentType="content-type:application/json;charset=UTF-8" |
||||||
|
|
||||||
|
echo "set nacosAddr=$nacosAddr" |
||||||
|
echo "set group=$group" |
||||||
|
|
||||||
|
urlencode() { |
||||||
|
length="${#1}" |
||||||
|
i=0 |
||||||
|
while [ $length -gt $i ]; do |
||||||
|
char="${1:$i:1}" |
||||||
|
case $char in |
||||||
|
[a-zA-Z0-9.~_-]) printf $char ;; |
||||||
|
*) printf '%%%02X' "'$char" ;; |
||||||
|
esac |
||||||
|
i=`expr $i + 1` |
||||||
|
done |
||||||
|
} |
||||||
|
|
||||||
|
failCount=0 |
||||||
|
tempLog=$(mktemp -u) |
||||||
|
function addConfig() { |
||||||
|
dataId=`urlencode $1` |
||||||
|
content=`urlencode $2` |
||||||
|
curl -X POST -H "${contentType}" "http://$nacosAddr/nacos/v1/cs/configs?dataId=$dataId&group=$group&content=$content&tenant=$tenant&username=$username&password=$password" >"${tempLog}" 2>/dev/null |
||||||
|
if [ -z $(cat "${tempLog}") ]; then |
||||||
|
echo " Please check the cluster status. " |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
if [ "$(cat "${tempLog}")" == "true" ]; then |
||||||
|
echo "Set $1=$2 successfully " |
||||||
|
else |
||||||
|
echo "Set $1=$2 failure " |
||||||
|
failCount=`expr $failCount + 1` |
||||||
|
fi |
||||||
|
} |
||||||
|
|
||||||
|
count=0 |
||||||
|
COMMENT_START="#" |
||||||
|
for line in $(cat $(dirname "$PWD")/config.txt | sed s/[[:space:]]//g); do |
||||||
|
if [[ "$line" =~ ^"${COMMENT_START}".* ]]; then |
||||||
|
continue |
||||||
|
fi |
||||||
|
count=`expr $count + 1` |
||||||
|
key=${line%%=*} |
||||||
|
value=${line#*=} |
||||||
|
addConfig "${key}" "${value}" |
||||||
|
done |
||||||
|
|
||||||
|
echo "=========================================================================" |
||||||
|
echo " Complete initialization parameters, total-count:$count , failure-count:$failCount " |
||||||
|
echo "=========================================================================" |
||||||
|
|
||||||
|
if [ ${failCount} -eq 0 ]; then |
||||||
|
echo " Init nacos config finished, please start seata-server. " |
||||||
|
else |
||||||
|
echo " init nacos config fail. " |
||||||
|
fi |
||||||
@ -0,0 +1,134 @@ |
|||||||
|
# PROJECT: 康来生物有限公司kicc(智慧冷链)分布式架构平台 |
||||||
|
# VERSION: 1.0.0 |
||||||
|
# Author: 康来生物科技有限公司-王翔 |
||||||
|
# 有关配置项的详细信息,请参考:https://seata.io/zh-cn/docs/user/configurations.html |
||||||
|
|
||||||
|
# 客户端与服务端传输方式 |
||||||
|
transport.type=TCP |
||||||
|
transport.server=NIO |
||||||
|
transport.heartbeat=true |
||||||
|
transport.enableTmClientBatchSendRequest=false |
||||||
|
transport.enableRmClientBatchSendRequest=true |
||||||
|
transport.enableTcServerBatchSendResponse=false |
||||||
|
transport.rpcRmRequestTimeout=30000 |
||||||
|
transport.rpcTmRequestTimeout=30000 |
||||||
|
transport.rpcTcRequestTimeout=30000 |
||||||
|
transport.threadFactory.bossThreadPrefix=NettyBoss |
||||||
|
transport.threadFactory.workerThreadPrefix=NettyServerNIOWorker |
||||||
|
transport.threadFactory.serverExecutorThreadPrefix=NettyServerBizHandler |
||||||
|
transport.threadFactory.shareBossWorker=false |
||||||
|
transport.threadFactory.clientSelectorThreadPrefix=NettyClientSelector |
||||||
|
transport.threadFactory.clientSelectorThreadSize=1 |
||||||
|
transport.threadFactory.clientWorkerThreadPrefix=NettyClientWorkerThread |
||||||
|
transport.threadFactory.bossThreadSize=1 |
||||||
|
transport.threadFactory.workerThreadSize=default |
||||||
|
transport.shutdown.wait=3 |
||||||
|
transport.serialization=seata |
||||||
|
transport.compressor=none |
||||||
|
|
||||||
|
# 事务路由规则配置,仅针对客户端 |
||||||
|
# seata事务组编号,用于TC集群名,很重要,与项目配置文件的tx-service-group对应 |
||||||
|
service.vgroupMapping.default_tx_group=default |
||||||
|
# 默认的群组集群list,仅注册中心为file时使用,使用nacos注册中心不需要写了:https://github.com/seata/seata/issues/3473 |
||||||
|
service.default.grouplist=127.0.0.1:8091 |
||||||
|
service.enableDegrade=false |
||||||
|
service.disableGlobalTransaction=false |
||||||
|
|
||||||
|
# 事务规则配置,仅针对客户端 |
||||||
|
client.rm.asyncCommitBufferLimit=10000 |
||||||
|
client.rm.lock.retryInterval=10 |
||||||
|
client.rm.lock.retryTimes=30 |
||||||
|
client.rm.lock.retryPolicyBranchRollbackOnConflict=true |
||||||
|
client.rm.reportRetryCount=5 |
||||||
|
client.rm.tableMetaCheckEnable=false |
||||||
|
client.rm.tableMetaCheckerInterval=60000 |
||||||
|
client.rm.sqlParserType=druid |
||||||
|
client.rm.reportSuccessEnable=false |
||||||
|
client.rm.sagaBranchRegisterEnable=false |
||||||
|
client.rm.sagaJsonParser=fastjson |
||||||
|
client.rm.tccActionInterceptorOrder=-2147482648 |
||||||
|
client.tm.commitRetryCount=5 |
||||||
|
client.tm.rollbackRetryCount=5 |
||||||
|
client.tm.defaultGlobalTransactionTimeout=60000 |
||||||
|
client.tm.degradeCheck=false |
||||||
|
client.tm.degradeCheckAllowTimes=10 |
||||||
|
client.tm.degradeCheckPeriod=2000 |
||||||
|
client.tm.interceptorOrder=-2147482648 |
||||||
|
client.undo.dataValidation=true |
||||||
|
client.undo.logSerialization=jackson |
||||||
|
client.undo.onlyCareUpdateColumns=true |
||||||
|
server.undo.logSaveDays=7 |
||||||
|
server.undo.logDeletePeriod=86400000 |
||||||
|
client.undo.logTable=undo_log |
||||||
|
client.undo.compress.enable=true |
||||||
|
client.undo.compress.type=zip |
||||||
|
client.undo.compress.threshold=64k |
||||||
|
# 针对于TCC交易模式 |
||||||
|
tcc.fence.logTableName=tcc_fence_log |
||||||
|
tcc.fence.cleanPeriod=1h |
||||||
|
|
||||||
|
# 日志规则配置,用于客户端和服务器 |
||||||
|
log.exceptionRate=100 |
||||||
|
|
||||||
|
# 事务存储配置,file,db,redis为可选配置,推荐db模式 |
||||||
|
store.mode=db |
||||||
|
store.lock.mode=file |
||||||
|
store.session.mode=file |
||||||
|
# 用于密码加密 |
||||||
|
# store.publicKey= |
||||||
|
|
||||||
|
# 如果store.mode,store.lock.mode,store.session.mode不等于file可以移除配置块 |
||||||
|
store.file.dir=file_store/data |
||||||
|
store.file.maxBranchSessionSize=16384 |
||||||
|
store.file.maxGlobalSessionSize=512 |
||||||
|
store.file.fileWriteBufferCacheSize=16384 |
||||||
|
store.file.flushDiskMode=async |
||||||
|
store.file.sessionReloadReadSize=100 |
||||||
|
|
||||||
|
# 如果store.mode为db则需要这些配置,如果store.mode,store.lock.mode,store.session.mode不等于db可以移除配置块 |
||||||
|
store.db.datasource=druid |
||||||
|
# 如果为DB模式需要配置数据库,数据库默认数据库为mysql |
||||||
|
store.db.dbType=mysql |
||||||
|
store.db.driverClassName=com.mysql.jdbc.Driver |
||||||
|
store.db.url=jdbc:mysql://120.26.168.56:8052/kicc_seata?useUnicode=true&rewriteBatchedStatements=true |
||||||
|
store.db.user=root |
||||||
|
store.db.password=kanglai@2022 |
||||||
|
store.db.minConn=5 |
||||||
|
store.db.maxConn=30 |
||||||
|
store.db.globalTable=global_table |
||||||
|
store.db.branchTable=branch_table |
||||||
|
store.db.distributedLockTable=distributed_lock |
||||||
|
store.db.queryLimit=100 |
||||||
|
store.db.lockTable=lock_table |
||||||
|
store.db.maxWait=5000 |
||||||
|
|
||||||
|
# 如果store.mode为redis则需要这些配置,如果store.mode,store.lock.mode,store.session.mode不等于redis可以移除配置块 |
||||||
|
store.redis.mode=single |
||||||
|
store.redis.single.host=127.0.0.1 |
||||||
|
store.redis.single.port=6379 |
||||||
|
# store.redis.sentinel.masterName= |
||||||
|
# store.redis.sentinel.sentinelHosts= |
||||||
|
store.redis.maxConn=10 |
||||||
|
store.redis.minConn=1 |
||||||
|
store.redis.maxTotal=100 |
||||||
|
store.redis.database=0 |
||||||
|
# store.redis.password= |
||||||
|
store.redis.queryLimit=100 |
||||||
|
|
||||||
|
# 交易规则配置,只针对服务端 |
||||||
|
server.recovery.committingRetryPeriod=1000 |
||||||
|
server.recovery.asynCommittingRetryPeriod=1000 |
||||||
|
server.recovery.rollbackingRetryPeriod=1000 |
||||||
|
server.recovery.timeoutRetryPeriod=1000 |
||||||
|
server.maxCommitRetryTimeout=-1 |
||||||
|
server.maxRollbackRetryTimeout=-1 |
||||||
|
server.rollbackRetryTimeoutUnlockEnable=false |
||||||
|
server.distributedLockExpireTime=10000 |
||||||
|
server.session.branchAsyncQueueSize=5000 |
||||||
|
server.session.enableBranchAsyncRemove=true |
||||||
|
|
||||||
|
# 关闭metrics统计信息功能,提高性能:https://developer.aliyun.com/article/710333 |
||||||
|
metrics.enabled=false |
||||||
|
metrics.registryType=compact |
||||||
|
metrics.exporterList=prometheus |
||||||
|
metrics.exporterPrometheusPort=9898 |
||||||
@ -0,0 +1,103 @@ |
|||||||
|
registry { |
||||||
|
# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa |
||||||
|
type = "nacos" |
||||||
|
loadBalance = "RandomLoadBalance" |
||||||
|
loadBalanceVirtualNodes = 10 |
||||||
|
|
||||||
|
nacos { |
||||||
|
application = "seata-server" |
||||||
|
serverAddr = "101.42.231.100:8848" |
||||||
|
group = "SEATA_GROUP" |
||||||
|
namespace = "kicc-seata" |
||||||
|
cluster = "default" |
||||||
|
# nacos内网使用没配安全权限,可以不写 |
||||||
|
username = "" |
||||||
|
password = "" |
||||||
|
} |
||||||
|
eureka { |
||||||
|
serviceUrl = "http://localhost:8761/eureka" |
||||||
|
application = "default" |
||||||
|
weight = "1" |
||||||
|
} |
||||||
|
redis { |
||||||
|
serverAddr = "localhost:6379" |
||||||
|
db = 0 |
||||||
|
password = "" |
||||||
|
cluster = "default" |
||||||
|
timeout = 0 |
||||||
|
} |
||||||
|
zk { |
||||||
|
cluster = "default" |
||||||
|
serverAddr = "127.0.0.1:2181" |
||||||
|
sessionTimeout = 6000 |
||||||
|
connectTimeout = 2000 |
||||||
|
username = "" |
||||||
|
password = "" |
||||||
|
} |
||||||
|
consul { |
||||||
|
cluster = "default" |
||||||
|
serverAddr = "127.0.0.1:8500" |
||||||
|
aclToken = "" |
||||||
|
} |
||||||
|
etcd3 { |
||||||
|
cluster = "default" |
||||||
|
serverAddr = "http://localhost:2379" |
||||||
|
} |
||||||
|
sofa { |
||||||
|
serverAddr = "127.0.0.1:9603" |
||||||
|
application = "default" |
||||||
|
region = "DEFAULT_ZONE" |
||||||
|
datacenter = "DefaultDataCenter" |
||||||
|
cluster = "default" |
||||||
|
group = "SEATA_GROUP" |
||||||
|
addressWaitTime = "3000" |
||||||
|
} |
||||||
|
file { |
||||||
|
name = "file.conf" |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
config { |
||||||
|
# file、nacos 、apollo、zk、consul、etcd3 |
||||||
|
type = "nacos" |
||||||
|
|
||||||
|
nacos { |
||||||
|
serverAddr = "101.42.231.100:8848" |
||||||
|
namespace = "kicc-seata" |
||||||
|
group = "SEATA_GROUP" |
||||||
|
# nacos内网使用没配安全权限,可以不写 |
||||||
|
username = "" |
||||||
|
password = "" |
||||||
|
# 目前nacos文件是拆成多个的,也可以整合成一个,将所有配置配置到这个nacos中的properties |
||||||
|
# 但是通过查看客户端源码发现内部不支持dataId这种方式,所以这个配置只对服务端起作用 |
||||||
|
# 所以不能达到统一的一个效果,没什么用,可以注释调,采用nacos多个文件的形式 |
||||||
|
# dataId = "seataServer.properties" |
||||||
|
} |
||||||
|
consul { |
||||||
|
serverAddr = "127.0.0.1:8500" |
||||||
|
aclToken = "" |
||||||
|
} |
||||||
|
apollo { |
||||||
|
appId = "seata-server" |
||||||
|
## apolloConfigService will cover apolloMeta |
||||||
|
apolloMeta = "http://192.168.1.204:8801" |
||||||
|
apolloConfigService = "http://192.168.1.204:8080" |
||||||
|
namespace = "application" |
||||||
|
apolloAccesskeySecret = "" |
||||||
|
cluster = "seata" |
||||||
|
} |
||||||
|
zk { |
||||||
|
serverAddr = "127.0.0.1:2181" |
||||||
|
sessionTimeout = 6000 |
||||||
|
connectTimeout = 2000 |
||||||
|
username = "" |
||||||
|
password = "" |
||||||
|
nodePath = "/seata/seata.properties" |
||||||
|
} |
||||||
|
etcd3 { |
||||||
|
serverAddr = "http://localhost:2379" |
||||||
|
} |
||||||
|
file { |
||||||
|
name = "file.conf" |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,35 @@ |
|||||||
|
# PROJECT: 康来生物有限公司kicc(智慧冷链)分布式架构平台 |
||||||
|
# VERSION: 1.0.0 |
||||||
|
# Author: 康来生物科技有限公司-王翔 |
||||||
|
|
||||||
|
# https://support.websoft9.com/docs/docker/zh/solution-compose.html#command |
||||||
|
version: "3" |
||||||
|
services: |
||||||
|
|
||||||
|
# seata分布式事务服务器 |
||||||
|
seata-server: |
||||||
|
image: seataio/seata-server:1.4.2 |
||||||
|
container_name: seata-server |
||||||
|
hostname: seata-server |
||||||
|
restart: always |
||||||
|
networks: |
||||||
|
- seata-server |
||||||
|
ports: |
||||||
|
- 8091:8091 |
||||||
|
environment: |
||||||
|
# https://seata.io/zh-cn/docs/ops/deploy-by-docker.html |
||||||
|
# 注册到nacos上的ip。客户端将通过该ip访问seata服务。 |
||||||
|
# 注意公网ip和内网ip的差异。 |
||||||
|
- SEATA_IP=101.42.231.100 |
||||||
|
# 指定seata服务启动端口 |
||||||
|
- SEATA_PORT=8091 |
||||||
|
# 存储模式 |
||||||
|
- STORE_MODE=db |
||||||
|
volumes: |
||||||
|
- /usr/software/dockerDatabase/seata/config/registry.conf:/seata-server/resources/registry.conf |
||||||
|
- /usr/software/dockerDatabase/seata/logs:/root/logs/seata |
||||||
|
|
||||||
|
# 局域网网关配置 |
||||||
|
networks: |
||||||
|
seata-server: |
||||||
|
driver: bridge |
||||||
@ -0,0 +1,8 @@ |
|||||||
|
|
||||||
|
```bash |
||||||
|
# upsource容器中使用的用户和组不是13001:13001,而是其他,也许是码头工人的用户,需要手动授权,或者写个Dockerfile在里面授权 |
||||||
|
chmod -R 777 /usr/software/dockerDatabase/upsource/data |
||||||
|
chmod -R 777 /usr/software/dockerDatabase/upsource/conf |
||||||
|
chmod -R 777 /usr/software/dockerDatabase/upsource/logs |
||||||
|
chmod -R 777 /usr/software/dockerDatabase/upsource/backups |
||||||
|
``` |
||||||
@ -0,0 +1,21 @@ |
|||||||
|
# PROJECT: 康来生物有限公司kicc(智慧冷链)分布式架构平台 |
||||||
|
# VERSION: 1.0.0 |
||||||
|
# Author: 康来生物科技有限公司-王翔 |
||||||
|
|
||||||
|
# 更多信息请参考官网:https://docs.gitea.io/en-us/install-with-docker/ |
||||||
|
version: '3' |
||||||
|
services: |
||||||
|
#idea代码审查工具 |
||||||
|
#docker安装帮助: https://www.jetbrains.com/help/upsource/docker-installation.html#configure |
||||||
|
upsource-server: |
||||||
|
image: jetbrains/upsource:2020.1.1992 |
||||||
|
container_name: upsource |
||||||
|
hostname: upsource |
||||||
|
restart: always |
||||||
|
volumes: |
||||||
|
- /usr/software/dockerDatabase/upsource/data:/opt/upsource/data |
||||||
|
- /usr/software/dockerDatabase/upsource/conf:/opt/upsource/conf |
||||||
|
- /usr/software/dockerDatabase/upsource/logs:/opt/upsource/logs |
||||||
|
- /usr/software/dockerDatabase/upsource/backups:/opt/upsource/backups |
||||||
|
ports: |
||||||
|
- 9301:8080 |
||||||
@ -0,0 +1,15 @@ |
|||||||
|
FROM moxm/java:1.8-full |
||||||
|
|
||||||
|
RUN mkdir -p /kicc-auth |
||||||
|
|
||||||
|
WORKDIR /kicc-auth |
||||||
|
|
||||||
|
ARG JAR_FILE=target/kicc-auth.jar |
||||||
|
|
||||||
|
COPY ${JAR_FILE} app.jar |
||||||
|
|
||||||
|
EXPOSE 3000 |
||||||
|
|
||||||
|
ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom" |
||||||
|
|
||||||
|
CMD sleep 60; java -jar app.jar $JAVA_OPTS |
||||||
@ -0,0 +1,77 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<parent> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc</artifactId> |
||||||
|
<version>1.0.0</version> |
||||||
|
</parent> |
||||||
|
|
||||||
|
<artifactId>kicc-auth</artifactId> |
||||||
|
<packaging>jar</packaging> |
||||||
|
|
||||||
|
<description>kicc 认证授权中心,基于 spring security oAuth2</description> |
||||||
|
|
||||||
|
<dependencies> |
||||||
|
<!--注册中心客户端--> |
||||||
|
<dependency> |
||||||
|
<groupId>com.alibaba.cloud</groupId> |
||||||
|
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> |
||||||
|
</dependency> |
||||||
|
<!--配置中心客户端--> |
||||||
|
<dependency> |
||||||
|
<groupId>com.alibaba.cloud</groupId> |
||||||
|
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> |
||||||
|
</dependency> |
||||||
|
<!--断路器依赖--> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-feign</artifactId> |
||||||
|
</dependency> |
||||||
|
<!--system api模块--> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-system-api</artifactId> |
||||||
|
</dependency> |
||||||
|
<!--数据服务核心包--> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-data</artifactId> |
||||||
|
</dependency> |
||||||
|
<!--security安全工具类--> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-security</artifactId> |
||||||
|
</dependency> |
||||||
|
<!--log--> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-log</artifactId> |
||||||
|
</dependency> |
||||||
|
<!--freemarker--> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-starter-freemarker</artifactId> |
||||||
|
</dependency> |
||||||
|
<!--undertow容器--> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-starter-undertow</artifactId> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
|
||||||
|
<build> |
||||||
|
<plugins> |
||||||
|
<plugin> |
||||||
|
<groupId>io.fabric8</groupId> |
||||||
|
<artifactId>docker-maven-plugin</artifactId> |
||||||
|
</plugin> |
||||||
|
<plugin> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId> |
||||||
|
</plugin> |
||||||
|
</plugins> |
||||||
|
</build> |
||||||
|
|
||||||
|
</project> |
||||||
@ -0,0 +1,26 @@ |
|||||||
|
package com.cloud.kicc.auth; |
||||||
|
|
||||||
|
import com.cloud.kicc.common.core.annotation.EnableKiccJacksonAutoConvert; |
||||||
|
import com.cloud.kicc.common.feign.annotation.EnableKiccFeignClients; |
||||||
|
import org.springframework.boot.SpringApplication; |
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication; |
||||||
|
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 认证授权中心 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: 开发团队-王翔 |
||||||
|
* @Date: 2022/2/16 |
||||||
|
*/ |
||||||
|
@EnableKiccFeignClients |
||||||
|
@SpringBootApplication |
||||||
|
@EnableKiccJacksonAutoConvert |
||||||
|
public class KiccAuthApplication { |
||||||
|
|
||||||
|
public static void main(String[] args) { |
||||||
|
SpringApplication.run(KiccAuthApplication.class, args); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,140 @@ |
|||||||
|
package com.cloud.kicc.auth.config; |
||||||
|
|
||||||
|
import com.cloud.kicc.common.core.constant.SecurityConstants; |
||||||
|
import com.cloud.kicc.common.data.entity.KiccUser; |
||||||
|
import com.cloud.kicc.common.security.grant.app.ResourceOwnerCustomeAppTokenGranter; |
||||||
|
import com.cloud.kicc.common.security.override.KiccClientDetailsService; |
||||||
|
import com.cloud.kicc.common.security.override.KiccCustomTokenServices; |
||||||
|
import com.cloud.kicc.common.security.override.KiccWebResponseExceptionTranslator; |
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import lombok.SneakyThrows; |
||||||
|
import org.springframework.context.annotation.Bean; |
||||||
|
import org.springframework.context.annotation.Configuration; |
||||||
|
import org.springframework.http.HttpMethod; |
||||||
|
import org.springframework.security.authentication.AuthenticationManager; |
||||||
|
import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken; |
||||||
|
import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer; |
||||||
|
import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter; |
||||||
|
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer; |
||||||
|
import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer; |
||||||
|
import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerSecurityConfigurer; |
||||||
|
import org.springframework.security.oauth2.provider.ClientDetailsService; |
||||||
|
import org.springframework.security.oauth2.provider.CompositeTokenGranter; |
||||||
|
import org.springframework.security.oauth2.provider.TokenGranter; |
||||||
|
import org.springframework.security.oauth2.provider.token.TokenEnhancer; |
||||||
|
import org.springframework.security.oauth2.provider.token.TokenStore; |
||||||
|
|
||||||
|
import javax.sql.DataSource; |
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.Arrays; |
||||||
|
import java.util.HashMap; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 认证服务器配置 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/2/20 |
||||||
|
*/ |
||||||
|
@Configuration |
||||||
|
@RequiredArgsConstructor |
||||||
|
@EnableAuthorizationServer |
||||||
|
public class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter { |
||||||
|
|
||||||
|
private final DataSource dataSource; |
||||||
|
|
||||||
|
private final AuthenticationManager authenticationManager; |
||||||
|
|
||||||
|
private final TokenStore redisTokenStore; |
||||||
|
|
||||||
|
@Override |
||||||
|
@SneakyThrows |
||||||
|
public void configure(ClientDetailsServiceConfigurer clients) { |
||||||
|
clients.withClientDetails(kiccClientDetailsService()); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void configure(AuthorizationServerSecurityConfigurer oauthServer) { |
||||||
|
oauthServer.allowFormAuthenticationForClients().checkTokenAccess("permitAll()"); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void configure(AuthorizationServerEndpointsConfigurer endpoints) { |
||||||
|
endpoints.allowedTokenEndpointRequestMethods(HttpMethod.GET, HttpMethod.POST).tokenServices(tokenServices()) |
||||||
|
.tokenStore(redisTokenStore).tokenEnhancer(tokenEnhancer()).authenticationManager(authenticationManager) |
||||||
|
.reuseRefreshTokens(false).pathMapping("/oauth/confirm_access", "/token/confirm_access") |
||||||
|
.exceptionTranslator(new KiccWebResponseExceptionTranslator()); |
||||||
|
setTokenGranter(endpoints); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 自定义 APP 认证类型 |
||||||
|
* @param endpoints AuthorizationServerEndpointsConfigurer |
||||||
|
*/ |
||||||
|
private void setTokenGranter(AuthorizationServerEndpointsConfigurer endpoints) { |
||||||
|
// 获取默认授权类型
|
||||||
|
TokenGranter tokenGranter = endpoints.getTokenGranter(); |
||||||
|
ArrayList<TokenGranter> tokenGranters = new ArrayList<>(Arrays.asList(tokenGranter)); |
||||||
|
ResourceOwnerCustomeAppTokenGranter resourceOwnerCustomeAppTokenGranter = new ResourceOwnerCustomeAppTokenGranter( |
||||||
|
authenticationManager, endpoints.getTokenServices(), endpoints.getClientDetailsService(), |
||||||
|
endpoints.getOAuth2RequestFactory()); |
||||||
|
tokenGranters.add(resourceOwnerCustomeAppTokenGranter); |
||||||
|
CompositeTokenGranter compositeTokenGranter = new CompositeTokenGranter(tokenGranters); |
||||||
|
endpoints.tokenGranter(compositeTokenGranter); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* token 生成接口输出增强 |
||||||
|
* @return TokenEnhancer |
||||||
|
*/ |
||||||
|
@Bean |
||||||
|
public TokenEnhancer tokenEnhancer() { |
||||||
|
return (accessToken, authentication) -> { |
||||||
|
final Map<String, Object> additionalInfo = new HashMap<>(4); |
||||||
|
additionalInfo.put(SecurityConstants.DETAILS_LICENSE, SecurityConstants.PROJECT_LICENSE); |
||||||
|
String clientId = authentication.getOAuth2Request().getClientId(); |
||||||
|
additionalInfo.put(SecurityConstants.CLIENT_ID, clientId); |
||||||
|
|
||||||
|
// 客户端模式不返回具体用户信息
|
||||||
|
if (SecurityConstants.CLIENT_CREDENTIALS.equals(authentication.getOAuth2Request().getGrantType())) { |
||||||
|
((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(additionalInfo); |
||||||
|
return accessToken; |
||||||
|
} |
||||||
|
|
||||||
|
KiccUser kiccUser = (KiccUser) authentication.getUserAuthentication().getPrincipal(); |
||||||
|
additionalInfo.put(SecurityConstants.DETAILS_USER, kiccUser); |
||||||
|
((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(additionalInfo); |
||||||
|
return accessToken; |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 客户端信息加载处理 |
||||||
|
* @return ClientDetailsService |
||||||
|
*/ |
||||||
|
@Bean |
||||||
|
public ClientDetailsService kiccClientDetailsService() { |
||||||
|
KiccClientDetailsService clientDetailsService = new KiccClientDetailsService(dataSource); |
||||||
|
clientDetailsService.setSelectClientDetailsSql(SecurityConstants.DEFAULT_SELECT_STATEMENT); |
||||||
|
clientDetailsService.setFindClientDetailsSql(SecurityConstants.DEFAULT_FIND_STATEMENT); |
||||||
|
return clientDetailsService; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* token 核心处理 |
||||||
|
* @return tokenServices |
||||||
|
*/ |
||||||
|
@Bean |
||||||
|
public KiccCustomTokenServices tokenServices() { |
||||||
|
KiccCustomTokenServices tokenServices = new KiccCustomTokenServices(); |
||||||
|
tokenServices.setTokenStore(redisTokenStore); |
||||||
|
tokenServices.setSupportRefreshToken(true); |
||||||
|
tokenServices.setReuseRefreshToken(false); |
||||||
|
tokenServices.setClientDetailsService(kiccClientDetailsService()); |
||||||
|
tokenServices.setTokenEnhancer(tokenEnhancer()); |
||||||
|
return tokenServices; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,121 @@ |
|||||||
|
package com.cloud.kicc.auth.config; |
||||||
|
|
||||||
|
import com.cloud.kicc.common.security.grant.provider.KiccDaoAuthenticationProvider; |
||||||
|
import com.cloud.kicc.common.security.grant.provider.CustomAppAuthenticationProvider; |
||||||
|
import com.cloud.kicc.common.security.handler.FormAuthenticationFailureHandler; |
||||||
|
import com.cloud.kicc.common.security.handler.SsoLogoutSuccessHandler; |
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import lombok.SneakyThrows; |
||||||
|
import org.springframework.context.annotation.Bean; |
||||||
|
import org.springframework.context.annotation.Configuration; |
||||||
|
import org.springframework.context.annotation.Primary; |
||||||
|
import org.springframework.core.annotation.Order; |
||||||
|
import org.springframework.security.authentication.AuthenticationManager; |
||||||
|
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; |
||||||
|
import org.springframework.security.config.annotation.web.builders.HttpSecurity; |
||||||
|
import org.springframework.security.config.annotation.web.builders.WebSecurity; |
||||||
|
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; |
||||||
|
import org.springframework.security.crypto.factory.PasswordEncoderFactories; |
||||||
|
import org.springframework.security.crypto.password.PasswordEncoder; |
||||||
|
import org.springframework.security.web.authentication.AuthenticationFailureHandler; |
||||||
|
import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 认证相关配置 |
||||||
|
* 并且设置为主,以及加载优先级为1,防止被微服务工程覆盖 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: 开发团队-王翔 |
||||||
|
* @Date: 2022/2/16 |
||||||
|
*/ |
||||||
|
|
||||||
|
@Primary |
||||||
|
@Order(90) |
||||||
|
@Configuration |
||||||
|
@RequiredArgsConstructor |
||||||
|
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter { |
||||||
|
|
||||||
|
@Override |
||||||
|
@SneakyThrows |
||||||
|
protected void configure(HttpSecurity http) { |
||||||
|
http |
||||||
|
.formLogin() |
||||||
|
.loginPage("/token/login") |
||||||
|
.loginProcessingUrl("/token/form") |
||||||
|
.failureHandler(authenticationFailureHandler()) |
||||||
|
.and() |
||||||
|
.logout() |
||||||
|
.logoutSuccessHandler(logoutSuccessHandler()) |
||||||
|
.deleteCookies("JSESSIONID") |
||||||
|
.invalidateHttpSession(true) |
||||||
|
.and() |
||||||
|
.authorizeRequests() |
||||||
|
.antMatchers("/token/**", "/actuator/**", "/mobile/**") |
||||||
|
.permitAll() |
||||||
|
.anyRequest() |
||||||
|
.authenticated() |
||||||
|
.and() |
||||||
|
// CRSF禁用,因为不使用session
|
||||||
|
.csrf().disable(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 自定义 provider 列表注入 |
||||||
|
* @param auth AuthenticationManagerBuilder |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
protected void configure(AuthenticationManagerBuilder auth) { |
||||||
|
KiccDaoAuthenticationProvider daoAuthenticationProvider = new KiccDaoAuthenticationProvider(); |
||||||
|
daoAuthenticationProvider.setPasswordEncoder(passwordEncoder()); |
||||||
|
|
||||||
|
// 处理默认的密码模式认证
|
||||||
|
auth.authenticationProvider(daoAuthenticationProvider); |
||||||
|
// 自定义的认证模式
|
||||||
|
auth.authenticationProvider(new CustomAppAuthenticationProvider()); |
||||||
|
} |
||||||
|
|
||||||
|
@Bean |
||||||
|
@Override |
||||||
|
@SneakyThrows |
||||||
|
public AuthenticationManager authenticationManagerBean() { |
||||||
|
return super.authenticationManagerBean(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 认证中心静态资源处理 |
||||||
|
* @param web WebSecurity |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public void configure(WebSecurity web) { |
||||||
|
web.ignoring().antMatchers("/css/**"); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* sso 表单登录失败处理 |
||||||
|
* @return FormAuthenticationFailureHandler |
||||||
|
*/ |
||||||
|
@Bean |
||||||
|
public AuthenticationFailureHandler authenticationFailureHandler() { |
||||||
|
return new FormAuthenticationFailureHandler(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* SSO 退出逻辑处理 |
||||||
|
* @return LogoutSuccessHandler |
||||||
|
*/ |
||||||
|
@Bean |
||||||
|
public LogoutSuccessHandler logoutSuccessHandler() { |
||||||
|
return new SsoLogoutSuccessHandler(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 密码处理器 |
||||||
|
* @return 动态密码处理器 {类型}密文 |
||||||
|
*/ |
||||||
|
@Bean |
||||||
|
public PasswordEncoder passwordEncoder() { |
||||||
|
return PasswordEncoderFactories.createDelegatingPasswordEncoder(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,156 @@ |
|||||||
|
package com.cloud.kicc.auth.endpoint; |
||||||
|
|
||||||
|
import cn.hutool.core.map.MapUtil; |
||||||
|
import cn.hutool.core.util.StrUtil; |
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||||
|
import com.cloud.kicc.common.core.constant.CacheConstants; |
||||||
|
import com.cloud.kicc.common.core.constant.CommonConstants; |
||||||
|
import com.cloud.kicc.common.core.api.R; |
||||||
|
import com.cloud.kicc.common.core.util.SpringContextHolder; |
||||||
|
import com.cloud.kicc.common.security.annotation.Inner; |
||||||
|
import com.cloud.kicc.common.security.util.SecurityUtils; |
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.cache.CacheManager; |
||||||
|
import org.springframework.data.redis.core.RedisTemplate; |
||||||
|
import org.springframework.http.HttpHeaders; |
||||||
|
import org.springframework.security.authentication.event.LogoutSuccessEvent; |
||||||
|
import org.springframework.security.oauth2.common.OAuth2AccessToken; |
||||||
|
import org.springframework.security.oauth2.common.OAuth2RefreshToken; |
||||||
|
import org.springframework.security.oauth2.provider.AuthorizationRequest; |
||||||
|
import org.springframework.security.oauth2.provider.ClientDetails; |
||||||
|
import org.springframework.security.oauth2.provider.ClientDetailsService; |
||||||
|
import org.springframework.security.oauth2.provider.OAuth2Authentication; |
||||||
|
import org.springframework.security.oauth2.provider.token.TokenStore; |
||||||
|
import org.springframework.web.bind.annotation.*; |
||||||
|
import org.springframework.web.servlet.ModelAndView; |
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest; |
||||||
|
import javax.servlet.http.HttpSession; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
import java.util.Set; |
||||||
|
import java.util.stream.Collectors; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* token端点管理 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: 开发团队-王翔 |
||||||
|
* @Date: 2022/2/16 |
||||||
|
*/ |
||||||
|
@Slf4j |
||||||
|
@RestController |
||||||
|
@RequiredArgsConstructor |
||||||
|
@RequestMapping("/token") |
||||||
|
public class kiccTokenEndpoint { |
||||||
|
|
||||||
|
private final ClientDetailsService clientDetailsService; |
||||||
|
|
||||||
|
private final TokenStore tokenStore; |
||||||
|
|
||||||
|
private final RedisTemplate redisTemplate; |
||||||
|
|
||||||
|
private final CacheManager cacheManager; |
||||||
|
|
||||||
|
/** |
||||||
|
* 认证页面 |
||||||
|
* @param modelAndView |
||||||
|
* @param error 表单登录失败处理回调的错误信息 |
||||||
|
* @return ModelAndView |
||||||
|
*/ |
||||||
|
@GetMapping("/login") |
||||||
|
public ModelAndView require(ModelAndView modelAndView, @RequestParam(required = false) String error) { |
||||||
|
modelAndView.setViewName("ftl/login"); |
||||||
|
modelAndView.addObject("error", error); |
||||||
|
return modelAndView; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 确认授权页面 |
||||||
|
* @param request |
||||||
|
* @param session |
||||||
|
* @param modelAndView |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@GetMapping("/confirm_access") |
||||||
|
public ModelAndView confirm(HttpServletRequest request, HttpSession session, ModelAndView modelAndView) { |
||||||
|
Map<String, Object> scopeList = (Map<String, Object>) request.getAttribute("scopes"); |
||||||
|
modelAndView.addObject("scopeList", scopeList.keySet()); |
||||||
|
|
||||||
|
Object auth = session.getAttribute("authorizationRequest"); |
||||||
|
if (auth != null) { |
||||||
|
AuthorizationRequest authorizationRequest = (AuthorizationRequest) auth; |
||||||
|
ClientDetails clientDetails = clientDetailsService.loadClientByClientId(authorizationRequest.getClientId()); |
||||||
|
modelAndView.addObject("app", clientDetails.getAdditionalInformation()); |
||||||
|
modelAndView.addObject("user", SecurityUtils.getUser()); |
||||||
|
} |
||||||
|
|
||||||
|
modelAndView.setViewName("ftl/confirm"); |
||||||
|
return modelAndView; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 退出并删除token |
||||||
|
* @param authHeader Authorization |
||||||
|
*/ |
||||||
|
@DeleteMapping("/logout") |
||||||
|
public R<Boolean> logout(@RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authHeader) { |
||||||
|
if (StrUtil.isBlank(authHeader)) { |
||||||
|
return R.ok(); |
||||||
|
} |
||||||
|
|
||||||
|
String tokenValue = authHeader.replace(OAuth2AccessToken.BEARER_TYPE, StrUtil.EMPTY).trim(); |
||||||
|
return removeToken(tokenValue); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 删除令牌 |
||||||
|
* @param token token |
||||||
|
*/ |
||||||
|
@Inner |
||||||
|
@DeleteMapping("/{token}") |
||||||
|
public R<Boolean> removeToken(@PathVariable("token") String token) { |
||||||
|
OAuth2AccessToken accessToken = tokenStore.readAccessToken(token); |
||||||
|
if (accessToken == null || StrUtil.isBlank(accessToken.getValue())) { |
||||||
|
return R.ok(); |
||||||
|
} |
||||||
|
|
||||||
|
OAuth2Authentication auth2Authentication = tokenStore.readAuthentication(accessToken); |
||||||
|
// 清空用户信息
|
||||||
|
cacheManager.getCache(CacheConstants.USER_DETAILS).evict(auth2Authentication.getName()); |
||||||
|
|
||||||
|
// 清空access token
|
||||||
|
tokenStore.removeAccessToken(accessToken); |
||||||
|
|
||||||
|
// 清空 refresh token
|
||||||
|
OAuth2RefreshToken refreshToken = accessToken.getRefreshToken(); |
||||||
|
tokenStore.removeRefreshToken(refreshToken); |
||||||
|
|
||||||
|
// 处理自定义退出事件,保存相关日志
|
||||||
|
SpringContextHolder.publishEvent(new LogoutSuccessEvent(auth2Authentication)); |
||||||
|
return R.ok(true); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 查询令牌 |
||||||
|
* @param params 分页参数 |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@Inner |
||||||
|
@PostMapping("/list") |
||||||
|
public R tokenList(@RequestBody Map<String, Object> params) { |
||||||
|
// 根据分页参数获取对应数据
|
||||||
|
String key = String.format("%sauth_to_access:*", CacheConstants.OAUTH_ACCESS); |
||||||
|
int current = MapUtil.getInt(params, CommonConstants.CURRENT); |
||||||
|
int size = MapUtil.getInt(params, CommonConstants.SIZE); |
||||||
|
Set<String> keys = redisTemplate.keys(key); |
||||||
|
List<String> pages = keys.stream().skip((current - 1) * size).limit(size).collect(Collectors.toList()); |
||||||
|
Page result = new Page(current, size); |
||||||
|
result.setRecords(redisTemplate.opsForValue().multiGet(pages)); |
||||||
|
result.setTotal(keys.size()); |
||||||
|
return R.ok(result.getRecords(), result.getTotal()); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,63 @@ |
|||||||
|
package com.cloud.kicc.auth.handler; |
||||||
|
|
||||||
|
import com.cloud.kicc.admin.api.entity.OperLog; |
||||||
|
import com.cloud.kicc.common.core.util.SpringContextHolder; |
||||||
|
import com.cloud.kicc.common.data.entity.KiccUser; |
||||||
|
import com.cloud.kicc.common.log.event.SysLogEvent; |
||||||
|
import com.cloud.kicc.common.log.util.LogTypeEnum; |
||||||
|
import com.cloud.kicc.common.log.util.SysLogUtils; |
||||||
|
import com.cloud.kicc.common.security.handler.AbstractAuthenticationFailureEventHandler; |
||||||
|
import com.cloud.kicc.common.security.util.SecurityUtils; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.security.core.Authentication; |
||||||
|
import org.springframework.security.core.AuthenticationException; |
||||||
|
import org.springframework.security.core.context.SecurityContextHolder; |
||||||
|
import org.springframework.stereotype.Component; |
||||||
|
|
||||||
|
import java.util.Optional; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 登录失败处理 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: 开发团队-王翔 |
||||||
|
* @Date: 2022/2/16 |
||||||
|
*/ |
||||||
|
@Slf4j |
||||||
|
@Component |
||||||
|
public class kiccAuthenticationFailureEventHandler extends AbstractAuthenticationFailureEventHandler { |
||||||
|
|
||||||
|
/** |
||||||
|
* 处理登录失败方法 |
||||||
|
* <p> |
||||||
|
* @param authenticationException 登录的authentication 对象 |
||||||
|
* @param authentication 登录的authenticationException 对象 |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public void handle(AuthenticationException authenticationException, Authentication authentication) { |
||||||
|
log.info("用户:{} 登录失败,异常:{}", authentication.getPrincipal(), authenticationException.getLocalizedMessage()); |
||||||
|
SecurityContextHolder.getContext().setAuthentication(authentication); |
||||||
|
KiccUser kiccUser = SecurityUtils.getUser(authentication); |
||||||
|
OperLog operLog = SysLogUtils.getSysLog(); |
||||||
|
operLog.setTitle("登录失败"); |
||||||
|
operLog.setType(LogTypeEnum.ERROR.getType()); |
||||||
|
operLog.setErrorMsg(authenticationException.getMessage()); |
||||||
|
operLog.setOperName(kiccUser.getUsername()); |
||||||
|
// 发送异步日志事件
|
||||||
|
Long startTime = System.currentTimeMillis(); |
||||||
|
Long endTime = System.currentTimeMillis(); |
||||||
|
operLog.setExecuteTime((endTime - startTime) + "毫秒"); |
||||||
|
|
||||||
|
if (Optional.ofNullable(kiccUser).isPresent()) { |
||||||
|
operLog.setCreateById(kiccUser.getId()); |
||||||
|
operLog.setCreateByName(kiccUser.getUsername()); |
||||||
|
|
||||||
|
operLog.setUpdateById(kiccUser.getId()); |
||||||
|
operLog.setUpdateByName(kiccUser.getUsername()); |
||||||
|
} |
||||||
|
|
||||||
|
SpringContextHolder.publishEvent(new SysLogEvent(operLog)); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,56 @@ |
|||||||
|
package com.cloud.kicc.auth.handler; |
||||||
|
|
||||||
|
import com.cloud.kicc.admin.api.entity.OperLog; |
||||||
|
import com.cloud.kicc.common.core.util.SpringContextHolder; |
||||||
|
import com.cloud.kicc.common.data.entity.KiccUser; |
||||||
|
import com.cloud.kicc.common.log.event.SysLogEvent; |
||||||
|
import com.cloud.kicc.common.log.util.SysLogUtils; |
||||||
|
import com.cloud.kicc.common.security.handler.AbstractAuthenticationSuccessEventHandler; |
||||||
|
import com.cloud.kicc.common.security.util.SecurityUtils; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.security.core.Authentication; |
||||||
|
import org.springframework.security.core.context.SecurityContextHolder; |
||||||
|
import org.springframework.stereotype.Component; |
||||||
|
|
||||||
|
import java.util.Optional; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 登录成功处理 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: 开发团队-王翔 |
||||||
|
* @Date: 2022/2/16 |
||||||
|
*/ |
||||||
|
@Slf4j |
||||||
|
@Component |
||||||
|
public class kiccAuthenticationSuccessEventHandler extends AbstractAuthenticationSuccessEventHandler { |
||||||
|
|
||||||
|
/** |
||||||
|
* 处理登录成功方法 |
||||||
|
* <p> |
||||||
|
* 获取到登录的authentication 对象 |
||||||
|
* @param authentication 登录对象 |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public void handle(Authentication authentication) { |
||||||
|
log.info("用户:{} 登录成功", authentication.getPrincipal()); |
||||||
|
SecurityContextHolder.getContext().setAuthentication(authentication); |
||||||
|
OperLog operLog = SysLogUtils.getSysLog(); |
||||||
|
operLog.setTitle("登录成功"); |
||||||
|
// 发送异步日志事件
|
||||||
|
Long startTime = System.currentTimeMillis(); |
||||||
|
KiccUser kiccUser = SecurityUtils.getUser(authentication); |
||||||
|
if (Optional.ofNullable(kiccUser).isPresent()) { |
||||||
|
operLog.setCreateById(kiccUser.getId()); |
||||||
|
operLog.setCreateByName(kiccUser.getUsername()); |
||||||
|
|
||||||
|
operLog.setUpdateById(kiccUser.getId()); |
||||||
|
operLog.setUpdateByName(kiccUser.getUsername()); |
||||||
|
} |
||||||
|
Long endTime = System.currentTimeMillis(); |
||||||
|
operLog.setExecuteTime((endTime - startTime) + "毫秒"); |
||||||
|
SpringContextHolder.publishEvent(new SysLogEvent(operLog)); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,71 @@ |
|||||||
|
package com.cloud.kicc.auth.handler; |
||||||
|
|
||||||
|
import com.cloud.kicc.admin.api.entity.OperLog; |
||||||
|
import com.cloud.kicc.common.core.util.SpringContextHolder; |
||||||
|
import com.cloud.kicc.common.core.util.WebUtils; |
||||||
|
import com.cloud.kicc.common.data.entity.KiccUser; |
||||||
|
import com.cloud.kicc.common.log.event.SysLogEvent; |
||||||
|
import com.cloud.kicc.common.log.util.SysLogUtils; |
||||||
|
import com.cloud.kicc.common.security.handler.AbstractLogoutSuccessEventHandler; |
||||||
|
import com.cloud.kicc.common.security.util.SecurityUtils; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.http.HttpHeaders; |
||||||
|
import org.springframework.security.core.Authentication; |
||||||
|
import org.springframework.security.core.context.SecurityContextHolder; |
||||||
|
import org.springframework.security.oauth2.provider.OAuth2Authentication; |
||||||
|
import org.springframework.stereotype.Component; |
||||||
|
|
||||||
|
import java.util.Optional; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 注销成功处理 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: 开发团队-王翔 |
||||||
|
* @Date: 2022/2/16 |
||||||
|
*/ |
||||||
|
@Slf4j |
||||||
|
@Component |
||||||
|
public class kiccLogoutSuccessEventHandler extends AbstractLogoutSuccessEventHandler { |
||||||
|
|
||||||
|
/** |
||||||
|
* 处理退出成功方法 |
||||||
|
* <p> |
||||||
|
* 获取到登录的authentication 对象 |
||||||
|
* @param authentication 登录对象 |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public void handle(Authentication authentication) { |
||||||
|
log.info("用户:{} 退出成功", authentication.getPrincipal()); |
||||||
|
SecurityContextHolder.getContext().setAuthentication(authentication); |
||||||
|
KiccUser kiccUser = SecurityUtils.getUser(authentication); |
||||||
|
|
||||||
|
OperLog operLog = SysLogUtils.getSysLog(); |
||||||
|
operLog.setTitle("退出成功"); |
||||||
|
// 发送异步日志事件
|
||||||
|
Long startTime = System.currentTimeMillis(); |
||||||
|
Long endTime = System.currentTimeMillis(); |
||||||
|
operLog.setExecuteTime((endTime - startTime) + "毫秒"); |
||||||
|
|
||||||
|
// 设置对应的token
|
||||||
|
WebUtils.getRequest().ifPresent(request -> operLog.setOperParam(request.getHeader(HttpHeaders.AUTHORIZATION))); |
||||||
|
|
||||||
|
// 这边设置ServiceId
|
||||||
|
if (authentication instanceof OAuth2Authentication) { |
||||||
|
OAuth2Authentication auth2Authentication = (OAuth2Authentication) authentication; |
||||||
|
operLog.setServiceId(auth2Authentication.getOAuth2Request().getClientId()); |
||||||
|
} |
||||||
|
|
||||||
|
if (Optional.ofNullable(kiccUser).isPresent()) { |
||||||
|
operLog.setCreateById(kiccUser.getId()); |
||||||
|
operLog.setCreateByName(kiccUser.getUsername()); |
||||||
|
|
||||||
|
operLog.setUpdateById(kiccUser.getId()); |
||||||
|
operLog.setUpdateByName(kiccUser.getUsername()); |
||||||
|
} |
||||||
|
|
||||||
|
SpringContextHolder.publishEvent(new SysLogEvent(operLog)); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,17 @@ |
|||||||
|
server: |
||||||
|
port: 3000 |
||||||
|
|
||||||
|
spring: |
||||||
|
application: |
||||||
|
name: @artifactId@ |
||||||
|
cloud: |
||||||
|
nacos: |
||||||
|
discovery: |
||||||
|
server-addr: ${NACOS_HOST:kicc-register}:${NACOS_PORT:8848} |
||||||
|
namespace: @profiles.namespace@ |
||||||
|
config: |
||||||
|
server-addr: ${spring.cloud.nacos.discovery.server-addr} |
||||||
|
file-extension: yml |
||||||
|
namespace: @profiles.namespace@ |
||||||
|
shared-configs: |
||||||
|
- application.${spring.cloud.nacos.config.file-extension} |
||||||
@ -0,0 +1,57 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!--基础日志配置,工程继承可以进行替换--> |
||||||
|
<configuration debug="false" scan="false"> |
||||||
|
<springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/> |
||||||
|
<property name="log.path" value="logs/${spring.application.name}"/> |
||||||
|
<!-- 彩色日志格式 --> |
||||||
|
<property name="CONSOLE_LOG_PATTERN" |
||||||
|
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> |
||||||
|
<!-- 彩色日志依赖的渲染类 --> |
||||||
|
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/> |
||||||
|
<conversionRule conversionWord="wex" |
||||||
|
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/> |
||||||
|
<conversionRule conversionWord="wEx" |
||||||
|
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/> |
||||||
|
<!-- 控制台日志输出 --> |
||||||
|
<appender name="console" class="ch.qos.logback.core.ConsoleAppender"> |
||||||
|
<encoder> |
||||||
|
<pattern>${CONSOLE_LOG_PATTERN}</pattern> |
||||||
|
</encoder> |
||||||
|
</appender> |
||||||
|
|
||||||
|
<!-- 日志文件调试输出 --> |
||||||
|
<appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
||||||
|
<file>${log.path}/debug.log</file> |
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
||||||
|
<fileNamePattern>${log.path}/%d{yyyy-MM, aux}/debug.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> |
||||||
|
<maxFileSize>50MB</maxFileSize> |
||||||
|
<maxHistory>30</maxHistory> |
||||||
|
</rollingPolicy> |
||||||
|
<encoder> |
||||||
|
<pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern> |
||||||
|
</encoder> |
||||||
|
</appender> |
||||||
|
|
||||||
|
<!-- 日志文件错误输出 --> |
||||||
|
<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
||||||
|
<file>${log.path}/error.log</file> |
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
||||||
|
<fileNamePattern>${log.path}/%d{yyyy-MM}/error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> |
||||||
|
<maxFileSize>50MB</maxFileSize> |
||||||
|
<maxHistory>30</maxHistory> |
||||||
|
</rollingPolicy> |
||||||
|
<encoder> |
||||||
|
<pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern> |
||||||
|
</encoder> |
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter"> |
||||||
|
<level>ERROR</level> |
||||||
|
</filter> |
||||||
|
</appender> |
||||||
|
|
||||||
|
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 --> |
||||||
|
<root level="INFO"> |
||||||
|
<appender-ref ref="console"/> |
||||||
|
<appender-ref ref="debug"/> |
||||||
|
<appender-ref ref="error"/> |
||||||
|
</root> |
||||||
|
</configuration> |
||||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,50 @@ |
|||||||
|
.sign_body { |
||||||
|
padding-top: 40px; |
||||||
|
padding-bottom: 40px; |
||||||
|
background-color: #eee; |
||||||
|
} |
||||||
|
|
||||||
|
.form-signin { |
||||||
|
max-width: 330px; |
||||||
|
padding: 15px; |
||||||
|
margin: 0 auto; |
||||||
|
} |
||||||
|
.form-margin-top { |
||||||
|
margin-top: 50px; |
||||||
|
} |
||||||
|
.form-signin .form-signin-heading, |
||||||
|
.form-signin .checkbox { |
||||||
|
margin-bottom: 10px; |
||||||
|
} |
||||||
|
.form-signin .checkbox { |
||||||
|
font-weight: normal; |
||||||
|
} |
||||||
|
.form-signin .form-control { |
||||||
|
position: relative; |
||||||
|
height: auto; |
||||||
|
-webkit-box-sizing: border-box; |
||||||
|
-moz-box-sizing: border-box; |
||||||
|
box-sizing: border-box; |
||||||
|
padding: 10px; |
||||||
|
font-size: 16px; |
||||||
|
} |
||||||
|
.form-signin .form-control:focus { |
||||||
|
z-index: 2; |
||||||
|
} |
||||||
|
.form-signin input[type="email"] { |
||||||
|
margin-bottom: -1px; |
||||||
|
border-bottom-right-radius: 0; |
||||||
|
border-bottom-left-radius: 0; |
||||||
|
} |
||||||
|
.form-signin input[type="password"] { |
||||||
|
margin-bottom: 10px; |
||||||
|
border-top-left-radius: 0; |
||||||
|
border-top-right-radius: 0; |
||||||
|
} |
||||||
|
footer{ |
||||||
|
text-align: center; |
||||||
|
position:absolute; |
||||||
|
bottom:0; |
||||||
|
width:100%; |
||||||
|
height:100px; |
||||||
|
} |
||||||
@ -0,0 +1,51 @@ |
|||||||
|
<!DOCTYPE html> |
||||||
|
<html lang="en"> |
||||||
|
<head> |
||||||
|
<meta charset="UTF-8"/> |
||||||
|
<meta name="viewport" |
||||||
|
content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/> |
||||||
|
<title>长沙康来生物有限公司 第三方授权</title> |
||||||
|
<!--使用/oauth/authorize获取返回页面--> |
||||||
|
<link rel="stylesheet" type="text/css" href="/css/bootstrap.min.css"/> |
||||||
|
<link rel="stylesheet" type="text/css" href="/css/signin.css"/> |
||||||
|
</head> |
||||||
|
|
||||||
|
<body> |
||||||
|
<nav class="navbar navbar-default container-fluid"> |
||||||
|
<div class="container"> |
||||||
|
<div class="navbar-header"> |
||||||
|
<a class="navbar-brand" href="#">长沙康来生物有限公司微服务架构开放平台</a> |
||||||
|
</div> |
||||||
|
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-5"> |
||||||
|
<p class="navbar-text navbar-right"> |
||||||
|
<a href="javascript:void(0)">技术支持</a> |
||||||
|
</p> |
||||||
|
<p class="navbar-text navbar-right"> |
||||||
|
当前用户:${user.username} |
||||||
|
</p> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</nav> |
||||||
|
<div style="padding-top: 80px;width: 300px; color: #555; margin:0px auto;"> |
||||||
|
<form id='confirmationForm' name='confirmationForm' action="/oauth/authorize" method='post'> |
||||||
|
<input name='user_oauth_approval' value='true' type='hidden'/> |
||||||
|
<p> |
||||||
|
<a href="${app.website!''}" target="_blank">${app.appName!'未定义应用名称'}</a> 将获得以下权限:</p> |
||||||
|
<ul class="list-group"> |
||||||
|
<li class="list-group-item"> <span> |
||||||
|
<#list scopeList as scope> |
||||||
|
<input type="hidden" name="${scope}" value="true"/> |
||||||
|
<input type="checkbox" checked="checked"/><label>${scope}</label> |
||||||
|
</#list> |
||||||
|
</ul> |
||||||
|
<p class="help-block">授权后表明你已同意 <a href="javascript:void(0)">服务协议</a></p> |
||||||
|
<button class="btn btn-success pull-right" type="submit" id="write-email-btn">授权</button> |
||||||
|
</p> |
||||||
|
</form> |
||||||
|
</div> |
||||||
|
<footer> |
||||||
|
<p>关于: 长沙康来生物有限公司</p> |
||||||
|
<p>邮箱: <a href="mailto:1827945911@qq.com">联系我们</a>.</p> |
||||||
|
</footer> |
||||||
|
</body> |
||||||
|
</html> |
||||||
@ -0,0 +1,35 @@ |
|||||||
|
<!DOCTYPE html> |
||||||
|
<html lang="en"> |
||||||
|
<head> |
||||||
|
<meta charset="utf-8"> |
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge"> |
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1"> |
||||||
|
<meta name="description" content=""> |
||||||
|
<meta name="author" content=""> |
||||||
|
|
||||||
|
<!--拦截后返回的页面--> |
||||||
|
<title>长沙康来生物有限公司 统一认证</title> |
||||||
|
|
||||||
|
<link href="/css/bootstrap.min.css" rel="stylesheet"> |
||||||
|
<link href="/css/signin.css" rel="stylesheet"> |
||||||
|
</head> |
||||||
|
|
||||||
|
<body class="sign_body"> |
||||||
|
<div class="container form-margin-top"> |
||||||
|
<form class="form-signin" action="/token/form" method="post"> |
||||||
|
<h2 class="form-signin-heading" align="center">康来生物统一认证系统</h2> |
||||||
|
<input type="hidden" name="clientId" class="form-control" value="kicc" placeholder="所属客户端" > |
||||||
|
<input type="text" name="username" class="form-control form-margin-top" placeholder="账号" required autofocus> |
||||||
|
<input type="password" name="password" class="form-control" placeholder="密码" required> |
||||||
|
<button class="btn btn-lg btn-primary btn-block" type="submit">sign in</button> |
||||||
|
<#if error??> |
||||||
|
<span style="color: red; ">${error}</span> |
||||||
|
</#if> |
||||||
|
</form> |
||||||
|
</div> |
||||||
|
<footer> |
||||||
|
<p>关于: 长沙康来生物有限公司</p> |
||||||
|
<p>邮箱: <a href="mailto:1827945911@qq.com">联系我们</a>.</p> |
||||||
|
</footer> |
||||||
|
</body> |
||||||
|
</html> |
||||||
@ -0,0 +1,65 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" |
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<parent> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-demo-mq</artifactId> |
||||||
|
<version>1.0.0</version> |
||||||
|
</parent> |
||||||
|
|
||||||
|
<artifactId>kicc-message-consumer</artifactId> |
||||||
|
<packaging>jar</packaging> |
||||||
|
|
||||||
|
<description>mq消息消费者</description> |
||||||
|
|
||||||
|
<dependencies> |
||||||
|
<!--undertow容器--> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-starter-undertow</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-rocketmq</artifactId> |
||||||
|
</dependency> |
||||||
|
<!--数据服务核心包--> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-data</artifactId> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
|
||||||
|
<build> |
||||||
|
<plugins> |
||||||
|
<plugin> |
||||||
|
<groupId>io.fabric8</groupId> |
||||||
|
<artifactId>docker-maven-plugin</artifactId> |
||||||
|
</plugin> |
||||||
|
<plugin> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId> |
||||||
|
</plugin> |
||||||
|
</plugins> |
||||||
|
<resources> |
||||||
|
<resource> |
||||||
|
<directory>src/main/resources</directory> |
||||||
|
<filtering>true</filtering> |
||||||
|
<excludes> |
||||||
|
<exclude>**/*.xlsx</exclude> |
||||||
|
<exclude>**/*.xls</exclude> |
||||||
|
</excludes> |
||||||
|
</resource> |
||||||
|
<resource> |
||||||
|
<directory>src/main/resources</directory> |
||||||
|
<filtering>false</filtering> |
||||||
|
<includes> |
||||||
|
<include>**/*.xlsx</include> |
||||||
|
<include>**/*.xls</include> |
||||||
|
</includes> |
||||||
|
</resource> |
||||||
|
</resources> |
||||||
|
</build> |
||||||
|
|
||||||
|
</project> |
||||||
@ -0,0 +1,26 @@ |
|||||||
|
package com.cloud.kicc.mq; |
||||||
|
|
||||||
|
import com.cloud.kicc.common.rocketmq.channel.KiccSink; |
||||||
|
import org.springframework.boot.SpringApplication; |
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication; |
||||||
|
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; |
||||||
|
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration; |
||||||
|
import org.springframework.cloud.stream.annotation.EnableBinding; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 消息中心消费者启动类 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/9 |
||||||
|
*/ |
||||||
|
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class}) |
||||||
|
@EnableBinding({KiccSink.class}) |
||||||
|
public class MessageConsumerServer { |
||||||
|
|
||||||
|
public static void main(String[] args) { |
||||||
|
SpringApplication.run(MessageConsumerServer.class, args); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,32 @@ |
|||||||
|
package com.cloud.kicc.mq.service; |
||||||
|
|
||||||
|
import com.cloud.kicc.common.rocketmq.constant.MessageConstant; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.cloud.stream.annotation.StreamListener; |
||||||
|
import org.springframework.messaging.handler.annotation.Payload; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 短信消费者业务 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/9 |
||||||
|
*/ |
||||||
|
@Slf4j |
||||||
|
@Service |
||||||
|
public class SmsConsumerService { |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 监控听短信input |
||||||
|
* @param message 消费文本内容 |
||||||
|
*/ |
||||||
|
@StreamListener(MessageConstant.SMS_MESSAGE_INPUT) |
||||||
|
public void handler(@Payload String message) { |
||||||
|
log.error("接收到的消息为:{}", message); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,14 @@ |
|||||||
|
server: |
||||||
|
port: 40003 |
||||||
|
spring: |
||||||
|
application: |
||||||
|
name: @artifactId@ |
||||||
|
cloud: |
||||||
|
stream: |
||||||
|
rocketmq: |
||||||
|
# rocketmq-binder配置项,对应RocketMQBinderConfigurationProperties类 |
||||||
|
binder: |
||||||
|
name-server: 127.0.0.1:9876 |
||||||
|
# 也可以配置密码,可以设置开启acl,目前只是在内网使用没开,后期有这方面需求在开启 |
||||||
|
# access-key: |
||||||
|
# secret-key: |
||||||
@ -0,0 +1,65 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" |
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<parent> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-demo-mq</artifactId> |
||||||
|
<version>1.0.0</version> |
||||||
|
</parent> |
||||||
|
|
||||||
|
<artifactId>kicc-message-producer</artifactId> |
||||||
|
<packaging>jar</packaging> |
||||||
|
|
||||||
|
<description>mq消息提供者</description> |
||||||
|
|
||||||
|
<dependencies> |
||||||
|
<!--undertow容器--> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-starter-undertow</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-rocketmq</artifactId> |
||||||
|
</dependency> |
||||||
|
<!--数据服务核心包--> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-data</artifactId> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
|
||||||
|
<build> |
||||||
|
<plugins> |
||||||
|
<plugin> |
||||||
|
<groupId>io.fabric8</groupId> |
||||||
|
<artifactId>docker-maven-plugin</artifactId> |
||||||
|
</plugin> |
||||||
|
<plugin> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId> |
||||||
|
</plugin> |
||||||
|
</plugins> |
||||||
|
<resources> |
||||||
|
<resource> |
||||||
|
<directory>src/main/resources</directory> |
||||||
|
<filtering>true</filtering> |
||||||
|
<excludes> |
||||||
|
<exclude>**/*.xlsx</exclude> |
||||||
|
<exclude>**/*.xls</exclude> |
||||||
|
</excludes> |
||||||
|
</resource> |
||||||
|
<resource> |
||||||
|
<directory>src/main/resources</directory> |
||||||
|
<filtering>false</filtering> |
||||||
|
<includes> |
||||||
|
<include>**/*.xlsx</include> |
||||||
|
<include>**/*.xls</include> |
||||||
|
</includes> |
||||||
|
</resource> |
||||||
|
</resources> |
||||||
|
</build> |
||||||
|
|
||||||
|
</project> |
||||||
@ -0,0 +1,26 @@ |
|||||||
|
package com.cloud.kicc.mq; |
||||||
|
|
||||||
|
import com.cloud.kicc.common.rocketmq.channel.KiccSource; |
||||||
|
import org.springframework.boot.SpringApplication; |
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication; |
||||||
|
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; |
||||||
|
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration; |
||||||
|
import org.springframework.cloud.stream.annotation.EnableBinding; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 消息中心生产者启动类 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/9 |
||||||
|
*/ |
||||||
|
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class}) |
||||||
|
@EnableBinding({KiccSource.class}) |
||||||
|
public class MessageProducerServer { |
||||||
|
|
||||||
|
public static void main(String[] args) { |
||||||
|
SpringApplication.run(MessageProducerServer.class, args); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,29 @@ |
|||||||
|
package com.cloud.kicc.mq.controller; |
||||||
|
|
||||||
|
import com.cloud.kicc.common.core.api.R; |
||||||
|
import com.cloud.kicc.mq.service.SmsService; |
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import org.springframework.web.bind.annotation.GetMapping; |
||||||
|
import org.springframework.web.bind.annotation.RestController; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 发送短信控制器 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/9 |
||||||
|
*/ |
||||||
|
@RestController |
||||||
|
@AllArgsConstructor |
||||||
|
public class SmsController { |
||||||
|
|
||||||
|
private final SmsService smsService; |
||||||
|
|
||||||
|
@GetMapping("/send/sms") |
||||||
|
public R sendSms(String message) { |
||||||
|
smsService.sendSms(message); |
||||||
|
return R.ok("操作成功"); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,29 @@ |
|||||||
|
package com.cloud.kicc.mq.controller; |
||||||
|
|
||||||
|
import com.cloud.kicc.common.core.api.R; |
||||||
|
import com.cloud.kicc.mq.service.TransactionOrderService; |
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import org.springframework.web.bind.annotation.GetMapping; |
||||||
|
import org.springframework.web.bind.annotation.RestController; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 测试订单事务控制器 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/10 |
||||||
|
*/ |
||||||
|
@RestController |
||||||
|
@AllArgsConstructor |
||||||
|
public class TransactionOrderController { |
||||||
|
|
||||||
|
private final TransactionOrderService transactionOrderService; |
||||||
|
|
||||||
|
@GetMapping("/send/order") |
||||||
|
public R sendOrder() { |
||||||
|
transactionOrderService.testStreamTransaction(); |
||||||
|
return R.ok("操作成功"); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,23 @@ |
|||||||
|
package com.cloud.kicc.mq.service; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 订单事务消息 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/9 |
||||||
|
*/ |
||||||
|
public interface TransactionOrderService { |
||||||
|
|
||||||
|
/** |
||||||
|
* 测试事务消息,使用rocketMQ模板rocketMQTemplate发生 |
||||||
|
*/ |
||||||
|
void testTransaction(); |
||||||
|
|
||||||
|
/** |
||||||
|
* 通过spring-cloud-stream方式发送消息 |
||||||
|
* 注意配置spring.cloud.stream.rocketmq.bindings.order-output.producer.transactional=true |
||||||
|
*/ |
||||||
|
void testStreamTransaction(); |
||||||
|
} |
||||||
@ -0,0 +1,27 @@ |
|||||||
|
package com.cloud.kicc.mq.service.impl; |
||||||
|
|
||||||
|
import com.cloud.kicc.common.rocketmq.channel.KiccSource; |
||||||
|
import com.cloud.kicc.mq.service.SmsService; |
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import org.springframework.messaging.support.MessageBuilder; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 发送短信实现类 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/9 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
@AllArgsConstructor |
||||||
|
public class SmsServiceImpl implements SmsService { |
||||||
|
|
||||||
|
private final KiccSource source; |
||||||
|
|
||||||
|
@Override |
||||||
|
public void sendSms(String message) { |
||||||
|
source.smsOutput().send(MessageBuilder.withPayload(message).build()); |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,80 @@ |
|||||||
|
package com.cloud.kicc.mq.service.impl; |
||||||
|
|
||||||
|
import com.cloud.kicc.common.rocketmq.channel.KiccSource; |
||||||
|
import com.cloud.kicc.common.rocketmq.constant.MessageConstant; |
||||||
|
import com.cloud.kicc.common.rocketmq.entity.Order; |
||||||
|
import com.cloud.kicc.mq.service.TransactionOrderService; |
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.apache.rocketmq.spring.core.RocketMQTemplate; |
||||||
|
import org.apache.rocketmq.spring.support.RocketMQHeaders; |
||||||
|
import org.springframework.messaging.support.MessageBuilder; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import java.math.BigDecimal; |
||||||
|
import java.time.LocalDateTime; |
||||||
|
import java.util.UUID; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 订单事务消息实现 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/9 |
||||||
|
*/ |
||||||
|
@Slf4j |
||||||
|
@Service |
||||||
|
@AllArgsConstructor |
||||||
|
public class TransactionOrderServiceImpl implements TransactionOrderService { |
||||||
|
|
||||||
|
private final RocketMQTemplate rocketMQTemplate; |
||||||
|
|
||||||
|
private final KiccSource kiccSource; |
||||||
|
|
||||||
|
/** |
||||||
|
* 这里消息发送只是half发送, |
||||||
|
* 后面消息队列中half成功后,在TestTransactionListener中的executeLocalTransaction的方法中决定是否要提交本地事务 |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public void testTransaction() { |
||||||
|
|
||||||
|
Order order = new Order().setId(1L) |
||||||
|
.setGoodsId(100L) |
||||||
|
.setGoodsPrice(BigDecimal.valueOf(100.00)) |
||||||
|
.setTradeId(100L) |
||||||
|
.setNumber(2) |
||||||
|
.setCreateTime(LocalDateTime.now()); |
||||||
|
|
||||||
|
// 事务id
|
||||||
|
String transactionId = UUID.randomUUID().toString(); |
||||||
|
rocketMQTemplate.sendMessageInTransaction(MessageConstant.ORDER_BINDER_GROUP, |
||||||
|
MessageConstant.ORDER_MESSAGE_OUTPUT, |
||||||
|
MessageBuilder.withPayload(order) |
||||||
|
.setHeader(RocketMQHeaders.TRANSACTION_ID, transactionId) |
||||||
|
.setHeader("share_id", 3).build(), |
||||||
|
4L); |
||||||
|
|
||||||
|
log.info("half消息发送成功"); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void testStreamTransaction() { |
||||||
|
|
||||||
|
Order order = new Order().setId(1L) |
||||||
|
.setGoodsId(100L) |
||||||
|
.setGoodsPrice(BigDecimal.valueOf(100.00)) |
||||||
|
.setTradeId(100L) |
||||||
|
.setNumber(2) |
||||||
|
.setCreateTime(LocalDateTime.now()); |
||||||
|
// 事务id
|
||||||
|
String transactionId = UUID.randomUUID().toString(); |
||||||
|
kiccSource.orderOutput().send( |
||||||
|
MessageBuilder.withPayload(order) |
||||||
|
.setHeader(RocketMQHeaders.TRANSACTION_ID, transactionId) |
||||||
|
.setHeader("share_id", 3).build() |
||||||
|
); |
||||||
|
log.info("half消息发送成功"); |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,14 @@ |
|||||||
|
server: |
||||||
|
port: 40002 |
||||||
|
spring: |
||||||
|
application: |
||||||
|
name: @artifactId@ |
||||||
|
cloud: |
||||||
|
stream: |
||||||
|
rocketmq: |
||||||
|
# rocketmq-binder配置项,对应RocketMQBinderConfigurationProperties类 |
||||||
|
binder: |
||||||
|
name-server: 127.0.0.1:9876 |
||||||
|
# 也可以配置密码,可以设置开启acl,目前只是在内网使用没开,后期有这方面需求在开启 |
||||||
|
# access-key: |
||||||
|
# secret-key: |
||||||
@ -0,0 +1,22 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" |
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<parent> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-demo</artifactId> |
||||||
|
<version>1.0.0</version> |
||||||
|
</parent> |
||||||
|
|
||||||
|
<artifactId>kicc-common-demo-mq</artifactId> |
||||||
|
|
||||||
|
<description>kicc 统一消息中心 演示</description> |
||||||
|
<packaging>pom</packaging> |
||||||
|
|
||||||
|
<modules> |
||||||
|
<module>kicc-message-consumer</module> |
||||||
|
<module>kicc-message-producer</module> |
||||||
|
</modules> |
||||||
|
|
||||||
|
</project> |
||||||
@ -0,0 +1,72 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" |
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
|
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<parent> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-demo-seata</artifactId> |
||||||
|
<version>1.0.0</version> |
||||||
|
</parent> |
||||||
|
|
||||||
|
<artifactId>kicc-seata-order</artifactId> |
||||||
|
<packaging>jar</packaging> |
||||||
|
|
||||||
|
<description>分布式解决方案演示-订单服务</description> |
||||||
|
|
||||||
|
<dependencies> |
||||||
|
<!--undertow容器--> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-starter-undertow</artifactId> |
||||||
|
</dependency> |
||||||
|
<!--seata分布式事务解决方案--> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-seata</artifactId> |
||||||
|
</dependency> |
||||||
|
<!--数据服务核心包--> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-data</artifactId> |
||||||
|
</dependency> |
||||||
|
<!--注册中心客户端--> |
||||||
|
<dependency> |
||||||
|
<groupId>com.alibaba.cloud</groupId> |
||||||
|
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
|
||||||
|
<build> |
||||||
|
<plugins> |
||||||
|
<plugin> |
||||||
|
<groupId>io.fabric8</groupId> |
||||||
|
<artifactId>docker-maven-plugin</artifactId> |
||||||
|
</plugin> |
||||||
|
<plugin> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId> |
||||||
|
</plugin> |
||||||
|
</plugins> |
||||||
|
<resources> |
||||||
|
<resource> |
||||||
|
<directory>src/main/resources</directory> |
||||||
|
<filtering>true</filtering> |
||||||
|
<excludes> |
||||||
|
<exclude>**/*.xlsx</exclude> |
||||||
|
<exclude>**/*.xls</exclude> |
||||||
|
</excludes> |
||||||
|
</resource> |
||||||
|
<resource> |
||||||
|
<directory>src/main/resources</directory> |
||||||
|
<filtering>false</filtering> |
||||||
|
<includes> |
||||||
|
<include>**/*.xlsx</include> |
||||||
|
<include>**/*.xls</include> |
||||||
|
</includes> |
||||||
|
</resource> |
||||||
|
</resources> |
||||||
|
</build> |
||||||
|
|
||||||
|
</project> |
||||||
@ -0,0 +1,21 @@ |
|||||||
|
package com.cloud.kicc.order; |
||||||
|
|
||||||
|
import org.springframework.boot.SpringApplication; |
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* Seata订单启动类 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/11 |
||||||
|
*/ |
||||||
|
@SpringBootApplication |
||||||
|
public class SeataOrderServer { |
||||||
|
|
||||||
|
public static void main(String[] args) { |
||||||
|
SpringApplication.run(SeataOrderServer.class, args); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,31 @@ |
|||||||
|
package com.cloud.kicc.order.controller; |
||||||
|
|
||||||
|
import com.cloud.kicc.order.entity.Order; |
||||||
|
import com.cloud.kicc.order.service.OrderService; |
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import org.springframework.transaction.annotation.Transactional; |
||||||
|
import org.springframework.web.bind.annotation.PostMapping; |
||||||
|
import org.springframework.web.bind.annotation.RestController; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 订单控制器类 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/11 |
||||||
|
*/ |
||||||
|
@RestController |
||||||
|
@RequiredArgsConstructor |
||||||
|
public class OrderController { |
||||||
|
private final OrderService orderService; |
||||||
|
|
||||||
|
@Transactional(rollbackFor = Exception.class) |
||||||
|
@PostMapping("/order") |
||||||
|
public void createOrder() { |
||||||
|
Order order = new Order(); |
||||||
|
int a = 1 / 0; |
||||||
|
order.setMoney(100); |
||||||
|
orderService.save(order); |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,30 @@ |
|||||||
|
package com.cloud.kicc.order.entity; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||||
|
import lombok.Data; |
||||||
|
import lombok.EqualsAndHashCode; |
||||||
|
import lombok.experimental.Accessors; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 订单实体类 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/11 |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
@EqualsAndHashCode(callSuper = false) |
||||||
|
@Accessors(chain = true) |
||||||
|
@TableName("demo_seata_order") |
||||||
|
public class Order { |
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L; |
||||||
|
|
||||||
|
@TableId |
||||||
|
private String id; |
||||||
|
|
||||||
|
private Integer money; |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,15 @@ |
|||||||
|
package com.cloud.kicc.order.mapper; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
import com.cloud.kicc.order.entity.Order; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 订单mapper |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/11 |
||||||
|
*/ |
||||||
|
public interface OrderMapper extends BaseMapper<Order> { |
||||||
|
} |
||||||
@ -0,0 +1,16 @@ |
|||||||
|
package com.cloud.kicc.order.service; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
|
import com.cloud.kicc.order.entity.Order; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 订单业务接口类 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/11 |
||||||
|
*/ |
||||||
|
public interface OrderService extends IService<Order> { |
||||||
|
} |
||||||
@ -0,0 +1,20 @@ |
|||||||
|
package com.cloud.kicc.order.service.impl; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
import com.cloud.kicc.order.entity.Order; |
||||||
|
import com.cloud.kicc.order.mapper.OrderMapper; |
||||||
|
import com.cloud.kicc.order.service.OrderService; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 订单业务实现类 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/11 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService { |
||||||
|
} |
||||||
@ -0,0 +1,40 @@ |
|||||||
|
server: |
||||||
|
port: 60001 |
||||||
|
spring: |
||||||
|
application: |
||||||
|
name: @artifactId@ |
||||||
|
cloud: |
||||||
|
nacos: |
||||||
|
discovery: |
||||||
|
server-addr: ${NACOS_HOST:101.42.231.100}:${NACOS_PORT:8848} |
||||||
|
namespace: ${seata.registry.nacos.namespace} |
||||||
|
group: ${seata.registry.nacos.group} |
||||||
|
datasource: |
||||||
|
# 数据源采用spring-boot自带kari,轻量化 |
||||||
|
type: com.zaxxer.hikari.HikariDataSource |
||||||
|
driver-class-name: com.mysql.cj.jdbc.Driver |
||||||
|
username: ${MYSQL_USER:root} |
||||||
|
password: ${MYSQL_PWD:root} |
||||||
|
url: jdbc:mysql://${MYSQL_HOST:127.0.0.1}:${MYSQL_PORT:3306}/${MYSQL_DB:kicc}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true |
||||||
|
|
||||||
|
# mybatis-plus配置 |
||||||
|
mybatis-plus: |
||||||
|
mapper-locations: |
||||||
|
- classpath:mapper/**/*.xml |
||||||
|
typeAliasesPackage: com.cloud.kicc.**.entity |
||||||
|
global-config: |
||||||
|
# 不显示banner |
||||||
|
banner: false |
||||||
|
# 数据库相关配置 |
||||||
|
db-config: |
||||||
|
#主键类型 AUTO:"数据库ID自增", INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID"; |
||||||
|
id-type: assign_id |
||||||
|
configuration: |
||||||
|
call-setters-on-nulls: true |
||||||
|
|
||||||
|
# 日志配置 |
||||||
|
logging: |
||||||
|
level: |
||||||
|
com.cloud.kicc: debug |
||||||
|
org.springframework: WARN |
||||||
|
org.spring.springboot.dao: debug |
||||||
@ -0,0 +1,71 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" |
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<parent> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-demo-seata</artifactId> |
||||||
|
<version>1.0.0</version> |
||||||
|
</parent> |
||||||
|
|
||||||
|
<artifactId>kicc-seata-point</artifactId> |
||||||
|
<packaging>jar</packaging> |
||||||
|
|
||||||
|
<description>分布式解决方案演示-积分服务</description> |
||||||
|
|
||||||
|
<dependencies> |
||||||
|
<!--undertow容器--> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-starter-undertow</artifactId> |
||||||
|
</dependency> |
||||||
|
<!--seata分布式事务解决方案--> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-seata</artifactId> |
||||||
|
</dependency> |
||||||
|
<!--数据服务核心包--> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-data</artifactId> |
||||||
|
</dependency> |
||||||
|
<!--注册中心客户端--> |
||||||
|
<dependency> |
||||||
|
<groupId>com.alibaba.cloud</groupId> |
||||||
|
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
|
||||||
|
<build> |
||||||
|
<plugins> |
||||||
|
<plugin> |
||||||
|
<groupId>io.fabric8</groupId> |
||||||
|
<artifactId>docker-maven-plugin</artifactId> |
||||||
|
</plugin> |
||||||
|
<plugin> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId> |
||||||
|
</plugin> |
||||||
|
</plugins> |
||||||
|
<resources> |
||||||
|
<resource> |
||||||
|
<directory>src/main/resources</directory> |
||||||
|
<filtering>true</filtering> |
||||||
|
<excludes> |
||||||
|
<exclude>**/*.xlsx</exclude> |
||||||
|
<exclude>**/*.xls</exclude> |
||||||
|
</excludes> |
||||||
|
</resource> |
||||||
|
<resource> |
||||||
|
<directory>src/main/resources</directory> |
||||||
|
<filtering>false</filtering> |
||||||
|
<includes> |
||||||
|
<include>**/*.xlsx</include> |
||||||
|
<include>**/*.xls</include> |
||||||
|
</includes> |
||||||
|
</resource> |
||||||
|
</resources> |
||||||
|
</build> |
||||||
|
|
||||||
|
</project> |
||||||
@ -0,0 +1,21 @@ |
|||||||
|
package com.cloud.kicc.point; |
||||||
|
|
||||||
|
import org.springframework.boot.SpringApplication; |
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* Seata积分启动类 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/11 |
||||||
|
*/ |
||||||
|
@SpringBootApplication |
||||||
|
public class SeataPointServer { |
||||||
|
|
||||||
|
public static void main(String[] args) { |
||||||
|
SpringApplication.run(SeataPointServer.class, args); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,34 @@ |
|||||||
|
package com.cloud.kicc.point.controller; |
||||||
|
|
||||||
|
import com.cloud.kicc.point.entity.Point; |
||||||
|
import com.cloud.kicc.point.service.PointService; |
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import org.springframework.transaction.annotation.Transactional; |
||||||
|
import org.springframework.web.bind.annotation.PostMapping; |
||||||
|
import org.springframework.web.bind.annotation.RestController; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 积分控制器类 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/11 |
||||||
|
*/ |
||||||
|
@RestController |
||||||
|
@RequiredArgsConstructor |
||||||
|
public class PointController { |
||||||
|
|
||||||
|
private final PointService pointService; |
||||||
|
|
||||||
|
/** |
||||||
|
* 创建积分 |
||||||
|
*/ |
||||||
|
@Transactional(rollbackFor = Exception.class) |
||||||
|
@PostMapping("/point") |
||||||
|
public void setPoint() { |
||||||
|
Point point = new Point(); |
||||||
|
point.setCount(10); |
||||||
|
pointService.saveOrUpdate(point); |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,30 @@ |
|||||||
|
package com.cloud.kicc.point.entity; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||||
|
import lombok.Data; |
||||||
|
import lombok.EqualsAndHashCode; |
||||||
|
import lombok.experimental.Accessors; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 积分实体类 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/11 |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
@EqualsAndHashCode(callSuper = false) |
||||||
|
@Accessors(chain = true) |
||||||
|
@TableName("demo_seata_point") |
||||||
|
public class Point { |
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L; |
||||||
|
|
||||||
|
@TableId |
||||||
|
private String id; |
||||||
|
|
||||||
|
private Integer count; |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,15 @@ |
|||||||
|
package com.cloud.kicc.point.mapper; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
import com.cloud.kicc.point.entity.Point; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 积分mapper类 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/11 |
||||||
|
*/ |
||||||
|
public interface PointMapper extends BaseMapper<Point> { |
||||||
|
} |
||||||
@ -0,0 +1,15 @@ |
|||||||
|
package com.cloud.kicc.point.service; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
|
import com.cloud.kicc.point.entity.Point; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 积分业务接口类 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/11 |
||||||
|
*/ |
||||||
|
public interface PointService extends IService<Point> { |
||||||
|
} |
||||||
@ -0,0 +1,19 @@ |
|||||||
|
package com.cloud.kicc.point.service.impl; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
import com.cloud.kicc.point.entity.Point; |
||||||
|
import com.cloud.kicc.point.mapper.PointMapper; |
||||||
|
import com.cloud.kicc.point.service.PointService; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 积分业务实现类 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/11 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
public class PointServiceImpl extends ServiceImpl<PointMapper, Point> implements PointService { |
||||||
|
} |
||||||
@ -0,0 +1,40 @@ |
|||||||
|
server: |
||||||
|
port: 60002 |
||||||
|
spring: |
||||||
|
application: |
||||||
|
name: @artifactId@ |
||||||
|
cloud: |
||||||
|
nacos: |
||||||
|
discovery: |
||||||
|
server-addr: ${NACOS_HOST:101.42.231.100}:${NACOS_PORT:8848} |
||||||
|
namespace: ${seata.registry.nacos.namespace} |
||||||
|
group: ${seata.registry.nacos.group} |
||||||
|
datasource: |
||||||
|
# 数据源采用spring-boot自带kari,轻量化 |
||||||
|
type: com.zaxxer.hikari.HikariDataSource |
||||||
|
driver-class-name: com.mysql.cj.jdbc.Driver |
||||||
|
username: ${MYSQL_USER:root} |
||||||
|
password: ${MYSQL_PWD:root} |
||||||
|
url: jdbc:mysql://${MYSQL_HOST:127.0.0.1}:${MYSQL_PORT:3306}/${MYSQL_DB:kicc}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true |
||||||
|
|
||||||
|
# mybatis-plus配置 |
||||||
|
mybatis-plus: |
||||||
|
mapper-locations: |
||||||
|
- classpath:mapper/**/*.xml |
||||||
|
typeAliasesPackage: com.cloud.kicc.**.entity |
||||||
|
global-config: |
||||||
|
# 不显示banner |
||||||
|
banner: false |
||||||
|
# 数据库相关配置 |
||||||
|
db-config: |
||||||
|
#主键类型 AUTO:"数据库ID自增", INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID"; |
||||||
|
id-type: assign_id |
||||||
|
configuration: |
||||||
|
call-setters-on-nulls: true |
||||||
|
|
||||||
|
# 日志配置 |
||||||
|
logging: |
||||||
|
level: |
||||||
|
com.cloud.kicc: debug |
||||||
|
org.springframework: WARN |
||||||
|
org.spring.springboot.dao: debug |
||||||
@ -0,0 +1,76 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" |
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<parent> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-demo-seata</artifactId> |
||||||
|
<version>1.0.0</version> |
||||||
|
</parent> |
||||||
|
|
||||||
|
<artifactId>kicc-seata-user</artifactId> |
||||||
|
<packaging>jar</packaging> |
||||||
|
|
||||||
|
<description>分布式解决方案演示-用户服务</description> |
||||||
|
|
||||||
|
<dependencies> |
||||||
|
<!--undertow容器--> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-starter-undertow</artifactId> |
||||||
|
</dependency> |
||||||
|
<!--seata分布式事务解决方案--> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-seata</artifactId> |
||||||
|
</dependency> |
||||||
|
<!--feign远程调用--> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-feign</artifactId> |
||||||
|
</dependency> |
||||||
|
<!--数据服务核心包--> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-data</artifactId> |
||||||
|
</dependency> |
||||||
|
<!--注册中心客户端--> |
||||||
|
<dependency> |
||||||
|
<groupId>com.alibaba.cloud</groupId> |
||||||
|
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
|
||||||
|
<build> |
||||||
|
<plugins> |
||||||
|
<plugin> |
||||||
|
<groupId>io.fabric8</groupId> |
||||||
|
<artifactId>docker-maven-plugin</artifactId> |
||||||
|
</plugin> |
||||||
|
<plugin> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId> |
||||||
|
</plugin> |
||||||
|
</plugins> |
||||||
|
<resources> |
||||||
|
<resource> |
||||||
|
<directory>src/main/resources</directory> |
||||||
|
<filtering>true</filtering> |
||||||
|
<excludes> |
||||||
|
<exclude>**/*.xlsx</exclude> |
||||||
|
<exclude>**/*.xls</exclude> |
||||||
|
</excludes> |
||||||
|
</resource> |
||||||
|
<resource> |
||||||
|
<directory>src/main/resources</directory> |
||||||
|
<filtering>false</filtering> |
||||||
|
<includes> |
||||||
|
<include>**/*.xlsx</include> |
||||||
|
<include>**/*.xls</include> |
||||||
|
</includes> |
||||||
|
</resource> |
||||||
|
</resources> |
||||||
|
</build> |
||||||
|
|
||||||
|
</project> |
||||||
@ -0,0 +1,23 @@ |
|||||||
|
package com.cloud.kicc.user; |
||||||
|
|
||||||
|
import com.cloud.kicc.common.feign.annotation.EnableKiccFeignClients; |
||||||
|
import org.springframework.boot.SpringApplication; |
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* Seata用户启动类 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/11 |
||||||
|
*/ |
||||||
|
@SpringBootApplication |
||||||
|
@EnableKiccFeignClients |
||||||
|
public class SeataUserServer { |
||||||
|
|
||||||
|
public static void main(String[] args) { |
||||||
|
SpringApplication.run(SeataUserServer.class, args); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,46 @@ |
|||||||
|
package com.cloud.kicc.user.controller; |
||||||
|
|
||||||
|
import com.cloud.kicc.common.core.api.R; |
||||||
|
import com.cloud.kicc.user.entity.User; |
||||||
|
import com.cloud.kicc.user.feign.RemoteOrderService; |
||||||
|
import com.cloud.kicc.user.feign.RemotePointService; |
||||||
|
import com.cloud.kicc.user.service.UserService; |
||||||
|
import io.seata.spring.annotation.GlobalTransactional; |
||||||
|
import io.seata.spring.boot.autoconfigure.properties.client.ServiceProperties; |
||||||
|
import io.seata.spring.boot.autoconfigure.properties.registry.RegistryProperties; |
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
import org.springframework.web.bind.annotation.PostMapping; |
||||||
|
import org.springframework.web.bind.annotation.RequestBody; |
||||||
|
import org.springframework.web.bind.annotation.RestController; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 用户控制器 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/11 |
||||||
|
*/ |
||||||
|
@RestController |
||||||
|
@RequiredArgsConstructor |
||||||
|
public class UserController { |
||||||
|
|
||||||
|
private final UserService userService; |
||||||
|
private final RemoteOrderService remoteOrderService; |
||||||
|
private final RemotePointService remotePointService; |
||||||
|
|
||||||
|
private final RegistryProperties registryProperties; |
||||||
|
private final ServiceProperties serviceProperties; |
||||||
|
|
||||||
|
@GlobalTransactional(rollbackFor = Exception.class) |
||||||
|
@PostMapping("/user") |
||||||
|
public R createUser(@RequestBody User user) { |
||||||
|
System.out.println(registryProperties); |
||||||
|
System.out.println(serviceProperties); |
||||||
|
userService.saveOrUpdate(user); |
||||||
|
remotePointService.createPoint(); |
||||||
|
remoteOrderService.createOrder(); |
||||||
|
return R.ok(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,30 @@ |
|||||||
|
package com.cloud.kicc.user.entity; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||||
|
import lombok.Data; |
||||||
|
import lombok.EqualsAndHashCode; |
||||||
|
import lombok.experimental.Accessors; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 用户表 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/11 |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
@EqualsAndHashCode(callSuper = false) |
||||||
|
@Accessors(chain = true) |
||||||
|
@TableName("demo_seata_user") |
||||||
|
public class User { |
||||||
|
|
||||||
|
@TableId |
||||||
|
private String id; |
||||||
|
|
||||||
|
private String name; |
||||||
|
|
||||||
|
private Integer age; |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,22 @@ |
|||||||
|
package com.cloud.kicc.user.feign; |
||||||
|
|
||||||
|
import com.cloud.kicc.common.core.constant.ServiceNameConstants; |
||||||
|
import org.springframework.cloud.openfeign.FeignClient; |
||||||
|
import org.springframework.web.bind.annotation.PostMapping; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 远程调用订单接口 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/11 |
||||||
|
*/ |
||||||
|
@FeignClient(contextId = "remoteOrderService" , value = ServiceNameConstants.SEATA_ORDER_SERVICE) |
||||||
|
public interface RemoteOrderService { |
||||||
|
|
||||||
|
/** 创建订单 */ |
||||||
|
@PostMapping("/order") |
||||||
|
void createOrder(); |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,23 @@ |
|||||||
|
package com.cloud.kicc.user.feign; |
||||||
|
|
||||||
|
import com.cloud.kicc.common.core.constant.ServiceNameConstants; |
||||||
|
import org.springframework.cloud.openfeign.FeignClient; |
||||||
|
import org.springframework.web.bind.annotation.GetMapping; |
||||||
|
import org.springframework.web.bind.annotation.PostMapping; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 远程调用积分接口 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/11 |
||||||
|
*/ |
||||||
|
@FeignClient(contextId = "remotePointService" , value = ServiceNameConstants.SEATA_POINT_SERVICE) |
||||||
|
public interface RemotePointService { |
||||||
|
|
||||||
|
/** 创建积分 */ |
||||||
|
@PostMapping("/point") |
||||||
|
void createPoint(); |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,15 @@ |
|||||||
|
package com.cloud.kicc.user.mapper; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
import com.cloud.kicc.user.entity.User; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 用户mapper类 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/11 |
||||||
|
*/ |
||||||
|
public interface UserMapper extends BaseMapper<User> { |
||||||
|
} |
||||||
@ -0,0 +1,15 @@ |
|||||||
|
package com.cloud.kicc.user.service; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
|
import com.cloud.kicc.user.entity.User; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 用户业务类 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/11 |
||||||
|
*/ |
||||||
|
public interface UserService extends IService<User> { |
||||||
|
} |
||||||
@ -0,0 +1,19 @@ |
|||||||
|
package com.cloud.kicc.user.service.impl; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
import com.cloud.kicc.user.entity.User; |
||||||
|
import com.cloud.kicc.user.mapper.UserMapper; |
||||||
|
import com.cloud.kicc.user.service.UserService; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 用户业务实现类 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/3/11 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { |
||||||
|
} |
||||||
@ -0,0 +1,71 @@ |
|||||||
|
server: |
||||||
|
port: 60003 |
||||||
|
|
||||||
|
spring: |
||||||
|
application: |
||||||
|
name: @artifactId@ |
||||||
|
cloud: |
||||||
|
nacos: |
||||||
|
discovery: |
||||||
|
server-addr: ${NACOS_HOST:101.42.231.100}:${NACOS_PORT:8848} |
||||||
|
namespace: ${seata.registry.nacos.namespace} |
||||||
|
group: ${seata.registry.nacos.group} |
||||||
|
sentinel: |
||||||
|
filter: |
||||||
|
# 关闭内部拦截,与spring cloud 2021有不兼容的问题 |
||||||
|
enabled: false |
||||||
|
datasource: |
||||||
|
# 数据源采用spring-boot自带kari,轻量化 |
||||||
|
type: com.zaxxer.hikari.HikariDataSource |
||||||
|
driver-class-name: com.mysql.cj.jdbc.Driver |
||||||
|
username: ${MYSQL_USER:root} |
||||||
|
password: ${MYSQL_PWD:root} |
||||||
|
url: jdbc:mysql://${MYSQL_HOST:127.0.0.1}:${MYSQL_PORT:3306}/${MYSQL_DB:kicc}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true |
||||||
|
|
||||||
|
# feign配置 |
||||||
|
feign: |
||||||
|
# 开启对sentinel的支持能提供接口调用自动熔断降级的功能 |
||||||
|
sentinel: |
||||||
|
enabled: true |
||||||
|
# 开启okhttp |
||||||
|
okhttp: |
||||||
|
enabled: true |
||||||
|
# 关闭feign默认使用的jdk中的HttpURLConnection请求性能太低,集成别的组件来替换掉 |
||||||
|
httpclient: |
||||||
|
enabled: false |
||||||
|
client: |
||||||
|
config: |
||||||
|
default: |
||||||
|
# 连接超时时间 |
||||||
|
connectTimeout: 10000 |
||||||
|
# 读超时时间 |
||||||
|
readTimeout: 10000 |
||||||
|
compression: |
||||||
|
# 开启请求 GZIP 压缩,加快传输速度 |
||||||
|
request: |
||||||
|
enabled: true |
||||||
|
# 开启响应 GZIP 压缩,加快传输速度 |
||||||
|
response: |
||||||
|
enabled: true |
||||||
|
|
||||||
|
# mybatis-plus配置 |
||||||
|
mybatis-plus: |
||||||
|
mapper-locations: |
||||||
|
- classpath:mapper/**/*.xml |
||||||
|
typeAliasesPackage: com.cloud.kicc.**.entity |
||||||
|
global-config: |
||||||
|
# 不显示banner |
||||||
|
banner: false |
||||||
|
# 数据库相关配置 |
||||||
|
db-config: |
||||||
|
#主键类型 AUTO:"数据库ID自增", INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID"; |
||||||
|
id-type: assign_id |
||||||
|
configuration: |
||||||
|
call-setters-on-nulls: true |
||||||
|
|
||||||
|
# 日志配置 |
||||||
|
logging: |
||||||
|
level: |
||||||
|
com.cloud.kicc: debug |
||||||
|
org.springframework: WARN |
||||||
|
org.spring.springboot.dao: debug |
||||||
@ -0,0 +1,23 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" |
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<parent> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-demo</artifactId> |
||||||
|
<version>1.0.0</version> |
||||||
|
</parent> |
||||||
|
|
||||||
|
<artifactId>kicc-common-demo-seata</artifactId> |
||||||
|
|
||||||
|
<description>kicc 阿里巴巴分布式事务解决方案 演示</description> |
||||||
|
<packaging>pom</packaging> |
||||||
|
|
||||||
|
<modules> |
||||||
|
<module>kicc-seata-order</module> |
||||||
|
<module>kicc-seata-point</module> |
||||||
|
<module>kicc-seata-user</module> |
||||||
|
</modules> |
||||||
|
|
||||||
|
</project> |
||||||
@ -0,0 +1,23 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" |
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
|
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<parent> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc</artifactId> |
||||||
|
<version>1.0.0</version> |
||||||
|
</parent> |
||||||
|
|
||||||
|
<artifactId>kicc-common-demo</artifactId> |
||||||
|
|
||||||
|
<description>kicc-组件使用案列</description> |
||||||
|
<packaging>pom</packaging> |
||||||
|
|
||||||
|
<modules> |
||||||
|
<module>kicc-common-demo-mq</module> |
||||||
|
<module>kicc-common-demo-seata</module> |
||||||
|
</modules> |
||||||
|
|
||||||
|
</project> |
||||||
@ -0,0 +1,215 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
|
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-bom</artifactId> |
||||||
|
<version>1.0.0</version> |
||||||
|
<packaging>pom</packaging> |
||||||
|
|
||||||
|
<name>kicc-common-bom</name> |
||||||
|
<description>全局jar BOM标准定义(可以设置工程内部的jar的标准,也可以设置第三方依赖jar的标准)</description> |
||||||
|
|
||||||
|
<properties> |
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
||||||
|
<maven.compiler.source>1.8</maven.compiler.source> |
||||||
|
<maven.compiler.target>1.8</maven.compiler.target> |
||||||
|
<kicc.common.version>${project.version}</kicc.common.version> |
||||||
|
<spring-boot.version>2.6.3</spring-boot.version> |
||||||
|
<security.oauth.version>2.1.8.RELEASE</security.oauth.version> |
||||||
|
<cloud.stream.version>3.0.13.RELEASE</cloud.stream.version> |
||||||
|
<alibaba-seata.version>2021.0.1.0</alibaba-seata.version> |
||||||
|
<log4j2.version>2.17.1</log4j2.version> |
||||||
|
<fastjson.version>1.2.78</fastjson.version> |
||||||
|
<swagger.core.version>1.5.24</swagger.core.version> |
||||||
|
<mybatis-plus.version>3.5.1</mybatis-plus.version> |
||||||
|
<nacos.version>2.0.3</nacos.version> |
||||||
|
<sms.version>1.2.0</sms.version> |
||||||
|
<git.commit.plugin>4.9.9</git.commit.plugin> |
||||||
|
<spring.checkstyle.plugin>0.0.29</spring.checkstyle.plugin> |
||||||
|
<captcha.version>2.2.1</captcha.version> |
||||||
|
<oss.version>1.0.3</oss.version> |
||||||
|
<excel.version>1.1.1</excel.version> |
||||||
|
</properties> |
||||||
|
|
||||||
|
<!-- 定义全局jar版本,模块使用需要再次引入但不用写版本号--> |
||||||
|
<dependencyManagement> |
||||||
|
<dependencies> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-core</artifactId> |
||||||
|
<version>${kicc.common.version}</version> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-data</artifactId> |
||||||
|
<version>${kicc.common.version}</version> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-datasource</artifactId> |
||||||
|
<version>${kicc.common.version}</version> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-feign</artifactId> |
||||||
|
<version>${kicc.common.version}</version> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-rocketmq</artifactId> |
||||||
|
<version>${kicc.common.version}</version> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-seata</artifactId> |
||||||
|
<version>${kicc.common.version}</version> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-job</artifactId> |
||||||
|
<version>${kicc.common.version}</version> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-log</artifactId> |
||||||
|
<version>${kicc.common.version}</version> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-mock</artifactId> |
||||||
|
<version>${kicc.common.version}</version> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-security</artifactId> |
||||||
|
<version>${kicc.common.version}</version> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common-swagger</artifactId> |
||||||
|
<version>${kicc.common.version}</version> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-system-api</artifactId> |
||||||
|
<version>${kicc.common.version}</version> |
||||||
|
</dependency> |
||||||
|
<!--最新版本2021.1 com.alibaba.cloud.seata.rest.SeataRestTemplateAutoConfiguration有自调Bean问题 |
||||||
|
与当前 spring cloud 2021 不兼容,更换2021.0.1.0兼容版本--> |
||||||
|
<dependency> |
||||||
|
<groupId>com.alibaba.cloud</groupId> |
||||||
|
<artifactId>spring-cloud-starter-alibaba-seata</artifactId> |
||||||
|
<version>${alibaba-seata.version}</version> |
||||||
|
</dependency> |
||||||
|
<!--稳定版本,目前最新版采用函数编程经过测试rocketMQ消费者接受消息收不到, |
||||||
|
目前最新版适配还存在一定的问题,替代spring-cloud-starter-stream-rocketmq2021.1 bom内置--> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework.cloud</groupId> |
||||||
|
<artifactId>spring-cloud-stream</artifactId> |
||||||
|
<version>${cloud.stream.version}</version> |
||||||
|
</dependency> |
||||||
|
<!--稳定版本,替代spring security2.6.3 bom内置--> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework.security.oauth.boot</groupId> |
||||||
|
<artifactId>spring-security-oauth2-autoconfigure</artifactId> |
||||||
|
<version>${security.oauth.version}</version> |
||||||
|
</dependency> |
||||||
|
<!--swagger 最新依赖内置版本--> |
||||||
|
<dependency> |
||||||
|
<groupId>io.swagger</groupId> |
||||||
|
<artifactId>swagger-models</artifactId> |
||||||
|
<version>${swagger.core.version}</version> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>io.swagger</groupId> |
||||||
|
<artifactId>swagger-annotations</artifactId> |
||||||
|
<version>${swagger.core.version}</version> |
||||||
|
</dependency> |
||||||
|
<!--fastjson 版本--> |
||||||
|
<dependency> |
||||||
|
<groupId>com.alibaba</groupId> |
||||||
|
<artifactId>fastjson</artifactId> |
||||||
|
<version>${fastjson.version}</version> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>com.alibaba.nacos</groupId> |
||||||
|
<artifactId>nacos-client</artifactId> |
||||||
|
<version>${nacos.version}</version> |
||||||
|
</dependency> |
||||||
|
<!--阿里云短信服务--> |
||||||
|
<dependency> |
||||||
|
<groupId>cn.javaer.aliyun</groupId> |
||||||
|
<artifactId>aliyun-spring-boot-starter-sms</artifactId> |
||||||
|
<version>${sms.version}</version> |
||||||
|
</dependency> |
||||||
|
<!--orm mybatis-plus相关--> |
||||||
|
<dependency> |
||||||
|
<groupId>com.baomidou</groupId> |
||||||
|
<artifactId>mybatis-plus-boot-starter</artifactId> |
||||||
|
<version>${mybatis-plus.version}</version> |
||||||
|
</dependency> |
||||||
|
<!--web 模块--> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-starter-web</artifactId> |
||||||
|
<version>${spring-boot.version}</version> |
||||||
|
<exclusions> |
||||||
|
<!--排除tomcat依赖,使用undertow容器--> |
||||||
|
<exclusion> |
||||||
|
<artifactId>spring-boot-starter-tomcat</artifactId> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
</exclusion> |
||||||
|
</exclusions> |
||||||
|
</dependency> |
||||||
|
<!--指定 log4j 版本--> |
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.logging.log4j</groupId> |
||||||
|
<artifactId>log4j-bom</artifactId> |
||||||
|
<version>${log4j2.version}</version> |
||||||
|
<type>pom</type> |
||||||
|
<scope>import</scope> |
||||||
|
</dependency> |
||||||
|
<!--oss文件管理,采用S3协议封装,兼容阿里云OSS,腾讯云COS,七牛云,京东云,minio 等不需要引入对应厂商的SDK就可以使用厂商的OSS服务 |
||||||
|
代码开源地址: https://github.com/pig-mesh/oss-spring-boot-starter --> |
||||||
|
<dependency> |
||||||
|
<groupId>com.pig4cloud.plugin</groupId> |
||||||
|
<artifactId>oss-spring-boot-starter</artifactId> |
||||||
|
<version>${oss.version}</version> |
||||||
|
</dependency> |
||||||
|
<!-- 验证码处理支持很多种验证码风格基于google的aviator计算引擎实现,性能比较高效 |
||||||
|
代码开源地址: https://github.com/pig-mesh/easy-captcha --> |
||||||
|
<dependency> |
||||||
|
<groupId>com.pig4cloud.plugin</groupId> |
||||||
|
<artifactId>captcha-spring-boot-starter</artifactId> |
||||||
|
<version>${captcha.version}</version> |
||||||
|
</dependency> |
||||||
|
<!-- excel 导入导出处理,基于alibaba的EasyExcel实现,读取大文件不怎么吃内存,性能比较高效 |
||||||
|
代码开源地址: https://github.com/pig-mesh/excel-spring-boot-starter --> |
||||||
|
<dependency> |
||||||
|
<groupId>com.pig4cloud.excel</groupId> |
||||||
|
<artifactId>excel-spring-boot-starter</artifactId> |
||||||
|
<version>${excel.version}</version> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
</dependencyManagement> |
||||||
|
|
||||||
|
<build> |
||||||
|
<plugins> |
||||||
|
<!--maven打包插件(打jar包会在classes生成git.properties文件包含了目前git相关信息方便查看git环境错误)--> |
||||||
|
<plugin> |
||||||
|
<groupId>io.github.git-commit-id</groupId> |
||||||
|
<artifactId>git-commit-id-maven-plugin</artifactId> |
||||||
|
<version>${git.commit.plugin}</version> |
||||||
|
</plugin> |
||||||
|
<!--代码格式插件,默认使用spring 规则,跟前端EsLine一样保证代码规范--> |
||||||
|
<plugin> |
||||||
|
<groupId>io.spring.javaformat</groupId> |
||||||
|
<artifactId>spring-javaformat-maven-plugin</artifactId> |
||||||
|
<version>${spring.checkstyle.plugin}</version> |
||||||
|
</plugin> |
||||||
|
</plugins> |
||||||
|
</build> |
||||||
|
|
||||||
|
</project> |
||||||
@ -0,0 +1,50 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<parent> |
||||||
|
<groupId>com.cloud</groupId> |
||||||
|
<artifactId>kicc-common</artifactId> |
||||||
|
<version>1.0.0</version> |
||||||
|
</parent> |
||||||
|
|
||||||
|
<artifactId>kicc-common-core</artifactId> |
||||||
|
<packaging>jar</packaging> |
||||||
|
|
||||||
|
<description>kicc 公共工具类核心包</description> |
||||||
|
|
||||||
|
<!--考虑这个作为一个单模块使用,后续引入依赖需要注意低耦合--> |
||||||
|
<dependencies> |
||||||
|
<!--hutool--> |
||||||
|
<dependency> |
||||||
|
<groupId>cn.hutool</groupId> |
||||||
|
<artifactId>hutool-all</artifactId> |
||||||
|
<version>${hutool.version}</version> |
||||||
|
</dependency> |
||||||
|
<!--server-api--> |
||||||
|
<dependency> |
||||||
|
<groupId>javax.servlet</groupId> |
||||||
|
<artifactId>javax.servlet-api</artifactId> |
||||||
|
</dependency> |
||||||
|
<!--hibernate-validator--> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-starter-validation</artifactId> |
||||||
|
</dependency> |
||||||
|
<!--json模块--> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-starter-json</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework</groupId> |
||||||
|
<artifactId>spring-webmvc</artifactId> |
||||||
|
<scope>provided</scope> |
||||||
|
</dependency> |
||||||
|
<!--swagger 依赖支持注解--> |
||||||
|
<dependency> |
||||||
|
<groupId>io.swagger</groupId> |
||||||
|
<artifactId>swagger-annotations</artifactId> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
</project> |
||||||
@ -0,0 +1,22 @@ |
|||||||
|
package com.cloud.kicc.common.core.annotation; |
||||||
|
|
||||||
|
import com.cloud.kicc.common.core.config.JacksonAutoConfiguration; |
||||||
|
import org.springframework.context.annotation.Import; |
||||||
|
|
||||||
|
import java.lang.annotation.*; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 激活 Jackson 自动转换配置 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/2/19 |
||||||
|
*/ |
||||||
|
@Target({ ElementType.TYPE }) |
||||||
|
@Retention(RetentionPolicy.RUNTIME) |
||||||
|
@Documented |
||||||
|
@Inherited |
||||||
|
@Import({ JacksonAutoConfiguration.class }) |
||||||
|
public @interface EnableKiccJacksonAutoConvert { |
||||||
|
} |
||||||
@ -0,0 +1,114 @@ |
|||||||
|
package com.cloud.kicc.common.core.api; |
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty; |
||||||
|
import lombok.*; |
||||||
|
import lombok.experimental.Accessors; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
import java.util.LinkedHashMap; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 响应信息主体 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/2/18 |
||||||
|
*/ |
||||||
|
@ToString |
||||||
|
@NoArgsConstructor |
||||||
|
@AllArgsConstructor |
||||||
|
@Accessors(chain = true) |
||||||
|
public class R<T> implements Serializable { |
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L; |
||||||
|
|
||||||
|
/** |
||||||
|
* 成功标记 |
||||||
|
*/ |
||||||
|
private static Integer SUCCESS = 200; |
||||||
|
/** |
||||||
|
* 失败标记 |
||||||
|
*/ |
||||||
|
private static Integer FAIL = 500; |
||||||
|
/** |
||||||
|
* 未认证 |
||||||
|
*/ |
||||||
|
private static Integer UNAUTH = 401; |
||||||
|
|
||||||
|
@Getter |
||||||
|
@Setter |
||||||
|
@ApiModelProperty("状态编码") |
||||||
|
private int code; |
||||||
|
|
||||||
|
@Getter |
||||||
|
@Setter |
||||||
|
@ApiModelProperty("提示消息") |
||||||
|
private String msg; |
||||||
|
|
||||||
|
@Getter |
||||||
|
@Setter |
||||||
|
@ApiModelProperty("结果集数量统计") |
||||||
|
private long total; |
||||||
|
|
||||||
|
@Getter |
||||||
|
@Setter |
||||||
|
@ApiModelProperty("结果集") |
||||||
|
private T data; |
||||||
|
|
||||||
|
public static <T> R<T> ok() { |
||||||
|
return restResult(null, SUCCESS, "成功"); |
||||||
|
} |
||||||
|
|
||||||
|
public static <T> R<T> ok(T data) { |
||||||
|
return restResult(data, SUCCESS, "成功"); |
||||||
|
} |
||||||
|
|
||||||
|
public static <T> R<T> ok(T data, String msg) { |
||||||
|
return restResult(data, SUCCESS, msg); |
||||||
|
} |
||||||
|
|
||||||
|
public static <T> R<T> ok(T data, long total) { |
||||||
|
return restData(data, SUCCESS, null, total); |
||||||
|
} |
||||||
|
|
||||||
|
public static <T> R<T> error() { |
||||||
|
return restResult(null, FAIL, "失败"); |
||||||
|
} |
||||||
|
|
||||||
|
public static <T> R<T> error(String msg) { |
||||||
|
return restResult(null, FAIL, msg); |
||||||
|
} |
||||||
|
|
||||||
|
public static <T> R<T> error(T data) { |
||||||
|
return restResult(data, FAIL, null); |
||||||
|
} |
||||||
|
|
||||||
|
public static <T> R<T> error(T data, String msg) { |
||||||
|
return restResult(data, FAIL, msg); |
||||||
|
} |
||||||
|
|
||||||
|
public static <T> R<T> unAuth(String msg) { |
||||||
|
return restResult(null, UNAUTH, msg); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
private static <T> R<T> restResult(T data, int code, String msg) { |
||||||
|
R<T> apiResult = new R<>(); |
||||||
|
apiResult.setCode(code); |
||||||
|
apiResult.setData(data); |
||||||
|
apiResult.setMsg(msg); |
||||||
|
return apiResult; |
||||||
|
} |
||||||
|
|
||||||
|
private static <T> R<T> restData(T data, int code, String msg, long total) { |
||||||
|
R<T> apiData = new R<>(); |
||||||
|
apiData.setCode(code); |
||||||
|
apiData.setMsg(msg); |
||||||
|
apiData.setTotal(total); |
||||||
|
apiData.setData(data); |
||||||
|
return apiData; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,48 @@ |
|||||||
|
package com.cloud.kicc.common.core.config; |
||||||
|
|
||||||
|
import cn.hutool.core.date.DatePattern; |
||||||
|
import com.cloud.kicc.common.core.jackson.KiccJavaTimeModule; |
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper; |
||||||
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; |
||||||
|
import org.springframework.boot.autoconfigure.AutoConfigureBefore; |
||||||
|
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; |
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; |
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; |
||||||
|
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; |
||||||
|
import org.springframework.context.annotation.Bean; |
||||||
|
import org.springframework.context.annotation.Configuration; |
||||||
|
|
||||||
|
import java.time.ZoneId; |
||||||
|
import java.util.Locale; |
||||||
|
import java.util.TimeZone; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 配置全局JacksonConfig,影响mvc层的对象传输日期格式 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/2/18 |
||||||
|
*/ |
||||||
|
@EnableAutoConfiguration |
||||||
|
@Configuration(proxyBeanMethods = false) |
||||||
|
@ConditionalOnClass(ObjectMapper.class) |
||||||
|
@AutoConfigureBefore(org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration.class) |
||||||
|
public class JacksonAutoConfiguration { |
||||||
|
|
||||||
|
@Bean |
||||||
|
@ConditionalOnMissingBean |
||||||
|
public Jackson2ObjectMapperBuilderCustomizer customizer() { |
||||||
|
return builder -> { |
||||||
|
builder.locale(Locale.CHINA); |
||||||
|
builder.timeZone(TimeZone.getTimeZone(ZoneId.systemDefault())); |
||||||
|
// 针对于Date类型,文本格式化,已经实现前端返回时间戳
|
||||||
|
builder.simpleDateFormat(DatePattern.NORM_DATETIME_PATTERN); |
||||||
|
// 解决返回给前端的Long类型数据失去精度,将Long转换为String
|
||||||
|
builder.serializerByType(Long.class, ToStringSerializer.instance); |
||||||
|
// 针对于JDK新时间类,序列化时带有T的问题,自定义格式化字符串
|
||||||
|
builder.modules(new KiccJavaTimeModule()); |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,23 @@ |
|||||||
|
package com.cloud.kicc.common.core.config; |
||||||
|
|
||||||
|
import org.springframework.context.annotation.Bean; |
||||||
|
import org.springframework.context.annotation.Configuration; |
||||||
|
import org.springframework.web.client.RestTemplate; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* Rest 配置 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/2/18 |
||||||
|
*/ |
||||||
|
@Configuration(proxyBeanMethods = false) |
||||||
|
public class RestTemplateConfiguration { |
||||||
|
|
||||||
|
@Bean |
||||||
|
public RestTemplate restTemplate() { |
||||||
|
return new RestTemplate(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,45 @@ |
|||||||
|
package com.cloud.kicc.common.core.config; |
||||||
|
|
||||||
|
import cn.hutool.core.date.DatePattern; |
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; |
||||||
|
import org.springframework.context.annotation.Configuration; |
||||||
|
import org.springframework.format.FormatterRegistry; |
||||||
|
import org.springframework.format.datetime.standard.DateTimeFormatterRegistrar; |
||||||
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; |
||||||
|
|
||||||
|
import java.time.format.DateTimeFormatter; |
||||||
|
|
||||||
|
import static org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type.SERVLET; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 全局DateTimeFormat |
||||||
|
* 针对GET请求传入参数转换 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/2/18 |
||||||
|
*/ |
||||||
|
@Configuration(proxyBeanMethods = false) |
||||||
|
@ConditionalOnWebApplication(type = SERVLET) |
||||||
|
public class WebMvcConfiguration implements WebMvcConfigurer { |
||||||
|
|
||||||
|
/** |
||||||
|
* 增加GET请求参数中时间类型转换 {@link com.cloud.kicc.common.core.jackson.KiccJavaTimeModule} |
||||||
|
* <ul> |
||||||
|
* <li>HH:mm:ss -> LocalTime</li> |
||||||
|
* <li>yyyy-MM-dd -> LocalDate</li> |
||||||
|
* <li>yyyy-MM-dd HH:mm:ss -> LocalDateTime</li> |
||||||
|
* </ul> |
||||||
|
* @param registry |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public void addFormatters(FormatterRegistry registry) { |
||||||
|
DateTimeFormatterRegistrar registrar = new DateTimeFormatterRegistrar(); |
||||||
|
registrar.setTimeFormatter(DateTimeFormatter.ofPattern(DatePattern.NORM_TIME_PATTERN)); |
||||||
|
registrar.setDateFormatter(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)); |
||||||
|
registrar.setDateTimeFormatter(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)); |
||||||
|
registrar.registerFormatters(registry); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,17 @@ |
|||||||
|
package com.cloud.kicc.common.core.constant; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 应用前缀 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/2/24 |
||||||
|
*/ |
||||||
|
public interface AppConstants { |
||||||
|
|
||||||
|
String APP_SYSTEM = "/system"; |
||||||
|
|
||||||
|
String APP_MONITOR = "/monitor"; |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,53 @@ |
|||||||
|
package com.cloud.kicc.common.core.constant; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 缓存的key 常量 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/2/18 |
||||||
|
*/ |
||||||
|
public interface CacheConstants { |
||||||
|
|
||||||
|
/** |
||||||
|
* oauth 缓存前缀 |
||||||
|
*/ |
||||||
|
String OAUTH_ACCESS = ServiceNameConstants.AUTH_SERVICE + ":access:"; |
||||||
|
|
||||||
|
/** |
||||||
|
* oauth 缓存令牌前缀 |
||||||
|
*/ |
||||||
|
String OAUTH_TOKEN = ServiceNameConstants.AUTH_SERVICE + ":token:"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 验证码前缀 |
||||||
|
*/ |
||||||
|
String VERIFICATION_CODE = ServiceNameConstants.SYSTEM_SERVICE + ":verification_code:"; |
||||||
|
|
||||||
|
/** |
||||||
|
* oauth 客户端信息缓存 |
||||||
|
*/ |
||||||
|
String OAUTH_CLIENT_DETAILS = ServiceNameConstants.AUTH_SERVICE + ":client_details"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 菜单信息缓存 |
||||||
|
*/ |
||||||
|
String MENU_DETAILS = ServiceNameConstants.AUTH_SERVICE + ":menu_details"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 用户信息缓存 |
||||||
|
*/ |
||||||
|
String USER_DETAILS = ServiceNameConstants.AUTH_SERVICE + ":user_details"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 字典信息缓存 |
||||||
|
*/ |
||||||
|
String DICT_DETAILS = ServiceNameConstants.AUTH_SERVICE + ":dict_details"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 全局配置缓存 |
||||||
|
*/ |
||||||
|
String CONFIG_PARAM = ServiceNameConstants.AUTH_SERVICE + ":config_param"; |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,58 @@ |
|||||||
|
package com.cloud.kicc.common.core.constant; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 通用常量 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/2/18 |
||||||
|
*/ |
||||||
|
public interface CommonConstants { |
||||||
|
|
||||||
|
/** |
||||||
|
* 正常 |
||||||
|
*/ |
||||||
|
String STATUS_NORMAL = "0"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 锁定 |
||||||
|
*/ |
||||||
|
String STATUS_LOCK = "9"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 编码 |
||||||
|
*/ |
||||||
|
String UTF8 = "UTF-8"; |
||||||
|
|
||||||
|
/** |
||||||
|
* JSON 资源 |
||||||
|
*/ |
||||||
|
String CONTENT_TYPE = "application/json; charset=utf-8"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 前端工程名 |
||||||
|
*/ |
||||||
|
String FRONT_END_PROJECT = "kicc-ui"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 后端工程名 |
||||||
|
*/ |
||||||
|
String BACK_END_PROJECT = "kicc"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 失败标记 |
||||||
|
*/ |
||||||
|
Integer FAIL = 1; |
||||||
|
|
||||||
|
/** |
||||||
|
* 当前页 |
||||||
|
*/ |
||||||
|
String CURRENT = "current"; |
||||||
|
|
||||||
|
/** |
||||||
|
* size |
||||||
|
*/ |
||||||
|
String SIZE = "size"; |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,110 @@ |
|||||||
|
package com.cloud.kicc.common.core.constant; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 安全常量 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/2/18 |
||||||
|
*/ |
||||||
|
public interface SecurityConstants { |
||||||
|
|
||||||
|
/** |
||||||
|
* 角色前缀 |
||||||
|
*/ |
||||||
|
String ROLE = "ROLE_"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 项目的license |
||||||
|
*/ |
||||||
|
String PROJECT_LICENSE = "长沙康来生物有限公司"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 内部接口调用密钥 |
||||||
|
*/ |
||||||
|
String FROM_IN = "kG8qA6qG1aP5aR3g"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 内部接口调用Key标志 |
||||||
|
*/ |
||||||
|
String FROM = "from"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 默认登录URL |
||||||
|
*/ |
||||||
|
String OAUTH_TOKEN_URL = "/oauth/token"; |
||||||
|
|
||||||
|
/** |
||||||
|
* grant_type |
||||||
|
*/ |
||||||
|
String REFRESH_TOKEN = "refresh_token"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 手机号登录 |
||||||
|
*/ |
||||||
|
String APP = "app"; |
||||||
|
|
||||||
|
/** |
||||||
|
* {bcrypt} 加密的特征码 |
||||||
|
*/ |
||||||
|
String BCRYPT = "{bcrypt}"; |
||||||
|
|
||||||
|
/** |
||||||
|
* sys_oauth_client_details 表的字段,不包括client_id、client_secret |
||||||
|
*/ |
||||||
|
String CLIENT_FIELDS = "client_id, CONCAT('{noop}',client_secret) as client_secret, resource_ids, scope, " |
||||||
|
+ "authorized_grant_types, web_server_redirect_uri, authorities, access_token_validity, " |
||||||
|
+ "refresh_token_validity, additional_information, autoapprove"; |
||||||
|
|
||||||
|
/** |
||||||
|
* JdbcClientDetailsService 查询语句 |
||||||
|
*/ |
||||||
|
String BASE_FIND_STATEMENT = "select " + CLIENT_FIELDS + " from sys_oauth_client_details"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 默认的查询语句 |
||||||
|
*/ |
||||||
|
String DEFAULT_FIND_STATEMENT = BASE_FIND_STATEMENT + " order by client_id"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 按条件client_id 查询 |
||||||
|
*/ |
||||||
|
String DEFAULT_SELECT_STATEMENT = BASE_FIND_STATEMENT + " where client_id = ?"; |
||||||
|
|
||||||
|
/*** |
||||||
|
* 资源服务器默认bean名称 |
||||||
|
*/ |
||||||
|
String RESOURCE_SERVER_CONFIGURER = "resourceServerConfigurerAdapter"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 用户信息 |
||||||
|
*/ |
||||||
|
String DETAILS_USER = "user_info"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 协议字段 |
||||||
|
*/ |
||||||
|
String DETAILS_LICENSE = "license"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 验证码有效期,默认 60秒 |
||||||
|
*/ |
||||||
|
long CODE_TIME = 60; |
||||||
|
|
||||||
|
/** |
||||||
|
* 手机验证码长度 |
||||||
|
*/ |
||||||
|
String PHONE_CODE_SIZE = "6"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 客户端模式 |
||||||
|
*/ |
||||||
|
String CLIENT_CREDENTIALS = "client_credentials"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 客户端ID |
||||||
|
*/ |
||||||
|
String CLIENT_ID = "clientId"; |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,34 @@ |
|||||||
|
package com.cloud.kicc.common.core.constant; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 服务名称 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/2/18 |
||||||
|
*/ |
||||||
|
public interface ServiceNameConstants { |
||||||
|
|
||||||
|
/** |
||||||
|
* 认证服务的SERVICE_ID |
||||||
|
*/ |
||||||
|
String AUTH_SERVICE = "kicc-auth"; |
||||||
|
|
||||||
|
/** |
||||||
|
* SYSTEM模块 |
||||||
|
*/ |
||||||
|
String SYSTEM_SERVICE = "kicc-system-biz"; |
||||||
|
|
||||||
|
/** |
||||||
|
* seata分布式事务演示-订单模块 |
||||||
|
*/ |
||||||
|
String SEATA_ORDER_SERVICE = "kicc-seata-order"; |
||||||
|
|
||||||
|
/** |
||||||
|
* seata分布式事务演示-积分模块 |
||||||
|
*/ |
||||||
|
String SEATA_POINT_SERVICE = "kicc-seata-point"; |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,38 @@ |
|||||||
|
package com.cloud.kicc.common.core.enums; |
||||||
|
|
||||||
|
import lombok.Getter; |
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 社交登录类型 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/2/18 |
||||||
|
*/ |
||||||
|
@Getter |
||||||
|
@RequiredArgsConstructor |
||||||
|
public enum LoginTypeEnum { |
||||||
|
|
||||||
|
/** |
||||||
|
* 账号密码登录 |
||||||
|
*/ |
||||||
|
PWD("PWD", "账号密码登录"), |
||||||
|
|
||||||
|
/** |
||||||
|
* 验证码登录 |
||||||
|
*/ |
||||||
|
SMS("SMS", "验证码登录"); |
||||||
|
|
||||||
|
/** |
||||||
|
* 类型 |
||||||
|
*/ |
||||||
|
private final String type; |
||||||
|
|
||||||
|
/** |
||||||
|
* 描述 |
||||||
|
*/ |
||||||
|
private final String description; |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,34 @@ |
|||||||
|
package com.cloud.kicc.common.core.exception; |
||||||
|
|
||||||
|
import lombok.NoArgsConstructor; |
||||||
|
|
||||||
|
/** |
||||||
|
*<p> |
||||||
|
* 检查异常 |
||||||
|
*</p> |
||||||
|
* |
||||||
|
* @Author: entfrm开发团队-王翔 |
||||||
|
* @Date: 2022/2/18 |
||||||
|
*/ |
||||||
|
@NoArgsConstructor |
||||||
|
public class CheckedException extends RuntimeException { |
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L; |
||||||
|
|
||||||
|
public CheckedException(String message) { |
||||||
|
super(message); |
||||||
|
} |
||||||
|
|
||||||
|
public CheckedException(Throwable cause) { |
||||||
|
super(cause); |
||||||
|
} |
||||||
|
|
||||||
|
public CheckedException(String message, Throwable cause) { |
||||||
|
super(message, cause); |
||||||
|
} |
||||||
|
|
||||||
|
public CheckedException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { |
||||||
|
super(message, cause, enableSuppression, writableStackTrace); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue