RUOYI 增加日志类型,如查询

在调用接口的时候在接口上方使用

@Log注解

    /**
     * 查询系统参数列表
     */
    @PreAuthorize("@ss.hasPermi('system:parameter:list')")
    @Log(title = "系统参数", businessType = BusinessType.QUERY)
    @GetMapping("/list")
    public Result<?> queryPageList(SysParameter sysParameter,
            @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
            @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
            HttpServletRequest req) {
        QueryWrapper<SysParameter> queryWrapper = QueryGenerator.initQueryWrapper(sysParameter, req.getParameterMap());
        Page<SysParameter> page = new Page<SysParameter>(pageNo, pageSize);
        IPage<SysParameter> sysParameterList = sysParameterService.page(page, queryWrapper);
        return Result.ok(sysParameterList);
    }

 通过跳转找到@Log注解。

/**
 * 自定义操作日志记录注解
 * 
 * @author ruoyi
 *
 */
@Target({ ElementType.PARAMETER, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Log
{
    /**
     * 模块
     */
    public String title() default "";

    /**
     * 功能
     */
    public BusinessType businessType() default BusinessType.OTHER;

    /**
     * 操作人类别
     */
    public OperatorType operatorType() default OperatorType.MANAGE;

    /**
     * 是否保存请求的参数
     */
    public boolean isSaveRequestData() default true;

    /**
     * 是否保存响应的参数
     */
    public boolean isSaveResponseData() default true;

    /**
     * 排除指定的请求参数
     */
    public String[] excludeParamNames() default {};
}

通过注解找到其切片代码,如果使用IDEA可以双击shift键查询。
一般注解实现类的命名都会在原类后面加上Aspect
如Log则找到LogAspect
 

@Aspect
@Component
public class LogAspect

找到以下代码:
 

    /**
     * 获取注解中对方法的描述信息 用于Controller层注解
     * 
     * @param log 日志
     * @param operLog 操作日志
     * @throws Exception
     */
    public void getControllerMethodDescription(JoinPoint joinPoint, Log log, SysOperLog operLog, Object jsonResult) throws Exception
    {
        // 设置action动作
        operLog.setBusinessType(log.businessType().ordinal());
        // 设置标题
        operLog.setTitle(log.title());
        // 设置操作人类别
        operLog.setOperatorType(log.operatorType().ordinal());
        // 是否需要保存request,参数和值
        if (log.isSaveRequestData())
        {
            // 获取参数的信息,传入到数据库中。
            setRequestValue(joinPoint, operLog, log.excludeParamNames());
        }
        // 是否需要保存response,参数和值
        if (log.isSaveResponseData() && StringUtils.isNotNull(jsonResult))
        {
            operLog.setJsonResult(StringUtils.substring(JSON.toJSONString(jsonResult), 0, 2000));
        }
    }

// 设置action动作
operLog.setBusinessType(log.businessType().ordinal());
方法通过这种方式给日志定义类型。

这行代码是在获取枚举类型的businessType的序号(ordinal)。在Java中,枚举类型的每个枚举常量都有一个相关的整数值,该值从零开始,表示其在枚举声明中的位置。因此,log.businessType().ordinal()返回的是businessType枚举常量的序号。

根据其逻辑我们就可以在他的业务类型得类中加入新的类型。
 

/**
 * 业务操作类型
 * 
 * @author ruoyi
 */
public enum BusinessType
{
    /**
     * 其它
     */
    OTHER,

    /**
     * 新增
     */
    INSERT,

    /**
     * 修改
     */
    UPDATE,

    /**
     * 删除
     */
    DELETE,

    /**
     * 授权
     */
    GRANT,

    /**
     * 导出
     */
    EXPORT,

    /**
     * 导入
     */
    IMPORT,

    /**
     * 强退
     */
    FORCE,

    /**
     * 生成代码
     */
    GENCODE,
    
    /**
     * 清空数据
     */
    CLEAN,

    /**
     * 查询
     */
    QUERY
}

按照BusinessType枚举类中,我自定义的QUERY在最下面,而其对应的应该是10。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值