定义操作日志实体
public class SystemOperationLog extends BaseEntity {
/**
*
*/
private static final long serialVersionUID = 8596392701331679567L;
/**
* 操作人
*/
private String operator;
/**
* 日志类型
*/
private String logType;
/**
* 创建时间
*/
private Date createTime;
/**
* 日志详情
*/
private String logDetail;
public String getOperator() {
return operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
public String getLogType() {
return logType;
}
public void setLogType(String logType) {
this.logType = logType;
}
public Date getCreateTime() {
if(createTime!=null){
return (Date)createTime.clone();
}
return null;
}
public void setCreateTime(Date createTime) {
if(createTime!=null){
this.createTime = (Date)createTime.clone();
}else{
this.createTime = null;
}
}
public String getLogDetail() {
return logDetail;
}
public void setLogDetail(String logDetail) {
this.logDetail = logDetail;
}
}
定义日志格式和类别的常量类
public interface LogMessageConstant {
//******************begin****操作日志对应类型*******************************
/**
* 客户开通
*/
public static final String LogType_customer_open = "0";
/**
* 服务开通
*/
public static final String LogType_service_open = "1";
/**
* 订购关系变更
*/
public static final String LogType_subscriber_order_change = "2";
/**
* 账户充值
*/
public static final String LogType_account_recharge = "3";
/**
* 产品订购
*/
public static final String LogType_order_product = "4";
/**
* 用户注销
*/
public static final String LogType_user_termination = "5";
//**************************操作日志详情信息***************************
/**
* 服务开通详细信息
*/
public static final String MSG_Service_open = "操作员 {0} 客户 {1} 开通服务";
/**
* 客户开通详情
*/
public static final String MSG_Customer_open= "操作员 {0} 为客户 {1} 开户";
/**
* 账户充值
*/
public static final String MSG_Account_recharge="操作员 {0} 为客户 {1} 充值 {2} 元";
/**
* 用户订购套餐
*/
public static final String MSG_order_main="操作员 {0} 为客户 {1} 订购 {2} 产品";
/**
* 用户修改订购套餐
*/
public static final String MSG_order_update="操作员 {0} 为客户 {1} 修改订购 {2} 产品";
/**
* 用户
*/
public static final String MSG_order_cancel="操作员 {0} 为客户 {1} 取消产品 {2} 订购";
/**
* 用户注销
*/
public static final String MSG_user_termination="操作员 {0} 为客户 {1} 注销 {2} 用户";
}
业务接口方法
/**
* @Title: listOperLog
* @Description: 根据条件获取操作日志 分页记录信息
* @param @param pageParam
* @param @param params
* @param @return
* @return PageBean<SystemOperationLog>
*/
public PageBean<SystemOperationLog> listOperLog(PageParam pageParam,Map<String,Object> params);
/**
* @Title: saveLog
* @Description: 保存系统操作日志
* @param @param log
* @param @param params
* @param @return
* @return boolean
*/
public boolean saveOperationLog(SystemOperationLog log, Map<Integer,String> params);
业务接口实现
public boolean saveOperationLog(SystemOperationLog log, Map<Integer,String> params) {
String logDetail = log.getLogDetail();
if(StringUtil.isNotNull(logDetail)){
for(int i=0;i<params.size();i++){
String value = params.get(Integer.valueOf(i));
logDetail = logDetail.replace("{"+i+"}", value);
}
log.setLogDetail(logDetail);
insert(log);
return true;
}
return false;
}
使用方式
Map<Integer,String> pm = new HashMap<>();
pm.put(0,customerInfo.getCreateOperator());
pm.put(1,customerInfo.getCustomerName());
SystemOperationLog log = new SystemOperationLog();
log.setLogType(LogMessageConstant.LogType_customer_open);
log.setCreateTime(UTCTimeUtil.getLocalTimeFromUTC(sdf.format(customerInfo.getCreateTime())));
log.setOperator(customerInfo.getCreateOperator());
log.setLogDetail(LogMessageConstant.MSG_Customer_open);
systemOperationLogService.saveOperationLog(log, pm);
使用总结
对于操作日志这种数据,可以保存在mysql,也可以保存在mongodb数据库中,鉴于此种业务只需要做保存和查询功能,所以一般都存储在mongodb数据库中。只要操作日志的存储过程开发完毕,当有新的类型操作日志时,只需要增加对应的日志类型和详情信息的格式定义即可。例如:操作员 {0} 为客户 {1} 注销 {2} 用户
学习Java的同学注意了!!!
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:543120397 我们一起学Java!