sys_log 表增加 execute_time 执行时间记录字段

This commit is contained in:
thinkgem
2018-03-22 21:57:52 +08:00
parent 878833d6bf
commit 6e71e85600
23 changed files with 867 additions and 748 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -337,6 +337,7 @@ CREATE TABLE [js_sys_log]
[user_agent] nvarchar(500), [user_agent] nvarchar(500),
[device_name] varchar(100), [device_name] varchar(100),
[browser_name] varchar(100), [browser_name] varchar(100),
[execute_time] decimal(19),
[corp_code] varchar(64) DEFAULT '0' NOT NULL, [corp_code] varchar(64) DEFAULT '0' NOT NULL,
[corp_name] nvarchar(100) DEFAULT 'JeeSite' NOT NULL, [corp_name] nvarchar(100) DEFAULT 'JeeSite' NOT NULL,
PRIMARY KEY ([id]) PRIMARY KEY ([id])

View File

@@ -340,6 +340,7 @@ CREATE TABLE js_sys_log
user_agent varchar(500) COMMENT '用户代理', user_agent varchar(500) COMMENT '用户代理',
device_name varchar(100) COMMENT '设备名称/操作系统', device_name varchar(100) COMMENT '设备名称/操作系统',
browser_name varchar(100) COMMENT '浏览器名称', browser_name varchar(100) COMMENT '浏览器名称',
execute_time decimal(19) COMMENT '执行时间',
corp_code varchar(64) DEFAULT '0' NOT NULL COMMENT '归属集团Code', corp_code varchar(64) DEFAULT '0' NOT NULL COMMENT '归属集团Code',
corp_name varchar(100) DEFAULT 'JeeSite' NOT NULL COMMENT '归属集团Name', corp_name varchar(100) DEFAULT 'JeeSite' NOT NULL COMMENT '归属集团Name',
PRIMARY KEY (id) PRIMARY KEY (id)

View File

@@ -337,6 +337,7 @@ CREATE TABLE js_sys_log
user_agent nvarchar2(500), user_agent nvarchar2(500),
device_name varchar2(100), device_name varchar2(100),
browser_name varchar2(100), browser_name varchar2(100),
execute_time number(19),
corp_code varchar2(64) DEFAULT '0' NOT NULL, corp_code varchar2(64) DEFAULT '0' NOT NULL,
corp_name nvarchar2(100) DEFAULT 'JeeSite' NOT NULL, corp_name nvarchar2(100) DEFAULT 'JeeSite' NOT NULL,
PRIMARY KEY (id) PRIMARY KEY (id)
@@ -1081,6 +1082,7 @@ COMMENT ON COLUMN js_sys_log.exception_info IS '异常信息';
COMMENT ON COLUMN js_sys_log.user_agent IS '用户代理'; COMMENT ON COLUMN js_sys_log.user_agent IS '用户代理';
COMMENT ON COLUMN js_sys_log.device_name IS '设备名称/操作系统'; COMMENT ON COLUMN js_sys_log.device_name IS '设备名称/操作系统';
COMMENT ON COLUMN js_sys_log.browser_name IS '浏览器名称'; COMMENT ON COLUMN js_sys_log.browser_name IS '浏览器名称';
COMMENT ON COLUMN js_sys_log.execute_time IS '执行时间';
COMMENT ON COLUMN js_sys_log.corp_code IS '归属集团Code'; COMMENT ON COLUMN js_sys_log.corp_code IS '归属集团Code';
COMMENT ON COLUMN js_sys_log.corp_name IS '归属集团Name'; COMMENT ON COLUMN js_sys_log.corp_name IS '归属集团Name';
COMMENT ON TABLE js_sys_menu IS '菜单表'; COMMENT ON TABLE js_sys_menu IS '菜单表';

View File

