1.js
$(function () {
var defaultColunms = OptLog.initColumn();
var table = new BSTable(OptLog.id, "/log/list", defaultColunms);
table.setPaginationType("server");
table.setQueryParams(OptLog.formParams());
OptLog.table = table.init();
});
2.controller
@RequestMapping("/list")
@Permission(Const.ADMIN_NAME)
@ResponseBody
public Object list(@RequestParam(required = false) String beginTime, @RequestParam(required = false) String endTime, @RequestParam(required = false) String logName, @RequestParam(required = false) Integer logType) {
Page<OperationLog> page = new PageFactory<OperationLog>().defaultPage();
List<Map<String, Object>> result = operationLogService.getOperationLogs(page, beginTime, endTime, logName, BizLogType.valueOf(logType), page.getOrderByField(), page.isAsc());
page.setRecords((List<OperationLog>) new LogWarpper(result).warp());
return super.packForBT(page);
}
3.service
public interface IOperationLogService extends IService<OperationLog> {
/**
* 获取操作日志列表
*/
List<Map<String, Object>> getOperationLogs(Page<OperationLog> page, String beginTime, String endTime, String logName, String s, String orderByField, boolean asc);
}
4.impl
@Service
public class OperationLogServiceImpl extends ServiceImpl<OperationLogMapper, OperationLog> implements IOperationLogService {
@Override
public List<Map<String, Object>> getOperationLogs(Page<OperationLog> page, String beginTime, String endTime, String logName, String s, String orderByField, boolean asc) {
return this.baseMapper.getOperationLogs(page, beginTime, endTime, logName, s, orderByField, asc);
}
}
5.mapper
public interface OperationLogMapper extends BaseMapper<OperationLog> {
/**
* 获取操作日志
*/
List<Map<String, Object>> getOperationLogs(@Param("page") Page<OperationLog> page, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("logName") String logName, @Param("logType") String logType, @Param("orderByField") String orderByField, @Param("isAsc") boolean isAsc);
}
6.,xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.stylefeng.guns.modular.system.dao.OperationLogMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.OperationLog">
<id column="id" property="id" />
<result column="logtype" property="logtype" />
<result column="logname" property="logname" />
<result column="userid" property="userid" />
<result column="classname" property="classname" />
<result column="method" property="method" />
<result column="createtime" property="createtime" />
<result column="succeed" property="succeed" />
<result column="message" property="message" />
</resultMap>
<select id="getOperationLogs" resultType="map">
select * from sys_operation_log where 1 = 1
<if test="beginTime != null and beginTime !='' and endTime != null and endTime != ''">
and (createTime between CONCAT(#{beginTime},' 00:00:00') and CONCAT(#{endTime},' 23:59:59'))
</if>
<if test="logName != null and logName !=''">
and logname like CONCAT('%',#{logName},'%')
</if>
<if test="logType != null and logType !=''">
and logtype like CONCAT('%',#{logType},'%')
</if>
<choose>
<when test="orderByField != null and orderByField !=''">
<choose>
<when test="isAsc == true">
order by ${orderByField} ASC
</when>
<otherwise>
order by ${orderByField} DESC
</otherwise>
</choose>
</when>
<otherwise>
order by createtime DESC
</otherwise>
</choose>
</select>
</mapper>
实体类
/**
* <p>
* 操作日志
* </p>
*
* @author stylefeng
* @since 2017-07-11
*/
@TableName("sys_operation_log")
public class OperationLog extends Model<OperationLog> {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value="id", type= IdType.AUTO)
private Integer id;
/**
* 日志类型
*/
private String logtype;
/**
* 日志名称
*/
private String logname;
/**
* 用户id
*/
private Integer userid;
/**
* 类名称
*/
private String classname;
/**
* 方法名称
*/
private String method;
/**
* 创建时间
*/
private Date createtime;
/**
* 是否成功
*/
private String succeed;
/**
* 备注
*/
private String message;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getLogtype() {
return logtype;
}
public void setLogtype(String logtype) {
this.logtype = logtype;
}
public String getLogname() {
return logname;
}
public void setLogname(String logname) {
this.logname = logname;
}
public Integer getUserid() {
return userid;
}
public void setUserid(Integer userid) {
this.userid = userid;
}
public String getClassname() {
return classname;
}
public void setClassname(String classname) {
this.classname = classname;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public Date getCreatetime() {
return createtime;
}
public void setCreatetime(Date createtime) {
this.createtime = createtime;
}
public String getSucceed() {
return succeed;
}
public void setSucceed(String succeed) {
this.succeed = succeed;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
@Override
protected Serializable pkVal() {
return this.id;
}
@Override
public String toString() {
return "OperationLog{" +
"id=" + id +
", logtype=" + logtype +
", logname=" + logname +
", userid=" + userid +
", classname=" + classname +
", method=" + method +
", createtime=" + createtime +
", succeed=" + succeed +
", message=" + message +
"}";
}
}
PageFactory
package com.stylefeng.guns.core.common.constant.factory;
import com.baomidou.mybatisplus.plugins.Page;
import com.stylefeng.guns.core.common.constant.state.Order;
import com.stylefeng.guns.core.support.HttpKit;
import com.stylefeng.guns.core.util.ToolUtil;
import javax.servlet.http.HttpServletRequest;
/**
* BootStrap Table默认的分页参数创建
*
* @author fengshuonan
* @date 2017-04-05 22:25
*/
public class PageFactory<T> {
public Page<T> defaultPage() {
HttpServletRequest request = HttpKit.getRequest();
int limit = Integer.valueOf(request.getParameter("limit")); //每页多少条数据
int offset = Integer.valueOf(request.getParameter("offset")); //每页的偏移量(本页当前有多少条)
String sort = request.getParameter("sort"); //排序字段名称
String order = request.getParameter("order"); //asc或desc(升序或降序)
if (ToolUtil.isEmpty(sort)) {
Page<T> page = new Page<>((offset / limit + 1), limit);
page.setOpenSort(false);
return page;
} else {
Page<T> page = new Page<>((offset / limit + 1), limit, sort);
if (Order.ASC.getDes().equals(order)) {
page.setAsc(true);
} else {
page.setAsc(false);
}
return page;
}
}
}