feat: rename @Operation to @AuditLog

This commit is contained in:
vran 2022-05-14 11:52:47 +08:00
parent 5b9728282b
commit 71ac0e521e
14 changed files with 51 additions and 51 deletions

View File

@ -4,7 +4,7 @@ import com.databasir.api.validator.DatabaseTypeValidator;
import com.databasir.common.JsonData; import com.databasir.common.JsonData;
import com.databasir.core.domain.database.data.*; import com.databasir.core.domain.database.data.*;
import com.databasir.core.domain.database.service.DatabaseTypeService; import com.databasir.core.domain.database.service.DatabaseTypeService;
import com.databasir.core.domain.log.annotation.Operation; import com.databasir.core.domain.log.annotation.AuditLog;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
@ -43,7 +43,7 @@ public class DatabaseTypeController {
} }
@PostMapping(Routes.DatabaseType.CREATE) @PostMapping(Routes.DatabaseType.CREATE)
@Operation(module = Operation.Modules.DATABASE_TYPE, name = "创建数据库类型") @AuditLog(module = AuditLog.Modules.DATABASE_TYPE, name = "创建数据库类型")
@PreAuthorize("hasAnyAuthority('SYS_OWNER')") @PreAuthorize("hasAnyAuthority('SYS_OWNER')")
public JsonData<Integer> create(@RequestBody @Valid DatabaseTypeCreateRequest request) { public JsonData<Integer> create(@RequestBody @Valid DatabaseTypeCreateRequest request) {
databaseTypeValidator.isValidUrlPattern(request.getUrlPattern()); databaseTypeValidator.isValidUrlPattern(request.getUrlPattern());
@ -52,7 +52,7 @@ public class DatabaseTypeController {
} }
@PatchMapping(Routes.DatabaseType.UPDATE) @PatchMapping(Routes.DatabaseType.UPDATE)
@Operation(module = Operation.Modules.DATABASE_TYPE, name = "更新数据库类型") @AuditLog(module = AuditLog.Modules.DATABASE_TYPE, name = "更新数据库类型")
@PreAuthorize("hasAnyAuthority('SYS_OWNER')") @PreAuthorize("hasAnyAuthority('SYS_OWNER')")
public JsonData<Void> update(@RequestBody @Valid DatabaseTypeUpdateRequest request) { public JsonData<Void> update(@RequestBody @Valid DatabaseTypeUpdateRequest request) {
databaseTypeValidator.isValidUrlPattern(request.getUrlPattern()); databaseTypeValidator.isValidUrlPattern(request.getUrlPattern());
@ -61,7 +61,7 @@ public class DatabaseTypeController {
} }
@DeleteMapping(Routes.DatabaseType.DELETE_ONE) @DeleteMapping(Routes.DatabaseType.DELETE_ONE)
@Operation(module = Operation.Modules.DATABASE_TYPE, name = "删除数据库类型") @AuditLog(module = AuditLog.Modules.DATABASE_TYPE, name = "删除数据库类型")
@PreAuthorize("hasAnyAuthority('SYS_OWNER')") @PreAuthorize("hasAnyAuthority('SYS_OWNER')")
public JsonData<Void> delete(@PathVariable Integer id) { public JsonData<Void> delete(@PathVariable Integer id) {
databaseTypeService.deleteById(id); databaseTypeService.deleteById(id);

View File

@ -5,7 +5,7 @@ import com.databasir.common.JsonData;
import com.databasir.core.domain.document.data.*; import com.databasir.core.domain.document.data.*;
import com.databasir.core.domain.document.generator.DocumentFileType; import com.databasir.core.domain.document.generator.DocumentFileType;
import com.databasir.core.domain.document.service.DocumentService; import com.databasir.core.domain.document.service.DocumentService;
import com.databasir.core.domain.log.annotation.Operation; import com.databasir.core.domain.log.annotation.AuditLog;
import com.databasir.core.domain.project.service.ProjectService; import com.databasir.core.domain.project.service.ProjectService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
@ -36,7 +36,7 @@ public class DocumentController {
private final ProjectService projectService; private final ProjectService projectService;
@PostMapping(Routes.Document.SYNC_ONE) @PostMapping(Routes.Document.SYNC_ONE)
@Operation(module = Operation.Modules.PROJECT, name = "文档同步", involvedProjectId = "#projectId") @AuditLog(module = AuditLog.Modules.PROJECT, name = "文档同步", involvedProjectId = "#projectId")
public JsonData<Integer> sync(@PathVariable Integer projectId) { public JsonData<Integer> sync(@PathVariable Integer projectId) {
Integer userId = LoginUserContext.getLoginUserId(); Integer userId = LoginUserContext.getLoginUserId();
Optional<Integer> taskIdOpt = projectService.createSyncTask(projectId, userId, false); Optional<Integer> taskIdOpt = projectService.createSyncTask(projectId, userId, false);

View File

@ -4,7 +4,7 @@ import com.databasir.api.config.security.DatabasirUserDetails;
import com.databasir.common.JsonData; import com.databasir.common.JsonData;
import com.databasir.core.domain.description.data.DocumentDescriptionSaveRequest; import com.databasir.core.domain.description.data.DocumentDescriptionSaveRequest;
import com.databasir.core.domain.description.service.DocumentDescriptionService; import com.databasir.core.domain.description.service.DocumentDescriptionService;
import com.databasir.core.domain.log.annotation.Operation; import com.databasir.core.domain.log.annotation.AuditLog;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.SecurityContextHolder;
@ -25,7 +25,7 @@ public class DocumentDescriptionController {
@PostMapping(Routes.DocumentDescription.SAVE) @PostMapping(Routes.DocumentDescription.SAVE)
@PreAuthorize("hasAnyAuthority('SYS_OWNER', 'GROUP_OWNER?groupId='+#groupId, 'GROUP_MEMBER?groupId='+#groupId)") @PreAuthorize("hasAnyAuthority('SYS_OWNER', 'GROUP_OWNER?groupId='+#groupId, 'GROUP_MEMBER?groupId='+#groupId)")
@Operation(module = Operation.Modules.PROJECT, @AuditLog(module = AuditLog.Modules.PROJECT,
name = "更新描述", name = "更新描述",
involvedProjectId = "#projectId") involvedProjectId = "#projectId")
public JsonData<Void> save(@PathVariable Integer groupId, public JsonData<Void> save(@PathVariable Integer groupId,

View File

@ -2,7 +2,7 @@ package com.databasir.api;
import com.databasir.api.config.security.DatabasirUserDetails; import com.databasir.api.config.security.DatabasirUserDetails;
import com.databasir.common.JsonData; import com.databasir.common.JsonData;
import com.databasir.core.domain.log.annotation.Operation; import com.databasir.core.domain.log.annotation.AuditLog;
import com.databasir.core.domain.discussion.data.DiscussionCreateRequest; import com.databasir.core.domain.discussion.data.DiscussionCreateRequest;
import com.databasir.core.domain.discussion.data.DiscussionListCondition; import com.databasir.core.domain.discussion.data.DiscussionListCondition;
import com.databasir.core.domain.discussion.data.DiscussionResponse; import com.databasir.core.domain.discussion.data.DiscussionResponse;
@ -39,7 +39,7 @@ public class DocumentDiscussionController {
@DeleteMapping(Routes.DocumentDiscussion.DELETE) @DeleteMapping(Routes.DocumentDiscussion.DELETE)
@PreAuthorize("hasAnyAuthority('SYS_OWNER', 'GROUP_OWNER?groupId='+#groupId)") @PreAuthorize("hasAnyAuthority('SYS_OWNER', 'GROUP_OWNER?groupId='+#groupId)")
@Operation(module = Operation.Modules.PROJECT, @AuditLog(module = AuditLog.Modules.PROJECT,
name = "删除评论", name = "删除评论",
involvedProjectId = "#projectId") involvedProjectId = "#projectId")
public JsonData<Void> delete(@PathVariable Integer groupId, public JsonData<Void> delete(@PathVariable Integer groupId,
@ -51,7 +51,7 @@ public class DocumentDiscussionController {
@PostMapping(Routes.DocumentDiscussion.CREATE) @PostMapping(Routes.DocumentDiscussion.CREATE)
@PreAuthorize("hasAnyAuthority('SYS_OWNER', 'GROUP_OWNER?groupId='+#groupId, 'GROUP_MEMBER?groupId='+#groupId)") @PreAuthorize("hasAnyAuthority('SYS_OWNER', 'GROUP_OWNER?groupId='+#groupId, 'GROUP_MEMBER?groupId='+#groupId)")
@Operation(module = Operation.Modules.PROJECT, @AuditLog(module = AuditLog.Modules.PROJECT,
name = "新增评论", name = "新增评论",
involvedProjectId = "#projectId") involvedProjectId = "#projectId")
public JsonData<Void> create(@PathVariable Integer groupId, public JsonData<Void> create(@PathVariable Integer groupId,

View File

@ -4,7 +4,7 @@ import com.databasir.common.JsonData;
import com.databasir.core.domain.document.data.DocumentTemplatePropertiesResponse; import com.databasir.core.domain.document.data.DocumentTemplatePropertiesResponse;
import com.databasir.core.domain.document.data.DocumentTemplatePropertiesUpdateRequest; import com.databasir.core.domain.document.data.DocumentTemplatePropertiesUpdateRequest;
import com.databasir.core.domain.document.service.DocumentTemplateService; import com.databasir.core.domain.document.service.DocumentTemplateService;
import com.databasir.core.domain.log.annotation.Operation; import com.databasir.core.domain.log.annotation.AuditLog;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -29,7 +29,7 @@ public class DocumentTemplateController {
@PatchMapping(Routes.DocumentTemplateProperty.API) @PatchMapping(Routes.DocumentTemplateProperty.API)
@PreAuthorize("hasAnyAuthority('SYS_OWNER')") @PreAuthorize("hasAnyAuthority('SYS_OWNER')")
@Operation(module = Operation.Modules.SETTING, name = "更新模板") @AuditLog(module = AuditLog.Modules.SETTING, name = "更新模板")
public JsonData<Void> updateByType(@RequestBody @Valid DocumentTemplatePropertiesUpdateRequest request) { public JsonData<Void> updateByType(@RequestBody @Valid DocumentTemplatePropertiesUpdateRequest request) {
documentTemplateService.updateByType(request); documentTemplateService.updateByType(request);
return JsonData.ok(); return JsonData.ok();

View File

@ -4,7 +4,7 @@ import com.databasir.api.validator.UserOperationValidator;
import com.databasir.common.JsonData; import com.databasir.common.JsonData;
import com.databasir.core.domain.group.data.*; import com.databasir.core.domain.group.data.*;
import com.databasir.core.domain.group.service.GroupService; import com.databasir.core.domain.group.service.GroupService;
import com.databasir.core.domain.log.annotation.Operation; import com.databasir.core.domain.log.annotation.AuditLog;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
@ -32,7 +32,7 @@ public class GroupController {
@PostMapping(Routes.Group.CREATE) @PostMapping(Routes.Group.CREATE)
@PreAuthorize("hasAnyAuthority('SYS_OWNER')") @PreAuthorize("hasAnyAuthority('SYS_OWNER')")
@Operation(module = Operation.Modules.GROUP, name = "创建分组") @AuditLog(module = AuditLog.Modules.GROUP, name = "创建分组")
public JsonData<Void> create(@RequestBody @Valid GroupCreateRequest request) { public JsonData<Void> create(@RequestBody @Valid GroupCreateRequest request) {
groupService.create(request); groupService.create(request);
return JsonData.ok(); return JsonData.ok();
@ -40,7 +40,7 @@ public class GroupController {
@PatchMapping(Routes.Group.UPDATE) @PatchMapping(Routes.Group.UPDATE)
@PreAuthorize("hasAnyAuthority('SYS_OWNER', 'GROUP_OWNER'.concat('?groupId='.concat(#request.id)))") @PreAuthorize("hasAnyAuthority('SYS_OWNER', 'GROUP_OWNER'.concat('?groupId='.concat(#request.id)))")
@Operation(module = Operation.Modules.GROUP, @AuditLog(module = AuditLog.Modules.GROUP,
name = "更新分组", name = "更新分组",
involvedGroupId = "#request.id") involvedGroupId = "#request.id")
public JsonData<Void> update(@RequestBody @Valid GroupUpdateRequest request) { public JsonData<Void> update(@RequestBody @Valid GroupUpdateRequest request) {
@ -57,7 +57,7 @@ public class GroupController {
@DeleteMapping(Routes.Group.DELETE) @DeleteMapping(Routes.Group.DELETE)
@PreAuthorize("hasAnyAuthority('SYS_OWNER', 'GROUP_OWNER'.concat('?groupId='.concat(#groupId)))") @PreAuthorize("hasAnyAuthority('SYS_OWNER', 'GROUP_OWNER'.concat('?groupId='.concat(#groupId)))")
@Operation(module = Operation.Modules.GROUP, @AuditLog(module = AuditLog.Modules.GROUP,
name = "删除分组", name = "删除分组",
involvedGroupId = "#groupId") involvedGroupId = "#groupId")
public JsonData<Void> deleteById(@PathVariable Integer groupId) { public JsonData<Void> deleteById(@PathVariable Integer groupId) {
@ -81,7 +81,7 @@ public class GroupController {
@PostMapping(Routes.Group.ADD_MEMBER) @PostMapping(Routes.Group.ADD_MEMBER)
@PreAuthorize("hasAnyAuthority('SYS_OWNER', 'GROUP_OWNER'.concat('?groupId='.concat(#groupId)))") @PreAuthorize("hasAnyAuthority('SYS_OWNER', 'GROUP_OWNER'.concat('?groupId='.concat(#groupId)))")
@Operation(module = Operation.Modules.GROUP, @AuditLog(module = AuditLog.Modules.GROUP,
name = "添加组员", name = "添加组员",
involvedGroupId = "#groupId", involvedGroupId = "#groupId",
involvedUserId = "#request.userId") involvedUserId = "#request.userId")
@ -98,7 +98,7 @@ public class GroupController {
@DeleteMapping(Routes.Group.DELETE_MEMBER) @DeleteMapping(Routes.Group.DELETE_MEMBER)
@PreAuthorize("hasAnyAuthority('SYS_OWNER', 'GROUP_OWNER'.concat('?groupId='.concat(#groupId)))") @PreAuthorize("hasAnyAuthority('SYS_OWNER', 'GROUP_OWNER'.concat('?groupId='.concat(#groupId)))")
@Operation(module = Operation.Modules.GROUP, @AuditLog(module = AuditLog.Modules.GROUP,
name = "移除组员", name = "移除组员",
involvedGroupId = "#groupId", involvedGroupId = "#groupId",
involvedUserId = "#userId") involvedUserId = "#userId")
@ -111,7 +111,7 @@ public class GroupController {
@PatchMapping(Routes.Group.UPDATE_MEMBER) @PatchMapping(Routes.Group.UPDATE_MEMBER)
@PreAuthorize("hasAnyAuthority('SYS_OWNER', 'GROUP_OWNER'.concat('?groupId='.concat(#groupId)))") @PreAuthorize("hasAnyAuthority('SYS_OWNER', 'GROUP_OWNER'.concat('?groupId='.concat(#groupId)))")
@Operation(module = Operation.Modules.GROUP, @AuditLog(module = AuditLog.Modules.GROUP,
name = "更新组员角色", name = "更新组员角色",
involvedGroupId = "#groupId", involvedGroupId = "#groupId",
involvedUserId = "#userId") involvedUserId = "#userId")

View File

@ -4,7 +4,7 @@ import com.databasir.common.JsonData;
import com.databasir.core.domain.app.OpenAuthAppService; import com.databasir.core.domain.app.OpenAuthAppService;
import com.databasir.core.domain.app.data.*; import com.databasir.core.domain.app.data.*;
import com.databasir.core.domain.app.handler.OpenAuthHandlers; import com.databasir.core.domain.app.handler.OpenAuthHandlers;
import com.databasir.core.domain.log.annotation.Operation; import com.databasir.core.domain.log.annotation.AuditLog;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
@ -69,7 +69,7 @@ public class LoginAppController {
@PostMapping(Routes.OAuth2App.CREATE) @PostMapping(Routes.OAuth2App.CREATE)
@PreAuthorize("hasAnyAuthority('SYS_OWNER')") @PreAuthorize("hasAnyAuthority('SYS_OWNER')")
@ResponseBody @ResponseBody
@Operation(module = Operation.Modules.LOGIN_APP, name = "创建登录应用") @AuditLog(module = AuditLog.Modules.LOGIN_APP, name = "创建登录应用")
public JsonData<Integer> create(@RequestBody @Valid OAuthAppCreateRequest request) { public JsonData<Integer> create(@RequestBody @Valid OAuthAppCreateRequest request) {
Integer id = openAuthAppService.create(request); Integer id = openAuthAppService.create(request);
return JsonData.ok(id); return JsonData.ok(id);
@ -78,7 +78,7 @@ public class LoginAppController {
@PatchMapping(Routes.OAuth2App.UPDATE) @PatchMapping(Routes.OAuth2App.UPDATE)
@PreAuthorize("hasAnyAuthority('SYS_OWNER')") @PreAuthorize("hasAnyAuthority('SYS_OWNER')")
@ResponseBody @ResponseBody
@Operation(module = Operation.Modules.LOGIN_APP, name = "更新登录应用") @AuditLog(module = AuditLog.Modules.LOGIN_APP, name = "更新登录应用")
public JsonData<Void> updateById(@RequestBody @Valid OAuthAppUpdateRequest request) { public JsonData<Void> updateById(@RequestBody @Valid OAuthAppUpdateRequest request) {
openAuthAppService.updateById(request); openAuthAppService.updateById(request);
return JsonData.ok(); return JsonData.ok();
@ -87,7 +87,7 @@ public class LoginAppController {
@DeleteMapping(Routes.OAuth2App.DELETE) @DeleteMapping(Routes.OAuth2App.DELETE)
@PreAuthorize("hasAnyAuthority('SYS_OWNER')") @PreAuthorize("hasAnyAuthority('SYS_OWNER')")
@ResponseBody @ResponseBody
@Operation(module = Operation.Modules.LOGIN_APP, name = "删除登录应用") @AuditLog(module = AuditLog.Modules.LOGIN_APP, name = "删除登录应用")
public JsonData<Void> deleteById(@PathVariable Integer id) { public JsonData<Void> deleteById(@PathVariable Integer id) {
openAuthAppService.deleteById(id); openAuthAppService.deleteById(id);
return JsonData.ok(); return JsonData.ok();

View File

@ -5,7 +5,7 @@ import com.databasir.common.DatabasirException;
import com.databasir.common.JsonData; import com.databasir.common.JsonData;
import com.databasir.common.exception.InvalidTokenException; import com.databasir.common.exception.InvalidTokenException;
import com.databasir.core.domain.DomainErrors; import com.databasir.core.domain.DomainErrors;
import com.databasir.core.domain.log.annotation.Operation; import com.databasir.core.domain.log.annotation.AuditLog;
import com.databasir.core.domain.login.data.AccessTokenRefreshRequest; import com.databasir.core.domain.login.data.AccessTokenRefreshRequest;
import com.databasir.core.domain.login.data.AccessTokenRefreshResponse; import com.databasir.core.domain.login.data.AccessTokenRefreshResponse;
import com.databasir.core.domain.login.data.UserLoginResponse; import com.databasir.core.domain.login.data.UserLoginResponse;
@ -31,7 +31,7 @@ public class LoginController {
private final LoginService loginService; private final LoginService loginService;
@GetMapping(Routes.Login.LOGOUT) @GetMapping(Routes.Login.LOGOUT)
@Operation(module = Operation.Modules.USER, name = "注销登录") @AuditLog(module = AuditLog.Modules.USER, name = "注销登录")
public JsonData<Void> logout() { public JsonData<Void> logout() {
SecurityContextHolder.clearContext(); SecurityContextHolder.clearContext();
return JsonData.ok(); return JsonData.ok();

View File

@ -3,7 +3,7 @@ package com.databasir.api;
import com.databasir.api.config.security.DatabasirUserDetails; import com.databasir.api.config.security.DatabasirUserDetails;
import com.databasir.api.validator.CronExpressionValidator; import com.databasir.api.validator.CronExpressionValidator;
import com.databasir.common.JsonData; import com.databasir.common.JsonData;
import com.databasir.core.domain.log.annotation.Operation; import com.databasir.core.domain.log.annotation.AuditLog;
import com.databasir.core.domain.project.data.*; import com.databasir.core.domain.project.data.*;
import com.databasir.core.domain.project.data.task.ProjectSimpleTaskResponse; import com.databasir.core.domain.project.data.task.ProjectSimpleTaskResponse;
import com.databasir.core.domain.project.data.task.ProjectTaskListCondition; import com.databasir.core.domain.project.data.task.ProjectTaskListCondition;
@ -33,7 +33,7 @@ public class ProjectController {
@PostMapping(Routes.GroupProject.CREATE) @PostMapping(Routes.GroupProject.CREATE)
@PreAuthorize("hasAnyAuthority('SYS_OWNER', 'GROUP_OWNER?groupId='+#request.groupId, " @PreAuthorize("hasAnyAuthority('SYS_OWNER', 'GROUP_OWNER?groupId='+#request.groupId, "
+ "'GROUP_MEMBER?groupId='+#request.groupId)") + "'GROUP_MEMBER?groupId='+#request.groupId)")
@Operation(module = Operation.Modules.PROJECT, @AuditLog(module = AuditLog.Modules.PROJECT,
name = "创建项目", name = "创建项目",
involvedGroupId = "#request.groupId") involvedGroupId = "#request.groupId")
public JsonData<Void> create(@RequestBody @Valid ProjectCreateRequest request) { public JsonData<Void> create(@RequestBody @Valid ProjectCreateRequest request) {
@ -44,7 +44,7 @@ public class ProjectController {
@PatchMapping(Routes.GroupProject.UPDATE) @PatchMapping(Routes.GroupProject.UPDATE)
@PreAuthorize("hasAnyAuthority('SYS_OWNER', 'GROUP_OWNER?groupId='+#groupId, 'GROUP_MEMBER?groupId='+#groupId)") @PreAuthorize("hasAnyAuthority('SYS_OWNER', 'GROUP_OWNER?groupId='+#groupId, 'GROUP_MEMBER?groupId='+#groupId)")
@Operation(module = Operation.Modules.PROJECT, @AuditLog(module = AuditLog.Modules.PROJECT,
name = "更新项目", name = "更新项目",
involvedGroupId = "#groupId", involvedGroupId = "#groupId",
involvedProjectId = "#request.id") involvedProjectId = "#request.id")
@ -57,7 +57,7 @@ public class ProjectController {
@DeleteMapping(Routes.GroupProject.DELETE) @DeleteMapping(Routes.GroupProject.DELETE)
@PreAuthorize("hasAnyAuthority('SYS_OWNER', 'GROUP_OWNER?groupId='+#groupId, 'GROUP_MEMBER?groupId='+#groupId)") @PreAuthorize("hasAnyAuthority('SYS_OWNER', 'GROUP_OWNER?groupId='+#groupId, 'GROUP_MEMBER?groupId='+#groupId)")
@Operation(module = Operation.Modules.PROJECT, @AuditLog(module = AuditLog.Modules.PROJECT,
name = "删除项目", name = "删除项目",
involvedGroupId = "#groupId", involvedGroupId = "#groupId",
involvedProjectId = "#projectId") involvedProjectId = "#projectId")

View File

@ -1,7 +1,7 @@
package com.databasir.api; package com.databasir.api;
import com.databasir.common.JsonData; import com.databasir.common.JsonData;
import com.databasir.core.domain.log.annotation.Operation; import com.databasir.core.domain.log.annotation.AuditLog;
import com.databasir.core.domain.system.data.SystemEmailResponse; import com.databasir.core.domain.system.data.SystemEmailResponse;
import com.databasir.core.domain.system.data.SystemEmailUpdateRequest; import com.databasir.core.domain.system.data.SystemEmailUpdateRequest;
import com.databasir.core.domain.system.service.SystemService; import com.databasir.core.domain.system.service.SystemService;
@ -28,14 +28,14 @@ public class SettingController {
} }
@DeleteMapping(Routes.Setting.DELETE_SYS_EMAIL) @DeleteMapping(Routes.Setting.DELETE_SYS_EMAIL)
@Operation(module = Operation.Modules.SETTING, name = "重置系统邮箱") @AuditLog(module = AuditLog.Modules.SETTING, name = "重置系统邮箱")
public JsonData<Void> deleteSysEmail() { public JsonData<Void> deleteSysEmail() {
systemService.deleteSystemEmail(); systemService.deleteSystemEmail();
return JsonData.ok(); return JsonData.ok();
} }
@PostMapping(Routes.Setting.UPDATE_SYS_EMAIL) @PostMapping(Routes.Setting.UPDATE_SYS_EMAIL)
@Operation(module = Operation.Modules.SETTING, name = "更新邮件配置") @AuditLog(module = AuditLog.Modules.SETTING, name = "更新邮件配置")
public JsonData<Void> updateSystemEmailSetting(@RequestBody @Valid SystemEmailUpdateRequest request) { public JsonData<Void> updateSystemEmailSetting(@RequestBody @Valid SystemEmailUpdateRequest request) {
systemService.updateEmailSetting(request); systemService.updateEmailSetting(request);
return JsonData.ok(); return JsonData.ok();

View File

@ -5,7 +5,7 @@ import com.databasir.api.validator.UserOperationValidator;
import com.databasir.common.JsonData; import com.databasir.common.JsonData;
import com.databasir.common.exception.Forbidden; import com.databasir.common.exception.Forbidden;
import com.databasir.core.domain.DomainErrors; import com.databasir.core.domain.DomainErrors;
import com.databasir.core.domain.log.annotation.Operation; import com.databasir.core.domain.log.annotation.AuditLog;
import com.databasir.core.domain.user.data.*; import com.databasir.core.domain.user.data.*;
import com.databasir.core.domain.user.service.UserService; import com.databasir.core.domain.user.service.UserService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -37,7 +37,7 @@ public class UserController {
@PostMapping(Routes.User.DISABLE) @PostMapping(Routes.User.DISABLE)
@PreAuthorize("hasAnyAuthority('SYS_OWNER')") @PreAuthorize("hasAnyAuthority('SYS_OWNER')")
@Operation(module = Operation.Modules.USER, name = "禁用用户", involvedUserId = "#userId") @AuditLog(module = AuditLog.Modules.USER, name = "禁用用户", involvedUserId = "#userId")
public JsonData<Void> disableUser(@PathVariable Integer userId) { public JsonData<Void> disableUser(@PathVariable Integer userId) {
if (userOperationValidator.isMyself(userId)) { if (userOperationValidator.isMyself(userId)) {
throw DomainErrors.CANNOT_UPDATE_SELF_ENABLED_STATUS.exception(); throw DomainErrors.CANNOT_UPDATE_SELF_ENABLED_STATUS.exception();
@ -48,7 +48,7 @@ public class UserController {
@PostMapping(Routes.User.ENABLE) @PostMapping(Routes.User.ENABLE)
@PreAuthorize("hasAnyAuthority('SYS_OWNER')") @PreAuthorize("hasAnyAuthority('SYS_OWNER')")
@Operation(module = Operation.Modules.USER, name = "启用用户", involvedUserId = "#userId") @AuditLog(module = AuditLog.Modules.USER, name = "启用用户", involvedUserId = "#userId")
public JsonData<Void> enableUser(@PathVariable Integer userId) { public JsonData<Void> enableUser(@PathVariable Integer userId) {
if (userOperationValidator.isMyself(userId)) { if (userOperationValidator.isMyself(userId)) {
throw DomainErrors.CANNOT_UPDATE_SELF_ENABLED_STATUS.exception(); throw DomainErrors.CANNOT_UPDATE_SELF_ENABLED_STATUS.exception();
@ -59,7 +59,7 @@ public class UserController {
@PostMapping(Routes.User.CREATE) @PostMapping(Routes.User.CREATE)
@PreAuthorize("hasAnyAuthority('SYS_OWNER')") @PreAuthorize("hasAnyAuthority('SYS_OWNER')")
@Operation(module = Operation.Modules.USER, name = "创建用户") @AuditLog(module = AuditLog.Modules.USER, name = "创建用户")
public JsonData<Void> create(@RequestBody @Valid UserCreateRequest request) { public JsonData<Void> create(@RequestBody @Valid UserCreateRequest request) {
userService.create(request, UserSource.MANUAL); userService.create(request, UserSource.MANUAL);
return JsonData.ok(); return JsonData.ok();
@ -82,7 +82,7 @@ public class UserController {
@PostMapping(Routes.User.RENEW_PASSWORD) @PostMapping(Routes.User.RENEW_PASSWORD)
@PreAuthorize("hasAnyAuthority('SYS_OWNER')") @PreAuthorize("hasAnyAuthority('SYS_OWNER')")
@Operation(module = Operation.Modules.USER, name = "重置用户密码", involvedUserId = "#userId") @AuditLog(module = AuditLog.Modules.USER, name = "重置用户密码", involvedUserId = "#userId")
public JsonData<Void> renewPassword(@PathVariable Integer userId) { public JsonData<Void> renewPassword(@PathVariable Integer userId) {
Integer operatorUserId = LoginUserContext.getLoginUserId(); Integer operatorUserId = LoginUserContext.getLoginUserId();
userService.renewPassword(operatorUserId, userId); userService.renewPassword(operatorUserId, userId);
@ -91,7 +91,7 @@ public class UserController {
@PostMapping(Routes.User.ADD_OR_REMOVE_SYS_OWNER) @PostMapping(Routes.User.ADD_OR_REMOVE_SYS_OWNER)
@PreAuthorize("hasAnyAuthority('SYS_OWNER')") @PreAuthorize("hasAnyAuthority('SYS_OWNER')")
@Operation(module = Operation.Modules.USER, name = "添加系统管理员", involvedUserId = "#userId") @AuditLog(module = AuditLog.Modules.USER, name = "添加系统管理员", involvedUserId = "#userId")
public JsonData<Void> addSysOwner(@PathVariable Integer userId) { public JsonData<Void> addSysOwner(@PathVariable Integer userId) {
userOperationValidator.forbiddenIfUpdateSelfRole(userId); userOperationValidator.forbiddenIfUpdateSelfRole(userId);
userService.addSysOwnerTo(userId); userService.addSysOwnerTo(userId);
@ -100,7 +100,7 @@ public class UserController {
@DeleteMapping(Routes.User.ADD_OR_REMOVE_SYS_OWNER) @DeleteMapping(Routes.User.ADD_OR_REMOVE_SYS_OWNER)
@PreAuthorize("hasAnyAuthority('SYS_OWNER')") @PreAuthorize("hasAnyAuthority('SYS_OWNER')")
@Operation(module = Operation.Modules.USER, name = "移除系统管理员", involvedUserId = "#userId") @AuditLog(module = AuditLog.Modules.USER, name = "移除系统管理员", involvedUserId = "#userId")
public JsonData<Void> removeSysOwner(@PathVariable Integer userId) { public JsonData<Void> removeSysOwner(@PathVariable Integer userId) {
userOperationValidator.forbiddenIfUpdateSelfRole(userId); userOperationValidator.forbiddenIfUpdateSelfRole(userId);
userService.removeSysOwnerFrom(userId); userService.removeSysOwnerFrom(userId);
@ -108,7 +108,7 @@ public class UserController {
} }
@PostMapping(Routes.User.UPDATE_PASSWORD) @PostMapping(Routes.User.UPDATE_PASSWORD)
@Operation(module = Operation.Modules.USER, name = "更新密码", involvedUserId = "#userId") @AuditLog(module = AuditLog.Modules.USER, name = "更新密码", involvedUserId = "#userId")
public JsonData<Void> updatePassword(@PathVariable Integer userId, public JsonData<Void> updatePassword(@PathVariable Integer userId,
@RequestBody @Valid UserPasswordUpdateRequest request) { @RequestBody @Valid UserPasswordUpdateRequest request) {
if (userOperationValidator.isMyself(userId)) { if (userOperationValidator.isMyself(userId)) {
@ -120,7 +120,7 @@ public class UserController {
} }
@PostMapping(Routes.User.UPDATE_NICKNAME) @PostMapping(Routes.User.UPDATE_NICKNAME)
@Operation(module = Operation.Modules.USER, name = "更新昵称", involvedUserId = "#userId") @AuditLog(module = AuditLog.Modules.USER, name = "更新昵称", involvedUserId = "#userId")
public JsonData<Void> updateNickname(@PathVariable Integer userId, public JsonData<Void> updateNickname(@PathVariable Integer userId,
@RequestBody @Valid UserNicknameUpdateRequest request) { @RequestBody @Valid UserNicknameUpdateRequest request) {
if (userOperationValidator.isMyself(userId)) { if (userOperationValidator.isMyself(userId)) {

View File

@ -2,7 +2,7 @@ package com.databasir.api.advice;
import com.databasir.api.config.security.DatabasirUserDetails; import com.databasir.api.config.security.DatabasirUserDetails;
import com.databasir.common.JsonData; import com.databasir.common.JsonData;
import com.databasir.core.domain.log.annotation.Operation; import com.databasir.core.domain.log.annotation.AuditLog;
import com.databasir.core.domain.log.data.OperationLogRequest; import com.databasir.core.domain.log.data.OperationLogRequest;
import com.databasir.core.domain.log.service.OperationLogService; import com.databasir.core.domain.log.service.OperationLogService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -38,17 +38,17 @@ public class OperationLogAspect {
private ParameterNameDiscoverer parameterNameDiscoverer = new LocalVariableTableParameterNameDiscoverer(); private ParameterNameDiscoverer parameterNameDiscoverer = new LocalVariableTableParameterNameDiscoverer();
@AfterReturning(value = "@annotation(operation)", returning = "returnValue") @AfterReturning(value = "@annotation(operation)", returning = "returnValue")
public void log(JoinPoint joinPoint, Object returnValue, Operation operation) { public void log(JoinPoint joinPoint, Object returnValue, AuditLog operation) {
saveLog(operation, joinPoint, (JsonData<Object>) returnValue); saveLog(operation, joinPoint, (JsonData<Object>) returnValue);
} }
@AfterThrowing(value = "@annotation(operation)", throwing = "ex") @AfterThrowing(value = "@annotation(operation)", throwing = "ex")
public void log(JoinPoint joinPoint, RuntimeException ex, Operation operation) { public void log(JoinPoint joinPoint, RuntimeException ex, AuditLog operation) {
saveLog(operation, joinPoint, JsonData.error("-1", ex.getMessage())); saveLog(operation, joinPoint, JsonData.error("-1", ex.getMessage()));
throw ex; throw ex;
} }
private void saveLog(Operation operation, JoinPoint joinPoint, JsonData<Object> result) { private void saveLog(AuditLog operation, JoinPoint joinPoint, JsonData<Object> result) {
MethodSignature signature = (MethodSignature) joinPoint.getSignature(); MethodSignature signature = (MethodSignature) joinPoint.getSignature();
Method method = signature.getMethod(); Method method = signature.getMethod();
Object[] arguments = joinPoint.getArgs(); Object[] arguments = joinPoint.getArgs();
@ -65,7 +65,7 @@ public class OperationLogAspect {
int userId = userId(); int userId = userId();
String username = principal.getUserPojo().getUsername(); String username = principal.getUserPojo().getUsername();
String nickname = principal.getUserPojo().getNickname(); String nickname = principal.getUserPojo().getNickname();
if (userId == Operation.Types.SYSTEM_USER_ID) { if (userId == AuditLog.Types.SYSTEM_USER_ID) {
username = "system"; username = "system";
nickname = "system"; nickname = "system";
} }

View File

@ -7,7 +7,7 @@ import java.lang.annotation.Target;
@Target(ElementType.METHOD) @Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)
public @interface Operation { public @interface AuditLog {
String module(); String module();

View File

@ -1,7 +1,7 @@
package com.databasir.core.domain.log.service; package com.databasir.core.domain.log.service;
import com.databasir.common.JsonData; import com.databasir.common.JsonData;
import com.databasir.core.domain.log.annotation.Operation; import com.databasir.core.domain.log.annotation.AuditLog;
import com.databasir.core.domain.log.converter.OperationLogPojoConverter; import com.databasir.core.domain.log.converter.OperationLogPojoConverter;
import com.databasir.core.domain.log.converter.OperationLogRequestConverter; import com.databasir.core.domain.log.converter.OperationLogRequestConverter;
import com.databasir.core.domain.log.data.OperationLogPageCondition; import com.databasir.core.domain.log.data.OperationLogPageCondition;
@ -55,7 +55,7 @@ public class OperationLogService {
OperationLogRequest log = OperationLogRequest.builder() OperationLogRequest log = OperationLogRequest.builder()
.isSuccess(false) .isSuccess(false)
.operationCode("login") .operationCode("login")
.operationModule(Operation.Modules.LOGIN) .operationModule(AuditLog.Modules.LOGIN)
.operationName("登录") .operationName("登录")
.operatorNickname(username) .operatorNickname(username)
.operatorUsername(username) .operatorUsername(username)
@ -81,7 +81,7 @@ public class OperationLogService {
.isSuccess(success) .isSuccess(success)
.involvedUserId(user.getId()) .involvedUserId(user.getId())
.operationCode("login") .operationCode("login")
.operationModule(Operation.Modules.LOGIN) .operationModule(AuditLog.Modules.LOGIN)
.operationName("登录") .operationName("登录")
.operatorNickname(user.getNickname()) .operatorNickname(user.getNickname())
.operatorUsername(user.getUsername()) .operatorUsername(user.getUsername())