@@ -337,6 +337,7 @@ CREATE TABLE js_sys_log
user_agent varchar(500), user_agent varchar(500),
device_name varchar(100), device_name varchar(100),
browser_name varchar(100), browser_name varchar(100),
execute_time decimal(19),
corp_code varchar(64) DEFAULT '0' NOT NULL, corp_code varchar(64) DEFAULT '0' NOT NULL,
corp_name varchar(100) DEFAULT 'JeeSite' NOT NULL, corp_name varchar(100) DEFAULT 'JeeSite' NOT NULL,
PRIMARY KEY (id) PRIMARY KEY (id)
@@ -1081,6 +1082,7 @@ COMMENT ON COLUMN js_sys_log.exception_info IS '异常信息';
COMMENT ON COLUMN js_sys_log.user_agent IS '用户代理'; COMMENT ON COLUMN js_sys_log.user_agent IS '用户代理';
COMMENT ON COLUMN js_sys_log.device_name IS '设备名称/操作系统'; COMMENT ON COLUMN js_sys_log.device_name IS '设备名称/操作系统';
COMMENT ON COLUMN js_sys_log.browser_name IS '浏览器名称'; COMMENT ON COLUMN js_sys_log.browser_name IS '浏览器名称';
COMMENT ON COLUMN js_sys_log.execute_time IS '执行时间';
COMMENT ON COLUMN js_sys_log.corp_code IS '归属集团Code'; COMMENT ON COLUMN js_sys_log.corp_code IS '归属集团Code';
COMMENT ON COLUMN js_sys_log.corp_name IS '归属集团Name'; COMMENT ON COLUMN js_sys_log.corp_name IS '归属集团Name';
COMMENT ON TABLE js_sys_menu IS '菜单表'; COMMENT ON TABLE js_sys_menu IS '菜单表';

View File

