Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
guns-vip
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
chenjunxiong
guns-vip
Commits
23f66321
Commit
23f66321
authored
Jan 09, 2019
by
fengshuonan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新readme
parent
aa933716
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
113 additions
and
81 deletions
+113
-81
README.md
+113
-81
No files found.
README.md
View file @
23f66321
# Guns旗舰版v1.0 震撼发布
## 介绍
Guns基于SpringBoot 2,致力于做更简洁的后台管理系统,完美整合springmvc + shiro + mybatis-plus + beetl!Guns项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),可以直接作为一个后台管理系统的脚手架!
### Guns旗舰版v1.0 更新内容
> * 前端页面风格和架构焕然一新,全面升级bootstrap 4.0,您现在拥有两种界面风格可选
> * 引入vue.js,实现业务数据双向绑定,不增加学习成本的情况下,提升自己的开发效率
> * 优化前端框架结构,加载速度更快,使用更加灵活可配置
> * 前后端代码整体重构,逻辑更加清晰,代码量更加简洁,增加关键部分注释,代码的可读性提高
> * 增加docker-maven-plugin插件,可一键部署项目到装有docker的服务器
> * 重构shiro部分的业务代码和配置,更加清晰简洁
> * 规范后端数据库设计,字段和表的命名都修改为下划线命名,将以往的全小写命名去除
## 旗舰版在线demo
demo地址(admin/111111):
[
http://demo.stylefeng.cn
](
http://demo.stylefeng.cn
)
## 最新Guns技术文档
Guns框架有作者在业余时间整理的技术文档,详情点击
[
查看详情
](
https://gitee.com/stylefeng/guns/wikis/pages?title=Guns%E6%8A%80%E6%9C%AF%E6%96%87%E6%A1%A3&parent=
)
## 最新Guns视频教程
Guns框架有作者在业余时间录制的视频教程,详情点击
[
教程介绍
](
https://gitee.com/stylefeng/guns/wikis/pages?title=Guns%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B&parent=
)
## 技术讨论 & [wiki地址](https://gitee.com/stylefeng/guns/wikis/Home)
如果对项目有任何疑问或者建议,欢迎加入Guns技术交流1群:254550081,Guns技术交流2群:684163663,Guns技术交流3群:207434260
## 管理系统功能
1.
用户管理 2.角色管理 3.部门管理 4.菜单管理 5.字典管理 6.业务日志 7.登录日志 8.监控管理 9.通知管理 10.代码生成
## 项目特点
<p
align=
"center"
>
<img
src=
"https://images.gitee.com/uploads/images/2019/0109/214218_d2aa949b_551203.png"
width=
"300"
>
<br>
<br>
<p
align=
"center"
>
Guns基于SpringBoot 2,致力于做更简洁的后台管理系统。Guns项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),可以直接作为一个后台管理系统的脚手架!
<br>
<br>
<span>
<span>
Guns官方交流群:254550081(满) 684163663(满) 207434260
</span>
</span>
<br>
<br>
<a
href=
"https://getbootstrap.com/"
>
<img
src=
"https://img.shields.io/badge/bootstrap-4.0-blue.svg"
alt=
"bootstrap"
>
</a>
<a
href=
"https://cn.vuejs.org/index.html"
>
<img
src=
"https://img.shields.io/badge/vue-2.5.17-blue.svg"
alt=
"vue"
>
</a>
+
<a
href=
"http://spring.io/projects/spring-boot"
>
<img
src=
"https://img.shields.io/badge/spring--boot-2.0.1-green.svg"
alt=
"spring-boot"
>
</a>
<a
href=
"http://mp.baomidou.com"
>
<img
src=
"https://img.shields.io/badge/mybatis--plus-2.3-blue.svg"
alt=
"mybatis-plus"
>
</a>
<a
href=
"http://ibeetl.com/"
>
<img
src=
"https://img.shields.io/badge/beetl-2.9.3-yellow.svg"
alt=
"beetl"
>
</a>
<a
href=
"https://shiro.apache.org/"
>
<img
src=
"https://img.shields.io/badge/shiro-1.4.0-blue.svg"
alt=
"shiro"
>
</a>
</p>
</p>
-----------------------------------------------------------------------------------------------
### Guns 旗舰版在线demo
账号密码:admin/111111,地址:http://demo.stylefeng.cn
### 最新Guns技术文档和视频教程
Guns框架有作者在业余时间整理的技术文档,详情点击
[
技术文档
](
https://gitee.com/stylefeng/guns/wikis/pages?title=Guns%E6%8A%80%E6%9C%AF%E6%96%87%E6%A1%A3&parent=
)
Guns框架有作者在业余时间录制的视频教程,详情点击
[
视频教程
](
https://gitee.com/stylefeng/guns/wikis/pages?title=Guns%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B&parent=
)
### Guns历史版本
| 版本名称 | 说明 | 地址 |
| :---: | :---: | :---: |
| Guns旗舰版 v1.0 | 全新的UI界面,采用bootstrap 4 + vue,全新的规范化的数据库设计,demo地址:http://demo.stylefeng.cn | https://gitee.com/stylefeng/guns |
| Guns v5.1 | Guns经典版的最新版,采用bootstrap 3 | https://gitee.com/stylefeng/guns/tree/v5.1-final |
| Guns v4.2 | spring boot升级到了2.0,大大简化了前端的体积,升级了一些组件到最新版本 | https://gitee.com/stylefeng/guns/tree/v4.2 |
| Guns v3.3 | 模块化了整个项目,整体拆分成4个模块,增加了jwt,并集成工作流flowable 6.2.0 | https://gitee.com/stylefeng/guns/tree/v3.3 |
| Guns v2.4 | 基于spring boot全面升级,更加简化配置和依赖,更专注于开发业务 | https://gitee.com/stylefeng/guns/tree/v2.4/ |
| Guns v1.0 | Guns的第一个版本,率先采用spring java bean方式的配置,零spring xml配置,spring用到极致 | https://gitee.com/stylefeng/guns/tree/v1.0/ |
### Guns微服务版本
Guns的核心是roses-kernel项目
[
https://gitee.com/stylefeng-Roses/roses-kernel
](
https://gitee.com/stylefeng-Roses/roses-kernel
)
,提供对spring cloud的支持。
[
Roses框架
](
https://gitee.com/stylefeng/roses
)
基于Spring Boot 2和Spring Cloud Finchley.RELEASE,整合Eureka + Hystrix + Ribbon + Feign + Zuul,更符合企业级的分布式和服务化解决方案,Roses拥有高效率的开发体验,提供可靠消息最终一致性分布式事务解决方案,提供基于调用链的服务治理,提供可靠的服务异常定位方案(Log + Trace)等等,一个分布式框架不仅需要构建高效稳定的底层开发框架,更需要解决分布式带来的种种挑战!
### 管理系统功能
1.
用户管理 2.角色管理 3.部门管理 4.菜单管理 5.字典管理 6.业务日志 7.登录日志 8.监控管理 9.通知管理 10.代码生成(旗舰版目前还没完成)
### 项目特点
1.
基于SpringBoot,简化了大量项目配置和maven依赖,让您更专注于业务开发,独特的分包方式,代码多而不乱。
2.
完善的日志记录体系,可记录登录日志,业务操作日志(可记录操作前和操作后的数据),异常日志到数据库,通过@BussinessLog注解和LogObjectHolder.me().set()方法,业务操作日志可具体记录哪个用户,执行了哪些业务,修改了哪些数据,并且日志记录为异步执行,详情请见@BussinessLog注解和LogObjectHolder,LogManager,LogAop类。
3.
利用beetl模板引擎对前台页面进行封装和拆分,使臃肿的html代码变得简洁,更加易维护。
...
...
@@ -40,32 +77,10 @@ Guns框架有作者在业余时间录制的视频教程,详情点击[教程介
9.
控制器层统一的异常拦截机制,利用@ControllerAdvice统一对异常拦截,具体见com.stylefeng.guns.core.aop.GlobalExceptionHandler类。
10.
页面统一的js key-value单例模式写法,每个页面生成一个唯一的全局变量,提高js的利用效率,并且有效防止多个人员开发引起的函数名/类名冲突,并且可以更好地去维护代码。
## 基于javabean方式的spring配置
Guns以简洁为核心,抛弃了传统的易错,臃肿xml配置,采用javabean的方式配置spring,简化了项目的配置,如下示例为配置mybatis-plus和数据源:
```
@Configuration
@MapperScan(basePackages = {"com.stylefeng.guns.modular.*.dao", "com.stylefeng.guns.common.persistence.dao"})
public class MybatisPlusConfig {
@Autowired
DruidProperties druidProperties;
/**
* mybatis-plus分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
paginationInterceptor.setDialectType(DBType.MYSQL.getDb());
return paginationInterceptor;
}
}
```
## 业务日志记录
### 业务日志记录
日志记录采用aop(LogAop类)方式对所有包含@BussinessLog注解的方法进行aop切入,会记录下当前用户执行了哪些操作(即@BussinessLog value属性的内容),如果涉及到数据修改,会取当前http请求的所有requestParameters与LogObjectHolder类中缓存的Object对象的所有字段作比较(所以在编辑之前的获取详情接口中需要缓存被修改对象之前的字段信息),日志内容会异步存入数据库中(通过ScheduledThreadPoolExecutor类)。
## beetl对前台页面的拆分与包装
##
#
beetl对前台页面的拆分与包装
例如,把主页拆分成三部分,每个部分单独一个页面,更加便于维护
```
<!--左侧导航开始-->
...
...
@@ -121,10 +136,10 @@ public class MybatisPlusConfig {
```
以上beetl的用法请参考beetl说明文档。
## 对js常用代码的封装
##
#
对js常用代码的封装
在webapp/static/js/common目录中,有对常用js代码的封装,例如Feng.js,其中Feng.info(),Feng.success(),Feng.error()三个方法,分别封装了普通提示,成功提示,错误提示的代码,简化了layer提示层插件的使用。
## 极简的图片上传方法
##
#
极简的图片上传方法
guns对web-upload进行二次封装,让图片的上传功能呢只用2行代码即可实现,如下
```
var avatarUp = new $WebUpload("avatar");
...
...
@@ -132,13 +147,13 @@ avatarUp.init();
```
具体实现请参考static/js/common/web-upload-object.js
## 独创controller层,map+warpper返回方式
##
#
独创controller层,map+warpper返回方式
map+warpper方式即为把controller层的返回结果使用BeanKit工具类把原有bean转化为Map的的形式(或者原有bean直接是map的形式),再用单独写的一个包装类再包装一次这个map,使里面的参数更加具体,更加有含义,下面举一个例子,例如,在返回给前台一个性别时,数据库查出来1是男2是女,假如直接返回给前台,那么前台显示的时候还需要增加一次判断,并且前后端分离开发时又增加了一次交流和文档的成本,但是采用warpper包装的形式,可以直接把返回结果包装一下,例如动态增加一个字段sexName直接返回给前台性别的中文名称即可。
## 独创mybatis数据范围拦截器,实现对数据权限的过滤
##
#
独创mybatis数据范围拦截器,实现对数据权限的过滤
Guns的数据范围控制是指,对拥有相同角色的用户,根据部门的不同进行相应的数据筛选,如果部门不相同,那么有可能展示出的具体数据是不一致的.所以说Guns对数据范围控制是以部门id为单位来标识的,如何增加数据范围拦截呢?只需在相关的mapper接口的参数中增加一个DataScope对象即可,DataScope中有两个字段,scopeName用来标识sql语句中部门id的字段名称,例如deptiid或者id,另一个字段deptIds就是具体需要过滤的部门id的集合.拦截器原理如下:拦截mapper中包含DataScope对象的方法,获取其原始sql,并做一个包装限制部门id在deptIds范围内的数据进行展示.
## swagger api管理使用说明
##
#
swagger api管理使用说明
swagger会管理所有包含@ApiOperation注解的控制器方法,同时,可利用@ApiImplicitParams注解标记接口中的参数,具体用法请参考CodeController类中的用法。
```
@ApiOperation("生成代码")
...
...
@@ -151,27 +166,44 @@ swagger会管理所有包含@ApiOperation注解的控制器方法,同时,可
@RequestMapping(value = "/generate", method = RequestMethod.POST)
```
## jwt token鉴权机制
##
#
jwt token鉴权机制
jwt token鉴权机制是指若需要请求服务器接口,必须通过AuthController获取一个请求令牌(jwt token),持有jwt token的用户才可以访问服务器的其他资源,如果没有此令牌,则访问接口会直接忽略,请求获取jwt token时,需要携带credenceName和credenceCode(可以是账号密码,可以是手机号验证码等等),校验credenceName和credenceCode成功后,会颁发给客户端一个jwt token还有一个随机字符串,用于传输过程中对数据进行签名用,签名机制请见下面介绍.基于token的鉴权机制类似于http协议也是无状态的,它不需要在服务端去保留用户的认证信息或者会话信息.这就意味着基于token认证机制的应用不需要去考虑用户在哪一台服务器登录了,这就为应用的扩展提供了便利.
## 签名机制
##
#
签名机制
签名机制是指客户端向服务端传输数据中,对传输数据进行md5加密,并且加密过程中利用Auth接口返回的随机字符串进行混淆加密,并把md5值同时附带给服务端,服务端通获取数据之后对数据再进行一次md5加密,若加密结果和客户端传来的数据一致,则认定客户端请求的数据是没有被篡改的,若不一致,则认为被加密的数据是被篡改的
## 效果图














## 曾获荣誉

\ No newline at end of file
### Guns经典版效果图
<table>
<tr>
<td><img
src=
"https://git.oschina.net/uploads/images/2017/0604/194616_36ed7fd6_551203.png"
/></td>
<td><img
src=
"https://git.oschina.net/uploads/images/2017/0604/194623_a0761bc3_551203.png"
/></td>
</tr>
<tr>
<td><img
src=
"https://git.oschina.net/uploads/images/2017/0604/194630_640dfd35_551203.png"
/></td>
<td><img
src=
"https://git.oschina.net/uploads/images/2017/0526/104015_bdb14c74_551203.png"
/></td>
</tr>
<tr>
<td><img
src=
"https://git.oschina.net/uploads/images/2017/0516/000735_b83c5c46_551203.png"
/></td>
<td><img
src=
"https://git.oschina.net/uploads/images/2017/0526/103734_bd3e8f6b_551203.png"
/></td>
</tr>
<tr>
<td><img
src=
"https://git.oschina.net/uploads/images/2017/0604/194539_f9bb482a_551203.png"
/></td>
<td><img
src=
"https://git.oschina.net/uploads/images/2017/0526/103746_6b4129ed_551203.png"
/></td>
</tr>
<tr>
<td><img
src=
"https://git.oschina.net/uploads/images/2017/0526/103755_7729b916_551203.png"
/></td>
<td><img
src=
"https://git.oschina.net/uploads/images/2017/0526/103801_b8216865_551203.png"
/></td>
</tr>
<tr>
<td><img
src=
"https://git.oschina.net/uploads/images/2017/0526/103807_20bfb868_551203.png"
/></td>
<td><img
src=
"https://git.oschina.net/uploads/images/2017/0526/103814_67e078bb_551203.png"
/></td>
</tr>
<tr>
<td><img
src=
"https://git.oschina.net/uploads/images/2017/0526/103822_58fd5d91_551203.png"
/></td>
<td><img
src=
"https://git.oschina.net/uploads/images/2017/0526/103827_d6218c74_551203.png"
/></td>
</tr>
</table>
### stylefeng开源技术
官网:http://stylefeng.cn/
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment