All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.basics.controller.LogController Maven / Gradle / Ivy

package cn.basics.controller;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import cn.basics.authority.interfaces.Authority;
import cn.basics.service.MyBaseService;
import cn.basics.util.DataUtil;
import cn.basics.util.ReturnUtil;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

@Controller
@RequestMapping("/log")
public class LogController {
	
	@Resource(name="myBaseServiceImpl")
	MyBaseService myBaseService;
	
	/**获取日志*/
	@Authority(addLog=false,explain="获取日志")
	@RequestMapping("/getLog")
	@ResponseBody
	public ReturnUtil getLog(HttpServletRequest request,HttpServletResponse response){
		JSONObject json = DataUtil.requestToJson(request);
		ReturnUtil returnUtil = myBaseService.get(null,json, "systemMapper.getSystemLog");
		return returnUtil;
	}
	/**获取日志列表*/
	@Authority(addLog=false,explain="获取日志列表")
	@RequestMapping("/getLogList")
	@ResponseBody
	public ReturnUtil getLogList(HttpServletRequest request,HttpServletResponse response){
		return myBaseService.getList(null,DataUtil.requestToJson(request), "systemMapper.getSystemLogList");
	}
	/**获取日志列表并跳转页面*/
	@Authority(addLog=false,explain="获取日志列表并跳转页面")
	@RequestMapping("/getLogListToPage")
	public String getLogListToPage(HttpServletRequest request,HttpServletResponse response){
		request.setAttribute("logs", myBaseService.getList(null,DataUtil.requestToJson(request), "systemMapper.getSystemLogList"));
		return "log";
	}
	/**删除日志*/
	@Authority(addLog=false,explain="删除日志")
	@RequestMapping("/delSystemLog")
	@ResponseBody
	public ReturnUtil delSystemLog(HttpServletRequest request,HttpServletResponse response){
		JSONObject json = DataUtil.requestToJson(request,"id");
		if(json.get("id")==null){
			return ReturnUtil.init().sparameterLose();
		}
		json.put("statu", -1);
		return myBaseService.upData(null,json, "systemMapper.upSystemLog");
	}
	/**彻底删除日志*/
	@Authority(addLog=false,explain="彻底删除日志")
	@RequestMapping("/delSystemLogThorough")
	@ResponseBody
	public ReturnUtil delSystemLogThorough(HttpServletRequest request,HttpServletResponse response){
		JSONObject json = DataUtil.requestToJson(request,"id");
		if(json.get("id")==null){
			return ReturnUtil.init().sparameterLose();
		}
		return myBaseService.del(null,json, "systemMapper.delSystemLog");
	}
	/**根据日志恢复数据*/
	@Authority(addLog=false,explain="根据日志恢复数据")
	@RequestMapping("/recoveryData")
	@ResponseBody
	public ReturnUtil recoveryData(HttpServletRequest request,HttpServletResponse response){
		ReturnUtil returnUtil = ReturnUtil.init();
		JSONObject json = DataUtil.requestToJson(request,"id");
		if(json.get("id")!=null){
			returnUtil = myBaseService.get(null,json, "systemMapper.getSystemLog");
			if(returnUtil.getCode()==ReturnUtil.SUCCESS_CODE){
				json = returnUtil.gDataOne(JSONObject.class);
				JSONArray operationLogs = json.getJSONArray("operationLogs");
				if(operationLogs.size()>0){
					for (int i = operationLogs.size()-1; i >= 0; i--) {
						JSONObject operationLog = operationLogs.getJSONObject(i);
						JSONArray contents = JSONArray.parseArray(operationLog.getString("content"));
						String sql = "";
						switch (operationLog.getInteger("operation_type")) {
						case 0://增
							String where = "";
							for (int j = 0,jlength=contents.size(); j < jlength; j++) {
								JSONObject content = contents.getJSONObject(j);
								where += " and `"+content.getString("key")+"`="+content.getString("value");
							}
							where = where.substring(4);
							sql = "delete from "+operationLog.getString("table_name")+" where "+where;
							break;
						case 1://删  -- 新增
							String values = "(";
							for (String key : contents.getJSONObject(0).keySet()) {
								values += "`"+key+"`,";
							}
							values = values.substring(0,values.length()-1);
							values += ") values ";
							for (int j = 0,jlength=contents.size(); j < jlength; j++) {
								values += "(";
								JSONObject content = contents.getJSONObject(j);
								for (String key : content.keySet()) {
									String value = content.getString(key);
									switch (value) {
									case "true":value = "1";break;
									case "false":value = "0";break;
									}
									values += "'"+value+"',";
								}
								values = values.substring(0,values.length()-1);
								values += "),";
							}
							values = values.substring(0,values.length()-1);
							sql = "insert into "+operationLog.getString("table_name")+" "+values;
							break;
						case 2://改
							String set = "";
							for (int j = 0,jlength=contents.size(); j < jlength; j++) {
								JSONObject content = contents.getJSONObject(j);
								set += "`"+content.getString("key")+"`='"+content.getString("used_value")+"',";
							}
							set = set.substring(0,set.length()-1);
							sql = "update "+operationLog.getString("table_name")+" set " +set+ " where "+operationLog.getString("condition");
							break;
						}
						JSONObject sqlJson = new JSONObject();
						sqlJson.put("sql", sql);
						returnUtil = myBaseService.upData(null,sqlJson, "systemMapper.implementBySql");
						if(returnUtil.getCode()!=ReturnUtil.SUCCESS_CODE || "false".equals(returnUtil.getResult_data().toString())){
							returnUtil.addError("恢复数据失败!当前数据可能已经变更!");
							break;
						}
					}
					if(returnUtil.getCode()==ReturnUtil.SUCCESS_CODE && "true".equals(returnUtil.getResult_data().toString())){
						json = DataUtil.requestToJson(request,"id");
						json.put("statu", 2);
						returnUtil = myBaseService.upData(null,json, "systemMapper.upSystemLog");
						if(returnUtil.getCode()!=ReturnUtil.SUCCESS_CODE){
							returnUtil.addError("恢复数据失败!修改日志状态失败!");
						}
					}
				}else{
					returnUtil.addError("恢复数据失败!未获取到操作日志!");
				}
			}else{
				returnUtil.addError("获取日志信息失败!请检查日志是否已经被删除或刷新页面后重试!");
			}
		}else{
			returnUtil.sparameterLose();
		}
		return returnUtil;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy