记录操作日志
平台在门户应用entry中提供了日志记录的表和接口,有记录操作日志和记录操作调用次数两个表
记录操作日志表结构如下:
table = "kong_operation_log",
fields = {
fid varchar(36) 主键
username varchar(254) NULL 用户名
user_code varchar(254) NULL 登录名
org_code varchar(254) NULL 部门标识
org_name varchar(254) NULL 部门名称
log_type varchar(254) NULL 日志类型
log_group varchar(254) NULL 日志组
log_key varchar(254) NULL 日志键值
create_at datetime NULL 日志时间
ip_address varchar(254) NULL 访问者地址
ip_location varchar(254) NULL 访问者地点
content mediumtext NULL 请求内容
status_code int(11) NULL 返回值
data1 varchar(254) NULL 扩展字段1
data2 varchar(254) NULL 扩展字段2
data3 varchar(254) NULL 扩展字段3
data4 varchar(254) NULL 扩展字段4
data5 varchar(254) NULL 扩展字段5
data6 varchar(254) NULL 扩展字段6
data7 int(11) NULL 扩展字段7
data8 int(11) NULL 扩展字段8
ext mediumtext NULL 额外数据
}
记录操作的调用次数的表结构如下:
table = "kong_operation_count,
fields = {
fid varchar(36) 主键
log_type varchar(254) NULL 日志类型
log_group varchar(254) NULL 日志组
log_key varchar(254) NULL 日志键值
update_at datetime NULL 日志时间
log_count int(11) NULL 调用次数
data1 varchar(254) NULL 扩展字段1
data2 varchar(254) NULL 扩展字段2
data3 varchar(254) NULL 扩展字段3
data4 varchar(254) NULL 扩展字段4
data5 varchar(254) NULL 扩展字段5
data6 varchar(254) NULL 扩展字段6
data7 int(11) NULL 扩展字段7
data8 int(11) NULL 扩展字段8
ext mediumtext NULL 额外数据
}
调用的接口为/operation_log/log是POST请求,参数如下
{
logtype:"log,count", //值为log是记录操作,值为count是记录操作调用次数
log_type:menu, //自己定义需要的类型,如save、new等,如:menu是平台记录移动端常用功能设置的类型,menu_pc是平台记录桌面端常用功能设置的类型
log_group:xxx, //自定义分组的数据,如按用户分可以设置为用的userName,按部门可以记录部门相关的值等
log_key:xxx //日志键值
ext:xxx //自己定义要存储的日志信息
}
具体调用参考如下:
1.记录操作调用次数,如门户中打开功能时调用记录次数的接口,每次打开功能记录数会加1,通过次数来实现的常用功能列表
$.ajax({
"url": "/entry/operation_log/log",
"method": "POST",
"timeout": 0,
"async":true,
"gloable":false,
"headers": {
"Content-Type": "application/json"
},
"data": JSON.stringify({
"logtype":"count",//记录操作调用次数
"log_type":"menu_pc",
"log_group":UAA.getCurrentUser().userName,
"log_key":itemInfo.originUrl,//菜单url作为日志键值存储
"ext":JSON.stringify(itemInfo)
})
});
2.记录操作日志,如下在出库的时候让日志中记录一些出库信息
public String outstock(String orderID) throws Exception {
// 请添加你的业务代码
//获取当前的用户信息
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
.getRequest();
RequestContext rc = ContextUtil.getRequestContext(request);
UserInfo userinfo = rc.getUserInfo();
//使用分布式事务
com.justep.util.db.GlobalTransaction transInfo = null;
try {
transInfo = com.justep.util.db.TransactionUtil.beginTrans();
// 查询订单从表
List<OrderD> list = orderDCustomMapper.findListByMaster(orderID);
// 遍历
for (OrderD orderD : list) {
String productID = orderD.getProductID();
Integer num = orderD.getNum();
// 更新库存
productCustomMapper.updateStockByOrerID(orderID, -1 * num);
//拼接操作日志记录内容
JSONObject params = new JSONObject();
params.put("logtype", "log");
params.put("log_type", "updateStock");
params.put("log_group", userinfo.getCode());
params.put("log_key", orderID + "-" + productID);
JSONObject exeParams = new JSONObject();
exeParams.put("username", userinfo.getName());
exeParams.put("content", "出库数量为" + num);
params.put("ext", exeParams.toJSONString());
ServiceUtil.post(SpringWebUtil.getRequest(), "entry", "/operation_log/log", params,Integer.class);//调用记录日志的请求
}
transInfo.commit();
} catch (Exception e) {
if (transInfo != null) {
transInfo.rollback();
}
throw e;
} finally {
if (transInfo != null) {
transInfo.close();
}
}
return "OK";
}