diff --git a/databases/v1.0-beta.1.sql b/databases/v1.0-beta.1.sql index 1ef2170..9af13f5 100644 --- a/databases/v1.0-beta.1.sql +++ b/databases/v1.0-beta.1.sql @@ -27,16 +27,10 @@ CREATE TABLE `admin_logs` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `admin_id` int(11) NOT NULL DEFAULT '0' COMMENT '管理员ID', `module` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '模块', - `title` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '请求方法标题', - `opt` int(2) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 0 COMMENT '操作指令(0其它 1新增 2修改 3删除 4查询 5登录 6退出登录)', - `method` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '请求方法', - `request_method` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '请求方式POST,GET,PUT,DELETE', - `url` varchar(266) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '请求URL', - `param` text COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '请求参数', - `result` text COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '返回参数', + `opt` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '操作指令', + `remark` mediumtext COLLATE utf8mb4_unicode_ci COMMENT '备注', `ip` varchar(45) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT 'ip', `ip_area` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '地址', - `error_msg` varchar(2000) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '错误消息', `created_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), KEY `a_m_o` (`admin_id`,`module`,`opt`) diff --git a/databases/v1.2.sql b/databases/v1.2.sql index f30163e..0176442 100644 --- a/databases/v1.2.sql +++ b/databases/v1.2.sql @@ -4,6 +4,7 @@ CREATE TABLE `admin_logs` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `admin_id` int(11) NOT NULL DEFAULT '0' COMMENT '管理员ID', + `admin_name` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '管理员姓名', `module` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '模块', `title` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '请求方法标题', `opt` int(2) NOT NULL DEFAULT '0' COMMENT '操作指令(0其它 1新增 2修改 3删除 4登录 5退出登录)', diff --git a/src/main/java/xyz/playedu/api/aspectj/AdminLogAspect.java b/src/main/java/xyz/playedu/api/aspectj/AdminLogAspect.java index 828ea8c..f181c84 100644 --- a/src/main/java/xyz/playedu/api/aspectj/AdminLogAspect.java +++ b/src/main/java/xyz/playedu/api/aspectj/AdminLogAspect.java @@ -30,7 +30,9 @@ import org.springframework.stereotype.Component; import xyz.playedu.api.annotation.Log; import xyz.playedu.api.domain.AdminLog; +import xyz.playedu.api.domain.AdminUser; import xyz.playedu.api.service.AdminLogService; +import xyz.playedu.api.service.AdminUserService; import xyz.playedu.api.service.BackendAuthService; import xyz.playedu.api.util.IpUtil; import xyz.playedu.api.util.RequestUtil; @@ -47,6 +49,8 @@ public class AdminLogAspect { @Autowired private BackendAuthService authService; + @Autowired private AdminUserService adminUserService; + @Autowired private AdminLogService adminLogService; /** 排除敏感属性字段 */ @@ -87,9 +91,15 @@ public class AdminLogAspect { return; } + AdminUser adminUser = adminUserService.findById(authService.userId()); + if (null == adminUser) { + return; + } + // 日志 AdminLog adminLog = new AdminLog(); - adminLog.setAdminId(authService.userId()); + adminLog.setAdminId(adminUser.getId()); + adminLog.setAdminName(adminUser.getName()); adminLog.setModule("BACKEND"); adminLog.setTitle(controllerLog.title()); adminLog.setOpt(controllerLog.businessType().ordinal()); @@ -167,6 +177,8 @@ public class AdminLogAspect { for (String i : EXCLUDE_PROPERTIES) { if (key.equals(i)) { jsonObjectResult.put(key, "******"); + }else { + jsonObjectResult.put(key, value); } } } diff --git a/src/main/java/xyz/playedu/api/controller/backend/AdminLogController.java b/src/main/java/xyz/playedu/api/controller/backend/AdminLogController.java index 7c92cfc..3ea4bed 100644 --- a/src/main/java/xyz/playedu/api/controller/backend/AdminLogController.java +++ b/src/main/java/xyz/playedu/api/controller/backend/AdminLogController.java @@ -63,6 +63,7 @@ public class AdminLogController { String sortAlgo = MapUtils.getString(params, "sort_algo"); Integer adminId = MapUtils.getInteger(params, "admin_id"); + String adminName = MapUtils.getString(params, "admin_name"); String module = MapUtils.getString(params, "module"); String title = MapUtils.getString(params, "title"); Integer opt = MapUtils.getInteger(params, "opt"); @@ -75,6 +76,7 @@ public class AdminLogController { } else { filter.setAdminId(BCtx.getId()); } + filter.setAdminName(adminName); filter.setModule(module); filter.setTitle(title); filter.setOpt(opt); @@ -84,17 +86,6 @@ public class AdminLogController { filter.setSortAlgo(sortAlgo); PaginationResult result = adminLogService.paginate(page, size, filter); - if(result.getTotal() > 0){ - List adminUsers = adminUserService.chunks(result.getData().stream().map(AdminLog::getAdminId).toList()); - if(null != adminUsers && adminUsers.size() > 0){ - Map adminUserMap = adminUsers.stream().collect(Collectors.toMap(AdminUser::getId, AdminUser::getName)); - result.getData() - .forEach( - adminLog -> { - adminLog.setAdminName(adminUserMap.get(adminLog.getAdminId())); - }); - } - } HashMap data = new HashMap<>(); data.put("data", result.getData()); diff --git a/src/main/java/xyz/playedu/api/domain/AdminLog.java b/src/main/java/xyz/playedu/api/domain/AdminLog.java index e51a8cb..953ab22 100644 --- a/src/main/java/xyz/playedu/api/domain/AdminLog.java +++ b/src/main/java/xyz/playedu/api/domain/AdminLog.java @@ -40,7 +40,7 @@ public class AdminLog implements Serializable { @JsonProperty("admin_id") private Integer adminId; - @TableField(exist = false) + /** 管理员姓名 */ @JsonProperty("admin_name") private String adminName; @@ -102,6 +102,9 @@ public class AdminLog implements Serializable { && (this.getAdminId() == null ? other.getAdminId() == null : this.getAdminId().equals(other.getAdminId())) + && (this.getAdminName() == null + ? other.getAdminName() == null + : this.getAdminName().equals(other.getAdminName())) && (this.getModule() == null ? other.getModule() == null : this.getModule().equals(other.getModule())) @@ -146,6 +149,7 @@ public class AdminLog implements Serializable { int result = 1; result = prime * result + ((getId() == null) ? 0 : getId().hashCode()); result = prime * result + ((getAdminId() == null) ? 0 : getAdminId().hashCode()); + result = prime * result + ((getAdminName() == null) ? 0 : getAdminName().hashCode()); result = prime * result + ((getModule() == null) ? 0 : getModule().hashCode()); result = prime * result + ((getTitle() == null) ? 0 : getTitle().hashCode()); result = prime * result + ((getOpt() == null) ? 0 : getOpt().hashCode()); @@ -170,6 +174,7 @@ public class AdminLog implements Serializable { sb.append("Hash = ").append(hashCode()); sb.append(", id=").append(id); sb.append(", adminId=").append(adminId); + sb.append(", adminName=").append(adminName); sb.append(", module=").append(module); sb.append(", title=").append(title); sb.append(", opt=").append(opt); diff --git a/src/main/java/xyz/playedu/api/types/paginate/AdminLogPaginateFiler.java b/src/main/java/xyz/playedu/api/types/paginate/AdminLogPaginateFiler.java index bcda5ea..e0e5e02 100644 --- a/src/main/java/xyz/playedu/api/types/paginate/AdminLogPaginateFiler.java +++ b/src/main/java/xyz/playedu/api/types/paginate/AdminLogPaginateFiler.java @@ -22,6 +22,8 @@ public class AdminLogPaginateFiler { private Integer adminId; + private String adminName; + private String module; private String title; diff --git a/src/main/resources/mapper/AdminLogMapper.xml b/src/main/resources/mapper/AdminLogMapper.xml index 4f301e1..3411ab7 100644 --- a/src/main/resources/mapper/AdminLogMapper.xml +++ b/src/main/resources/mapper/AdminLogMapper.xml @@ -7,6 +7,7 @@ + @@ -22,7 +23,7 @@ - id,admin_id,module,title, + id,admin_id,admin_name,module,title, opt,method,request_method,url,param,result, ip,ip_area,error_msg,created_at @@ -34,6 +35,9 @@ AND `admin_logs`.`admin_id` = #{adminId} + + AND `admin_logs`.`admin_name` LIKE concat('%',#{adminName},'%') + AND `admin_logs`.`module` LIKE concat('%',#{module},'%') @@ -43,12 +47,12 @@ AND `admin_logs`.`opt` = #{opt} - - AND `admin_logs`.`created_at` >= #{startTime} - - - AND `admin_logs`.`created_at` <= #{endTime} + + + AND `admin_logs`.`created_at` BETWEEN #{startTime} AND #{endTime} + + @@ -81,6 +85,9 @@ AND `admin_logs`.`admin_id` = #{adminId} + + AND `admin_logs`.`admin_name` LIKE concat('%',#{adminName},'%') + AND `admin_logs`.`module` LIKE concat('%',#{module},'%') @@ -90,11 +97,10 @@ AND `admin_logs`.`opt` = #{opt} - - AND `admin_logs`.`created_at` >= #{startTime} - - - AND `admin_logs`.`created_at` <= #{endTime} + + + AND `admin_logs`.`created_at` BETWEEN #{startTime} AND #{endTime} +