package com.vci.web.controller; import com.vci.corba.common.PLException; import com.vci.dto.LogQueryCriteriaDTO; import com.vci.starter.web.annotation.log.VciBusinessLog; import com.vci.starter.web.exception.VciBaseException; import com.vci.starter.web.pagemodel.BaseResult; import com.vci.starter.web.util.ControllerUtil; import com.vci.starter.web.util.VciBaseUtil; import com.vci.web.service.LogBasicServiceI; import com.vci.starter.web.util.Lcm.Func; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Date; /** * 平台日志控制器 * @author yuxc * @date 2024-9-11 */ @Controller @RequestMapping("/loginBasicController") @VciBusinessLog(modelName="日志服务") public class LogBasicController { /** * 登录服务 */ @Autowired private LogBasicServiceI logBasicServiceI; /** * 日志 */ private Logger logger = LoggerFactory.getLogger(getClass()); /** * 获取日期保存期限下拉列表框 * @return 查询结果 */ @VciBusinessLog(operateName="日期保存期限") @GetMapping(value = "/getPeroid") @ResponseBody public BaseResult getPeroid(){ try { return logBasicServiceI.getPeroid(); }catch (Exception e){ e.printStackTrace(); String errorMsg = "查询出现错误,原因:"+ VciBaseUtil.getExceptionMessage(e); logger.error(errorMsg); throw new VciBaseException(errorMsg); } } /** * 保存期限设置 * period 期限编码 * @return 保存结果 */ @VciBusinessLog(operateName="保存期限设置") @PostMapping(value = "/savePeriod") @ResponseBody public BaseResult savePeriod(String period){ try { return logBasicServiceI.savePeriod(period); }catch (Exception e){ e.printStackTrace(); String errorMsg = "保存出现错误,原因:"+ VciBaseUtil.getExceptionMessage(e); logger.error(errorMsg); throw new VciBaseException(errorMsg); } } /** * 删除日志 * period 期限编码 * @return 保存结果 */ @VciBusinessLog(operateName="删除日志") @DeleteMapping(value = "/deleteLog") @ResponseBody public BaseResult deleteLog(String deleteDate){ try { return logBasicServiceI.deleteLog(deleteDate); }catch (Exception e){ e.printStackTrace(); String errorMsg = "删除出现错误,原因:"+ VciBaseUtil.getExceptionMessage(e); logger.error(errorMsg); throw new VciBaseException(errorMsg); } } /** * 查询日志 * @param dto 查询条件传输对象 * @return 查询数据 * @throws PLException */ @VciBusinessLog(operateName="日志查询") @PostMapping(value = "/getLogListByContion") @ResponseBody public BaseResult getLogListByContion(@RequestBody LogQueryCriteriaDTO dto){ try { return logBasicServiceI.getLogListByContion(dto); }catch (Exception e){ e.printStackTrace(); String errorMsg = "查询日志出现错误,原因:"+ VciBaseUtil.getExceptionMessage(e); logger.error(errorMsg); throw new VciBaseException(errorMsg); } } /** * 操作用户获取 */ @VciBusinessLog(operateName="获取操作用户") @GetMapping(value = "/getOperatingUsers") @ResponseBody public BaseResult getOperatingUsers(){ try { return logBasicServiceI.getOperatingUsers(); }catch (Exception e){ e.printStackTrace(); String errorMsg = "查询日志出现错误,原因:"+ VciBaseUtil.getExceptionMessage(e); logger.error(errorMsg); throw new VciBaseException(errorMsg); } } /** * 导出日志 * @param dto 导出查询传参数对象 * @param response */ @PostMapping( "/exportLogs") @VciBusinessLog(operateName = "导出日志") public void exportLogs(@RequestBody LogQueryCriteriaDTO dto, HttpServletResponse response){ try { String excelPath = logBasicServiceI.exportLogs(dto); ControllerUtil.writeFileToResponse(response,excelPath); } catch (Exception e) { String msg = "导出日志时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e); try { //出错时 e.printStackTrace(); ControllerUtil.writeDataToResponse(response,"error_" + Func.format(new Date(),"yyyy-MM-dd HHmmss.sss") + ".txt", StringUtils.isNotBlank(msg)?msg.getBytes():new byte[0],null); } catch (IOException ioException) { ioException.printStackTrace(); } } } }