Skip to content

Commit

Permalink
fix:develop->main
Browse files Browse the repository at this point in the history
  • Loading branch information
duktig666 committed Feb 7, 2021
2 parents 4c06b79 + 82980cf commit bd89f96
Show file tree
Hide file tree
Showing 68 changed files with 3,120 additions and 1,343 deletions.
53 changes: 28 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,25 @@
# 项目简介
一个基于[EL-ADMIN](https://el-admin.vip/)、Spring Boot 2.1.0、JDK1.8+ 、 Mybatis Plus、JWT + Spring Security、Redis、Vue的前后端分离的后台管理系统

**开发文档:** 待完善
**[官方文档](https://sanyueruanjian.github.io/smpe-admin-doc/)**

**默认管理员账号密码:** `admin / 123456`

## 项目源码

| | 后端源码 | 前端源码 |
|--- |--- | --- |
| GitHub | https://github.com/shiwei-Ren/smpe-admin | https://github.com/shiwei-Ren/smpe-admin-web |
| GitHub | https://github.com/sanyueruanjian/smpe-admin | https://github.com/sanyueruanjian/smpe-admin-web |

## 主要特性
- 使用最新技术栈,社区资源丰富。
- 支持接口限流,避免恶意请求导致服务层压力过大
- 支持接口级别的功能权限与数据权限,可自定义操作
- 自定义权限注解与匿名接口注解,可快速对接口拦截与放行
- 前后端统一异常拦截处理,统一输出异常,避免繁琐的判断
- 自定义扩展Mybatis-Plus的功能
- 高效率开发,代码生成器可一键生成前后端代码
- 完善的日志记录体系简单注解即可实现


## 系统功能
Expand All @@ -27,12 +30,19 @@
- 菜单管理:已实现菜单动态路由,后端可配置化,支持多级菜单
- 部门管理:可配置系统组织架构,树形表格展示
- 岗位管理:配置各个部门的职位
- 任务调度:管理定时任务

## 系统监控
- 在线用户:记录登陆系统的用户
- 操作日志:记录用户的操作情况
- 异常日志:记录用户的异常操作情况

## 项目结构
项目采用按功能分模块的开发方式,结构如下

- `smpe-common` 为系统的公共模块,各种工具类,公共配置存在该模块
- `smpe-system` 为系统核心模块也是项目入口模块,也是最终需要打包部署的模块
- `smpe-log` 为日志模块

## 详细结构

Expand All @@ -42,12 +52,20 @@
- aspect 自定义注解的切面
- base 提供了常用基类
- bean 读取yml中的通用配置类
- config 全局配置文件,例如swagger、mybatisplus、redis、跨域处理等的配置
- config 全局配置文件,例如swagger、MyBatis-Plus、redis、跨域处理等的配置
- thread 线程池相关
- enums 全局枚举类
- exception 项目统一异常的处理
- response 统一返回前端数据封装
- utils 系统通用工具类
- smpe-log 日志模块
- annotation 日志自定义注解
- aspect 自定义日志切面
- controller 日志控制层
- entity 日志实体
- enums 日志常用枚举
- mapper 日志接口
- service 日志服务
- smpe-system 系统核心模块(系统启动入口)
- config 核心模块配置(非全局配置)
- modules 系统相关模块(登录授权、用户部门管理等、自定义业务)
Expand Down Expand Up @@ -75,27 +93,10 @@
```


# 使用指南
参考[官方文档](https://sanyueruanjian.github.io/smpe-admin-doc/)

## 常用技术参考文档

1. 后端持久层框架使用MybatisPlus,参考:[MybatisPlus官方文档](https://hutool.cn/docs/#/)
2. Java轻量级开发工具包HuTool,参考:[HuTool官方文档](https://hutool.cn/docs/#/)*暂时不使用hutool-json*
3. lombok,参考:
4. Java 实体映射工具——MapStruct,参考:[SpringBoot使用MapStruct自动映射DTO](https://www.jianshu.com/p/3f20ca1a93b0)
5. FastJson(阿里巴巴),参考[Fastjson 简明教程](https://www.runoob.com/w3cnote/fastjson-intro.html)
6. 待完善...

- **开发流程**
- 数据库新建表之后,使用MybatisPlusGenerator在business下生成相应文件。
- 之后接口开发和往常相同,接口需要权限则加上@PreAuthorize("@smpe.check('xxx')");

### 自定义代码生成
关于代码生成类`MybatisPlusGenerator`的使用参考:[自定义深度定制人性化的MybatisPlus的代码生成策略](https://blog.csdn.net/qq_42937522/article/details/110725251)

### 自定义扩展MybatisPlus的方法
参考:[如何深度定制扩展MybatisPlus提供的Model、Mapper、Service层的方法](https://blog.csdn.net/qq_42937522/article/details/110740545)

## 服务器部署
参考:
1. [docker安装及docker常用命令](https://blog.csdn.net/qq_42937522/article/details/106274293)
Expand All @@ -104,7 +105,9 @@
4. [docker 构建centos7+git+nvm镜像,实现自主切换node版本统一部署前端vue项目](https://blog.csdn.net/qq_42937522/article/details/108702775)

# 鸣谢
- [@三月软件](http://www.marchsoft.cn/)提供技术支持
- 主要参考[EL-ADMIN](https://el-admin.vip/)
- [@shiwei-Ren](https://github.com/shiwei-Ren)[@jiaoqianjin](https://github.com/jiaoqianjin)[@pangyv](https://github.com/pangyv)[@jie-fei30](https://github.com/jie-fei30)参与初版的开发维护
- 感谢 [EL-ADMIN](https://el-admin.vip/) 开源框架
- 感谢[@shiwei-Ren](https://github.com/shiwei-Ren)[@jiaoqianjin](https://github.com/jiaoqianjin)[@pangyv ](https://github.com/pangyv)[@jie-fei30)](https://github.com/jie-fei30)参与初版的开发维护
- 感谢每一位为 SMPE-ADMIN 做出过贡献的开发者

# 反馈交流
QQ交流群:571506692
42 changes: 22 additions & 20 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,18 @@
<groupId>marchsoft</groupId>
<artifactId>smpe-admin</artifactId>
<packaging>pom</packaging>
<version>0.0.1-SNAPSHOT</version>
<version>1.0.0-RELEASE</version>
<modules>
<module>smpe-common</module>
<module>smpe-system</module>
<module>smpe-log</module>
</modules>

<name>SMPE-ADMIN 后台管理</name>
<description>SMPE是一个基于EL-ADMIN、Spring Boot 2.1.0、JDK1.8+ 、 Mybatis Plus、JWT + Spring
Security、Redis、Vue的前后端分离的后台管理系统
</description>
<url>https://github.com/sanyueruanjian/smpe-admin</url>

<parent>
<groupId>org.springframework.boot</groupId>
Expand Down Expand Up @@ -45,6 +49,8 @@
<xercesImpl.version>2.12.0</xercesImpl.version>
<aspectjrt.version>1.9.5</aspectjrt.version>
<fastjson.version>1.2.70</fastjson.version>
<knife4j.version>2.0.4</knife4j.version>
<inject.version>1</inject.version>
</properties>

<!-- 锁定jar包版本 -->
Expand All @@ -55,12 +61,6 @@
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
<exclusions>
<exclusion>
<groupId>cn.hutool</groupId>
<artifactId>hutool-json</artifactId>
</exclusion>
</exclusions>
</dependency>

<!--lombok插件-->
Expand Down Expand Up @@ -129,6 +129,14 @@
</dependency>
<!-- swagger end -->

<!-- Knife4j -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>${knife4j.version}</version>
</dependency>
<!-- swagger end -->

<!--监控sql日志-->
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
Expand Down Expand Up @@ -229,22 +237,16 @@
<version>${aspectjrt.version}</version>
</dependency>

<!-- Java依赖注入标准 -->
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>${inject.version}</version>
</dependency>

</dependencies>
</dependencyManagement>

<dependencies>
<!-- &lt;!&ndash;Java 实体映射工具 —— mapStruct依赖&ndash;&gt;-->
<!-- <dependency>-->
<!-- <groupId>org.mapstruct</groupId>-->
<!-- <artifactId>mapstruct</artifactId>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.mapstruct</groupId>-->
<!-- <artifactId>mapstruct-processor</artifactId>-->
<!-- <scope>provided</scope>-->
<!-- </dependency>-->
</dependencies>

<repositories>
<repository>
<id>public</id>
Expand Down
2 changes: 1 addition & 1 deletion smpe-admin.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ IMAGE_NAME=centos7_mvn_git_java8
SERVER_NAME=

#这里的JAR_PATH为jar包所在位置
JAR_PATH=./smpe_system/target/smpe-system-0.0.1-SNAPSHOT.jar
JAR_PATH=./smpe-system/target/smpe-system-0.0.1-SNAPSHOT.jar

profile=$2
port=$3
Expand Down
22 changes: 14 additions & 8 deletions smpe-common/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,20 @@
<parent>
<artifactId>smpe-admin</artifactId>
<groupId>marchsoft</groupId>
<version>0.0.1-SNAPSHOT</version>
<version>1.0.0-RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>smpe-common</artifactId>
<name>公共模块</name>
<description>公共模块(可供任何模块调用的基础服务)</description>

<dependencies>

<!-- hutool的java开发工具包 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<exclusions>
<exclusion>
<groupId>cn.hutool</groupId>
<artifactId>hutool-json</artifactId>
</exclusion>
</exclusions>
</dependency>

<!-- fastjson -->
Expand Down Expand Up @@ -82,6 +78,10 @@
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<!--Swagger异常:AbstractSerializableParameter : Illegal DefaultValue null for parameter type integer
由于实体类使用@ApiModelProperty时,example属性没有赋值导致的,会进行非空判断
解决: 排除后,上传更高版本
-->
<exclusions>
<exclusion>
<groupId>io.swagger</groupId>
Expand All @@ -108,6 +108,13 @@
</dependency>
<!-- swagger end -->

<!-- Knife4j -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
</dependency>
<!-- swagger end -->

<!--lombok插件-->
<dependency>
<groupId>org.projectlombok</groupId>
Expand Down Expand Up @@ -142,7 +149,6 @@
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>

<!-- 获取ip的详细地址 -->
Expand Down
22 changes: 22 additions & 0 deletions smpe-common/src/main/java/marchsoft/annotation/Queries.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package marchsoft.annotation;

import java.lang.annotation.*;

/**
* 多个关联查询注解,用于mapper层查询方法上
* 使用方法类比 @Results ,里面套多个 @Query
* Queries({
* @ Query(),@Query(),...
* })
*
* @author Wangmingcan
* Date: 2021/01/12 09:35
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface Queries {

Query[] value() default {};

}
106 changes: 30 additions & 76 deletions smpe-common/src/main/java/marchsoft/annotation/Query.java
Original file line number Diff line number Diff line change
@@ -1,76 +1,30 @@
package marchsoft.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
* 辅助查询(暂时禁止使用)
*
* @author jiaoqianjin
* Date: 2020/11/16 14:35
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Deprecated
public @interface Query {

// 基本对象的属性名
String propName() default "";

// 查询方式
Type type() default Type.EQUAL;

/**
* 连接查询的属性名,如User类中的dept
*/
String joinName() default "";

/**
* 默认左连接
*/
Join join() default Join.LEFT;

/**
* 多字段模糊搜索,仅支持String类型字段,多个用逗号隔开, 如@Query(blurry = "email,username")
*/
String blurry() default "";

enum Type {
// 相等
EQUAL
// 大于等于
, GREATER_THAN
// 小于等于
, LESS_THAN
// 中模糊查询
, INNER_LIKE
// 左模糊查询
, LEFT_LIKE
// 右模糊查询
, RIGHT_LIKE
// 小于
, LESS_THAN_NQ
// 包含
, IN
// 不等于
, NOT_EQUAL
// between
, BETWEEN
// 不为空
, NOT_NULL
// 为空
, IS_NULL
}

/**
* 适用于简单连接查询,复杂的请自定义该注解,或者使用sql查询
*/
enum Join {
/** 简单连接查询 */
LEFT, RIGHT, INNER
}

}

package marchsoft.annotation;
import java.lang.annotation.*;

/**
* 重新实现 @One、@Many注解
* 关联查询注解,用于mapper层查询方法上
* 仅需关联查询一个属性时,可以直接使用@Query
* 如果需要使用多个@Query,请先使用@Queries套在外层(类似 @Results)
* 参数、作用基本和原@One保持一致,既可以用于一对一也可以一对多
*
* @author Wangmingcan
* Date: 2021/01/12 09:35
*/
@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(Queries.class)
public @interface Query {

/** 被关联的列,一般为id,请保证和实体类中属性名称一致,驼峰下划线都可以
* 如关联的列为dept_id,填deptId和dept_id都可以*/
String column() default "";

/** 关联的属性 ,和实体类中需要封装的属性名称保持一致*/
String property() default "";

/** 执行的查询方法,建议填写mapper层的全限定方法名 ,方法返回值必须和property类型一致*/
String select() default "";

}
Loading

0 comments on commit bd89f96

Please sign in to comment.