Skip to content

Commit dd6df6f

Browse files
author
foreyer
committed
菜单、日志、监控各个模块开发
1 parent 2f8adb0 commit dd6df6f

File tree

9 files changed

+392
-4
lines changed

9 files changed

+392
-4
lines changed

pom.xml

+7
Original file line numberDiff line numberDiff line change
@@ -620,6 +620,13 @@
620620
<artifactId>disconf-client</artifactId>
621621
<version>${disconf.version}</version>
622622
</dependency>
623+
624+
<!-- javamelody-core 监控 -->
625+
<dependency>
626+
<groupId>net.bull.javamelody</groupId>
627+
<artifactId>javamelody-core</artifactId>
628+
<version>1.69.0</version>
629+
</dependency>
623630

624631
</dependencies>
625632
</dependencyManagement>

vacomall-common-web/pom.xml

+5-2
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,11 @@
8888
<groupId>com.baidu.disconf</groupId>
8989
<artifactId>disconf-client</artifactId>
9090
</dependency>
91-
92-
91+
<!-- 监控 -->
92+
<dependency>
93+
<groupId>net.bull.javamelody</groupId>
94+
<artifactId>javamelody-core</artifactId>
95+
</dependency>
9396
</dependencies>
9497

9598
</project>

vacomall-web-admin/pom.xml

