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
fc72457a
Commit
fc72457a
authored
Jul 10, 2017
by
huangpu
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
17f052e9
d44f0999
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
112 additions
and
20 deletions
+112
-20
README.md
+10
-12
pom.xml
+7
-1
src/main/java/com/stylefeng/guns/common/exception/BizExceptionEnum.java
+1
-0
src/main/java/com/stylefeng/guns/config/FastjsonConfig.java
+0
-1
src/main/java/com/stylefeng/guns/config/properties/BeetlProperties.java
+13
-0
src/main/java/com/stylefeng/guns/modular/system/service/impl/DictServiceImpl.java
+5
-1
src/main/resources/application.yml
+1
-0
src/main/webapp/WEB-INF/view/common/_tab.html
+3
-3
src/main/webapp/WEB-INF/view/common/tags/select.tag
+1
-1
src/main/webapp/static/css/style.css
+6
-0
src/main/webapp/static/js/contabs.js
+3
-0
src/main/webapp/static/js/hplus.js
+17
-1
上线发布流程.md
+45
-0
No files found.
README.md
View file @
fc72457a
# Guns V2.
2
# Guns V2.
3
新版Guns基于SpringBoot全面升级,完美整合springmvc + shiro + mybatis-plus + beetl!
新版Guns基于SpringBoot全面升级,完美整合springmvc + shiro + mybatis-plus + beetl!
在不用写xml配置(V1.0)的基础上进一步简化项目配置,让您更专注于业务开发!抛弃传统spring xml的配置方式,利用springboot + javabean方式配置spring,极大简化了pom.xml配置和spring配置.
在不用写xml配置(V1.0)的基础上进一步简化项目配置,让您更专注于业务开发!抛弃传统spring xml的配置方式,利用springboot + javabean方式配置spring,极大简化了pom.xml配置和spring配置.
...
@@ -13,17 +13,15 @@ Guns项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模
...
@@ -13,17 +13,15 @@ Guns项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模
## 技术讨论
## 技术讨论
如果对项目有任何疑问或者建议,欢迎加入Guns技术交流群:254550081(加之前请先看一遍readme文档)
如果对项目有任何疑问或者建议,欢迎加入Guns技术交流群:254550081(加之前请先看一遍readme文档)
## V2.2更新日志
## V2.3更新日志
1.
菜单树由最多二级菜单拓展为三级菜单
1.
增加多数据源支持
2.
用户管理页面新增部门树,方便查询部门人员信息
2.
增加富文本编辑器支持
3.
完善系统的session机制,增加session失效时间的跳转
3.
数据库字段增加注释
4.
完善Guns代码生成功能,新增Dao和Service,并且所有的生成都是可选的
4.
数据字典不单单是查询功能,可以动态绑定到业务中当做枚举值使用
5.
删除信息增加提示框
5.
上传图片增加进度条显示
6.
删除父菜单可以删除所有子菜单
6.
增加上线发布流程文档(上线发布流程.md)
7.
新增对页面的js验证,所用框架为bootstrap validator
7.
解决页面点击查询,左侧菜单高亮会消失bug
8.
完善druid监控,新增Web应用监控,URI监控,session监控
8.
解决个人信息无法提交的bug
9.
修复新增含有0值的字典,查询会出现多条的bug
10.
修复没有角色的用户登录报错的bug
### 如果不喜欢SpringBoot?
### 如果不喜欢SpringBoot?
如果您不喜欢用SpringBoot,或者您是一个spring初学者,您可以切换到
[
Guns V1.0(点击这里)
](
http://git.oschina.net/naan1993/guns/tree/v1.0/
)
分支,
如果您不喜欢用SpringBoot,或者您是一个spring初学者,您可以切换到
[
Guns V1.0(点击这里)
](
http://git.oschina.net/naan1993/guns/tree/v1.0/
)
分支,
...
...
pom.xml
View file @
fc72457a
...
@@ -23,7 +23,8 @@
...
@@ -23,7 +23,8 @@
<project.reporting.outputEncoding>
UTF-8
</project.reporting.outputEncoding>
<project.reporting.outputEncoding>
UTF-8
</project.reporting.outputEncoding>
<java.version>
1.8
</java.version>
<java.version>
1.8
</java.version>
<shiro.version>
1.4.0
</shiro.version>
<shiro.version>
1.4.0
</shiro.version>
<mybatisplus-spring-boot-starter.version>
1.0.3
</mybatisplus-spring-boot-starter.version>
<mybatisplus-spring-boot-starter.version>
1.0.4
</mybatisplus-spring-boot-starter.version>
<mybatis-plus.version>
2.1-gamma
</mybatis-plus.version>
<fastjson.version>
1.2.31
</fastjson.version>
<fastjson.version>
1.2.31
</fastjson.version>
<commons.io.version>
2.5
</commons.io.version>
<commons.io.version>
2.5
</commons.io.version>
<velocity.version>
1.7
</velocity.version>
<velocity.version>
1.7
</velocity.version>
...
@@ -109,6 +110,11 @@
...
@@ -109,6 +110,11 @@
<!--其他依赖-->
<!--其他依赖-->
<dependency>
<dependency>
<groupId>
com.baomidou
</groupId>
<artifactId>
mybatis-plus
</artifactId>
<version>
${mybatis-plus.version}
</version>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
<artifactId>
fastjson
</artifactId>
<version>
${fastjson.version}
</version>
<version>
${fastjson.version}
</version>
...
...
src/main/java/com/stylefeng/guns/common/exception/BizExceptionEnum.java
View file @
fc72457a
...
@@ -46,6 +46,7 @@ public enum BizExceptionEnum {
...
@@ -46,6 +46,7 @@ public enum BizExceptionEnum {
/**
/**
* 错误的请求
* 错误的请求
*/
*/
DICT_MUST_BE_NUMBER
(
400
,
"字典的值必须为数字"
),
REQUEST_NULL
(
400
,
"请求有错误"
),
REQUEST_NULL
(
400
,
"请求有错误"
),
SESSION_TIMEOUT
(
400
,
"会话超时"
),
SESSION_TIMEOUT
(
400
,
"会话超时"
),
SERVER_ERROR
(
500
,
"服务器异常"
);
SERVER_ERROR
(
500
,
"服务器异常"
);
...
...
src/main/java/com/stylefeng/guns/config/FastjsonConfig.java
View file @
fc72457a
...
@@ -22,7 +22,6 @@ public class FastjsonConfig {
...
@@ -22,7 +22,6 @@ public class FastjsonConfig {
FastJsonConfig
fastJsonConfig
=
new
FastJsonConfig
();
FastJsonConfig
fastJsonConfig
=
new
FastJsonConfig
();
fastJsonConfig
.
setSerializerFeatures
(
fastJsonConfig
.
setSerializerFeatures
(
SerializerFeature
.
PrettyFormat
,
SerializerFeature
.
PrettyFormat
,
SerializerFeature
.
WriteClassName
,
SerializerFeature
.
WriteMapNullValue
SerializerFeature
.
WriteMapNullValue
);
);
fastJsonConfig
.
setDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
fastJsonConfig
.
setDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
...
...
src/main/java/com/stylefeng/guns/config/properties/BeetlProperties.java
View file @
fc72457a
...
@@ -27,6 +27,8 @@ public class BeetlProperties {
...
@@ -27,6 +27,8 @@ public class BeetlProperties {
private
String
resourceTagsuffix
;
private
String
resourceTagsuffix
;
private
String
resourceAutoCheck
;
@Value
(
"${spring.mvc.view.prefix}"
)
@Value
(
"${spring.mvc.view.prefix}"
)
private
String
prefix
;
private
String
prefix
;
...
@@ -49,6 +51,9 @@ public class BeetlProperties {
...
@@ -49,6 +51,9 @@ public class BeetlProperties {
if
(
ToolUtil
.
isNotEmpty
(
resourceTagsuffix
)){
if
(
ToolUtil
.
isNotEmpty
(
resourceTagsuffix
)){
properties
.
setProperty
(
"RESOURCE.tagSuffix"
,
resourceTagsuffix
);
properties
.
setProperty
(
"RESOURCE.tagSuffix"
,
resourceTagsuffix
);
}
}
if
(
ToolUtil
.
isNotEmpty
(
resourceAutoCheck
)){
properties
.
setProperty
(
"RESOURCE.autoCheck"
,
resourceAutoCheck
);
}
return
properties
;
return
properties
;
}
}
...
@@ -87,4 +92,12 @@ public class BeetlProperties {
...
@@ -87,4 +92,12 @@ public class BeetlProperties {
public
void
setResourceTagsuffix
(
String
resourceTagsuffix
)
{
public
void
setResourceTagsuffix
(
String
resourceTagsuffix
)
{
this
.
resourceTagsuffix
=
resourceTagsuffix
;
this
.
resourceTagsuffix
=
resourceTagsuffix
;
}
}
public
String
getResourceAutoCheck
()
{
return
resourceAutoCheck
;
}
public
void
setResourceAutoCheck
(
String
resourceAutoCheck
)
{
this
.
resourceAutoCheck
=
resourceAutoCheck
;
}
}
}
src/main/java/com/stylefeng/guns/modular/system/service/impl/DictServiceImpl.java
View file @
fc72457a
...
@@ -52,7 +52,11 @@ public class DictServiceImpl implements IDictService {
...
@@ -52,7 +52,11 @@ public class DictServiceImpl implements IDictService {
Dict
itemDict
=
new
Dict
();
Dict
itemDict
=
new
Dict
();
itemDict
.
setPid
(
dict
.
getId
());
itemDict
.
setPid
(
dict
.
getId
());
itemDict
.
setName
(
name
);
itemDict
.
setName
(
name
);
itemDict
.
setNum
(
Integer
.
valueOf
(
num
));
try
{
itemDict
.
setNum
(
Integer
.
valueOf
(
num
));
}
catch
(
NumberFormatException
e
){
throw
new
BussinessException
(
BizExceptionEnum
.
DICT_MUST_BE_NUMBER
);
}
this
.
dictMapper
.
insert
(
itemDict
);
this
.
dictMapper
.
insert
(
itemDict
);
}
}
}
}
...
...
src/main/resources/application.yml
View file @
fc72457a
...
@@ -22,6 +22,7 @@ beetl:
...
@@ -22,6 +22,7 @@ beetl:
delimiter-statement-end
:
null
delimiter-statement-end
:
null
resource-tagroot
:
common/tags
#自定义标签文件Root目录和后缀
resource-tagroot
:
common/tags
#自定义标签文件Root目录和后缀
resource-tagsuffix
:
tag
resource-tagsuffix
:
tag
resource-auto-check
:
true
#是否检测文件变化,开发用true合适,但线上要改为false
################### spring配置 ###################
################### spring配置 ###################
...
...
src/main/webapp/WEB-INF/view/common/_tab.html
View file @
fc72457a
...
@@ -33,7 +33,7 @@
...
@@ -33,7 +33,7 @@
@for(title in titles){
@for(title in titles){
@if(tool.isEmpty(title.children)){
@if(tool.isEmpty(title.children)){
<li>
<li>
<a
class=
"J_menuItem"
href=
"${ctxPath}${title.url}"
>
<a
class=
"J_menuItem"
href=
"${ctxPath}${title.url}"
name=
"tabMenuItem"
>
<i
class=
"fa ${title.icon}"
></i>
<i
class=
"fa ${title.icon}"
></i>
<span
class=
"nav-label"
>
${title.name}
</span>
<span
class=
"nav-label"
>
${title.name}
</span>
</a>
</a>
...
@@ -49,7 +49,7 @@
...
@@ -49,7 +49,7 @@
@for(subTitle in title.children){
@for(subTitle in title.children){
@if(tool.isEmpty(subTitle.children)){
@if(tool.isEmpty(subTitle.children)){
<li>
<li>
<a
class=
"J_menuItem"
href=
"${ctxPath}${subTitle.url}"
>
${subTitle.name}
</a>
<a
class=
"J_menuItem"
href=
"${ctxPath}${subTitle.url}"
name=
"tabMenuItem"
>
${subTitle.name}
</a>
</li>
</li>
@}else{
@}else{
<li>
<li>
...
@@ -57,7 +57,7 @@
...
@@ -57,7 +57,7 @@
<ul
class=
"nav nav-third-level"
>
<ul
class=
"nav nav-third-level"
>
@for(thirdTitle in subTitle.children){
@for(thirdTitle in subTitle.children){
<li>
<li>
<a
class=
"J_menuItem"
href=
"${ctxPath}${thirdTitle.url}"
>
${thirdTitle.name}
</a>
<a
class=
"J_menuItem"
href=
"${ctxPath}${thirdTitle.url}"
name=
"tabMenuItem"
>
${thirdTitle.name}
</a>
</li>
</li>
@}
@}
</ul>
</ul>
...
...
src/main/webapp/WEB-INF/view/common/tags/select.tag
View file @
fc72457a
...
@@ -7,7 +7,7 @@
...
@@ -7,7 +7,7 @@
<div class="form-group">
<div class="form-group">
<label class="col-sm-3 control-label">${name}</label>
<label class="col-sm-3 control-label">${name}</label>
<div class="col-sm-9">
<div class="col-sm-9">
<select class="form-control" id="${id}">
<select class="form-control" id="${id}"
name="${id}"
>
${tagBody!}
${tagBody!}
</select>
</select>
@if(isNotEmpty(hidden)){
@if(isNotEmpty(hidden)){
...
...
src/main/webapp/static/css/style.css
View file @
fc72457a
...
@@ -7890,3 +7890,8 @@ body.skin-3 {
...
@@ -7890,3 +7890,8 @@ body.skin-3 {
font-size
:
12px
font-size
:
12px
}
}
}
}
.tab-menu-selected
{
background-color
:
#293846
!important
;
color
:
white
!important
;
}
\ No newline at end of file
src/main/webapp/static/js/contabs.js
View file @
fc72457a
...
@@ -169,6 +169,7 @@ $(function () {
...
@@ -169,6 +169,7 @@ $(function () {
if
(
$
(
this
).
parents
(
'.J_menuTab'
).
next
(
'.J_menuTab'
).
size
())
{
if
(
$
(
this
).
parents
(
'.J_menuTab'
).
next
(
'.J_menuTab'
).
size
())
{
var
activeId
=
$
(
this
).
parents
(
'.J_menuTab'
).
next
(
'.J_menuTab:eq(0)'
).
data
(
'id'
);
var
activeId
=
$
(
this
).
parents
(
'.J_menuTab'
).
next
(
'.J_menuTab:eq(0)'
).
data
(
'id'
);
highLightMenuItem
(
activeId
);
//高亮对应的tab菜单
$
(
this
).
parents
(
'.J_menuTab'
).
next
(
'.J_menuTab:eq(0)'
).
addClass
(
'active'
);
$
(
this
).
parents
(
'.J_menuTab'
).
next
(
'.J_menuTab:eq(0)'
).
addClass
(
'active'
);
$
(
'.J_mainContent .J_iframe'
).
each
(
function
()
{
$
(
'.J_mainContent .J_iframe'
).
each
(
function
()
{
...
@@ -218,6 +219,7 @@ $(function () {
...
@@ -218,6 +219,7 @@ $(function () {
return
false
;
return
false
;
}
}
});
});
highLightMenuItem
(
activeId
);
//高亮对应的tab菜单
}
}
}
}
// 当前元素不处于活动状态
// 当前元素不处于活动状态
...
@@ -260,6 +262,7 @@ $(function () {
...
@@ -260,6 +262,7 @@ $(function () {
function
activeTab
()
{
function
activeTab
()
{
if
(
!
$
(
this
).
hasClass
(
'active'
))
{
if
(
!
$
(
this
).
hasClass
(
'active'
))
{
var
currentId
=
$
(
this
).
data
(
'id'
);
var
currentId
=
$
(
this
).
data
(
'id'
);
highLightMenuItem
(
currentId
);
//高亮对应的tab菜单
// 显示tab对应的内容区
// 显示tab对应的内容区
$
(
'.J_mainContent .J_iframe'
).
each
(
function
()
{
$
(
'.J_mainContent .J_iframe'
).
each
(
function
()
{
if
(
$
(
this
).
data
(
'id'
)
==
currentId
)
{
if
(
$
(
this
).
data
(
'id'
)
==
currentId
)
{
...
...
src/main/webapp/static/js/hplus.js
View file @
fc72457a
...
@@ -7,7 +7,6 @@ $(document).ready(function () {
...
@@ -7,7 +7,6 @@ $(document).ready(function () {
// MetsiMenu
// MetsiMenu
$
(
'#side-menu'
).
metisMenu
();
$
(
'#side-menu'
).
metisMenu
();
// 打开右侧边栏
// 打开右侧边栏
$
(
'.right-sidebar-toggle'
).
click
(
function
()
{
$
(
'.right-sidebar-toggle'
).
click
(
function
()
{
$
(
'#right-sidebar'
).
toggleClass
(
'sidebar-open'
);
$
(
'#right-sidebar'
).
toggleClass
(
'sidebar-open'
);
...
@@ -95,6 +94,12 @@ $(document).ready(function () {
...
@@ -95,6 +94,12 @@ $(document).ready(function () {
}
}
});
});
//点击菜单的时候高亮显示菜单
$
(
"a[name='tabMenuItem']"
).
click
(
function
(){
clearTabMenuItem
();
$
(
this
).
addClass
(
"tab-menu-selected"
);
});
$
(
'.nav-close'
).
click
(
NavToggle
);
$
(
'.nav-close'
).
click
(
NavToggle
);
//ios浏览器兼容性处理
//ios浏览器兼容性处理
...
@@ -111,6 +116,17 @@ $(window).bind("load resize", function () {
...
@@ -111,6 +116,17 @@ $(window).bind("load resize", function () {
}
}
});
});
function
clearTabMenuItem
(){
$
(
"a[name='tabMenuItem']"
).
each
(
function
(){
$
(
this
).
removeClass
(
"tab-menu-selected"
);
});
}
function
highLightMenuItem
(
hrefVal
){
clearTabMenuItem
();
$
(
"a[href='"
+
hrefVal
+
"']"
).
addClass
(
"tab-menu-selected"
);
}
function
NavToggle
()
{
function
NavToggle
()
{
$
(
'.navbar-minimalize'
).
trigger
(
'click'
);
$
(
'.navbar-minimalize'
).
trigger
(
'click'
);
}
}
...
...
上线发布流程.md
0 → 100644
View file @
fc72457a
# 上线发布流程
# 上线发布流程
项目如果要发布到生产环境,步骤如下:
## 修改application.yml相关配置
1.
开启验证码验证:
```
guns.kaptcha-open=true
```
2.
开启session超时验证:
```
guns.session-open=true
```
并根据需求配置这两个参数的大小:session-invalidate-time 和 session-validation-interval.
3.
服务器端口根据上线需要进行修改:
```
server.port=xxxx
```
4.
beetl文件检测要改为false:
```
beetl.resource-auto-check=false
```
5.
激活的相关的profile
```
spring.profiles.active=produce
```
6.
关闭开发者工具
```
spring.devtools.restart.enabled=false
```
## 打包
guns支持多种启动方式(详情见readme),根据启动方式下面介绍两种打包方式:
1.
打成jar包启动,执行maven命令:
```
clean package -Dmaven.test.skip=true
```
然后放到linxu中执行后台运行命令
```
nohup java -jar xxx.jar >out.txt 2>&1 &
```
2.
打成war包启动,首先修改pom中packaging改为war,然后执行1的打包命令,直接放入服务器tomcat的webapp文件夹即可
\ 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