@@ -18,6 +18,7 @@ import com.jeesite.common.config.Global;
import com.jeesite.common.web.http.ServletUtils; import com.jeesite.common.web.http.ServletUtils;
import com.jeesite.modules.sys.entity.Log; import com.jeesite.modules.sys.entity.Log;
import com.jeesite.modules.sys.utils.LogUtils; import com.jeesite.modules.sys.utils.LogUtils;
import com.jeesite.modules.sys.utils.UserUtils;
/** /**
* 登出过滤器 * 登出过滤器
@@ -36,7 +37,7 @@ public class LogoutFilter extends org.apache.shiro.web.filter.authc.LogoutFilter
//try/catch added for SHIRO-298: //try/catch added for SHIRO-298:
try { try {
// 记录用户退出日志 // 记录用户退出日志
LogUtils.saveLog(ServletUtils.getRequest(), "系统退出", Log.TYPE_LOGIN_LOGOUT); LogUtils.saveLog(UserUtils.getUser(), ServletUtils.getRequest(), "系统退出", Log.TYPE_LOGIN_LOGOUT);
// 退出登录 // 退出登录
subject.logout(); subject.logout();
} catch (SessionException ise) { } catch (SessionException ise) {

View File

@@ -58,13 +58,13 @@ public class AuthorizingRealm extends com.jeesite.common.shiro.realm.BaseAuthori
userService.updateUserLoginInfo(user); userService.updateUserLoginInfo(user);
// 记录用户登录日志 // 记录用户登录日志
LogUtils.saveLog(ServletUtils.getRequest(), "系统登录", Log.TYPE_LOGIN_LOGOUT); LogUtils.saveLog(user, ServletUtils.getRequest(), "系统登录", Log.TYPE_LOGIN_LOGOUT);
} }
@Override @Override
public void onLogoutSuccess(User logoutUser, HttpServletRequest request) { public void onLogoutSuccess(User logoutUser, HttpServletRequest request) {
// 记录用户退出日志 // 记录用户退出日志
LogUtils.saveLog(logoutUser, request, null, null, "系统退出", Log.TYPE_LOGIN_LOGOUT); LogUtils.saveLog(logoutUser, request, "系统退出", Log.TYPE_LOGIN_LOGOUT);
} }
public void setUserService(UserService userService) { public void setUserService(UserService userService) {

View File

@@ -13,6 +13,7 @@ import com.jeesite.common.collect.MapUtils;
import com.jeesite.common.entity.BaseEntity; import com.jeesite.common.entity.BaseEntity;
import com.jeesite.common.entity.DataEntity; import com.jeesite.common.entity.DataEntity;
import com.jeesite.common.lang.StringUtils; import com.jeesite.common.lang.StringUtils;
import com.jeesite.common.lang.TimeUtils;
import com.jeesite.common.mybatis.annotation.Column; import com.jeesite.common.mybatis.annotation.Column;
import com.jeesite.common.mybatis.annotation.Table; import com.jeesite.common.mybatis.annotation.Table;
import com.jeesite.common.mybatis.mapper.query.QueryType; import com.jeesite.common.mybatis.mapper.query.QueryType;
@@ -42,6 +43,7 @@ import com.jeesite.common.mybatis.mapper.query.QueryType;
@Column(name="user_agent", attrName="userAgent", label="用户代理"), @Column(name="user_agent", attrName="userAgent", label="用户代理"),
@Column(name="device_name", attrName="deviceName", label="设备名称/操作系统", queryType=QueryType.LIKE), @Column(name="device_name", attrName="deviceName", label="设备名称/操作系统", queryType=QueryType.LIKE),
@Column(name="browser_name", attrName="browserName", label="浏览器名称", queryType=QueryType.LIKE), @Column(name="browser_name", attrName="browserName", label="浏览器名称", queryType=QueryType.LIKE),
@Column(name="execute_time", attrName="executeTime", label="执行时间"),
}, orderBy="a.create_date DESC" }, orderBy="a.create_date DESC"
) )
public class Log extends DataEntity<Log> { public class Log extends DataEntity<Log> {
@@ -68,6 +70,7 @@ public class Log extends DataEntity<Log> {
private String userAgent; // 用户代理 private String userAgent; // 用户代理
private String deviceName; // 设备名称/操作系统 private String deviceName; // 设备名称/操作系统
private String browserName; // 浏览器名称 private String browserName; // 浏览器名称
private Long executeTime; // 执行时间
private Map<String, String[]> paramsMap; // 操作提交的数据,临时存储用 private Map<String, String[]> paramsMap; // 操作提交的数据,临时存储用
@@ -206,6 +209,18 @@ public class Log extends DataEntity<Log> {
this.browserName = browserName; this.browserName = browserName;
} }
public Long getExecuteTime() {
return executeTime;
}
public void setExecuteTime(Long executeTime) {
this.executeTime = executeTime;
}
public String getExecuteTimeFormat(){
return TimeUtils.formatDateAgo(executeTime);
}
/** /**
* 设置请求参数 * 设置请求参数
* @param paramMap * @param paramMap

View File

@@ -12,6 +12,7 @@ import org.springframework.core.NamedThreadLocal;
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import com.jeesite.common.datasource.DataSourceHolder;
import com.jeesite.common.lang.DateUtils; import com.jeesite.common.lang.DateUtils;
import com.jeesite.common.lang.TimeUtils; import com.jeesite.common.lang.TimeUtils;
import com.jeesite.common.service.BaseService; import com.jeesite.common.service.BaseService;
@@ -31,9 +32,9 @@ public class LogInterceptor extends BaseService implements HandlerInterceptor {
@Override @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object handler) throws Exception { Object handler) throws Exception {
long beginTime = System.currentTimeMillis();// 1、开始时间
startTimeThreadLocal.set(beginTime); // 线程绑定变量(该数据只有当前请求的线程可见)
if (logger.isDebugEnabled()){ if (logger.isDebugEnabled()){
long beginTime = System.currentTimeMillis();//1、开始时间
startTimeThreadLocal.set(beginTime); //线程绑定变量(该数据只有当前请求的线程可见)
logger.debug("开始计时: {} URI: {}", new SimpleDateFormat("hh:mm:ss.SSS") logger.debug("开始计时: {} URI: {}", new SimpleDateFormat("hh:mm:ss.SSS")
.format(beginTime), request.getRequestURI()); .format(beginTime), request.getRequestURI());
} }
@@ -51,19 +52,23 @@ public class LogInterceptor extends BaseService implements HandlerInterceptor {
@Override @Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
Object handler, Exception ex) throws Exception { Object handler, Exception ex) throws Exception {
long beginTime = startTimeThreadLocal.get();// 得到线程绑定的局部变量(开始时间)
long endTime = System.currentTimeMillis(); // 2、结束时间
long executeTime = endTime - beginTime; // 3、获取执行时间
startTimeThreadLocal.remove(); // 用完之后销毁线程变量数据
// 恢复多数据源参数,使用默认数据源
DataSourceHolder.clearDataSourceName();
// 保存日志 // 保存日志
LogUtils.saveLog(UserUtils.getUser(), request, handler, ex, null, null); LogUtils.saveLog(UserUtils.getUser(), request, handler, ex, null, null, executeTime);
// 打印JVM信息。 // 打印JVM信息。
if (logger.isDebugEnabled()){ if (logger.isDebugEnabled()){
long beginTime = startTimeThreadLocal.get();//得到线程绑定的局部变量(开始时间)
long endTime = System.currentTimeMillis(); //2、结束时间
logger.debug("计时结束: {} 用时: {} URI: {} 最大内存: {}m 已分配内存: {}m 已分配内存中的剩余空间: {}m 最大可用内存: {}m", logger.debug("计时结束: {} 用时: {} URI: {} 最大内存: {}m 已分配内存: {}m 已分配内存中的剩余空间: {}m 最大可用内存: {}m",
DateUtils.formatDate(endTime, "hh:mm:ss.SSS"), TimeUtils.formatDateAgo(endTime - beginTime), DateUtils.formatDate(endTime, "hh:mm:ss.SSS"), TimeUtils.formatDateAgo(executeTime),
request.getRequestURI(), Runtime.getRuntime().maxMemory()/1024/1024, Runtime.getRuntime().totalMemory()/1024/1024, Runtime.getRuntime().freeMemory()/1024/1024, request.getRequestURI(), Runtime.getRuntime().maxMemory()/1024/1024, Runtime.getRuntime().totalMemory()/1024/1024, Runtime.getRuntime().freeMemory()/1024/1024,
(Runtime.getRuntime().maxMemory()-Runtime.getRuntime().totalMemory()+Runtime.getRuntime().freeMemory())/1024/1024); (Runtime.getRuntime().maxMemory()-Runtime.getRuntime().totalMemory()+Runtime.getRuntime().freeMemory())/1024/1024);
startTimeThreadLocal.remove(); //用完之后销毁线程变量数据
} }
} }

View File

@@ -54,14 +54,15 @@ public class LogUtils {
/** /**
* 保存日志 * 保存日志
*/ */
public static void saveLog(HttpServletRequest request, String logTitle, String logType){ public static void saveLog(User user, HttpServletRequest request, String logTitle, String logType){
saveLog(UserUtils.getUser(), request, null, null, logTitle, logType); saveLog(user, request, null, null, logTitle, logType, 0);
} }
/** /**
* 保存日志 * 保存日志
* @param executeTime
*/ */
public static void saveLog(User user, HttpServletRequest request, Object handler, Exception ex, String logTitle, String logType){ public static void saveLog(User user, HttpServletRequest request, Object handler, Exception ex, String logTitle, String logType, long executeTime){
if (user == null || StringUtils.isBlank(user.getUserCode()) || request == null){ if (user == null || StringUtils.isBlank(user.getUserCode()) || request == null){
return; return;
} }
@@ -91,6 +92,7 @@ public class LogUtils {
log.setCorpCode(user.getCorpCode()); log.setCorpCode(user.getCorpCode());
log.setCorpName(user.getCorpName()); log.setCorpName(user.getCorpName());
} }
log.setExecuteTime(executeTime);
log.setCurrentUser(user); log.setCurrentUser(user);
log.preInsert(); log.preInsert();

View File

@@ -0,0 +1,7 @@
-- 日志表新增执行时间字段
ALTER TABLE [dbo].[${_prefix}sys_log] ADD [execute_time] decimal(19) NULL;
-- 更新模块数据库版本
update ${_prefix}sys_module set current_version = '4.0.1' where module_code = 'core';
commit;

View File

@@ -0,0 +1,8 @@
-- 日志表新增执行时间字段
ALTER TABLE ${_prefix}sys_log
ADD COLUMN `execute_time` decimal(19,0) NULL COMMENT '执行时间' AFTER `browser_name`;
-- 更新模块数据库版本
update ${_prefix}sys_module set current_version = '4.0.1' where module_code = 'core';
commit;

View File

@@ -0,0 +1,8 @@
-- 日志表新增执行时间字段
ALTER TABLE ${_prefix}sys_log ADD execute_time NUMBER(19) NULL;
COMMENT ON COLUMN ${_prefix}sys_log.execute_time IS '执行时间';
-- 更新模块数据库版本
update ${_prefix}sys_module set current_version = '4.0.1' where module_code = 'core';
commit;

View File

@@ -1,7 +0,0 @@
-- 更新模块数据库版本
update ${_prefix}sys_module set current_version = '4.0.xx' where module_code = 'core';
commit;

View File

@@ -0,0 +1,8 @@
-- 日志表新增执行时间字段
ALTER TABLE ${_prefix}sys_log ADD COLUMN execute_time decimal(19);
COMMENT ON COLUMN ${_prefix}sys_log.execute_time IS '执行时间';
-- 更新模块数据库版本
update ${_prefix}sys_module set current_version = '4.0.1' where module_code = 'core';
commit;

View File

@@ -162,6 +162,17 @@
</div> </div>
</div> </div>
</div> </div>
<div class="row">
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required hide">*</span> 响应时间:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<#form:input path="executeTimeFormat" maxlength="100" class="form-control "/>
</div>
</div>
</div>
</div>
</div> </div>
<div class="box-footer"> <div class="box-footer">
<div class="row"> <div class="row">

View File

@@ -109,7 +109,8 @@ $('#dataGrid').dataGrid({
{header:'操作时间', name:'createDate', index:'a.create_date', width:100, align:"center"}, {header:'操作时间', name:'createDate', index:'a.create_date', width:100, align:"center"},
{header:'客户端IP', name:'remoteAddr', index:'a.remote_addr', width:100, align:"center"}, {header:'客户端IP', name:'remoteAddr', index:'a.remote_addr', width:100, align:"center"},
{header:'设备名称', name:'deviceName', index:'a.device_name', width:100, align:"center"}, {header:'设备名称', name:'deviceName', index:'a.device_name', width:100, align:"center"},
{header:'浏览器名', name:'browserName', index:'a.browser_name', width:100, align:"center"}/* , {header:'浏览器名', name:'browserName', index:'a.browser_name', width:100, align:"center"},
{header:'响应时间', name:'executeTimeFormat', index:'a.execute_time', width:100, align:"center"}/* ,
{header:'操作', name:'actions', width:130, sortable:false, title:false, formatter: function(val, obj, row, act){ {header:'操作', name:'actions', width:130, sortable:false, title:false, formatter: function(val, obj, row, act){
var actions = []; var actions = [];
<% if(hasPermi('sys:log:edit')){ %> <% if(hasPermi('sys:log:edit')){ %>

View File

@@ -337,6 +337,7 @@ CREATE TABLE [js_sys_log]
[user_agent] nvarchar(500), [user_agent] nvarchar(500),
[device_name] varchar(100), [device_name] varchar(100),
[browser_name] varchar(100), [browser_name] varchar(100),
[execute_time] decimal(19),
[corp_code] varchar(64) DEFAULT '0' NOT NULL, [corp_code] varchar(64) DEFAULT '0' NOT NULL,
[corp_name] nvarchar(100) DEFAULT 'JeeSite' NOT NULL, [corp_name] nvarchar(100) DEFAULT 'JeeSite' NOT NULL,
PRIMARY KEY ([id]) PRIMARY KEY ([id])

View File

@@ -340,6 +340,7 @@ CREATE TABLE js_sys_log
user_agent varchar(500) COMMENT '用户代理', user_agent varchar(500) COMMENT '用户代理',
device_name varchar(100) COMMENT '设备名称/操作系统', device_name varchar(100) COMMENT '设备名称/操作系统',
browser_name varchar(100) COMMENT '浏览器名称', browser_name varchar(100) COMMENT '浏览器名称',
execute_time decimal(19) COMMENT '执行时间',
corp_code varchar(64) DEFAULT '0' NOT NULL COMMENT '归属集团Code', corp_code varchar(64) DEFAULT '0' NOT NULL COMMENT '归属集团Code',
corp_name varchar(100) DEFAULT 'JeeSite' NOT NULL COMMENT '归属集团Name', corp_name varchar(100) DEFAULT 'JeeSite' NOT NULL COMMENT '归属集团Name',
PRIMARY KEY (id) PRIMARY KEY (id)

View File

@@ -1,6 +1,5 @@
-- 打开 my.ini 给 [mysqld] 增加如下配置: set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
-- sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
create user 'jeesite'@'%' identified by 'jeesite'; create user 'jeesite'@'%' identified by 'jeesite';

View File

@@ -337,6 +337,7 @@ CREATE TABLE js_sys_log
user_agent nvarchar2(500), user_agent nvarchar2(500),
device_name varchar2(100), device_name varchar2(100),
browser_name varchar2(100), browser_name varchar2(100),
execute_time number(19),
corp_code varchar2(64) DEFAULT '0' NOT NULL, corp_code varchar2(64) DEFAULT '0' NOT NULL,
corp_name nvarchar2(100) DEFAULT 'JeeSite' NOT NULL, corp_name nvarchar2(100) DEFAULT 'JeeSite' NOT NULL,
PRIMARY KEY (id) PRIMARY KEY (id)
@@ -1081,6 +1082,7 @@ COMMENT ON COLUMN js_sys_log.exception_info IS '异常信息';
COMMENT ON COLUMN js_sys_log.user_agent IS '用户代理'; COMMENT ON COLUMN js_sys_log.user_agent IS '用户代理';
COMMENT ON COLUMN js_sys_log.device_name IS '设备名称/操作系统'; COMMENT ON COLUMN js_sys_log.device_name IS '设备名称/操作系统';
COMMENT ON COLUMN js_sys_log.browser_name IS '浏览器名称'; COMMENT ON COLUMN js_sys_log.browser_name IS '浏览器名称';
COMMENT ON COLUMN js_sys_log.execute_time IS '执行时间';
COMMENT ON COLUMN js_sys_log.corp_code IS '归属集团Code'; COMMENT ON COLUMN js_sys_log.corp_code IS '归属集团Code';
COMMENT ON COLUMN js_sys_log.corp_name IS '归属集团Name'; COMMENT ON COLUMN js_sys_log.corp_name IS '归属集团Name';
COMMENT ON TABLE js_sys_menu IS '菜单表'; COMMENT ON TABLE js_sys_menu IS '菜单表';

View File

@@ -337,6 +337,7 @@ CREATE TABLE js_sys_log
user_agent varchar(500), user_agent varchar(500),
device_name varchar(100), device_name varchar(100),
browser_name varchar(100), browser_name varchar(100),
execute_time decimal(19),
corp_code varchar(64) DEFAULT '0' NOT NULL, corp_code varchar(64) DEFAULT '0' NOT NULL,
corp_name varchar(100) DEFAULT 'JeeSite' NOT NULL, corp_name varchar(100) DEFAULT 'JeeSite' NOT NULL,
PRIMARY KEY (id) PRIMARY KEY (id)
@@ -1081,6 +1082,7 @@ COMMENT ON COLUMN js_sys_log.exception_info IS '异常信息';
COMMENT ON COLUMN js_sys_log.user_agent IS '用户代理'; COMMENT ON COLUMN js_sys_log.user_agent IS '用户代理';
COMMENT ON COLUMN js_sys_log.device_name IS '设备名称/操作系统'; COMMENT ON COLUMN js_sys_log.device_name IS '设备名称/操作系统';
COMMENT ON COLUMN js_sys_log.browser_name IS '浏览器名称'; COMMENT ON COLUMN js_sys_log.browser_name IS '浏览器名称';
COMMENT ON COLUMN js_sys_log.execute_time IS '执行时间';
COMMENT ON COLUMN js_sys_log.corp_code IS '归属集团Code'; COMMENT ON COLUMN js_sys_log.corp_code IS '归属集团Code';
COMMENT ON COLUMN js_sys_log.corp_name IS '归属集团Name'; COMMENT ON COLUMN js_sys_log.corp_name IS '归属集团Name';
COMMENT ON TABLE js_sys_menu IS '菜单表'; COMMENT ON TABLE js_sys_menu IS '菜单表';