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
c09a7648
Commit
c09a7648
authored
Jul 12, 2019
by
fengshuonan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加菜单的分类
parent
8bbd7d33
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
250 additions
and
227 deletions
+250
-227
_sqls/guns_mysql.sql
+0
-0
guns-base/src/main/java/cn/stylefeng/guns/base/pojo/node/MenuNode.java
+5
-0
guns-base/src/main/java/cn/stylefeng/guns/base/shiro/ShiroUser.java
+6
-0
guns-sys/src/main/java/cn/stylefeng/guns/sys/core/shiro/service/impl/UserAuthServiceServiceImpl.java
+10
-2
guns-sys/src/main/java/cn/stylefeng/guns/sys/modular/system/controller/DictController.java
+13
-0
guns-sys/src/main/java/cn/stylefeng/guns/sys/modular/system/controller/LoginController.java
+2
-2
guns-sys/src/main/java/cn/stylefeng/guns/sys/modular/system/entity/Menu.java
+8
-168
guns-sys/src/main/java/cn/stylefeng/guns/sys/modular/system/mapper/MenuMapper.java
+9
-0
guns-sys/src/main/java/cn/stylefeng/guns/sys/modular/system/mapper/mapping/MenuMapper.xml
+29
-18
guns-sys/src/main/java/cn/stylefeng/guns/sys/modular/system/model/MenuDto.java
+4
-0
guns-sys/src/main/java/cn/stylefeng/guns/sys/modular/system/service/DictService.java
+36
-0
guns-sys/src/main/java/cn/stylefeng/guns/sys/modular/system/service/MenuService.java
+4
-1
guns-sys/src/main/java/cn/stylefeng/guns/sys/modular/system/service/UserService.java
+29
-2
guns-sys/src/main/webapp/assets/modular/system/menu/menu_add.js
+19
-1
guns-sys/src/main/webapp/assets/modular/system/menu/menu_edit.js
+13
-0
guns-sys/src/main/webapp/pages/common/_header.html
+13
-0
guns-sys/src/main/webapp/pages/common/_sidebar.html
+38
-33
guns-sys/src/main/webapp/pages/modular/system/menu/menu_add.html
+6
-0
guns-sys/src/main/webapp/pages/modular/system/menu/menu_edit.html
+6
-0
No files found.
_sqls/guns_mysql.sql
View file @
c09a7648
This diff is collapsed.
Click to expand it.
guns-base/src/main/java/cn/stylefeng/guns/base/pojo/node/MenuNode.java
View file @
c09a7648
...
@@ -70,6 +70,11 @@ public class MenuNode implements Comparable, Serializable {
...
@@ -70,6 +70,11 @@ public class MenuNode implements Comparable, Serializable {
private
String
icon
;
private
String
icon
;
/**
/**
* 系统类型
*/
private
String
systemType
;
/**
* 子节点的集合
* 子节点的集合
*/
*/
private
List
<
MenuNode
>
children
;
private
List
<
MenuNode
>
children
;
...
...
guns-base/src/main/java/cn/stylefeng/guns/base/shiro/ShiroUser.java
View file @
c09a7648
...
@@ -19,6 +19,7 @@ import lombok.Data;
...
@@ -19,6 +19,7 @@ import lombok.Data;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
/**
/**
* 自定义Authentication对象,使得Subject除了携带用户的登录名外还可以携带更多信息
* 自定义Authentication对象,使得Subject除了携带用户的登录名外还可以携带更多信息
...
@@ -76,4 +77,9 @@ public class ShiroUser implements Serializable {
...
@@ -76,4 +77,9 @@ public class ShiroUser implements Serializable {
*/
*/
private
List
<
String
>
roleNames
;
private
List
<
String
>
roleNames
;
/**
* 系统标识集合
*/
private
List
<
Map
<
String
,
Object
>>
systemTypes
;
}
}
guns-sys/src/main/java/cn/stylefeng/guns/sys/core/shiro/service/impl/UserAuthServiceServiceImpl.java
View file @
c09a7648
...
@@ -24,7 +24,7 @@ import cn.stylefeng.guns.sys.core.shiro.service.UserAuthService;
...
@@ -24,7 +24,7 @@ import cn.stylefeng.guns.sys.core.shiro.service.UserAuthService;
import
cn.stylefeng.guns.sys.modular.system.entity.User
;
import
cn.stylefeng.guns.sys.modular.system.entity.User
;
import
cn.stylefeng.guns.sys.modular.system.mapper.MenuMapper
;
import
cn.stylefeng.guns.sys.modular.system.mapper.MenuMapper
;
import
cn.stylefeng.guns.sys.modular.system.mapper.UserMapper
;
import
cn.stylefeng.guns.sys.modular.system.mapper.UserMapper
;
import
cn.stylefeng.guns.sys.modular.system.service.
User
Service
;
import
cn.stylefeng.guns.sys.modular.system.service.
Dict
Service
;
import
cn.stylefeng.roses.core.util.SpringContextHolder
;
import
cn.stylefeng.roses.core.util.SpringContextHolder
;
import
org.apache.shiro.authc.CredentialsException
;
import
org.apache.shiro.authc.CredentialsException
;
import
org.apache.shiro.authc.LockedAccountException
;
import
org.apache.shiro.authc.LockedAccountException
;
...
@@ -38,6 +38,7 @@ import org.springframework.transaction.annotation.Transactional;
...
@@ -38,6 +38,7 @@ import org.springframework.transaction.annotation.Transactional;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
@Service
@Service
@DependsOn
(
"springContextHolder"
)
@DependsOn
(
"springContextHolder"
)
...
@@ -51,7 +52,7 @@ public class UserAuthServiceServiceImpl implements UserAuthService {
...
@@ -51,7 +52,7 @@ public class UserAuthServiceServiceImpl implements UserAuthService {
private
MenuMapper
menuMapper
;
private
MenuMapper
menuMapper
;
@Autowired
@Autowired
private
UserService
user
Service
;
private
DictService
dict
Service
;
public
static
UserAuthService
me
()
{
public
static
UserAuthService
me
()
{
return
SpringContextHolder
.
getBean
(
UserAuthService
.
class
);
return
SpringContextHolder
.
getBean
(
UserAuthService
.
class
);
...
@@ -91,6 +92,13 @@ public class UserAuthServiceServiceImpl implements UserAuthService {
...
@@ -91,6 +92,13 @@ public class UserAuthServiceServiceImpl implements UserAuthService {
shiroUser
.
setRoleList
(
roleList
);
shiroUser
.
setRoleList
(
roleList
);
shiroUser
.
setRoleNames
(
roleNameList
);
shiroUser
.
setRoleNames
(
roleNameList
);
//根据角色获取系统的类型
List
<
String
>
systemTypes
=
this
.
menuMapper
.
getMenusTypesByRoleIds
(
roleList
);
//通过字典编码
List
<
Map
<
String
,
Object
>>
dictsByCodes
=
dictService
.
getDictsByCodes
(
systemTypes
);
shiroUser
.
setSystemTypes
(
dictsByCodes
);
return
shiroUser
;
return
shiroUser
;
}
}
...
...
guns-sys/src/main/java/cn/stylefeng/guns/sys/modular/system/controller/DictController.java
View file @
c09a7648
...
@@ -185,6 +185,19 @@ public class DictController extends BaseController {
...
@@ -185,6 +185,19 @@ public class DictController extends BaseController {
}
}
/**
/**
* 获取某个字典类型下的所有字典
*
* @author stylefeng
* @Date 2019-03-13
*/
@ResponseBody
@RequestMapping
(
"/listDictsByCode"
)
public
ResponseData
listDictsByCode
(
@RequestParam
(
"dictTypeCode"
)
String
dictTypeCode
)
{
List
<
Dict
>
dicts
=
this
.
dictService
.
listDictsByCode
(
dictTypeCode
);
return
new
SuccessResponseData
(
dicts
);
}
/**
* 获取某个类型下字典树的列表,ztree格式
* 获取某个类型下字典树的列表,ztree格式
*
*
* @author fengshuonan
* @author fengshuonan
...
...
guns-sys/src/main/java/cn/stylefeng/guns/sys/modular/system/controller/LoginController.java
View file @
c09a7648
...
@@ -15,7 +15,6 @@
...
@@ -15,7 +15,6 @@
*/
*/
package
cn
.
stylefeng
.
guns
.
sys
.
modular
.
system
.
controller
;
package
cn
.
stylefeng
.
guns
.
sys
.
modular
.
system
.
controller
;
import
cn.stylefeng.guns.base.pojo.node.MenuNode
;
import
cn.stylefeng.guns.base.shiro.ShiroUser
;
import
cn.stylefeng.guns.base.shiro.ShiroUser
;
import
cn.stylefeng.guns.sys.core.exception.InvalidKaptchaException
;
import
cn.stylefeng.guns.sys.core.exception.InvalidKaptchaException
;
import
cn.stylefeng.guns.sys.core.log.LogManager
;
import
cn.stylefeng.guns.sys.core.log.LogManager
;
...
@@ -35,6 +34,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
...
@@ -35,6 +34,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
static
cn
.
stylefeng
.
roses
.
core
.
util
.
HttpContext
.
getIp
;
import
static
cn
.
stylefeng
.
roses
.
core
.
util
.
HttpContext
.
getIp
;
...
@@ -69,7 +69,7 @@ public class LoginController extends BaseController {
...
@@ -69,7 +69,7 @@ public class LoginController extends BaseController {
return
"/login.html"
;
return
"/login.html"
;
}
}
List
<
M
enuNode
>
menus
=
userService
.
getUserMenuNodes
(
roleList
);
List
<
M
ap
<
String
,
Object
>
>
menus
=
userService
.
getUserMenuNodes
(
roleList
);
model
.
addAttribute
(
"menus"
,
menus
);
model
.
addAttribute
(
"menus"
,
menus
);
return
"/index.html"
;
return
"/index.html"
;
...
...
guns-sys/src/main/java/cn/stylefeng/guns/sys/modular/system/entity/Menu.java
View file @
c09a7648
package
cn
.
stylefeng
.
guns
.
sys
.
modular
.
system
.
entity
;
package
cn
.
stylefeng
.
guns
.
sys
.
modular
.
system
.
entity
;
import
com.baomidou.mybatisplus.annotation.*
;
import
com.baomidou.mybatisplus.annotation.*
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.util.Date
;
import
java.util.Date
;
...
@@ -14,6 +15,7 @@ import java.util.Date;
...
@@ -14,6 +15,7 @@ import java.util.Date;
* @since 2019-04-01
* @since 2019-04-01
*/
*/
@TableName
(
"sys_menu"
)
@TableName
(
"sys_menu"
)
@Data
public
class
Menu
implements
Serializable
{
public
class
Menu
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
...
@@ -103,6 +105,12 @@ public class Menu implements Serializable {
...
@@ -103,6 +105,12 @@ public class Menu implements Serializable {
private
String
openFlag
;
private
String
openFlag
;
/**
/**
* 系统分类(字典)
*/
@TableField
(
"system_type"
)
private
String
systemType
;
/**
* 创建时间
* 创建时间
*/
*/
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
@TableField
(
value
=
"create_time"
,
fill
=
FieldFill
.
INSERT
)
...
@@ -126,172 +134,4 @@ public class Menu implements Serializable {
...
@@ -126,172 +134,4 @@ public class Menu implements Serializable {
@TableField
(
value
=
"update_user"
,
fill
=
FieldFill
.
UPDATE
)
@TableField
(
value
=
"update_user"
,
fill
=
FieldFill
.
UPDATE
)
private
Long
updateUser
;
private
Long
updateUser
;
public
Long
getMenuId
()
{
return
menuId
;
}
public
void
setMenuId
(
Long
menuId
)
{
this
.
menuId
=
menuId
;
}
public
String
getCode
()
{
return
code
;
}
public
void
setCode
(
String
code
)
{
this
.
code
=
code
;
}
public
String
getPcode
()
{
return
pcode
;
}
public
void
setPcode
(
String
pcode
)
{
this
.
pcode
=
pcode
;
}
public
String
getPcodes
()
{
return
pcodes
;
}
public
void
setPcodes
(
String
pcodes
)
{
this
.
pcodes
=
pcodes
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getIcon
()
{
return
icon
;
}
public
void
setIcon
(
String
icon
)
{
this
.
icon
=
icon
;
}
public
String
getUrl
()
{
return
url
;
}
public
void
setUrl
(
String
url
)
{
this
.
url
=
url
;
}
public
Integer
getSort
()
{
return
sort
;
}
public
void
setSort
(
Integer
sort
)
{
this
.
sort
=
sort
;
}
public
Integer
getLevels
()
{
return
levels
;
}
public
void
setLevels
(
Integer
levels
)
{
this
.
levels
=
levels
;
}
public
String
getMenuFlag
()
{
return
menuFlag
;
}
public
void
setMenuFlag
(
String
menuFlag
)
{
this
.
menuFlag
=
menuFlag
;
}
public
String
getDescription
()
{
return
description
;
}
public
void
setDescription
(
String
description
)
{
this
.
description
=
description
;
}
public
String
getStatus
()
{
return
status
;
}
public
void
setStatus
(
String
status
)
{
this
.
status
=
status
;
}
public
String
getNewPageFlag
()
{
return
newPageFlag
;
}
public
void
setNewPageFlag
(
String
newPageFlag
)
{
this
.
newPageFlag
=
newPageFlag
;
}
public
String
getOpenFlag
()
{
return
openFlag
;
}
public
void
setOpenFlag
(
String
openFlag
)
{
this
.
openFlag
=
openFlag
;
}
public
Date
getCreateTime
()
{
return
createTime
;
}
public
void
setCreateTime
(
Date
createTime
)
{
this
.
createTime
=
createTime
;
}
public
Date
getUpdateTime
()
{
return
updateTime
;
}
public
void
setUpdateTime
(
Date
updateTime
)
{
this
.
updateTime
=
updateTime
;
}
public
Long
getCreateUser
()
{
return
createUser
;
}
public
void
setCreateUser
(
Long
createUser
)
{
this
.
createUser
=
createUser
;
}
public
Long
getUpdateUser
()
{
return
updateUser
;
}
public
void
setUpdateUser
(
Long
updateUser
)
{
this
.
updateUser
=
updateUser
;
}
@Override
public
String
toString
()
{
return
"Menu{"
+
"menuId="
+
menuId
+
", code="
+
code
+
", pcode="
+
pcode
+
", pcodes="
+
pcodes
+
", name="
+
name
+
", icon="
+
icon
+
", url="
+
url
+
", sort="
+
sort
+
", levels="
+
levels
+
", menuFlag="
+
menuFlag
+
", description="
+
description
+
", status="
+
status
+
", newPageFlag="
+
newPageFlag
+
", openFlag="
+
openFlag
+
", createTime="
+
createTime
+
", updateTime="
+
updateTime
+
", createUser="
+
createUser
+
", updateUser="
+
updateUser
+
"}"
;
}
}
}
guns-sys/src/main/java/cn/stylefeng/guns/sys/modular/system/mapper/MenuMapper.java
View file @
c09a7648
...
@@ -80,6 +80,15 @@ public interface MenuMapper extends BaseMapper<Menu> {
...
@@ -80,6 +80,15 @@ public interface MenuMapper extends BaseMapper<Menu> {
List
<
MenuNode
>
getMenusByRoleIds
(
List
<
Long
>
roleIds
);
List
<
MenuNode
>
getMenusByRoleIds
(
List
<
Long
>
roleIds
);
/**
/**
* 根据角色获取菜单的类型列表
*
* @param roleIds
* @return
* @date 2019年07月11日16:26:27
*/
List
<
String
>
getMenusTypesByRoleIds
(
List
<
Long
>
roleIds
);
/**
* 查询菜单树形列表
* 查询菜单树形列表
*
*
* @author fengshuonan
* @author fengshuonan
...
...
guns-sys/src/main/java/cn/stylefeng/guns/sys/modular/system/mapper/mapping/MenuMapper.xml
View file @
c09a7648
...
@@ -4,24 +4,24 @@
...
@@ -4,24 +4,24 @@
<!-- 通用查询映射结果 -->
<!-- 通用查询映射结果 -->
<resultMap
id=
"BaseResultMap"
type=
"cn.stylefeng.guns.sys.modular.system.entity.Menu"
>
<resultMap
id=
"BaseResultMap"
type=
"cn.stylefeng.guns.sys.modular.system.entity.Menu"
>
<id
column=
"menu_id"
property=
"menuId"
/>
<id
column=
"menu_id"
property=
"menuId"
/>
<result
column=
"code"
property=
"code"
/>
<result
column=
"code"
property=
"code"
/>
<result
column=
"pcode"
property=
"pcode"
/>
<result
column=
"pcode"
property=
"pcode"
/>
<result
column=
"pcodes"
property=
"pcodes"
/>
<result
column=
"pcodes"
property=
"pcodes"
/>
<result
column=
"name"
property=
"name"
/>
<result
column=
"name"
property=
"name"
/>
<result
column=
"icon"
property=
"icon"
/>
<result
column=
"icon"
property=
"icon"
/>
<result
column=
"url"
property=
"url"
/>
<result
column=
"url"
property=
"url"
/>
<result
column=
"sort"
property=
"sort"
/>
<result
column=
"sort"
property=
"sort"
/>
<result
column=
"levels"
property=
"levels"
/>
<result
column=
"levels"
property=
"levels"
/>
<result
column=
"menu_flag"
property=
"menuFlag"
/>
<result
column=
"menu_flag"
property=
"menuFlag"
/>
<result
column=
"description"
property=
"description"
/>
<result
column=
"description"
property=
"description"
/>
<result
column=
"status"
property=
"status"
/>
<result
column=
"status"
property=
"status"
/>
<result
column=
"new_page_flag"
property=
"newPageFlag"
/>
<result
column=
"new_page_flag"
property=
"newPageFlag"
/>
<result
column=
"open_flag"
property=
"openFlag"
/>
<result
column=
"open_flag"
property=
"openFlag"
/>
<result
column=
"create_time"
property=
"createTime"
/>
<result
column=
"create_time"
property=
"createTime"
/>
<result
column=
"update_time"
property=
"updateTime"
/>
<result
column=
"update_time"
property=
"updateTime"
/>
<result
column=
"create_user"
property=
"createUser"
/>
<result
column=
"create_user"
property=
"createUser"
/>
<result
column=
"update_user"
property=
"updateUser"
/>
<result
column=
"update_user"
property=
"updateUser"
/>
</resultMap>
</resultMap>
<!-- 通用查询结果列 -->
<!-- 通用查询结果列 -->
...
@@ -251,6 +251,7 @@
...
@@ -251,6 +251,7 @@
m1.url as url,
m1.url as url,
m1.levels as levels,
m1.levels as levels,
m1.menu_flag as ismenu,
m1.menu_flag as ismenu,
m1.system_type as systemType,
m1.sort as num
m1.sort as num
FROM
FROM
sys_menu m1
sys_menu m1
...
@@ -321,4 +322,14 @@
...
@@ -321,4 +322,14 @@
</if>
</if>
</select>
</select>
<select
id=
"getMenusTypesByRoleIds"
resultType=
"java.lang.String"
>
select DISTINCT system_type from
sys_relation rel
inner join sys_menu m on rel.menu_id = m.menu_id
where rel.role_id in
<foreach
collection=
"list"
index=
"index"
item=
"i"
open=
"("
separator=
","
close=
")"
>
#{i}
</foreach>
</select>
</mapper>
</mapper>
guns-sys/src/main/java/cn/stylefeng/guns/sys/modular/system/model/MenuDto.java
View file @
c09a7648
...
@@ -65,5 +65,9 @@ public class MenuDto implements Serializable {
...
@@ -65,5 +65,9 @@ public class MenuDto implements Serializable {
* 备注
* 备注
*/
*/
private
String
description
;
private
String
description
;
/**
* 系统分类(字典)
*/
private
String
systemType
;
}
}
guns-sys/src/main/java/cn/stylefeng/guns/sys/modular/system/service/DictService.java
View file @
c09a7648
...
@@ -6,6 +6,7 @@ import cn.stylefeng.guns.base.pojo.page.LayuiPageFactory;
...
@@ -6,6 +6,7 @@ import cn.stylefeng.guns.base.pojo.page.LayuiPageFactory;
import
cn.stylefeng.guns.base.pojo.page.LayuiPageInfo
;
import
cn.stylefeng.guns.base.pojo.page.LayuiPageInfo
;
import
cn.stylefeng.guns.sys.core.exception.enums.BizExceptionEnum
;
import
cn.stylefeng.guns.sys.core.exception.enums.BizExceptionEnum
;
import
cn.stylefeng.guns.sys.modular.system.entity.Dict
;
import
cn.stylefeng.guns.sys.modular.system.entity.Dict
;
import
cn.stylefeng.guns.sys.modular.system.entity.DictType
;
import
cn.stylefeng.guns.sys.modular.system.mapper.DictMapper
;
import
cn.stylefeng.guns.sys.modular.system.mapper.DictMapper
;
import
cn.stylefeng.guns.sys.modular.system.model.params.DictParam
;
import
cn.stylefeng.guns.sys.modular.system.model.params.DictParam
;
import
cn.stylefeng.guns.sys.modular.system.model.result.DictResult
;
import
cn.stylefeng.guns.sys.modular.system.model.result.DictResult
;
...
@@ -15,11 +16,13 @@ import cn.stylefeng.roses.kernel.model.exception.ServiceException;
...
@@ -15,11 +16,13 @@ import cn.stylefeng.roses.kernel.model.exception.ServiceException;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
/**
/**
* <p>
* <p>
...
@@ -32,6 +35,9 @@ import java.util.List;
...
@@ -32,6 +35,9 @@ import java.util.List;
@Service
@Service
public
class
DictService
extends
ServiceImpl
<
DictMapper
,
Dict
>
{
public
class
DictService
extends
ServiceImpl
<
DictMapper
,
Dict
>
{
@Autowired
private
DictTypeService
dictTypeService
;
/**
/**
* 新增
* 新增
*
*
...
@@ -247,6 +253,35 @@ public class DictService extends ServiceImpl<DictMapper, Dict> {
...
@@ -247,6 +253,35 @@ public class DictService extends ServiceImpl<DictMapper, Dict> {
}
}
/**
* 查询字典列表,通过字典类型code
*
* @author fengshuonan
* @Date 2019-06-20 15:14
*/
public
List
<
Dict
>
listDictsByCode
(
String
dictTypeCode
)
{
QueryWrapper
<
DictType
>
wrapper
=
new
QueryWrapper
<>();
wrapper
.
eq
(
"code"
,
dictTypeCode
);
DictType
one
=
this
.
dictTypeService
.
getOne
(
wrapper
);
return
listDicts
(
one
.
getDictTypeId
());
}
/**
* 查询字典列表,通过字典类型code
*
* @author fengshuonan
* @Date 2019-06-20 15:14
*/
public
List
<
Map
<
String
,
Object
>>
getDictsByCodes
(
List
<
String
>
dictCodes
)
{
QueryWrapper
<
Dict
>
wrapper
=
new
QueryWrapper
<>();
wrapper
.
in
(
"code"
,
dictCodes
).
orderByAsc
(
"sort"
);
return
this
.
listMaps
(
wrapper
);
}
private
Serializable
getKey
(
DictParam
param
)
{
private
Serializable
getKey
(
DictParam
param
)
{
return
param
.
getDictId
();
return
param
.
getDictId
();
}
}
...
@@ -294,4 +329,5 @@ public class DictService extends ServiceImpl<DictMapper, Dict> {
...
@@ -294,4 +329,5 @@ public class DictService extends ServiceImpl<DictMapper, Dict> {
}
}
}
}
}
}
}
}
guns-sys/src/main/java/cn/stylefeng/guns/sys/modular/system/service/MenuService.java
View file @
c09a7648
...
@@ -49,7 +49,7 @@ public class MenuService extends ServiceImpl<MenuMapper, Menu> {
...
@@ -49,7 +49,7 @@ public class MenuService extends ServiceImpl<MenuMapper, Menu> {
@Transactional
@Transactional
public
void
addMenu
(
MenuDto
menuDto
)
{
public
void
addMenu
(
MenuDto
menuDto
)
{
if
(
ToolUtil
.
isOneEmpty
(
menuDto
,
menuDto
.
getCode
(),
menuDto
.
getName
(),
menuDto
.
getPid
(),
menuDto
.
getMenuFlag
(),
menuDto
.
getUrl
()))
{
if
(
ToolUtil
.
isOneEmpty
(
menuDto
,
menuDto
.
getCode
(),
menuDto
.
getName
(),
menuDto
.
getPid
(),
menuDto
.
getMenuFlag
(),
menuDto
.
getUrl
()
,
menuDto
.
getSystemType
()
))
{
throw
new
RequestEmptyException
();
throw
new
RequestEmptyException
();
}
}
...
@@ -128,6 +128,9 @@ public class MenuService extends ServiceImpl<MenuMapper, Menu> {
...
@@ -128,6 +128,9 @@ public class MenuService extends ServiceImpl<MenuMapper, Menu> {
int
level
=
StrUtil
.
count
(
menuPcodes
,
"["
);
int
level
=
StrUtil
.
count
(
menuPcodes
,
"["
);
menu
.
setLevels
(
level
);
menu
.
setLevels
(
level
);
//更新systemType
menu
.
setSystemType
(
newMenu
.
getSystemType
());
this
.
updateById
(
menu
);
this
.
updateById
(
menu
);
}
}
...
...
guns-sys/src/main/java/cn/stylefeng/guns/sys/modular/system/service/UserService.java
View file @
c09a7648
...
@@ -198,12 +198,39 @@ public class UserService extends ServiceImpl<UserMapper, User> {
...
@@ -198,12 +198,39 @@ public class UserService extends ServiceImpl<UserMapper, User> {
* @author fengshuonan
* @author fengshuonan
* @Date 2018/12/24 22:46
* @Date 2018/12/24 22:46
*/
*/
public
List
<
M
enuNode
>
getUserMenuNodes
(
List
<
Long
>
roleList
)
{
public
List
<
M
ap
<
String
,
Object
>
>
getUserMenuNodes
(
List
<
Long
>
roleList
)
{
if
(
roleList
==
null
||
roleList
.
size
()
==
0
)
{
if
(
roleList
==
null
||
roleList
.
size
()
==
0
)
{
return
new
ArrayList
<>();
return
new
ArrayList
<>();
}
else
{
}
else
{
List
<
MenuNode
>
menus
=
menuService
.
getMenusByRoleIds
(
roleList
);
List
<
MenuNode
>
menus
=
menuService
.
getMenusByRoleIds
(
roleList
);
return
MenuNode
.
buildTitle
(
menus
);
//定义不同系统分类的菜单集合
ArrayList
<
Map
<
String
,
Object
>>
lists
=
new
ArrayList
<>();
//根据当前用户包含的系统类型,分类出不同的菜单
List
<
Map
<
String
,
Object
>>
systemTypes
=
ShiroKit
.
getUserNotNull
().
getSystemTypes
();
for
(
Map
<
String
,
Object
>
systemType
:
systemTypes
)
{
//当前遍历系统分类code
String
systemCode
=
(
String
)
systemType
.
get
(
"code"
);
//获取当前系统分类下菜单集合
ArrayList
<
MenuNode
>
originSystemTypeMenus
=
new
ArrayList
<>();
for
(
MenuNode
menu
:
menus
)
{
if
(
menu
.
getSystemType
().
equals
(
systemCode
))
{
originSystemTypeMenus
.
add
(
menu
);
}
}
//拼接存放key为系统分类编码,value为该分类下菜单集合的map
HashMap
<
String
,
Object
>
map
=
new
HashMap
<>();
List
<
MenuNode
>
treeSystemTypeMenus
=
MenuNode
.
buildTitle
(
originSystemTypeMenus
);
map
.
put
(
"systemType"
,
systemCode
);
map
.
put
(
"menus"
,
treeSystemTypeMenus
);
lists
.
add
(
map
);
}
return
lists
;
}
}
}
}
...
...
guns-sys/src/main/webapp/assets/modular/system/menu/menu_add.js
View file @
c09a7648
...
@@ -64,10 +64,27 @@ layui.use(['layer', 'form', 'admin', 'laydate', 'ax', 'iconPicker'], function ()
...
@@ -64,10 +64,27 @@ layui.use(['layer', 'form', 'admin', 'laydate', 'ax', 'iconPicker'], function ()
type
:
'fontClass'
,
type
:
'fontClass'
,
search
:
true
,
search
:
true
,
page
:
true
,
page
:
true
,
limit
:
48
,
limit
:
12
,
click
:
function
(
data
)
{
click
:
function
(
data
)
{
}
}
});
});
iconPicker
.
checkIcon
(
'iconPicker'
,
'layui-icon-star-fill'
);
iconPicker
.
checkIcon
(
'iconPicker'
,
'layui-icon-star-fill'
);
//初始化字典详细列表
$
(
"#dictDetails"
).
html
(
''
);
var
ajax
=
new
$ax
(
Feng
.
ctxPath
+
"/dict/listDictsByCode"
,
function
(
data
)
{
for
(
var
i
=
0
;
i
<
data
.
data
.
length
;
i
++
)
{
var
name
=
data
.
data
[
i
].
name
;
var
code
=
data
.
data
[
i
].
code
;
$
(
"#dictDetails"
).
append
(
'<input type="radio" name="systemType" value="'
+
code
+
'" title="'
+
name
+
'">'
);
}
form
.
render
();
},
function
(
data
)
{
});
ajax
.
set
(
"dictTypeCode"
,
"SYSTEM_TYPE"
);
ajax
.
start
();
});
});
\ No newline at end of file
guns-sys/src/main/webapp/assets/modular/system/menu/menu_edit.js
View file @
c09a7648
...
@@ -17,6 +17,19 @@ layui.use(['layer', 'form', 'admin', 'laydate', 'ax', 'iconPicker'], function ()
...
@@ -17,6 +17,19 @@ layui.use(['layer', 'form', 'admin', 'laydate', 'ax', 'iconPicker'], function ()
var
layer
=
layui
.
layer
;
var
layer
=
layui
.
layer
;
var
iconPicker
=
layui
.
iconPicker
;
var
iconPicker
=
layui
.
iconPicker
;
//初始化字典详细列表
$
(
"#dictDetails"
).
html
(
''
);
var
ajax
=
new
$ax
(
Feng
.
ctxPath
+
"/dict/listDictsByCode"
,
function
(
data
)
{
for
(
var
i
=
0
;
i
<
data
.
data
.
length
;
i
++
)
{
var
name
=
data
.
data
[
i
].
name
;
var
code
=
data
.
data
[
i
].
code
;
$
(
"#dictDetails"
).
append
(
'<input type="radio" name="systemType" value="'
+
code
+
'" title="'
+
name
+
'">'
);
}
},
function
(
data
)
{
});
ajax
.
set
(
"dictTypeCode"
,
"SYSTEM_TYPE"
);
ajax
.
start
();
//获取菜单信息
//获取菜单信息
var
ajax
=
new
$ax
(
Feng
.
ctxPath
+
"/menu/getMenuInfo?menuId="
+
Feng
.
getUrlParam
(
"menuId"
));
var
ajax
=
new
$ax
(
Feng
.
ctxPath
+
"/menu/getMenuInfo?menuId="
+
Feng
.
getUrlParam
(
"menuId"
));
var
result
=
ajax
.
start
();
var
result
=
ajax
.
start
();
...
...
guns-sys/src/main/webapp/pages/common/_header.html
View file @
c09a7648
...
@@ -12,6 +12,18 @@
...
@@ -12,6 +12,18 @@
<li
class=
"layui-nav-item"
lay-unselect
>
<li
class=
"layui-nav-item"
lay-unselect
>
<a
ew-event=
"refresh"
title=
"刷新"
><i
class=
"layui-icon layui-icon-refresh-3"
></i></a>
<a
ew-event=
"refresh"
title=
"刷新"
><i
class=
"layui-icon layui-icon-refresh-3"
></i></a>
</li>
</li>
@var types = shiro.getUser().systemTypes;
@if(tool.isNotEmpty(types)){
@for(type in types) {
@if(typeLP.index == 1){
<li
class=
"layui-nav-item layui-hide-xs layui-this"
lay-unselect
><a
nav-bind=
"${type.code}"
>
${type.name}
</a></li>
@}else{
<li
class=
"layui-nav-item layui-hide-xs"
lay-unselect
><a
nav-bind=
"${type.code}"
>
${type.name}
</a></li>
@}
@}
@}
@if(constants.getDefaultAdvert()){
@if(constants.getDefaultAdvert()){
<li
class=
"layui-nav-item"
lay-unselect
>
<li
class=
"layui-nav-item"
lay-unselect
>
<a
href=
"https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=p4kqz45e"
target=
"_blank"
>
阿里云5折优惠券,点我领取
</a>
<a
href=
"https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=p4kqz45e"
target=
"_blank"
>
阿里云5折优惠券,点我领取
</a>
...
@@ -23,6 +35,7 @@
...
@@ -23,6 +35,7 @@
<a
style=
"color: #fe7300;"
href=
"https://gitee.com/stylefeng/guns"
target=
"_blank"
>
请star支持一下Guns
</a>
<a
style=
"color: #fe7300;"
href=
"https://gitee.com/stylefeng/guns"
target=
"_blank"
>
请star支持一下Guns
</a>
</li>
</li>
@}
@}
</ul>
</ul>
<ul
class=
"layui-nav layui-layout-right"
>
<ul
class=
"layui-nav layui-layout-right"
>
<li
class=
"layui-nav-item"
lay-unselect
>
<li
class=
"layui-nav-item"
lay-unselect
>
...
...
guns-sys/src/main/webapp/pages/common/_sidebar.html
View file @
c09a7648
@/* 侧边栏 */
@/* 侧边栏 */
<div
class=
"layui-side"
>
<div
class=
"layui-side"
>
<div
class=
"layui-side-scroll"
>
<div
class=
"layui-side-scroll"
>
<ul
class=
"layui-nav layui-nav-tree"
lay-filter=
"admin-side-nav"
style=
"margin-top: 15px;"
>
@for(menu in menus) {
@for(item in menus){
@if(tool.isEmpty(menu.children)){
<ul
class=
"layui-nav layui-nav-tree"
nav-id=
"${item.systemType}"
lay-filter=
"admin-side-nav"
style=
"margin-top: 15px;"
>
<li
class=
"layui-nav-item"
>
@for(menu in item.menus) {
<a
lay-href=
"${menu.url}"
><i
class=
"layui-icon ${menu.icon}"
></i>
 
<cite>
${menu.name}
</cite></a>
@if(tool.isEmpty(menu.children)){
</li>
<li
class=
"layui-nav-item"
>
@}else{
<a
lay-href=
"${menu.url}"
><i
class=
"layui-icon ${menu.icon}"
></i>
 
<cite>
${menu.name}
</cite></a>
<li
class=
"layui-nav-item"
>
</li>
<a><i
class=
"layui-icon ${menu.icon}"
></i>
 
<cite>
${menu.name}
</cite></a>
@}else{
<dl
class=
"layui-nav-child"
>
<li
class=
"layui-nav-item"
>
@for(subMenu in menu.children){
<a><i
class=
"layui-icon ${menu.icon}"
></i>
 
<cite>
${menu.name}
</cite></a>
@if(tool.isEmpty(subMenu.children)){
<dl
class=
"layui-nav-child"
>
<dd><a
lay-href=
"${subMenu.url}"
>
${subMenu.name}
</a></dd>
@for(subMenu in menu.children){
@}else{
@if(tool.isEmpty(subMenu.children)){
<dd>
<dd><a
lay-href=
"${subMenu.url}"
>
${subMenu.name}
</a></dd>
<a>
${subMenu.name}
</a>
@}else{
<dl
class=
"layui-nav-child"
>
<dd>
@for(subSubMenu in subMenu.children){
<a>
${subMenu.name}
</a>
@if(tool.isEmpty(subSubMenu.children)){
<dl
class=
"layui-nav-child"
>
<dd><a
lay-href=
"${subSubMenu.url}"
>
${subSubMenu.name}
</a></dd>
@for(subSubMenu in subMenu.children){
@}else{
@if(tool.isEmpty(subSubMenu.children)){
<dd>
<dd><a
lay-href=
"${subSubMenu.url}"
>
${subSubMenu.name}
</a></dd>
<a>
${subSubMenu.name}
</a>
@}else{
<dl
class=
"layui-nav-child"
>
<dd>
@for(subSubSubMenu in subSubMenu.children){
<a>
${subSubMenu.name}
</a>
<dd><a
lay-href=
"${subSubSubMenu.url}"
>
${subSubSubMenu.name}
</a></dd>
<dl
class=
"layui-nav-child"
>
@for(subSubSubMenu in subSubMenu.children){
<dd><a
lay-href=
"${subSubSubMenu.url}"
>
${subSubSubMenu.name}
</a></dd>
@}
</dl>
</dd>
@}
@}
</dl>
</dd>
@}
@}
</dl>
</dd>
@}
@}
</dl>
</dd>
@}
@}
</dl>
</li>
@}
@}
</dl>
</li>
@}
@}
</ul>
@}
@}
</ul>
</div>
</div>
</div>
</div>
\ No newline at end of file
guns-sys/src/main/webapp/pages/modular/system/menu/menu_add.html
View file @
c09a7648
...
@@ -41,6 +41,12 @@
...
@@ -41,6 +41,12 @@
</div>
</div>
</div>
</div>
<div
class=
"layui-form-item"
>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
系统分类
<span
style=
"color: red;"
>
*
</span></label>
<div
class=
"layui-input-block"
id=
"dictDetails"
>
<input
type=
"radio"
name=
"systemType"
value=
""
title=
"无"
disabled=
"disabled"
>
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
排序
</label>
<label
class=
"layui-form-label"
>
排序
</label>
<div
class=
"layui-input-block"
>
<div
class=
"layui-input-block"
>
<input
name=
"sort"
placeholder=
"请输入排序"
type=
"text"
class=
"layui-input"
/>
<input
name=
"sort"
placeholder=
"请输入排序"
type=
"text"
class=
"layui-input"
/>
...
...
guns-sys/src/main/webapp/pages/modular/system/menu/menu_edit.html
View file @
c09a7648
...
@@ -41,6 +41,12 @@
...
@@ -41,6 +41,12 @@
</div>
</div>
</div>
</div>
<div
class=
"layui-form-item"
>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
系统分类
<span
style=
"color: red;"
>
*
</span></label>
<div
class=
"layui-input-block"
id=
"dictDetails"
>
<input
type=
"radio"
name=
"systemType"
value=
""
title=
"无"
disabled=
"disabled"
>
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
排序
</label>
<label
class=
"layui-form-label"
>
排序
</label>
<div
class=
"layui-input-block"
>
<div
class=
"layui-input-block"
>
<input
name=
"sort"
placeholder=
"请输入排序"
type=
"text"
class=
"layui-input"
/>
<input
name=
"sort"
placeholder=
"请输入排序"
type=
"text"
class=
"layui-input"
/>
...
...
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