# api-access-log **Repository Path**: yangzhen94/api-access-log ## Basic Information - **Project Name**: api-access-log - **Description**: 1.超级管理员登录了系统 2.超级管理员登出了系统 3.超级管理员新增了一条人员信息:1yngla;超级管理员修改了自己的密码;超级管理员修改了人员1yngla的密码 4.超级管理员启用了人员1yngla。所属部门:测试部门 5.超级管理员禁用了人员1yngla。所属部门:测试部门 6.超级管理员修改了人员1W2Kzm的信息:姓名(1W2Kzm改为了1yngla)、年龄、性别、所属部门(FnuvZq调至ra6sZW) 7.超级管理员修改了人员1uBkLx的信息:姓名(1uBkLx改为了1yngla)、年龄、所属部门(Gf9jya调至ra6sZW);所属部门:测试部门 9.超级管理员修改了角色前台的信息:权限分配 10.超级管理员修改了人员r9Mn5t的信息:姓名(r9Mn5t改为了1yngla)、年龄、性别、所属部门(eDHWGN调至ra6sZW);状态:禁用改为了启用 11.超级管理员状态:禁用改为了启用 12.超级管理员删除了人员1yngla 13.超级管理员修改了自己的密码 14.超级管理员修改了人员张三的密码 15.系统异常 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-10-23 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 使用插件要在你的web层实现以下几个接口 LoginInfoProvider,提供用户登录信息 LogPersistProvider,日志持久化代码 ReturnResultAnalyseProvider,Aop执行返回结果,根据结果去判断操作成功或者失败 这些接口,我都有默认实现,你需要根据你的工程定制化 案例参见类Main ActionTypeEnum.GET/POST/DELETE/PASSWORD 拼接逻辑 遍历@Spell,依次拼接 prefix + RequestContext#getValue(codeKey) + suffix + customString + “。”,最后一个“。”被舍弃 for (Spell sp : spell) { builder.append(sp.prefix()).append(sp.codeKey().equals(ApiConstants.BLANK) ? ApiConstants.BLANK : requestContext.getValue(sp.codeKey())).append(sp.suffix()).append(sp.customString()); builder.append("。"); } ActionTypeEnum.PUT 拼接逻辑 检查@Compare的newObjkey和oldObjKey是否存在,存在的话对比两个对象带有ChangeFromTo或者FieldDefineName注解的属性,拼接不相同的属性内容,多个内容之间以“、”分隔,返回 diffFieldLog字符串,diffFieldLog不一定存在。 然后参与拼接,拼接规则 compare.prefix() + RequestContext#getValue(compare.codeKey) + compare.suffix() + “:” + diffFieldFlag,返回operateLog字符串 然后调用@Spell逻辑,返回spellLog。 判断operateLog!=null:如果spellLog!=null,在operateLog后加“;”,否则什么也不做 判断operateLog==null:如果spellLog!=null,operateLog = spellLog ActionTypeEnum.ENABLED 拼接逻辑 首先从@ApiAccess#operateMethod数组中获取操作的动作,例下所示,获取启用还是禁用,然后遍历@Spell,最后拼接 动作 + spellLog @ApiAccess(operateTitle = "禁用/启用", operateMethod = {"", "启用", "禁用"})