正在显示
6 个修改的文件
包含
226 行增加
和
11 行删除
| 1 | +package com.ruoyi.web.controller.monitor; | ||
| 2 | + | ||
| 3 | +import java.util.ArrayList; | ||
| 4 | +import java.util.HashMap; | ||
| 5 | +import java.util.List; | ||
| 6 | +import java.util.Map; | ||
| 7 | +import java.util.Properties; | ||
| 8 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 9 | +import org.springframework.data.redis.core.RedisCallback; | ||
| 10 | +import org.springframework.data.redis.core.RedisTemplate; | ||
| 11 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 12 | +import org.springframework.web.bind.annotation.GetMapping; | ||
| 13 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
| 14 | +import org.springframework.web.bind.annotation.RestController; | ||
| 15 | +import com.ruoyi.common.core.domain.AjaxResult; | ||
| 16 | +import com.ruoyi.common.utils.StringUtils; | ||
| 17 | + | ||
| 18 | +/** | ||
| 19 | + * 缓存监控 | ||
| 20 | + * | ||
| 21 | + * @author ruoyi | ||
| 22 | + */ | ||
| 23 | +@RestController | ||
| 24 | +@RequestMapping("/monitor/cache") | ||
| 25 | +public class CacheController | ||
| 26 | +{ | ||
| 27 | + @Autowired | ||
| 28 | + private RedisTemplate<String, String> redisTemplate; | ||
| 29 | + | ||
| 30 | + @PreAuthorize("@ss.hasPermi('monitor:cache:list')") | ||
| 31 | + @GetMapping() | ||
| 32 | + public AjaxResult getInfo() throws Exception | ||
| 33 | + { | ||
| 34 | + Properties info = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info()); | ||
| 35 | + Properties commandStats = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info("commandstats")); | ||
| 36 | + Object dbSize = redisTemplate.execute((RedisCallback<Object>) connection -> connection.dbSize()); | ||
| 37 | + | ||
| 38 | + Map<String, Object> result = new HashMap<>(3); | ||
| 39 | + result.put("info", info); | ||
| 40 | + result.put("dbSize", dbSize); | ||
| 41 | + | ||
| 42 | + List<Map<String, String>> pieList = new ArrayList<>(); | ||
| 43 | + commandStats.stringPropertyNames().forEach(key -> { | ||
| 44 | + Map<String, String> data = new HashMap<>(2); | ||
| 45 | + String property = commandStats.getProperty(key); | ||
| 46 | + data.put("name", StringUtils.removeStart(key, "cmdstat_")); | ||
| 47 | + data.put("value", StringUtils.substringBetween(property, "calls=", ",usec")); | ||
| 48 | + pieList.add(data); | ||
| 49 | + }); | ||
| 50 | + result.put("commandStats", pieList); | ||
| 51 | + return AjaxResult.success(result); | ||
| 52 | + } | ||
| 53 | +} |
| @@ -4,7 +4,6 @@ import org.springframework.security.access.prepost.PreAuthorize; | @@ -4,7 +4,6 @@ import org.springframework.security.access.prepost.PreAuthorize; | ||
| 4 | import org.springframework.web.bind.annotation.GetMapping; | 4 | import org.springframework.web.bind.annotation.GetMapping; |
| 5 | import org.springframework.web.bind.annotation.RequestMapping; | 5 | import org.springframework.web.bind.annotation.RequestMapping; |
| 6 | import org.springframework.web.bind.annotation.RestController; | 6 | import org.springframework.web.bind.annotation.RestController; |
| 7 | -import com.ruoyi.common.core.controller.BaseController; | ||
| 8 | import com.ruoyi.common.core.domain.AjaxResult; | 7 | import com.ruoyi.common.core.domain.AjaxResult; |
| 9 | import com.ruoyi.framework.web.domain.Server; | 8 | import com.ruoyi.framework.web.domain.Server; |
| 10 | 9 | ||
| @@ -15,7 +14,7 @@ import com.ruoyi.framework.web.domain.Server; | @@ -15,7 +14,7 @@ import com.ruoyi.framework.web.domain.Server; | ||
| 15 | */ | 14 | */ |
| 16 | @RestController | 15 | @RestController |
| 17 | @RequestMapping("/monitor/server") | 16 | @RequestMapping("/monitor/server") |
| 18 | -public class ServerController extends BaseController | 17 | +public class ServerController |
| 19 | { | 18 | { |
| 20 | @PreAuthorize("@ss.hasPermi('monitor:server:list')") | 19 | @PreAuthorize("@ss.hasPermi('monitor:server:list')") |
| 21 | @GetMapping() | 20 | @GetMapping() |
ruoyi-ui/src/api/monitor/cache.js
0 → 100644
ruoyi-ui/src/assets/icons/svg/redis.svg
0 → 100644
| 1 | +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1605865043777" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="856" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M1023.786667 611.84c-0.426667 9.770667-13.354667 20.693333-39.893334 34.56-54.613333 28.458667-337.749333 144.896-397.994666 176.298667-60.288 31.402667-93.738667 31.104-141.354667 8.32-47.616-22.741333-348.842667-144.469333-403.114667-170.368-27.093333-12.970667-40.917333-23.893333-41.386666-34.218667v103.509333c0 10.325333 14.250667 21.290667 41.386666 34.261334 54.272 25.941333 355.541333 147.626667 403.114667 170.368 47.616 22.784 81.066667 23.082667 141.354667-8.362667 60.245333-31.402667 343.338667-147.797333 397.994666-176.298667 27.776-14.464 40.106667-25.728 40.106667-35.925333v-102.058667l-0.213333-0.085333z m0-168.746667c-0.512 9.770667-13.397333 20.650667-39.893334 34.517334-54.613333 28.458667-337.749333 144.896-397.994666 176.298666-60.288 31.402667-93.738667 31.104-141.354667 8.362667-47.616-22.741333-348.842667-144.469333-403.114667-170.410667-27.093333-12.928-40.917333-23.893333-41.386666-34.176v103.509334c0 10.325333 14.250667 21.248 41.386666 34.218666 54.272 25.941333 355.498667 147.626667 403.114667 170.368 47.616 22.784 81.066667 23.082667 141.354667-8.32 60.245333-31.402667 343.338667-147.84 397.994666-176.298666 27.776-14.506667 40.106667-25.770667 40.106667-35.968v-102.058667l-0.256-0.042667z m0-175.018666c0.469333-10.410667-13.141333-19.541333-40.533334-29.610667-53.248-19.498667-334.634667-131.498667-388.522666-151.253333-53.888-19.712-75.818667-18.901333-139.093334 3.84C392.234667 113.706667 92.629333 231.253333 39.338667 252.074667c-26.666667 10.496-39.68 20.181333-39.253334 30.506666V386.133333c0 10.325333 14.250667 21.248 41.386667 34.218667 54.272 25.941333 355.498667 147.669333 403.114667 170.410667 47.616 22.741333 81.066667 23.04 141.354666-8.362667 60.245333-31.402667 343.338667-147.84 397.994667-176.298667 27.776-14.506667 40.106667-25.770667 40.106667-35.968V268.074667h-0.341334zM366.677333 366.08l237.269334-36.437333-71.68 105.088-165.546667-68.650667z m524.8-94.634667l-140.330666 55.466667-15.232 5.973333-140.245334-55.466666 155.392-61.44 140.373334 55.466666z m-411.989333-101.674666l-22.954667-42.325334 71.594667 27.989334 67.498667-22.101334-18.261334 43.733334 68.778667 25.770666-88.704 9.216-19.882667 47.786667-32.085333-53.290667-102.4-9.216 76.416-27.562666z m-176.768 59.733333c70.058667 0 126.805333 21.973333 126.805333 49.109333s-56.746667 49.152-126.805333 49.152-126.848-22.058667-126.848-49.152c0-27.136 56.789333-49.152 126.848-49.152z" p-id="857"></path></svg> |
ruoyi-ui/src/views/monitor/cache/index.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <div class="app-container"> | ||
| 3 | + <el-row> | ||
| 4 | + <el-col :span="24" class="card-box"> | ||
| 5 | + <el-card> | ||
| 6 | + <div slot="header"><span>基本信息</span></div> | ||
| 7 | + <div class="el-table el-table--enable-row-hover el-table--medium"> | ||
| 8 | + <table cellspacing="0" style="width: 100%"> | ||
| 9 | + <tbody> | ||
| 10 | + <tr> | ||
| 11 | + <td><div class="cell">Redis版本</div></td> | ||
| 12 | + <td><div class="cell" v-if="cache.info">{{ cache.info.redis_version }}</div></td> | ||
| 13 | + <td><div class="cell">运行模式</div></td> | ||
| 14 | + <td><div class="cell" v-if="cache.info">{{ cache.info.redis_mode == "standalone" ? "单机" : "集群" }}</div></td> | ||
| 15 | + <td><div class="cell">端口</div></td> | ||
| 16 | + <td><div class="cell" v-if="cache.info">{{ cache.info.tcp_port }}</div></td> | ||
| 17 | + <td><div class="cell">客户端数</div></td> | ||
| 18 | + <td><div class="cell" v-if="cache.info">{{ cache.info.connected_clients }}</div></td> | ||
| 19 | + </tr> | ||
| 20 | + <tr> | ||
| 21 | + <td><div class="cell">运行时间(天)</div></td> | ||
| 22 | + <td><div class="cell" v-if="cache.info">{{ cache.info.uptime_in_days }}</div></td> | ||
| 23 | + <td><div class="cell">使用内存</div></td> | ||
| 24 | + <td><div class="cell" v-if="cache.info">{{ cache.info.used_memory_human }}</div></td> | ||
| 25 | + <td><div class="cell">使用CPU</div></td> | ||
| 26 | + <td><div class="cell" v-if="cache.info">{{ parseFloat(cache.info.used_cpu_user_children).toFixed(2) }}</div></td> | ||
| 27 | + <td><div class="cell">内存配置</div></td> | ||
| 28 | + <td><div class="cell" v-if="cache.info">{{ cache.info.maxmemory_human }}</div></td> | ||
| 29 | + </tr> | ||
| 30 | + <tr> | ||
| 31 | + <td><div class="cell">AOF是否开启</div></td> | ||
| 32 | + <td><div class="cell" v-if="cache.info">{{ cache.info.aof_enabled == "0" ? "否" : "是" }}</div></td> | ||
| 33 | + <td><div class="cell">RDB是否成功</div></td> | ||
| 34 | + <td><div class="cell" v-if="cache.info">{{ cache.info.rdb_last_bgsave_status }}</div></td> | ||
| 35 | + <td><div class="cell">Key数量</div></td> | ||
| 36 | + <td><div class="cell" v-if="cache.dbSize">{{ cache.dbSize }} </div></td> | ||
| 37 | + <td><div class="cell">网络入口/出口</div></td> | ||
| 38 | + <td><div class="cell" v-if="cache.info">{{ cache.info.instantaneous_input_kbps }}kps/{{cache.info.instantaneous_output_kbps}}kps</div></td> | ||
| 39 | + </tr> | ||
| 40 | + </tbody> | ||
| 41 | + </table> | ||
| 42 | + </div> | ||
| 43 | + </el-card> | ||
| 44 | + </el-col> | ||
| 45 | + | ||
| 46 | + <el-col :span="12" class="card-box"> | ||
| 47 | + <el-card> | ||
| 48 | + <div slot="header"><span>命令统计</span></div> | ||
| 49 | + <div class="el-table el-table--enable-row-hover el-table--medium"> | ||
| 50 | + <div ref="commandstats" style="height: 420px" /> | ||
| 51 | + </div> | ||
| 52 | + </el-card> | ||
| 53 | + </el-col> | ||
| 54 | + | ||
| 55 | + <el-col :span="12" class="card-box"> | ||
| 56 | + <el-card> | ||
| 57 | + <div slot="header"> | ||
| 58 | + <span>内存信息</span> | ||
| 59 | + </div> | ||
| 60 | + <div class="el-table el-table--enable-row-hover el-table--medium"> | ||
| 61 | + <div ref="usedmemory" style="height: 420px" /> | ||
| 62 | + </div> | ||
| 63 | + </el-card> | ||
| 64 | + </el-col> | ||
| 65 | + </el-row> | ||
| 66 | + </div> | ||
| 67 | +</template> | ||
| 68 | + | ||
| 69 | +<script> | ||
| 70 | +import { getCache } from "@/api/monitor/cache"; | ||
| 71 | +import echarts from "echarts"; | ||
| 72 | + | ||
| 73 | +export default { | ||
| 74 | + name: "Server", | ||
| 75 | + data() { | ||
| 76 | + return { | ||
| 77 | + // 加载层信息 | ||
| 78 | + loading: [], | ||
| 79 | + // 统计命令信息 | ||
| 80 | + commandstats: null, | ||
| 81 | + // 使用内存 | ||
| 82 | + usedmemory: null, | ||
| 83 | + // cache信息 | ||
| 84 | + cache: [], | ||
| 85 | + }; | ||
| 86 | + }, | ||
| 87 | + created() { | ||
| 88 | + this.getList(); | ||
| 89 | + this.openLoading(); | ||
| 90 | + }, | ||
| 91 | + methods: { | ||
| 92 | + /** 查缓存询信息 */ | ||
| 93 | + getList() { | ||
| 94 | + getCache().then((response) => { | ||
| 95 | + this.cache = response.data; | ||
| 96 | + this.loading.close(); | ||
| 97 | + | ||
| 98 | + this.commandstats = echarts.init(this.$refs.commandstats, "macarons"); | ||
| 99 | + this.commandstats.setOption({ | ||
| 100 | + tooltip: { | ||
| 101 | + trigger: "item", | ||
| 102 | + formatter: "{a} <br/>{b} : {c} ({d}%)", | ||
| 103 | + }, | ||
| 104 | + series: [ | ||
| 105 | + { | ||
| 106 | + name: "命令", | ||
| 107 | + type: "pie", | ||
| 108 | + roseType: "radius", | ||
| 109 | + radius: [15, 95], | ||
| 110 | + center: ["50%", "38%"], | ||
| 111 | + data: response.data.commandStats, | ||
| 112 | + animationEasing: "cubicInOut", | ||
| 113 | + animationDuration: 1000, | ||
| 114 | + }, | ||
| 115 | + ], | ||
| 116 | + }); | ||
| 117 | + this.usedmemory = echarts.init(this.$refs.usedmemory, "macarons"); | ||
| 118 | + this.usedmemory.setOption({ | ||
| 119 | + tooltip: { | ||
| 120 | + formatter: "{b} <br/>{a} : {c}M", | ||
| 121 | + }, | ||
| 122 | + series: [ | ||
| 123 | + { | ||
| 124 | + name: "峰值", | ||
| 125 | + type: "gauge", | ||
| 126 | + detail: { | ||
| 127 | + formatter: "{value}M", | ||
| 128 | + }, | ||
| 129 | + data: [ | ||
| 130 | + { | ||
| 131 | + value: parseFloat(this.cache.info.used_memory_human), | ||
| 132 | + name: "内存消耗", | ||
| 133 | + }, | ||
| 134 | + ], | ||
| 135 | + }, | ||
| 136 | + ], | ||
| 137 | + }); | ||
| 138 | + }); | ||
| 139 | + }, | ||
| 140 | + // 打开加载层 | ||
| 141 | + openLoading() { | ||
| 142 | + this.loading = this.$loading({ | ||
| 143 | + lock: true, | ||
| 144 | + text: "拼命读取中", | ||
| 145 | + spinner: "el-icon-loading", | ||
| 146 | + background: "rgba(0, 0, 0, 0.7)", | ||
| 147 | + }); | ||
| 148 | + }, | ||
| 149 | + }, | ||
| 150 | +}; | ||
| 151 | +</script> |
| @@ -174,9 +174,10 @@ insert into sys_menu values('109', '在线用户', '2', '1', 'online', 'm | @@ -174,9 +174,10 @@ insert into sys_menu values('109', '在线用户', '2', '1', 'online', 'm | ||
| 174 | insert into sys_menu values('110', '定时任务', '2', '2', 'job', 'monitor/job/index', 1, 0, 'C', '0', '0', 'monitor:job:list', 'job', 'admin', sysdate(), '', null, '定时任务菜单'); | 174 | insert into sys_menu values('110', '定时任务', '2', '2', 'job', 'monitor/job/index', 1, 0, 'C', '0', '0', 'monitor:job:list', 'job', 'admin', sysdate(), '', null, '定时任务菜单'); |
| 175 | insert into sys_menu values('111', '数据监控', '2', '3', 'druid', 'monitor/druid/index', 1, 0, 'C', '0', '0', 'monitor:druid:list', 'druid', 'admin', sysdate(), '', null, '数据监控菜单'); | 175 | insert into sys_menu values('111', '数据监控', '2', '3', 'druid', 'monitor/druid/index', 1, 0, 'C', '0', '0', 'monitor:druid:list', 'druid', 'admin', sysdate(), '', null, '数据监控菜单'); |
| 176 | insert into sys_menu values('112', '服务监控', '2', '4', 'server', 'monitor/server/index', 1, 0, 'C', '0', '0', 'monitor:server:list', 'server', 'admin', sysdate(), '', null, '服务监控菜单'); | 176 | insert into sys_menu values('112', '服务监控', '2', '4', 'server', 'monitor/server/index', 1, 0, 'C', '0', '0', 'monitor:server:list', 'server', 'admin', sysdate(), '', null, '服务监控菜单'); |
| 177 | -insert into sys_menu values('113', '表单构建', '3', '1', 'build', 'tool/build/index', 1, 0, 'C', '0', '0', 'tool:build:list', 'build', 'admin', sysdate(), '', null, '表单构建菜单'); | ||
| 178 | -insert into sys_menu values('114', '代码生成', '3', '2', 'gen', 'tool/gen/index', 1, 0, 'C', '0', '0', 'tool:gen:list', 'code', 'admin', sysdate(), '', null, '代码生成菜单'); | ||
| 179 | -insert into sys_menu values('115', '系统接口', '3', '3', 'swagger', 'tool/swagger/index', 1, 0, 'C', '0', '0', 'tool:swagger:list', 'swagger', 'admin', sysdate(), '', null, '系统接口菜单'); | 177 | +insert into sys_menu values('113', '缓存监控', '2', '5', 'cache', 'monitor/cache/index', 1, 0, 'C', '0', '0', 'monitor:cache:list', 'redis', 'admin', sysdate(), '', null, '缓存监控菜单'); |
| 178 | +insert into sys_menu values('114', '表单构建', '3', '1', 'build', 'tool/build/index', 1, 0, 'C', '0', '0', 'tool:build:list', 'build', 'admin', sysdate(), '', null, '表单构建菜单'); | ||
| 179 | +insert into sys_menu values('115', '代码生成', '3', '2', 'gen', 'tool/gen/index', 1, 0, 'C', '0', '0', 'tool:gen:list', 'code', 'admin', sysdate(), '', null, '代码生成菜单'); | ||
| 180 | +insert into sys_menu values('116', '系统接口', '3', '3', 'swagger', 'tool/swagger/index', 1, 0, 'C', '0', '0', 'tool:swagger:list', 'swagger', 'admin', sysdate(), '', null, '系统接口菜单'); | ||
| 180 | -- 三级菜单 | 181 | -- 三级菜单 |
| 181 | insert into sys_menu values('500', '操作日志', '108', '1', 'operlog', 'monitor/operlog/index', 1, 0, 'C', '0', '0', 'monitor:operlog:list', 'form', 'admin', sysdate(), '', null, '操作日志菜单'); | 182 | insert into sys_menu values('500', '操作日志', '108', '1', 'operlog', 'monitor/operlog/index', 1, 0, 'C', '0', '0', 'monitor:operlog:list', 'form', 'admin', sysdate(), '', null, '操作日志菜单'); |
| 182 | insert into sys_menu values('501', '登录日志', '108', '2', 'logininfor', 'monitor/logininfor/index', 1, 0, 'C', '0', '0', 'monitor:logininfor:list', 'logininfor', 'admin', sysdate(), '', null, '登录日志菜单'); | 183 | insert into sys_menu values('501', '登录日志', '108', '2', 'logininfor', 'monitor/logininfor/index', 1, 0, 'C', '0', '0', 'monitor:logininfor:list', 'logininfor', 'admin', sysdate(), '', null, '登录日志菜单'); |
| @@ -247,12 +248,12 @@ insert into sys_menu values('1052', '任务删除', '110', '4', '#', '', 1, 0, ' | @@ -247,12 +248,12 @@ insert into sys_menu values('1052', '任务删除', '110', '4', '#', '', 1, 0, ' | ||
| 247 | insert into sys_menu values('1053', '状态修改', '110', '5', '#', '', 1, 0, 'F', '0', '0', 'monitor:job:changeStatus', '#', 'admin', sysdate(), '', null, ''); | 248 | insert into sys_menu values('1053', '状态修改', '110', '5', '#', '', 1, 0, 'F', '0', '0', 'monitor:job:changeStatus', '#', 'admin', sysdate(), '', null, ''); |
| 248 | insert into sys_menu values('1054', '任务导出', '110', '7', '#', '', 1, 0, 'F', '0', '0', 'monitor:job:export', '#', 'admin', sysdate(), '', null, ''); | 249 | insert into sys_menu values('1054', '任务导出', '110', '7', '#', '', 1, 0, 'F', '0', '0', 'monitor:job:export', '#', 'admin', sysdate(), '', null, ''); |
| 249 | -- 代码生成按钮 | 250 | -- 代码生成按钮 |
| 250 | -insert into sys_menu values('1055', '生成查询', '114', '1', '#', '', 1, 0, 'F', '0', '0', 'tool:gen:query', '#', 'admin', sysdate(), '', null, ''); | ||
| 251 | -insert into sys_menu values('1056', '生成修改', '114', '2', '#', '', 1, 0, 'F', '0', '0', 'tool:gen:edit', '#', 'admin', sysdate(), '', null, ''); | ||
| 252 | -insert into sys_menu values('1057', '生成删除', '114', '3', '#', '', 1, 0, 'F', '0', '0', 'tool:gen:remove', '#', 'admin', sysdate(), '', null, ''); | ||
| 253 | -insert into sys_menu values('1058', '导入代码', '114', '2', '#', '', 1, 0, 'F', '0', '0', 'tool:gen:import', '#', 'admin', sysdate(), '', null, ''); | ||
| 254 | -insert into sys_menu values('1059', '预览代码', '114', '4', '#', '', 1, 0, 'F', '0', '0', 'tool:gen:preview', '#', 'admin', sysdate(), '', null, ''); | ||
| 255 | -insert into sys_menu values('1060', '生成代码', '114', '5', '#', '', 1, 0, 'F', '0', '0', 'tool:gen:code', '#', 'admin', sysdate(), '', null, ''); | 251 | +insert into sys_menu values('1055', '生成查询', '115', '1', '#', '', 1, 0, 'F', '0', '0', 'tool:gen:query', '#', 'admin', sysdate(), '', null, ''); |
| 252 | +insert into sys_menu values('1056', '生成修改', '115', '2', '#', '', 1, 0, 'F', '0', '0', 'tool:gen:edit', '#', 'admin', sysdate(), '', null, ''); | ||
| 253 | +insert into sys_menu values('1057', '生成删除', '115', '3', '#', '', 1, 0, 'F', '0', '0', 'tool:gen:remove', '#', 'admin', sysdate(), '', null, ''); | ||
| 254 | +insert into sys_menu values('1058', '导入代码', '115', '2', '#', '', 1, 0, 'F', '0', '0', 'tool:gen:import', '#', 'admin', sysdate(), '', null, ''); | ||
| 255 | +insert into sys_menu values('1059', '预览代码', '115', '4', '#', '', 1, 0, 'F', '0', '0', 'tool:gen:preview', '#', 'admin', sysdate(), '', null, ''); | ||
| 256 | +insert into sys_menu values('1060', '生成代码', '115', '5', '#', '', 1, 0, 'F', '0', '0', 'tool:gen:code', '#', 'admin', sysdate(), '', null, ''); | ||
| 256 | 257 | ||
| 257 | 258 | ||
| 258 | -- ---------------------------- | 259 | -- ---------------------------- |
| @@ -305,6 +306,7 @@ insert into sys_role_menu values ('2', '112'); | @@ -305,6 +306,7 @@ insert into sys_role_menu values ('2', '112'); | ||
| 305 | insert into sys_role_menu values ('2', '113'); | 306 | insert into sys_role_menu values ('2', '113'); |
| 306 | insert into sys_role_menu values ('2', '114'); | 307 | insert into sys_role_menu values ('2', '114'); |
| 307 | insert into sys_role_menu values ('2', '115'); | 308 | insert into sys_role_menu values ('2', '115'); |
| 309 | +insert into sys_role_menu values ('2', '116'); | ||
| 308 | insert into sys_role_menu values ('2', '500'); | 310 | insert into sys_role_menu values ('2', '500'); |
| 309 | insert into sys_role_menu values ('2', '501'); | 311 | insert into sys_role_menu values ('2', '501'); |
| 310 | insert into sys_role_menu values ('2', '1000'); | 312 | insert into sys_role_menu values ('2', '1000'); |
-
请 注册 或 登录 后发表评论