| | |
| | | public static void fillModuleFields(OperateLogCreateReqDTO reqDTO, LogRecord logRecord) { |
| | | reqDTO.setType(logRecord.getType()); // 大模块类型,例如:CRM 客户 |
| | | reqDTO.setSubType(logRecord.getSubType());// 操作名称,例如:转移客户 |
| | | reqDTO.setBizId(Long.parseLong(logRecord.getBizNo())); // 业务编号,例如:客户编号 |
| | | reqDTO.setAction(logRecord.getAction());// 操作内容,例如:修改编号为 1 的用户信息,将性别从男改成女,将姓名从芋道改成源码。 |
| | | reqDTO.setBizId(parseBizId(logRecord.getBizNo())); // 业务编号,例如:客户编号 |
| | | reqDTO.setAction(logRecord.getAction());// 操作内容,例如:修改编号为 1 的用户信息,将性别从男改成女,将姓名从超级管理员改成源码。 |
| | | reqDTO.setExtra(logRecord.getExtra()); // 拓展字段,有些复杂的业务,需要记录一些字段 ( JSON 格式 ),例如说,记录订单编号,{ orderId: "1"} |
| | | } |
| | | |
| | | /** |
| | | * 解析业务编号。批量导入等场景没有单一业务编号(注解的 bizNo 没填或填了非数字), |
| | | * 这里用 0 兜底——不能让 parseLong 抛异常,否则 {@link #record} 的 catch 会把整条日志静默吞掉 |
| | | * |
| | | * @param bizNo 业务编号字符串 |
| | | * @return 业务编号,解析失败时为 0 |
| | | */ |
| | | private static long parseBizId(String bizNo) { |
| | | if (bizNo == null || bizNo.isBlank()) { |
| | | return 0L; |
| | | } |
| | | try { |
| | | return Long.parseLong(bizNo.trim()); |
| | | } catch (NumberFormatException ex) { |
| | | log.warn("[parseBizId][业务编号({}) 不是数字,用 0 兜底]", bizNo); |
| | | return 0L; |
| | | } |
| | | } |
| | | |
| | | private static void fillRequestFields(OperateLogCreateReqDTO reqDTO) { |
| | | // 获得 Request 对象 |
| | | HttpServletRequest request = ServletUtils.getRequest(); |