SysLogController.java 9.82 KB
package cn.wisenergy.chnmuseum.party.web.controller;

import cn.wisenergy.chnmuseum.party.common.log.OperType;
import cn.wisenergy.chnmuseum.party.common.util.DateUtil80;
import cn.wisenergy.chnmuseum.party.common.util.NetWorkUtil;
import cn.wisenergy.chnmuseum.party.common.vo.GenericPageParam;
import cn.wisenergy.chnmuseum.party.model.RunLog;
import cn.wisenergy.chnmuseum.party.model.SysLog;
import cn.wisenergy.chnmuseum.party.model.TOperationLog;
import cn.wisenergy.chnmuseum.party.model.TUser;
import cn.wisenergy.chnmuseum.party.service.TOperationLogService;
import cn.wisenergy.chnmuseum.party.service.impl.RunLogServiceImpl;
import cn.wisenergy.chnmuseum.party.service.impl.SysLogServiceImpl;
import cn.wisenergy.chnmuseum.party.web.controller.base.BaseController;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Map;

@RestController
@RequestMapping("/sysLog")
@Api(tags = {"日志管理接口"})
public class SysLogController extends BaseController {

    @Resource
    private SysLogServiceImpl sysLogService;

    @Resource
    private RunLogServiceImpl runLogService;

    @Resource
    private TOperationLogService operationLogService;

    /**
     * 插入系统日志表
     */
    @ApiOperation(value = "插入系统日志", notes = "插入系统日志")
    @PostMapping(value = "/insertSysLog")
    public Boolean insertSysLog(String operationContent, TUser user) {
        SysLog sysLog = new SysLog();
        //日志时间
        sysLog.setOperationTime(DateUtil80.getDateTimeOfTimestamp(System.currentTimeMillis()));
        //获取登录IP并插入
        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = attributes.getRequest();
        String operationIp = NetWorkUtil.getLoggableAddress(request);
        sysLog.setOperationIp(operationIp);
        if (user.getUserName() == null) {
            //操作者用户名
            sysLog.setOperator(this.getUserName());
        } else {
            sysLog.setOperator(user.getUserName());
        }
        if (user.getRoleList().contains("1")) {
            sysLog.setType(1);
        } else {
            sysLog.setType(2);
        }
        //日志内容
        sysLog.setOperationContent(operationContent);
        sysLog.setOperationObject("登录管理");
        sysLog.setOperationType("登录");
        Boolean ret = this.sysLogService.save(sysLog);
        return ret;
    }

    /**
     * 查询系统日志
     */
    @ApiOperation(value = "查询系统日志", notes = "查询系统日志")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "nameOrCode", value = "名称或编码", paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "startDate", value = "创建时间-开始", paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "endDate", value = "创建时间-结束", paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "type", value = "日志类型", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "operationType", value = "操作类型", paramType = "query", dataType = "String")
    })
    @GetMapping(value = "/querySysLogList")
    @RequiresAuthentication  //@RequiresPermissions("/sysLog/querySysLogList")
    public Map<String, Object> querySysLogList(GenericPageParam genericPageParam) {
        try {
            LambdaQueryWrapper<SysLog> queryWrapper = new LambdaQueryWrapper<>();
            // 对名称或编码模糊查询
            if (StringUtils.isNotBlank(genericPageParam.getNameOrCode())) {
                queryWrapper.like(SysLog::getOperator, genericPageParam.getNameOrCode());
            }
            if (StringUtils.isNotBlank(genericPageParam.getType())) {
                queryWrapper.eq(SysLog::getType, genericPageParam.getType());
            }
            if (StringUtils.isNotBlank(genericPageParam.getOperationType())) {
                queryWrapper.eq(SysLog::getOperationType,genericPageParam.getOperationType());
            }
            // 根据创建时间区间检索
            if (genericPageParam.getStartDate() != null && genericPageParam.getEndDate() != null) {
                queryWrapper.ge(SysLog::getOperationTime, genericPageParam.getStartDate().atTime(0, 0, 0))
                        .le(SysLog::getOperationTime, genericPageParam.getEndDate().atTime(23, 59, 59));
            }
            // 设置排序规则
            queryWrapper.orderByDesc(SysLog::getOperationTime);
            Page<SysLog> page = sysLogService.page(getPage(), queryWrapper);
            return getResult(page);
        } catch (Exception e) {
            logger.error("查询系统日志列表出错!", e);
        }
        return getFailResult();
    }

    /**
     * 插入机顶盒日志表
     */
    @ApiOperation(value = "插入机顶盒日志表", notes = "插入机顶盒日志表")
    @PostMapping(value = "/insertRunLog")
    public Boolean insertRunLog(RunLog runLog) {
        boolean b = false;
        try {
            b = runLogService.insertRunLog(runLog);
            return b;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return b;
    }

    /**
     * 插入运维日志表
     */
    @ApiOperation(value = "插入运维日志表", notes = "插入运维日志表")
    @PostMapping(value = "/insertOperationLog")
    public Boolean insertOperationLog(TOperationLog tOperationLog) {
        tOperationLog.setCreateTime(LocalDateTime.now());
        boolean b = false;
        try {
            b = operationLogService.save(tOperationLog);
            return b;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return b;
    }

    /**
     * 查询运维日志
     */
    @ApiOperation(value = "查询运维日志", notes = "查询运维日志")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "userName", value = "运维账号", paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "startDate", value = "创建时间-开始", paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "endDate", value = "创建时间-结束", paramType = "query", dataType = "String")
    })
    @GetMapping(value = "/OperationLog")
    @RequiresAuthentication  //@RequiresPermissions("/sysLog/OperationLog")
    public Map<String, Object> OperationLog(TOperationLog operationLog) {
        try {
            Page<TOperationLog> page = operationLogService.pageList(getPage(), operationLog);
            return getResult(page);
        } catch (Exception e) {
            logger.error("查询系统日志列表出错!", e);
        }
        return getFailResult();
    }

    /**
     * 查询机顶盒日志
     */
    @ApiOperation(value = "查询机顶盒日志", notes = "查询机顶盒日志")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "nameOrCode", value = "名称或编码", paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "startDate", value = "创建时间-开始", paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "endDate", value = "创建时间-结束", paramType = "query", dataType = "String")
    })
    @GetMapping(value = "/runLogList")
    @RequiresAuthentication  //@RequiresPermissions("/sysLog/runLogList")
    public Map<String, Object> runLogList(RunLog runLog) {
        try {
            Page<RunLog> page = runLogService.pageList(getPage(), runLog);
            return getResult(page);
        } catch (Exception e) {
            logger.error("查询系统日志列表出错!", e);
        }
        return getFailResult();
    }


    /**
     * 返回日志操作类型
     * @param
     * @return
     */
    @PostMapping("/getOperationType")
    @RequiresAuthentication  //@RequiresPermissions("/sysLog/getOperationType")
    @ApiOperation(value = "返回日志操作类型", notes = "返回日志操作类型")
    public Map<String, Object> getTInteractionPageList() {
        OperType[] values = OperType.values();
        ArrayList<String> list = new ArrayList<>();
        for (OperType value : values) {
            list.add(value.getMsg());
        }
        return getResult(list);
    }

}