-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
<groupId>com.vacomall</groupId>
2323
<artifactId>vacomall-facade-system</artifactId>
2424
</dependency>
25-
2625
</dependencies>
2726
<build>
2827
<finalName>vacomall-web-admin</finalName>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
package com.vacomall.controller;
2+
3+
import java.util.Arrays;
4+
import java.util.List;
5+
import java.util.Map;
6+
7+
import org.apache.commons.lang.ArrayUtils;
8+
import org.apache.commons.lang.StringUtils;
9+
import org.apache.shiro.SecurityUtils;
10+
import org.apache.shiro.authz.annotation.RequiresPermissions;
11+
import org.apache.shiro.subject.Subject;
12+
import org.springframework.beans.factory.annotation.Autowired;
13+
import org.springframework.stereotype.Controller;
14+
import org.springframework.ui.Model;
15+
import org.springframework.web.bind.annotation.RequestMapping;
16+
import org.springframework.web.bind.annotation.RequestParam;
17+
import org.springframework.web.bind.annotation.ResponseBody;
18+
19+
import com.baomidou.mybatisplus.mapper.EntityWrapper;
20+
import com.baomidou.mybatisplus.plugins.Page;
21+
import com.vacomall.bean.Rest;
22+
import com.vacomall.system.i.ISysMenuService;
23+
import com.vacomall.system.model.SysMenu;
24+
import com.vacomall.system.model.SysUser;
25+
26+
/**
27+
* 用户控制器
28+
* @author jameszhou
29+
*
30+
*/
31+
@Controller
32+
@RequestMapping("/menu")
33+
public class MenuController extends AdminController{
34+
35+
@Autowired private ISysMenuService sysMenuService;
36+
37+
/**
38+
* 列表页视图
39+
* @return
40+
*/
41+
@RequestMapping("/list")
42+
public String list(){
43+
return "menu/menu-list";
44+
}
45+
46+
/**
47+
* 列表页数据
48+
* @param page
49+
* @param size
50+
* @param search
51+
* @param model
52+
* @return
53+
*/
54+
@RequiresPermissions("menu:list")
55+
@ResponseBody
56+
@RequestMapping("/json")
57+
public Rest json (
58+
@RequestParam(value="page",defaultValue="1") Integer page,
59+
@RequestParam(value="limit",defaultValue="10") Integer size,
60+
@RequestParam(value="key[search]",required=false) String search,
61+
Model model) {
62+
63+
EntityWrapper<SysMenu> ew = new EntityWrapper<SysMenu>();
64+
ew.orderBy("code");
65+
if(StringUtils.isNotBlank(search)){
66+
ew.like("text", search);
67+
}
68+
Page<SysMenu> pageData = sysMenuService.selectPage(new Page<SysMenu>(page, size),ew);
69+
for(SysMenu menu : pageData.getRecords()){
70+
menu.setText(StringUtils.repeat("&nbsp;&nbsp;",menu.getCode().length()-2)+"┠"+menu.getText());
71+
}
72+
return Rest.okCountData(pageData.getTotal(),pageData.getRecords());
73+
}
74+
75+
/**
76+
* 新增菜单视图
77+
* @param sysMenu
78+
* @return
79+
*/
80+
@RequiresPermissions("menu:add")
81+
@RequestMapping("/add")
82+
public String add(Model model){
83+
List<SysMenu> list = sysMenuService.selectList(new EntityWrapper<SysMenu>().le("deep",2).orderBy("code"));
84+
for(SysMenu menu : list){
85+
menu.setText(StringUtils.repeat("&nbsp;&nbsp;",menu.getCode().length()-2)+"┠"+menu.getText());
86+
}
87+
model.addAttribute("menuList",list);
88+
return "menu/menu-add";
89+
}
90+
91+
/**
92+
* 执行新增菜单
93+
* @param sysMenu
94+
* @return
95+
*/
96+
@RequiresPermissions("menu:add")
97+
@ResponseBody
98+
@RequestMapping("/doAdd")
99+
public Rest doAdd(SysMenu sysMenu){
100+
sysMenuService.insert(sysMenu);
101+
return Rest.ok();
102+
}
103+
104+
/**
105+
* 编辑菜单视图
106+
* @param id
107+
* @param model
108+
* @return
109+
*/
110+
@RequiresPermissions("menu:edit")
111+
@RequestMapping("/edit")
112+
public String edit(String id,Model model){
113+
model.addAttribute("sysMenu", sysMenuService.selectById(id));
114+
return "menu/menu-edit";
115+
}
116+
117+
/**
118+
* 执行菜单编辑
119+
* @param id
120+
* @param model
121+
* @return
122+
*/
123+
@ResponseBody
124+
@RequiresPermissions("menu:edit")
125+
@RequestMapping("/doEdit")
126+
public Rest doEdit(SysMenu sysMenu){
127+
sysMenuService.updateById(sysMenu);
128+
return Rest.ok();
129+
}
130+
131+
/**
132+
* 删除
133+
* @param id
134+
* @return
135+
*/
136+
@ResponseBody
137+
@RequiresPermissions("menu:delete")
138+
@RequestMapping("/delete")
139+
public Rest delete(@RequestParam("ids[]") String[] ids){
140+
if(ArrayUtils.isEmpty(ids)){
141+
return Rest.failure("客户端传入对象id为空");
142+
}
143+
sysMenuService.deleteBatchIds(Arrays.asList(ids));
144+
return Rest.ok();
145+
}
146+
147+
/**
148+
* 加载当前用户的菜单
149+
* @return
150+
*/
151+
@RequestMapping("/leftmenus")
152+
public Rest leftmenus(){
153+
Subject subject = SecurityUtils.getSubject();
154+
if(subject != null){
155+
SysUser sysUser = (SysUser) subject.getPrincipal();
156+
List<Map<String, Object>> list = sysMenuService.selectMenuByUid(sysUser.getId(),"0");
157+
return Rest.okCountData(list.size(), list);
158+
}else{
159+
return Rest.failure("会话过期");
160+
}
161+
}
162+
163+
/**
164+
* 获取全部菜单数据
165+
* @return
166+
*/
167+
@RequestMapping("/treelist")
168+
public List<Map<String, Object>> treelist(){
169+
List<Map<String, Object>> list = sysMenuService.selectMenuByPid("0");
170+
return list;
171+
}
172+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
<#include "/common/layout.html"/>
2+
<@head>
3+
</@head>
4+
<@body>
5+
<div class="x-body">
6+
<form class="layui-form layui-form-pane" action="/menu/doAdd">
7+
<div class="layui-form-item">
8+
<label class="layui-form-label">上级菜单</label>
9+
<div class="layui-input-block">
10+
<select name="pid" lay-verify="required">
11+
<option value="0">顶级菜单</option>
12+
<#list menuList as menu>
13+
<option value="${menu.id}">${menu.text}-${menu.code}</option>
14+
</#list>
15+
</select>
16+
</div>
17+
</div>
18+
<div class="layui-form-item">
19+
<label for="L_title" class="layui-form-label">编码</label>
20+
<div class="layui-input-block">
21+
<input type="text" id="L_title" name="code" lay-verify="required" placeholder="请输入菜单编码"
22+
autocomplete="off" class="layui-input">
23+
</div>
24+
</div>
25+
<div class="layui-form-item">
26+
<label class="layui-form-label">菜单名称</label>
27+
<div class="layui-input-block">
28+
<input type="text" name="text" lay-verify="required" placeholder="请输入菜单名称"
29+
autocomplete="off" class="layui-input">
30+
</div>
31+
</div>
32+
<div class="layui-form-item">
33+
<label class="layui-form-label">链接地址</label>
34+
<div class="layui-input-block">
35+
<input type="text" name="url" lay-verify="url" placeholder="请输入URL"
36+
autocomplete="off" class="layui-input">
37+
</div>
38+
</div>
39+
<div class="layui-form-item">
40+
<label class="layui-form-label">权限资源</label>
41+
<div class="layui-input-block">
42+
<input type="text" name="resource" placeholder="权限资源"
43+
autocomplete="off" class="layui-input">
44+
</div>
45+
</div>
46+
<div class="layui-form-item">
47+
<label class="layui-form-label">图标</label>
48+
<div class="layui-input-block">
49+
<input type="text" name="icon" placeholder="图标"
50+
autocomplete="off" class="layui-input">
51+
</div>
52+
</div>
53+
<div class="layui-form-item">
54+
<label class="layui-form-label">排序</label>
55+
<div class="layui-input-block">
56+
<input type="text" name="sort" lay-verify="number" value="0" placeholder="排序"
57+
autocomplete="off" class="layui-input">
58+
</div>
59+
</div>
60+
<div class="layui-form-item">
61+
<div class="layui-input-block">
62+
<button class="layui-btn" lay-submit lay-filter="submit">立即提交</button>
63+
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
64+
</div>
65+
</div>
66+
</form>
67+
</div>
68+
</@body>
69+
<@footer>
70+
<script src="/static/js/x-form.js" charset="utf-8"></script>
71+
</@footer>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<#include "/common/layout.html"/>
2+
<@head>
3+
</@head>
4+
<@body>
5+
<div class="x-body">
6+
<form class="layui-form layui-form-pane" action="/menu/doEdit">
7+
<input type="hidden" value="${sysMenu.id}" name="id" />
8+
<div class="layui-form-item">
9+
<label for="L_title" class="layui-form-label">编码</label>
10+
<div class="layui-input-block">
11+
<input type="text" id="L_title" name="code" lay-verify="required" value="${sysMenu.code}" placeholder="请输入菜单编码"
12+
autocomplete="off" class="layui-input">
13+
</div>
14+
</div>
15+
<div class="layui-form-item">
16+
<label class="layui-form-label">菜单名称</label>
17+
<div class="layui-input-block">
18+
<input type="text" name="text" lay-verify="required" placeholder="请输入菜单名称" value="${sysMenu.text}"
19+
autocomplete="off" class="layui-input">
20+
</div>
21+
</div>
22+
<div class="layui-form-item">
23+
<label class="layui-form-label">链接地址</label>
24+
<div class="layui-input-block">
25+
<input type="text" name="url" lay-verify="url" placeholder="请输入URL" value="${sysMenu.url}"
26+
autocomplete="off" class="layui-input">
27+
</div>
28+
</div>
29+
<div class="layui-form-item">
30+
<label class="layui-form-label">权限资源</label>
31+
<div class="layui-input-block">
32+
<input type="text" name="resource" placeholder="权限资源" value="${sysMenu.resource}"
33+
autocomplete="off" class="layui-input">
34+
</div>
35+
</div>
36+
<div class="layui-form-item">
37+
<label class="layui-form-label">图标</label>
38+
<div class="layui-input-block">
39+
<input type="text" name="icon" placeholder="图标" value="${sysMenu.icon}"
40+
autocomplete="off" class="layui-input">
41+
</div>
42+
</div>
43+
<div class="layui-form-item">
44+
<label class="layui-form-label">排序</label>
45+
<div class="layui-input-block">
46+
<input type="text" name="sort" lay-verify="number" value="0" placeholder="排序" value="${sysMenu.sort}"
47+
autocomplete="off" class="layui-input">
48+
</div>
49+
</div>
50+
<div class="layui-form-item">
51+
<div class="layui-input-block">
52+
<button class="layui-btn" lay-submit lay-filter="submit">立即提交</button>
53+
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
54+
</div>
55+
</div>
56+
</form>
57+
</div>
58+
</@body>
59+
<@footer>
60+
<script src="/static/js/x-form.js" charset="utf-8"></script>
61+
</@footer>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<#include "/common/layout.html"/>
2+
<@head>
3+
</@head>
4+
<@body>
5+
<div class="x-body">
6+
<form class="layui-form" style="padding-bottom: 10px;text-align: left;">
7+
关键词:
8+
<div class="layui-inline">
9+
<input class="layui-input" type="text" name="search" autocomplete="off" placeholder="菜单名称">
10+
</div>
11+
<button class="layui-btn" lay-submit lay-filter="search"><i class="layui-icon">&#xe615;</i></button>
12+
</form>
13+
14+
<xblock>
15+
<button class="layui-btn dialog" data-url="/menu/add" data-title="新增菜单" ><i class="layui-icon">&#xe608;</i>添加</button>
16+
<button class="layui-btn layui-btn-danger del-all" data-url="/menu/delete"><i class="layui-icon">&#xe640;</i>批量删除</button>
17+
</xblock>
18+
19+
<table class="layui-table" lay-data="{height:'full-230', url:'/menu/json', page:true, id:'table',limit:20}" lay-filter="table">
20+
<thead>
21+
<tr>
22+
<th lay-data="{checkbox:true, fixed: true}"></th>
23+
<th lay-data="{field:'text', width:180}">菜单名称</th>
24+
<th lay-data="{field:'code', width:150}">菜单编码</th>
25+
<th lay-data="{field:'url', width:200}">菜单地址</th>
26+
<th lay-data="{field:'icon', width:80,templet:'#icon-tpl'}">图标</th>
27+
<th lay-data="{field:'sort', width:80}">排序</th>
28+
<th lay-data="{field:'resource', width:177}">权限资源</th>
29+
<th lay-data="{fixed: 'right', width:260, align:'center', toolbar: '#row-bar'}">操作</th>
30+
</tr>
31+
</thead>
32+
</table>
33+
<script type="text/html" id="icon-tpl">
34+
<i class="layui-icon">{{d.icon}}</i>
35+
</script>
36+
<script type="text/html" id="row-bar">
37+
<a class="layui-btn layui-btn-small" lay-event="edit" data-url="/menu/edit" data-title="编辑菜单" data-width="800" data-height="600" ><i class="layui-icon">&#xe642;</i> 编辑</a>
38+
<a class="layui-btn layui-btn-danger layui-btn-small" lay-event="del" data-url='/menu/delete'><i class="layui-icon">&#xe640;</i> 删除</a>
39+
</script>
40+
</div>
41+
</@body>
42+
<@footer>
43+
<script src="/static/js/x-table.js" charset="utf-8"></script>
44+
</@footer>

0 commit comments

Comments
 (0)