feat(user): 加入审计日志、用户中心操作日志

This commit is contained in:
2025-12-31 15:19:40 +08:00
parent bab3ea1a15
commit 467b2a7d93
45 changed files with 580 additions and 198 deletions
@@ -98,15 +98,15 @@
<!-- 操作日志 --> <!-- 操作日志 -->
<el-tab-pane label="操作日志" name="second"> <el-tab-pane label="操作日志" name="second">
<el-table v-loading="loading" :data="data" style="width: 100%;"> <el-table v-loading="loading" :data="data" style="width: 100%;">
<el-table-column prop="description" label="行为" /> <el-table-column prop="bizName" label="业务名称" />
<el-table-column prop="requestIp" label="IP" /> <el-table-column prop="requestIp" label="IP" />
<el-table-column :show-overflow-tooltip="true" prop="address" label="IP来源" /> <el-table-column :show-overflow-tooltip="true" prop="address" label="IP来源" />
<el-table-column prop="browser" label="浏览器" /> <el-table-column prop="browserInfo" label="浏览器" />
<el-table-column prop="time" label="请求耗时" align="center"> <el-table-column prop="executeTime" label="请求耗时" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag v-if="scope.row.time <= 300">{{ scope.row.time }}ms</el-tag> <el-tag v-if="scope.row.executeTime <= 300">{{ scope.row.time }}ms</el-tag>
<el-tag v-else-if="scope.row.time <= 1000" type="warning">{{ scope.row.time }}ms</el-tag> <el-tag v-else-if="scope.row.executeTime <= 1000" type="warning">{{ scope.row.executeTime }}ms</el-tag>
<el-tag v-else type="danger">{{ scope.row.time }}ms</el-tag> <el-tag v-else type="danger">{{ scope.row.executeTime }}ms</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
@@ -211,7 +211,7 @@ export default {
} }
}, },
beforeInit() { beforeInit() {
this.url = 'api/logs/user' this.url = 'api/logs/searchUserLog'
return true return true
}, },
cropUploadSuccess(jsonData, field) { cropUploadSuccess(jsonData, field) {
@@ -1,6 +1,7 @@
package cn.odboy.system.constant; package cn.odboy.system.constant;
public interface SystemYesOrNoChConst { public interface SystemYesOrNoChConst {
String YES_STR = "是"; String YES_STR = "是";
String NO_STR = "否"; String NO_STR = "否";
} }
@@ -16,7 +16,6 @@
package cn.odboy.system.controller; package cn.odboy.system.controller;
import cn.odboy.annotation.AnonymousPostMapping; import cn.odboy.annotation.AnonymousPostMapping;
import cn.odboy.system.dal.model.SystemUserInfoVo;
import cn.odboy.system.dal.model.SystemUserLoginArgs; import cn.odboy.system.dal.model.SystemUserLoginArgs;
import cn.odboy.system.service.SystemAuthService; import cn.odboy.system.service.SystemAuthService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -27,7 +26,6 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@@ -52,20 +50,6 @@ public class SystemAuthController {
return ResponseEntity.ok(loginInfo); return ResponseEntity.ok(loginInfo);
} }
@ApiOperation("获取用户信息")
@PostMapping(value = "/info")
public ResponseEntity<SystemUserInfoVo> getUserInfo() {
SystemUserInfoVo userInfoVo = systemAuthService.getCurrentUserInfoVo();
return ResponseEntity.ok(userInfoVo);
}
@ApiOperation("获取验证码")
@AnonymousPostMapping(value = "/captcha/getImage")
public ResponseEntity<Map<String, Object>> getCode() {
Map<String, Object> imgResult = systemAuthService.getCaptchaInfo();
return ResponseEntity.ok(imgResult);
}
@ApiOperation("退出登录") @ApiOperation("退出登录")
@AnonymousPostMapping(value = "/logout") @AnonymousPostMapping(value = "/logout")
public ResponseEntity<Void> logout(HttpServletRequest request) { public ResponseEntity<Void> logout(HttpServletRequest request) {
@@ -17,6 +17,7 @@ package cn.odboy.system.controller;
import cn.odboy.system.constant.SystemCaptchaBizEnum; import cn.odboy.system.constant.SystemCaptchaBizEnum;
import cn.odboy.system.dal.model.SystemCheckEmailCaptchaArgs; import cn.odboy.system.dal.model.SystemCheckEmailCaptchaArgs;
import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.service.SystemEmailService; import cn.odboy.system.service.SystemEmailService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@@ -37,23 +38,25 @@ public class SystemCaptchaController {
@Autowired @Autowired
private SystemEmailService systemEmailService; private SystemEmailService systemEmailService;
@OperationLog
@ApiOperation("重置邮箱, 发送验证码") @ApiOperation("重置邮箱, 发送验证码")
@PostMapping(value = "/sendResetEmailCaptcha") @PostMapping(value = "/sendResetEmailCode")
public ResponseEntity<Void> sendResetEmailCaptcha(@RequestParam String email) { public ResponseEntity<Void> sendResetEmailCode(@RequestParam String email) {
systemEmailService.sendCaptcha(SystemCaptchaBizEnum.EMAIL_RESET_EMAIL_CODE, email); systemEmailService.sendCaptcha(SystemCaptchaBizEnum.EMAIL_RESET_EMAIL_CODE, email);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("重置密码,发送验证码") @ApiOperation("重置密码,发送验证码")
@PostMapping(value = "/sendResetPasswordCaptcha") @PostMapping(value = "/sendResetPasswordCode")
public ResponseEntity<Void> sendResetPasswordCaptcha(@RequestParam String email) { public ResponseEntity<Void> sendResetPasswordCode(@RequestParam String email) {
systemEmailService.sendCaptcha(SystemCaptchaBizEnum.EMAIL_RESET_PWD_CODE, email); systemEmailService.sendCaptcha(SystemCaptchaBizEnum.EMAIL_RESET_PWD_CODE, email);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@ApiOperation("验证码验证") @ApiOperation("验证码验证")
@PostMapping(value = "/checkEmailCaptcha") @PostMapping(value = "/verifyCode")
public ResponseEntity<Void> checkEmailCaptcha(@Validated @RequestBody SystemCheckEmailCaptchaArgs args) { public ResponseEntity<Void> verifyCode(@Validated @RequestBody SystemCheckEmailCaptchaArgs args) {
systemEmailService.checkEmailCaptcha(args); systemEmailService.checkEmailCaptcha(args);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@@ -34,16 +34,16 @@ public class SystemComponentController {
private SystemDeptService systemDeptService; private SystemDeptService systemDeptService;
@ApiOperation("查询部门下拉选择数据源") @ApiOperation("查询部门下拉选择数据源")
@PostMapping(value = "/queryDeptSelectDataSource") @PostMapping(value = "/listDeptSelectDataSource")
@PreAuthorize("@el.check()") @PreAuthorize("@el.check()")
public ResponseEntity<?> queryDeptSelectDataSource() { public ResponseEntity<?> listDeptSelectDataSource() {
return ResponseEntity.ok(systemDeptService.queryDeptSelectDataSource()); return ResponseEntity.ok(systemDeptService.listDeptSelectDataSource());
} }
@ApiOperation("查询部门下拉选择Pro数据源") @ApiOperation("查询部门下拉选择Pro数据源")
@PostMapping(value = "/queryDeptSelectProDataSource") @PostMapping(value = "/listDeptSelectProDataSource")
@PreAuthorize("@el.check()") @PreAuthorize("@el.check()")
public ResponseEntity<?> queryDeptSelectProDataSource() { public ResponseEntity<?> listDeptSelectProDataSource() {
return ResponseEntity.ok(systemDeptService.queryDeptSelectProDataSource()); return ResponseEntity.ok(systemDeptService.listDeptSelectProDataSource());
} }
} }
@@ -20,6 +20,7 @@ import cn.odboy.base.KitPageResult;
import cn.odboy.system.dal.dataobject.SystemDeptTb; import cn.odboy.system.dal.dataobject.SystemDeptTb;
import cn.odboy.system.dal.model.SystemCreateDeptArgs; import cn.odboy.system.dal.model.SystemCreateDeptArgs;
import cn.odboy.system.dal.model.SystemQueryDeptArgs; import cn.odboy.system.dal.model.SystemQueryDeptArgs;
import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.service.SystemDeptService; import cn.odboy.system.service.SystemDeptService;
import cn.odboy.util.KitPageUtil; import cn.odboy.util.KitPageUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -46,6 +47,7 @@ public class SystemDeptController {
@Autowired @Autowired
private SystemDeptService systemDeptService; private SystemDeptService systemDeptService;
@OperationLog
@ApiOperation("导出部门数据") @ApiOperation("导出部门数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('dept:list')") @PreAuthorize("@el.check('dept:list')")
@@ -54,7 +56,7 @@ public class SystemDeptController {
} }
@ApiOperation("查询部门") @ApiOperation("查询部门")
@PostMapping @PostMapping(value = "/searchDept")
@PreAuthorize("@el.check('user:list','dept:list')") @PreAuthorize("@el.check('user:list','dept:list')")
public ResponseEntity<KitPageResult<SystemDeptTb>> queryDept( public ResponseEntity<KitPageResult<SystemDeptTb>> queryDept(
@Validated @RequestBody KitPageArgs<SystemQueryDeptArgs> pageArgs) throws Exception { @Validated @RequestBody KitPageArgs<SystemQueryDeptArgs> pageArgs) throws Exception {
@@ -63,13 +65,14 @@ public class SystemDeptController {
} }
@ApiOperation("查询部门:根据ID获取同级与上级数据") @ApiOperation("查询部门:根据ID获取同级与上级数据")
@PostMapping("/queryDeptSuperiorTree") @PostMapping("/searchDeptTree")
@PreAuthorize("@el.check('user:list','dept:list')") @PreAuthorize("@el.check('user:list','dept:list')")
public ResponseEntity<KitPageResult<SystemDeptTb>> queryDeptSuperiorTree(@RequestBody List<Long> ids, public ResponseEntity<KitPageResult<SystemDeptTb>> queryDeptSuperiorTree(@RequestBody List<Long> ids,
@RequestParam(defaultValue = "false") Boolean exclude) { @RequestParam(defaultValue = "false") Boolean exclude) {
return ResponseEntity.ok(systemDeptService.searchDeptTree(ids, exclude)); return ResponseEntity.ok(systemDeptService.searchDeptTree(ids, exclude));
} }
@OperationLog
@ApiOperation("新增部门") @ApiOperation("新增部门")
@PostMapping(value = "/saveDept") @PostMapping(value = "/saveDept")
@PreAuthorize("@el.check('dept:add')") @PreAuthorize("@el.check('dept:add')")
@@ -78,18 +81,20 @@ public class SystemDeptController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("修改部门") @ApiOperation("修改部门")
@PostMapping(value = "/modifyDept") @PostMapping(value = "/updateDeptById")
@PreAuthorize("@el.check('dept:edit')") @PreAuthorize("@el.check('dept:edit')")
public ResponseEntity<Void> modifyDept(@Validated(SystemDeptTb.Update.class) @RequestBody SystemDeptTb args) { public ResponseEntity<Void> updateDeptById(@Validated(SystemDeptTb.Update.class) @RequestBody SystemDeptTb args) {
systemDeptService.updateDept(args); systemDeptService.updateDeptById(args);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("删除部门") @ApiOperation("删除部门")
@PostMapping(value = "/removeDeptByIds") @PostMapping(value = "/deleteDeptByIds")
@PreAuthorize("@el.check('dept:del')") @PreAuthorize("@el.check('dept:del')")
public ResponseEntity<Void> removeDeptByIds(@RequestBody Set<Long> ids) { public ResponseEntity<Void> deleteDeptByIds(@RequestBody Set<Long> ids) {
systemDeptService.deleteDeptByIds(ids); systemDeptService.deleteDeptByIds(ids);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@@ -20,7 +20,7 @@ import cn.odboy.base.KitPageResult;
import cn.odboy.system.dal.dataobject.SystemDictTb; import cn.odboy.system.dal.dataobject.SystemDictTb;
import cn.odboy.system.dal.model.SystemCreateDictArgs; import cn.odboy.system.dal.model.SystemCreateDictArgs;
import cn.odboy.system.dal.model.SystemQueryDictArgs; import cn.odboy.system.dal.model.SystemQueryDictArgs;
import cn.odboy.system.service.SystemDictDetailService; import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.service.SystemDictService; import cn.odboy.system.service.SystemDictService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -46,9 +46,8 @@ public class SystemDictController {
@Autowired @Autowired
private SystemDictService systemDictService; private SystemDictService systemDictService;
@Autowired
private SystemDictDetailService systemDictDetailService;
@OperationLog
@ApiOperation("导出字典数据") @ApiOperation("导出字典数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('dict:list')") @PreAuthorize("@el.check('dict:list')")
@@ -56,15 +55,16 @@ public class SystemDictController {
systemDictService.exportDictXlsx(response, args); systemDictService.exportDictXlsx(response, args);
} }
@ApiOperation("查询字典") @Deprecated
@ApiOperation("查询所有字典")
@PostMapping(value = "/queryAllDict") @PostMapping(value = "/queryAllDict")
@PreAuthorize("@el.check('dict:list')") @PreAuthorize("@el.check('dict:list')")
public ResponseEntity<List<SystemDictTb>> queryAllDict() { public ResponseEntity<List<SystemDictTb>> queryAllDict() {
return ResponseEntity.ok(systemDictService.queryDictByArgs(new SystemQueryDictArgs())); return ResponseEntity.ok(systemDictService.queryDictByArgs(new SystemQueryDictArgs()));
} }
@ApiOperation("查询字典") @ApiOperation("分页查询字典")
@PostMapping @PostMapping(value = "/searchDict")
@PreAuthorize("@el.check('dict:list')") @PreAuthorize("@el.check('dict:list')")
public ResponseEntity<KitPageResult<SystemDictTb>> queryDictByArgs( public ResponseEntity<KitPageResult<SystemDictTb>> queryDictByArgs(
@Validated @RequestBody KitPageArgs<SystemQueryDictArgs> pageArgs) { @Validated @RequestBody KitPageArgs<SystemQueryDictArgs> pageArgs) {
@@ -72,6 +72,7 @@ public class SystemDictController {
return ResponseEntity.ok(systemDictService.searchDict(pageArgs.getArgs(), page)); return ResponseEntity.ok(systemDictService.searchDict(pageArgs.getArgs(), page));
} }
@OperationLog
@ApiOperation("新增字典") @ApiOperation("新增字典")
@PostMapping(value = "/saveDict") @PostMapping(value = "/saveDict")
@PreAuthorize("@el.check('dict:add')") @PreAuthorize("@el.check('dict:add')")
@@ -80,18 +81,20 @@ public class SystemDictController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("修改字典") @ApiOperation("修改字典")
@PostMapping(value = "/modifyDictById") @PostMapping(value = "/updateDictById")
@PreAuthorize("@el.check('dict:edit')") @PreAuthorize("@el.check('dict:edit')")
public ResponseEntity<Void> modifyDictById(@Validated(SystemDictTb.Update.class) @RequestBody SystemDictTb args) { public ResponseEntity<Void> updateDictById(@Validated(SystemDictTb.Update.class) @RequestBody SystemDictTb args) {
systemDictService.updateDictById(args); systemDictService.updateDictById(args);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("删除字典") @ApiOperation("删除字典")
@PostMapping(value = "/removeDictByIds") @PostMapping(value = "/deleteDictByIds")
@PreAuthorize("@el.check('dict:del')") @PreAuthorize("@el.check('dict:del')")
public ResponseEntity<Void> removeDictByIds(@RequestBody Set<Long> ids) { public ResponseEntity<Void> deleteDictByIds(@RequestBody Set<Long> ids) {
systemDictService.deleteDictByIds(ids); systemDictService.deleteDictByIds(ids);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@@ -21,6 +21,7 @@ import cn.odboy.system.dal.dataobject.SystemDictDetailTb;
import cn.odboy.system.dal.model.SystemCreateDictDetailArgs; import cn.odboy.system.dal.model.SystemCreateDictDetailArgs;
import cn.odboy.system.dal.model.SystemDictDetailVo; import cn.odboy.system.dal.model.SystemDictDetailVo;
import cn.odboy.system.dal.model.SystemQueryDictDetailArgs; import cn.odboy.system.dal.model.SystemQueryDictDetailArgs;
import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.service.SystemDictDetailService; import cn.odboy.system.service.SystemDictDetailService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -47,14 +48,7 @@ public class SystemDictDetailController {
private SystemDictDetailService systemDictDetailService; private SystemDictDetailService systemDictDetailService;
@ApiOperation("查询字典详情") @ApiOperation("查询字典详情")
@PostMapping @PostMapping(value = "/searchDictDetail")
public ResponseEntity<KitPageResult<SystemDictDetailVo>> queryDictDetailByCrud(
@Validated @RequestBody KitPageArgs<SystemQueryDictDetailArgs> args) {
return queryDictDetailByArgs(args);
}
@ApiOperation("查询字典详情")
@PostMapping(value = "/queryDictDetailByArgs")
public ResponseEntity<KitPageResult<SystemDictDetailVo>> queryDictDetailByArgs( public ResponseEntity<KitPageResult<SystemDictDetailVo>> queryDictDetailByArgs(
@Validated @RequestBody KitPageArgs<SystemQueryDictDetailArgs> pageArgs) { @Validated @RequestBody KitPageArgs<SystemQueryDictDetailArgs> pageArgs) {
Page<SystemDictDetailTb> page = new Page<>(pageArgs.getPage(), pageArgs.getSize()); Page<SystemDictDetailTb> page = new Page<>(pageArgs.getPage(), pageArgs.getSize());
@@ -68,6 +62,7 @@ public class SystemDictDetailController {
return ResponseEntity.ok(dictMap); return ResponseEntity.ok(dictMap);
} }
@OperationLog
@ApiOperation("新增字典详情") @ApiOperation("新增字典详情")
@PostMapping(value = "/saveDictDetail") @PostMapping(value = "/saveDictDetail")
@PreAuthorize("@el.check('dict:add')") @PreAuthorize("@el.check('dict:add')")
@@ -76,19 +71,21 @@ public class SystemDictDetailController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("修改字典详情") @ApiOperation("修改字典详情")
@PostMapping(value = "/modifyDictDetailById") @PostMapping(value = "/updateDictDetailById")
@PreAuthorize("@el.check('dict:edit')") @PreAuthorize("@el.check('dict:edit')")
public ResponseEntity<Void> modifyDictDetailById( public ResponseEntity<Void> updateDictDetailById(
@Validated(SystemDictDetailTb.Update.class) @RequestBody SystemDictDetailTb args) { @Validated(SystemDictDetailTb.Update.class) @RequestBody SystemDictDetailTb args) {
systemDictDetailService.updateDictDetailById(args); systemDictDetailService.updateDictDetailById(args);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("删除字典详情") @ApiOperation("删除字典详情")
@PostMapping(value = "/removeDictDetailById") @PostMapping(value = "/deleteDictDetailById")
@PreAuthorize("@el.check('dict:del')") @PreAuthorize("@el.check('dict:del')")
public ResponseEntity<Void> removeDictDetailById(@RequestBody SystemDictDetailTb args) { public ResponseEntity<Void> deleteDictDetailById(@RequestBody SystemDictDetailTb args) {
systemDictDetailService.deleteDictDetailById(args.getId()); systemDictDetailService.deleteDictDetailById(args.getId());
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@@ -17,6 +17,7 @@ package cn.odboy.system.controller;
import cn.odboy.system.dal.dataobject.SystemEmailConfigTb; import cn.odboy.system.dal.dataobject.SystemEmailConfigTb;
import cn.odboy.system.dal.model.SystemSendEmailArgs; import cn.odboy.system.dal.model.SystemSendEmailArgs;
import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.service.SystemEmailService; import cn.odboy.system.service.SystemEmailService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@@ -45,17 +46,19 @@ public class SystemEmailController {
return ResponseEntity.ok(systemEmailService.getLastEmailConfig()); return ResponseEntity.ok(systemEmailService.getLastEmailConfig());
} }
@ApiOperation("配置邮件") @OperationLog
@PostMapping(value = "/modifyEmailConfig") @ApiOperation("修改邮箱配置")
public ResponseEntity<Void> modifyEmailConfig(@Validated @RequestBody SystemEmailConfigTb emailConfig) @PostMapping(value = "/updateEmailConfigById")
public ResponseEntity<Void> updateEmailConfigById(@Validated @RequestBody SystemEmailConfigTb emailConfig)
throws Exception { throws Exception {
systemEmailService.updateEmailConfigById(emailConfig); systemEmailService.updateEmailConfigById(emailConfig);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("发送邮件") @ApiOperation("发送邮件")
@PostMapping(value = "/sendEmail") @PostMapping(value = "/send")
public ResponseEntity<Void> sendEmail(@Validated @RequestBody SystemSendEmailArgs sendEmailRequest) { public ResponseEntity<Void> send(@Validated @RequestBody SystemSendEmailArgs sendEmailRequest) {
systemEmailService.sendEmail(sendEmailRequest); systemEmailService.sendEmail(sendEmailRequest);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@@ -20,6 +20,7 @@ import cn.odboy.base.KitPageResult;
import cn.odboy.system.dal.dataobject.SystemJobTb; import cn.odboy.system.dal.dataobject.SystemJobTb;
import cn.odboy.system.dal.model.SystemCreateJobArgs; import cn.odboy.system.dal.model.SystemCreateJobArgs;
import cn.odboy.system.dal.model.SystemQueryJobArgs; import cn.odboy.system.dal.model.SystemQueryJobArgs;
import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.service.SystemJobService; import cn.odboy.system.service.SystemJobService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -45,6 +46,7 @@ public class SystemJobController {
@Autowired @Autowired
private SystemJobService systemJobService; private SystemJobService systemJobService;
@OperationLog
@ApiOperation("导出岗位数据") @ApiOperation("导出岗位数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('job:list')") @PreAuthorize("@el.check('job:list')")
@@ -52,8 +54,8 @@ public class SystemJobController {
systemJobService.exportJobXlsx(response, args); systemJobService.exportJobXlsx(response, args);
} }
@ApiOperation("查询岗位") @ApiOperation("分页查询岗位")
@PostMapping(value = "/queryAllEnableJob") @PostMapping(value = "/searchJob")
@PreAuthorize("@el.check('job:list','user:list')") @PreAuthorize("@el.check('job:list','user:list')")
public ResponseEntity<KitPageResult<SystemJobTb>> queryJobByArgs( public ResponseEntity<KitPageResult<SystemJobTb>> queryJobByArgs(
@Validated @RequestBody KitPageArgs<SystemQueryJobArgs> pageArgs) { @Validated @RequestBody KitPageArgs<SystemQueryJobArgs> pageArgs) {
@@ -61,14 +63,7 @@ public class SystemJobController {
return ResponseEntity.ok(systemJobService.searchJobByArgs(pageArgs.getArgs(), page)); return ResponseEntity.ok(systemJobService.searchJobByArgs(pageArgs.getArgs(), page));
} }
@ApiOperation("查询岗位") @OperationLog
@PostMapping
@PreAuthorize("@el.check('job:list','user:list')")
public ResponseEntity<KitPageResult<SystemJobTb>> queryJobByCrud(
@Validated @RequestBody KitPageArgs<SystemQueryJobArgs> args) {
return queryJobByArgs(args);
}
@ApiOperation("新增岗位") @ApiOperation("新增岗位")
@PostMapping(value = "/saveJob") @PostMapping(value = "/saveJob")
@PreAuthorize("@el.check('job:add')") @PreAuthorize("@el.check('job:add')")
@@ -77,18 +72,20 @@ public class SystemJobController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("修改岗位") @ApiOperation("修改岗位")
@PostMapping(value = "/modifyJobById") @PostMapping(value = "/updateJobById")
@PreAuthorize("@el.check('job:edit')") @PreAuthorize("@el.check('job:edit')")
public ResponseEntity<Void> modifyJobById(@Validated(SystemJobTb.Update.class) @RequestBody SystemJobTb args) { public ResponseEntity<Void> updateJobById(@Validated(SystemJobTb.Update.class) @RequestBody SystemJobTb args) {
systemJobService.updateJobById(args); systemJobService.updateJobById(args);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("删除岗位") @ApiOperation("删除岗位")
@PostMapping(value = "/removeJobByIds") @PostMapping(value = "/deleteJobByIds")
@PreAuthorize("@el.check('job:del')") @PreAuthorize("@el.check('job:del')")
public ResponseEntity<Void> removeJobByIds(@RequestBody Set<Long> ids) { public ResponseEntity<Void> deleteJobByIds(@RequestBody Set<Long> ids) {
systemJobService.deleteJobByIds(ids); systemJobService.deleteJobByIds(ids);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@@ -19,6 +19,7 @@ import cn.odboy.base.KitPageArgs;
import cn.odboy.base.KitPageResult; import cn.odboy.base.KitPageResult;
import cn.odboy.system.dal.dataobject.SystemLocalStorageTb; import cn.odboy.system.dal.dataobject.SystemLocalStorageTb;
import cn.odboy.system.dal.model.SystemQueryStorageArgs; import cn.odboy.system.dal.model.SystemQueryStorageArgs;
import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.service.SystemLocalStorageService; import cn.odboy.system.service.SystemLocalStorageService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -46,7 +47,7 @@ public class SystemLocalStorageController {
private SystemLocalStorageService localStorageService; private SystemLocalStorageService localStorageService;
@ApiOperation("查询文件") @ApiOperation("查询文件")
@PostMapping @PostMapping(value = "/searchLocalStorage")
@PreAuthorize("@el.check('storage:list')") @PreAuthorize("@el.check('storage:list')")
public ResponseEntity<KitPageResult<SystemLocalStorageTb>> queryLocalStorage( public ResponseEntity<KitPageResult<SystemLocalStorageTb>> queryLocalStorage(
@Validated @RequestBody KitPageArgs<SystemQueryStorageArgs> pageArgs) { @Validated @RequestBody KitPageArgs<SystemQueryStorageArgs> pageArgs) {
@@ -54,13 +55,15 @@ public class SystemLocalStorageController {
return ResponseEntity.ok(localStorageService.searchLocalStorage(pageArgs.getArgs(), page)); return ResponseEntity.ok(localStorageService.searchLocalStorage(pageArgs.getArgs(), page));
} }
@ApiOperation("导出数据") @OperationLog
@ApiOperation("导出本地存储记录数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('storage:list')") @PreAuthorize("@el.check('storage:list')")
public void exportFile(HttpServletResponse response, SystemQueryStorageArgs args) throws IOException { public void exportFile(HttpServletResponse response, SystemQueryStorageArgs args) throws IOException {
localStorageService.exportLocalStorageXlsx(response, args); localStorageService.exportLocalStorageXlsx(response, args);
} }
@OperationLog
@ApiOperation("上传文件") @ApiOperation("上传文件")
@PostMapping(value = "/uploadFile") @PostMapping(value = "/uploadFile")
@PreAuthorize("@el.check('storage:add')") @PreAuthorize("@el.check('storage:add')")
@@ -69,6 +72,7 @@ public class SystemLocalStorageController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("上传图片") @ApiOperation("上传图片")
@PostMapping("/uploadPicture") @PostMapping("/uploadPicture")
public ResponseEntity<SystemLocalStorageTb> uploadPicture(@RequestParam MultipartFile file) { public ResponseEntity<SystemLocalStorageTb> uploadPicture(@RequestParam MultipartFile file) {
@@ -76,16 +80,18 @@ public class SystemLocalStorageController {
return ResponseEntity.ok(localStorage); return ResponseEntity.ok(localStorage);
} }
@OperationLog
@ApiOperation("修改文件") @ApiOperation("修改文件")
@PostMapping(value = "/modifyLocalStorageById") @PostMapping(value = "/updateLocalStorageById")
@PreAuthorize("@el.check('storage:edit')") @PreAuthorize("@el.check('storage:edit')")
public ResponseEntity<Void> modifyLocalStorageById(@Validated @RequestBody SystemLocalStorageTb args) { public ResponseEntity<Void> updateLocalStorageById(@Validated @RequestBody SystemLocalStorageTb args) {
localStorageService.updateLocalStorageById(args); localStorageService.updateLocalStorageById(args);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@ApiOperation("多选删除") @OperationLog
@PostMapping(value = "/removeFileByIds") @ApiOperation("删除文件")
@PostMapping(value = "/deleteFileByIds")
public ResponseEntity<Void> deleteFileByIds(@RequestBody Long[] ids) { public ResponseEntity<Void> deleteFileByIds(@RequestBody Long[] ids) {
localStorageService.deleteFileByIds(ids); localStorageService.deleteFileByIds(ids);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
@@ -21,6 +21,7 @@ import cn.odboy.framework.exception.BadRequestException;
import cn.odboy.system.dal.dataobject.SystemMenuTb; import cn.odboy.system.dal.dataobject.SystemMenuTb;
import cn.odboy.system.dal.model.SystemMenuVo; import cn.odboy.system.dal.model.SystemMenuVo;
import cn.odboy.system.dal.model.SystemQueryMenuArgs; import cn.odboy.system.dal.model.SystemQueryMenuArgs;
import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.service.SystemMenuService; import cn.odboy.system.service.SystemMenuService;
import cn.odboy.util.KitPageUtil; import cn.odboy.util.KitPageUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -47,6 +48,7 @@ public class SystemMenuController {
@Autowired @Autowired
private SystemMenuService systemMenuService; private SystemMenuService systemMenuService;
@OperationLog
@ApiOperation("导出菜单数据") @ApiOperation("导出菜单数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('menu:list')") @PreAuthorize("@el.check('menu:list')")
@@ -62,30 +64,22 @@ public class SystemMenuController {
} }
@ApiOperation("返回全部的菜单") @ApiOperation("返回全部的菜单")
@PostMapping(value = "/queryMenuListByPid") @PostMapping(value = "/listMenuByPid")
@PreAuthorize("@el.check('menu:list','roles:list')") @PreAuthorize("@el.check('menu:list','roles:list')")
public ResponseEntity<List<SystemMenuTb>> queryMenuListByPid(@RequestParam Long pid) { public ResponseEntity<List<SystemMenuTb>> listMenuByPid(@RequestParam Long pid) {
List<SystemMenuTb> systemMenuTbs = systemMenuService.listMenuByPid(pid); List<SystemMenuTb> systemMenuTbs = systemMenuService.listMenuByPid(pid);
return ResponseEntity.ok(systemMenuTbs); return ResponseEntity.ok(systemMenuTbs);
} }
@ApiOperation("根据菜单ID返回所有子节点ID, 包含自身ID") @ApiOperation("根据菜单ID返回所有子节点ID, 包含自身ID")
@PostMapping(value = "/queryChildMenuSet") @PostMapping(value = "/listChildMenuSetByMenuId")
@PreAuthorize("@el.check('menu:list','roles:list')") @PreAuthorize("@el.check('menu:list','roles:list')")
public ResponseEntity<Set<Long>> queryChildMenuSet(@RequestParam Long id) { public ResponseEntity<Set<Long>> listChildMenuSetByMenuId(@RequestParam Long id) {
Set<Long> ids = systemMenuService.listChildMenuSetByMenuId(id); Set<Long> ids = systemMenuService.listChildMenuSetByMenuId(id);
return ResponseEntity.ok(ids); return ResponseEntity.ok(ids);
} }
@PostMapping @PostMapping(value = "/searchMenu")
@ApiOperation("查询菜单")
@PreAuthorize("@el.check('menu:list')")
public ResponseEntity<KitPageResult<SystemMenuTb>> queryAllMenuByCrud(
@Validated @RequestBody KitPageArgs<SystemQueryMenuArgs> args) throws Exception {
return queryAllMenu(args);
}
@PostMapping(value = "/queryMenuByArgs")
@ApiOperation("查询菜单") @ApiOperation("查询菜单")
@PreAuthorize("@el.check('menu:list')") @PreAuthorize("@el.check('menu:list')")
public ResponseEntity<KitPageResult<SystemMenuTb>> queryAllMenu( public ResponseEntity<KitPageResult<SystemMenuTb>> queryAllMenu(
@@ -102,6 +96,7 @@ public class SystemMenuController {
return ResponseEntity.ok(systemMenuTbs); return ResponseEntity.ok(systemMenuTbs);
} }
@OperationLog
@ApiOperation("新增菜单") @ApiOperation("新增菜单")
@PostMapping(value = "/saveMenu") @PostMapping(value = "/saveMenu")
@PreAuthorize("@el.check('menu:add')") @PreAuthorize("@el.check('menu:add')")
@@ -113,18 +108,20 @@ public class SystemMenuController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("修改菜单") @ApiOperation("修改菜单")
@PostMapping(value = "/modifyMenuById") @PostMapping(value = "/updateMenuById")
@PreAuthorize("@el.check('menu:edit')") @PreAuthorize("@el.check('menu:edit')")
public ResponseEntity<Void> modifyMenuById(@Validated(SystemMenuTb.Update.class) @RequestBody SystemMenuTb args) { public ResponseEntity<Void> updateMenuById(@Validated(SystemMenuTb.Update.class) @RequestBody SystemMenuTb args) {
systemMenuService.updateMenuById(args); systemMenuService.updateMenuById(args);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("删除菜单") @ApiOperation("删除菜单")
@PostMapping(value = "/removeMenuByIds") @PostMapping(value = "/deleteMenuByIds")
@PreAuthorize("@el.check('menu:del')") @PreAuthorize("@el.check('menu:del')")
public ResponseEntity<Void> removeMenuByIds(@RequestBody Set<Long> ids) { public ResponseEntity<Void> deleteMenuByIds(@RequestBody Set<Long> ids) {
systemMenuService.deleteMenuByIds(ids); systemMenuService.deleteMenuByIds(ids);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@@ -15,6 +15,7 @@
*/ */
package cn.odboy.system.controller; package cn.odboy.system.controller;
import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.service.SystemMonitorService; import cn.odboy.system.service.SystemMonitorService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@@ -34,10 +35,11 @@ public class SystemMonitorController {
@Autowired @Autowired
private SystemMonitorService systemMonitorService; private SystemMonitorService systemMonitorService;
@PostMapping(value = "/queryServerMonitorInfo") @OperationLog
@PostMapping(value = "/getServerMonitorInfo")
@ApiOperation("查询服务监控") @ApiOperation("查询服务监控")
@PreAuthorize("@el.check('monitor:list')") @PreAuthorize("@el.check('monitor:list')")
public ResponseEntity<Map<String, Object>> queryServerMonitorInfo() { public ResponseEntity<Map<String, Object>> getServerMonitorInfo() {
return ResponseEntity.ok(systemMonitorService.getServerMonitorInfo()); return ResponseEntity.ok(systemMonitorService.getServerMonitorInfo());
} }
} }
@@ -19,6 +19,7 @@ import cn.odboy.base.KitPageArgs;
import cn.odboy.base.KitPageResult; import cn.odboy.base.KitPageResult;
import cn.odboy.system.dal.model.SystemUserOnlineVo; import cn.odboy.system.dal.model.SystemUserOnlineVo;
import cn.odboy.system.dal.redis.SystemUserOnlineInfoDAO; import cn.odboy.system.dal.redis.SystemUserOnlineInfoDAO;
import cn.odboy.system.framework.operalog.OperationLog;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -43,23 +44,26 @@ public class SystemOnlineController {
@Autowired @Autowired
private SystemUserOnlineInfoDAO systemUserOnlineInfoDAO; private SystemUserOnlineInfoDAO systemUserOnlineInfoDAO;
@OperationLog
@ApiOperation("查询在线用户") @ApiOperation("查询在线用户")
@PostMapping @PostMapping(value = "/searchOnlineUser")
@PreAuthorize("@el.check()") @PreAuthorize("@el.check()")
public ResponseEntity<KitPageResult<SystemUserOnlineVo>> queryOnlineUser( public ResponseEntity<KitPageResult<SystemUserOnlineVo>> queryOnlineUser(
@Validated @RequestBody KitPageArgs<SystemUserOnlineVo> pageArgs) { @Validated @RequestBody KitPageArgs<SystemUserOnlineVo> pageArgs) {
IPage<SystemUserOnlineVo> page = new Page<>(pageArgs.getPage(), pageArgs.getSize()); IPage<SystemUserOnlineVo> page = new Page<>(pageArgs.getPage(), pageArgs.getSize());
return ResponseEntity.ok(systemUserOnlineInfoDAO.queryUserOnlineModelPage(pageArgs.getArgs(), page)); return ResponseEntity.ok(systemUserOnlineInfoDAO.searchOnlineUser(pageArgs.getArgs(), page));
} }
@ApiOperation("导出数据") @OperationLog
@ApiOperation("导出在线用户数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check()") @PreAuthorize("@el.check()")
public void exportOnlineUser(HttpServletResponse response, String username) { public void exportOnlineUser(HttpServletResponse response, String username) {
systemUserOnlineInfoDAO.exportOnlineUserXlsx(response, username); systemUserOnlineInfoDAO.exportOnlineUserXlsx(response, username);
} }
@ApiOperation("踢出用户") @OperationLog
@ApiOperation("踢出在线用户")
@PostMapping(value = "/kickOutUser") @PostMapping(value = "/kickOutUser")
@PreAuthorize("@el.check()") @PreAuthorize("@el.check()")
public ResponseEntity<Void> kickOutUser(@RequestBody Set<String> keys) throws Exception { public ResponseEntity<Void> kickOutUser(@RequestBody Set<String> keys) throws Exception {
@@ -20,6 +20,7 @@ import cn.odboy.base.KitPageResult;
import cn.odboy.system.dal.dataobject.SystemOssStorageTb; import cn.odboy.system.dal.dataobject.SystemOssStorageTb;
import cn.odboy.system.dal.model.SystemOssStorageVo; import cn.odboy.system.dal.model.SystemOssStorageVo;
import cn.odboy.system.dal.model.SystemQueryStorageArgs; import cn.odboy.system.dal.model.SystemQueryStorageArgs;
import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.service.SystemOssStorageService; import cn.odboy.system.service.SystemOssStorageService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -49,7 +50,7 @@ public class SystemOssStorageController {
private SystemOssStorageService systemOssStorageService; private SystemOssStorageService systemOssStorageService;
@ApiOperation("查询文件") @ApiOperation("查询文件")
@PostMapping @PostMapping(value = "/searchOssStorage")
@PreAuthorize("@el.check('storage:list')") @PreAuthorize("@el.check('storage:list')")
public ResponseEntity<KitPageResult<SystemOssStorageVo>> queryOssStorage( public ResponseEntity<KitPageResult<SystemOssStorageVo>> queryOssStorage(
@Validated @RequestBody KitPageArgs<SystemQueryStorageArgs> pageArgs) { @Validated @RequestBody KitPageArgs<SystemQueryStorageArgs> pageArgs) {
@@ -57,14 +58,16 @@ public class SystemOssStorageController {
return ResponseEntity.ok(systemOssStorageService.searchOssStorage(pageArgs.getArgs(), page)); return ResponseEntity.ok(systemOssStorageService.searchOssStorage(pageArgs.getArgs(), page));
} }
@ApiOperation("导出数据") @OperationLog
@ApiOperation("导出OSS存储记录数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('storage:list')") @PreAuthorize("@el.check('storage:list')")
public void exportFile(HttpServletResponse response, SystemQueryStorageArgs args) throws IOException { public void exportFile(HttpServletResponse response, SystemQueryStorageArgs args) throws IOException {
systemOssStorageService.exportOssStorageXlsx(response, args); systemOssStorageService.exportOssStorageXlsx(response, args);
} }
@ApiOperation("上传文件") @OperationLog
@ApiOperation("上传文件到OSS")
@PostMapping(value = "/uploadFile") @PostMapping(value = "/uploadFile")
@PreAuthorize("@el.check('storage:add')") @PreAuthorize("@el.check('storage:add')")
public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile file) { public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile file) {
@@ -72,9 +75,10 @@ public class SystemOssStorageController {
return ResponseEntity.ok(fileUrl); return ResponseEntity.ok(fileUrl);
} }
@ApiOperation("多选删除") @OperationLog
@PostMapping(value = "/removeFileByIds") @ApiOperation("从OSS删除文件")
public ResponseEntity<Void> removeFileByIds(@RequestBody Long[] ids) { @PostMapping(value = "/deleteFileByIds")
public ResponseEntity<Void> deleteFileByIds(@RequestBody Long[] ids) {
systemOssStorageService.deleteFileByIds(ids); systemOssStorageService.deleteFileByIds(ids);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@@ -21,6 +21,7 @@ import cn.odboy.system.dal.dataobject.SystemQuartzJobTb;
import cn.odboy.system.dal.dataobject.SystemQuartzLogTb; import cn.odboy.system.dal.dataobject.SystemQuartzLogTb;
import cn.odboy.system.dal.model.SystemQueryQuartzJobArgs; import cn.odboy.system.dal.model.SystemQueryQuartzJobArgs;
import cn.odboy.system.dal.model.SystemUpdateQuartzJobArgs; import cn.odboy.system.dal.model.SystemUpdateQuartzJobArgs;
import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.service.SystemQuartzJobService; import cn.odboy.system.service.SystemQuartzJobService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -35,7 +36,6 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@@ -50,7 +50,7 @@ public class SystemQuartzJobController {
private SystemQuartzJobService systemQuartzJobService; private SystemQuartzJobService systemQuartzJobService;
@ApiOperation("查询定时任务") @ApiOperation("查询定时任务")
@PostMapping @PostMapping(value = "/searchQuartzJob")
@PreAuthorize("@el.check('quartzJob:list')") @PreAuthorize("@el.check('quartzJob:list')")
public ResponseEntity<KitPageResult<SystemQuartzJobTb>> queryQuartzJobByCrud( public ResponseEntity<KitPageResult<SystemQuartzJobTb>> queryQuartzJobByCrud(
@Validated @RequestBody KitPageArgs<SystemQueryQuartzJobArgs> pageArgs) { @Validated @RequestBody KitPageArgs<SystemQueryQuartzJobArgs> pageArgs) {
@@ -58,28 +58,31 @@ public class SystemQuartzJobController {
return ResponseEntity.ok(systemQuartzJobService.searchQuartzJobByArgs(pageArgs.getArgs(), page)); return ResponseEntity.ok(systemQuartzJobService.searchQuartzJobByArgs(pageArgs.getArgs(), page));
} }
@ApiOperation("导出任务数据") @OperationLog
@ApiOperation("导出定时任务数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('quartzJob:list')") @PreAuthorize("@el.check('quartzJob:list')")
public void exportQuartzJob(HttpServletResponse response, SystemQueryQuartzJobArgs args) { public void exportQuartzJob(HttpServletResponse response, SystemQueryQuartzJobArgs args) {
systemQuartzJobService.exportQuartzJobXlsx(response, args); systemQuartzJobService.exportQuartzJobXlsx(response, args);
} }
@ApiOperation("导出日志数据") @OperationLog
@ApiOperation("导出定时任务日志数据")
@GetMapping(value = "/logs/download") @GetMapping(value = "/logs/download")
@PreAuthorize("@el.check('quartzJob:list')") @PreAuthorize("@el.check('quartzJob:list')")
public void exportQuartzJobLog(HttpServletResponse response, SystemQueryQuartzJobArgs args) { public void exportQuartzJobLog(HttpServletResponse response, SystemQueryQuartzJobArgs args) {
systemQuartzJobService.exportQuartzLogXlsx(response, args); systemQuartzJobService.exportQuartzLogXlsx(response, args);
} }
@ApiOperation("查询任务执行日志") @ApiOperation("查询定时任务执行日志")
@PostMapping(value = "/logs") @PostMapping(value = "/searchQuartzLog")
@PreAuthorize("@el.check('quartzJob:list')") @PreAuthorize("@el.check('quartzJob:list')")
public ResponseEntity<KitPageResult<SystemQuartzLogTb>> queryQuartzJobLog(SystemQueryQuartzJobArgs args) { public ResponseEntity<KitPageResult<SystemQuartzLogTb>> queryQuartzJobLog(SystemQueryQuartzJobArgs args) {
Page<SystemQuartzLogTb> page = new Page<>(args.getPage(), args.getSize()); Page<SystemQuartzLogTb> page = new Page<>(args.getPage(), args.getSize());
return ResponseEntity.ok(systemQuartzJobService.searchQuartzLogByArgs(args, page)); return ResponseEntity.ok(systemQuartzJobService.searchQuartzLogByArgs(args, page));
} }
@OperationLog
@ApiOperation("新增定时任务") @ApiOperation("新增定时任务")
@PostMapping(value = "/createQuartzJob") @PostMapping(value = "/createQuartzJob")
@PreAuthorize("@el.check('quartzJob:add')") @PreAuthorize("@el.check('quartzJob:add')")
@@ -88,8 +91,9 @@ public class SystemQuartzJobController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("修改定时任务") @ApiOperation("修改定时任务")
@PutMapping @PostMapping(value = "/updateQuartzJobResumeCron")
@PreAuthorize("@el.check('quartzJob:edit')") @PreAuthorize("@el.check('quartzJob:edit')")
public ResponseEntity<Void> updateQuartzJob( public ResponseEntity<Void> updateQuartzJob(
@Validated(SystemQuartzJobTb.Update.class) @RequestBody SystemUpdateQuartzJobArgs args) { @Validated(SystemQuartzJobTb.Update.class) @RequestBody SystemUpdateQuartzJobArgs args) {
@@ -97,6 +101,7 @@ public class SystemQuartzJobController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("更改定时任务状态") @ApiOperation("更改定时任务状态")
@PostMapping(value = "/switchQuartzJobStatus/{id}") @PostMapping(value = "/switchQuartzJobStatus/{id}")
@PreAuthorize("@el.check('quartzJob:edit')") @PreAuthorize("@el.check('quartzJob:edit')")
@@ -105,6 +110,7 @@ public class SystemQuartzJobController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("执行定时任务") @ApiOperation("执行定时任务")
@PostMapping(value = "/startQuartzJob/{id}") @PostMapping(value = "/startQuartzJob/{id}")
@PreAuthorize("@el.check('quartzJob:edit')") @PreAuthorize("@el.check('quartzJob:edit')")
@@ -113,10 +119,11 @@ public class SystemQuartzJobController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("删除定时任务") @ApiOperation("删除定时任务")
@PostMapping(value = "/removeJobByIds") @PostMapping(value = "/deleteJobByIds")
@PreAuthorize("@el.check('quartzJob:del')") @PreAuthorize("@el.check('quartzJob:del')")
public ResponseEntity<Void> removeJobByIds(@RequestBody Set<Long> ids) { public ResponseEntity<Void> deleteJobByIds(@RequestBody Set<Long> ids) {
systemQuartzJobService.deleteJobByIds(ids); systemQuartzJobService.deleteJobByIds(ids);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@@ -22,6 +22,7 @@ import cn.odboy.system.dal.dataobject.SystemRoleTb;
import cn.odboy.system.dal.model.SystemCreateRoleArgs; import cn.odboy.system.dal.model.SystemCreateRoleArgs;
import cn.odboy.system.dal.model.SystemQueryRoleArgs; import cn.odboy.system.dal.model.SystemQueryRoleArgs;
import cn.odboy.system.dal.model.SystemRoleVo; import cn.odboy.system.dal.model.SystemRoleVo;
import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.service.SystemRoleService; import cn.odboy.system.service.SystemRoleService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -49,9 +50,9 @@ public class SystemRoleController {
private SystemRoleService systemRoleService; private SystemRoleService systemRoleService;
@ApiOperation("获取单个role") @ApiOperation("获取单个role")
@PostMapping(value = "/queryRoleById") @PostMapping(value = "/getRoleById")
@PreAuthorize("@el.check('roles:list')") @PreAuthorize("@el.check('roles:list')")
public ResponseEntity<SystemRoleVo> queryRoleById(@RequestBody SystemRoleTb args) { public ResponseEntity<SystemRoleVo> getRoleById(@RequestBody SystemRoleTb args) {
return ResponseEntity.ok(systemRoleService.getRoleById(args.getId())); return ResponseEntity.ok(systemRoleService.getRoleById(args.getId()));
} }
@@ -63,14 +64,14 @@ public class SystemRoleController {
} }
@ApiOperation("返回全部的角色") @ApiOperation("返回全部的角色")
@PostMapping(value = "/queryRoleList") @PostMapping(value = "/listAllRole")
@PreAuthorize("@el.check('roles:list','user:add','user:edit')") @PreAuthorize("@el.check('roles:list','user:add','user:edit')")
public ResponseEntity<List<SystemRoleTb>> queryRoleList() { public ResponseEntity<List<SystemRoleTb>> listAllRole() {
return ResponseEntity.ok(systemRoleService.listAllRole()); return ResponseEntity.ok(systemRoleService.listAllRole());
} }
@ApiOperation("查询角色") @ApiOperation("查询角色")
@PostMapping @PostMapping(value = "/searchRole")
@PreAuthorize("@el.check('roles:list')") @PreAuthorize("@el.check('roles:list')")
public ResponseEntity<KitPageResult<SystemRoleVo>> queryRoleByArgs( public ResponseEntity<KitPageResult<SystemRoleVo>> queryRoleByArgs(
@Validated @RequestBody KitPageArgs<SystemQueryRoleArgs> pageArgs) { @Validated @RequestBody KitPageArgs<SystemQueryRoleArgs> pageArgs) {
@@ -79,11 +80,12 @@ public class SystemRoleController {
} }
@ApiOperation("获取用户级别") @ApiOperation("获取用户级别")
@PostMapping(value = "/queryRoleLevel") @PostMapping(value = "/getCurrentUserRoleLevel")
public ResponseEntity<Dict> queryRoleLevel() { public ResponseEntity<Dict> getCurrentUserRoleLevel() {
return ResponseEntity.ok(systemRoleService.getRoleLevel()); return ResponseEntity.ok(systemRoleService.getCurrentUserRoleLevel());
} }
@OperationLog
@ApiOperation("新增角色") @ApiOperation("新增角色")
@PostMapping(value = "/saveRole") @PostMapping(value = "/saveRole")
@PreAuthorize("@el.check('roles:add')") @PreAuthorize("@el.check('roles:add')")
@@ -92,26 +94,29 @@ public class SystemRoleController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("修改角色") @ApiOperation("修改角色")
@PostMapping(value = "/modifyRoleById") @PostMapping(value = "/updateRoleById")
@PreAuthorize("@el.check('roles:edit')") @PreAuthorize("@el.check('roles:edit')")
public ResponseEntity<Void> modifyRoleById(@Validated(SystemRoleTb.Update.class) @RequestBody SystemRoleVo args) { public ResponseEntity<Void> updateRoleById(@Validated(SystemRoleTb.Update.class) @RequestBody SystemRoleVo args) {
systemRoleService.updateRoleById(args); systemRoleService.updateRoleById(args);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("修改角色菜单") @ApiOperation("修改角色菜单")
@PostMapping(value = "/modifyBindMenuById") @PostMapping(value = "/updateBindMenuById")
@PreAuthorize("@el.check('roles:edit')") @PreAuthorize("@el.check('roles:edit')")
public ResponseEntity<Void> modifyBindMenuById(@RequestBody SystemRoleVo args) { public ResponseEntity<Void> updateBindMenuById(@RequestBody SystemRoleVo args) {
systemRoleService.updateBindMenuById(args); systemRoleService.updateBindMenuById(args);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("删除角色") @ApiOperation("删除角色")
@PostMapping(value = "/removeRoleByIds") @PostMapping(value = "/deleteRoleByIds")
@PreAuthorize("@el.check('roles:del')") @PreAuthorize("@el.check('roles:del')")
public ResponseEntity<Void> removeRoleByIds(@RequestBody Set<Long> ids) { public ResponseEntity<Void> deleteRoleByIds(@RequestBody Set<Long> ids) {
systemRoleService.deleteRoleByIds(ids); systemRoleService.deleteRoleByIds(ids);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@@ -21,8 +21,11 @@ import cn.odboy.base.KitSelectOptionVo;
import cn.odboy.system.dal.dataobject.SystemUserTb; import cn.odboy.system.dal.dataobject.SystemUserTb;
import cn.odboy.system.dal.model.SystemQueryUserArgs; import cn.odboy.system.dal.model.SystemQueryUserArgs;
import cn.odboy.system.dal.model.SystemUpdateUserPasswordArgs; import cn.odboy.system.dal.model.SystemUpdateUserPasswordArgs;
import cn.odboy.system.dal.model.SystemUserInfoVo;
import cn.odboy.system.dal.model.SystemUserVo; import cn.odboy.system.dal.model.SystemUserVo;
import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.framework.permission.core.KitSecurityHelper; import cn.odboy.system.framework.permission.core.KitSecurityHelper;
import cn.odboy.system.service.SystemAuthService;
import cn.odboy.system.service.SystemUserService; import cn.odboy.system.service.SystemUserService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -50,8 +53,10 @@ public class SystemUserController {
@Autowired @Autowired
private SystemUserService systemUserService; private SystemUserService systemUserService;
@Autowired
private SystemAuthService systemAuthService;
@OperationLog
@ApiOperation("导出用户数据") @ApiOperation("导出用户数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('user:list')") @PreAuthorize("@el.check('user:list')")
@@ -60,7 +65,7 @@ public class SystemUserController {
} }
@ApiOperation("查询用户") @ApiOperation("查询用户")
@PostMapping @PostMapping(value = "/aggregationSearchUser")
@PreAuthorize("@el.check('user:list')") @PreAuthorize("@el.check('user:list')")
public ResponseEntity<KitPageResult<SystemUserVo>> queryUserByArgs(@Validated @RequestBody KitPageArgs<SystemQueryUserArgs> pageArgs) { public ResponseEntity<KitPageResult<SystemUserVo>> queryUserByArgs(@Validated @RequestBody KitPageArgs<SystemQueryUserArgs> pageArgs) {
String currentUsername = KitSecurityHelper.getCurrentUsername(); String currentUsername = KitSecurityHelper.getCurrentUsername();
@@ -68,6 +73,7 @@ public class SystemUserController {
return ResponseEntity.ok(systemUserService.aggregationSearchUserByArgs(page, pageArgs.getArgs(), currentUsername)); return ResponseEntity.ok(systemUserService.aggregationSearchUserByArgs(page, pageArgs.getArgs(), currentUsername));
} }
@OperationLog
@ApiOperation("新增用户") @ApiOperation("新增用户")
@PostMapping(value = "/saveUser") @PostMapping(value = "/saveUser")
@PreAuthorize("@el.check('user:add')") @PreAuthorize("@el.check('user:add')")
@@ -76,53 +82,60 @@ public class SystemUserController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@ApiOperation("修改用户") @OperationLog
@PostMapping(value = "/modifyUserById") @ApiOperation("修改用户数据")
@PostMapping(value = "/updateUserById")
@PreAuthorize("@el.check('user:edit')") @PreAuthorize("@el.check('user:edit')")
public ResponseEntity<Object> modifyUserById(@Validated(SystemUserTb.Update.class) @RequestBody SystemUserVo args) { public ResponseEntity<Object> updateUserById(@Validated(SystemUserTb.Update.class) @RequestBody SystemUserVo args) {
systemUserService.updateUserById(args); systemUserService.updateUserById(args);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@ApiOperation("修改用户:个人中心") @OperationLog
@PostMapping(value = "modifyUserCenterInfoById") @ApiOperation("修改个人中心信息")
public ResponseEntity<Object> modifyUserCenterInfoById(@Validated(SystemUserTb.Update.class) @RequestBody SystemUserTb args) { @PostMapping(value = "/updateUserCenterInfoById")
public ResponseEntity<Object> updateUserCenterInfoById(@Validated(SystemUserTb.Update.class) @RequestBody SystemUserTb args) {
systemUserService.updateUserCenterInfoById(args); systemUserService.updateUserCenterInfoById(args);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("删除用户") @ApiOperation("删除用户")
@PostMapping(value = "/removeUserByIds") @PostMapping(value = "/deleteUserByIds")
@PreAuthorize("@el.check('user:del')") @PreAuthorize("@el.check('user:del')")
public ResponseEntity<Object> removeUserByIds(@RequestBody Set<Long> ids) { public ResponseEntity<Object> deleteUserByIds(@RequestBody Set<Long> ids) {
systemUserService.removeUserByIds(ids); systemUserService.deleteUserByIds(ids);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@ApiOperation("修改密码") @OperationLog
@PostMapping(value = "/modifyUserPasswordByUsername") @ApiOperation("修改用户密码")
public ResponseEntity<Object> modifyUserPasswordByUsername(@RequestBody SystemUpdateUserPasswordArgs passVo) throws Exception { @PostMapping(value = "/updateUserPasswordByUsername")
public ResponseEntity<Object> updateUserPasswordByUsername(@RequestBody SystemUpdateUserPasswordArgs passVo) throws Exception {
String currentUsername = KitSecurityHelper.getCurrentUsername(); String currentUsername = KitSecurityHelper.getCurrentUsername();
systemUserService.updateUserPasswordByUsername(currentUsername, passVo); systemUserService.updateUserPasswordByUsername(currentUsername, passVo);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@ApiOperation("重置密码") @OperationLog
@ApiOperation("重置用户密码")
@PostMapping(value = "/resetUserPasswordByIds") @PostMapping(value = "/resetUserPasswordByIds")
public ResponseEntity<Object> resetUserPasswordByIds(@RequestBody Set<Long> ids) { public ResponseEntity<Object> resetUserPasswordByIds(@RequestBody Set<Long> ids) {
systemUserService.resetUserPasswordByIds(ids); systemUserService.resetUserPasswordByIds(ids);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@ApiOperation("修改头像") @OperationLog
@PostMapping(value = "/modifyUserAvatar") @ApiOperation("修改用户头像")
public ResponseEntity<Object> modifyUserAvatar(@RequestParam MultipartFile avatar) { @PostMapping(value = "/updateUserAvatar")
public ResponseEntity<Object> updateUserAvatar(@RequestParam MultipartFile avatar) {
return ResponseEntity.ok(systemUserService.updateUserAvatar(avatar)); return ResponseEntity.ok(systemUserService.updateUserAvatar(avatar));
} }
@ApiOperation("修改邮箱") @OperationLog
@PostMapping(value = "/modifyUserEmailByUsername/{code}") @ApiOperation("修改用户邮箱")
public ResponseEntity<Object> modifyUserEmailByUsername(@PathVariable String code, @RequestBody SystemUserTb args) throws Exception { @PostMapping(value = "/updateUserEmailByUsername/{code}")
public ResponseEntity<Object> updateUserEmailByUsername(@PathVariable String code, @RequestBody SystemUserTb args) throws Exception {
String currentUsername = KitSecurityHelper.getCurrentUsername(); String currentUsername = KitSecurityHelper.getCurrentUsername();
systemUserService.updateUserEmailByUsername(currentUsername, args, code); systemUserService.updateUserEmailByUsername(currentUsername, args, code);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
@@ -135,4 +148,11 @@ public class SystemUserController {
List<KitSelectOptionVo> collect = systemUserService.queryUserMetadataOptions(args); List<KitSelectOptionVo> collect = systemUserService.queryUserMetadataOptions(args);
return ResponseEntity.ok(collect); return ResponseEntity.ok(collect);
} }
@ApiOperation("获取用户信息")
@PostMapping(value = "/getCurrentUserInfo")
public ResponseEntity<SystemUserInfoVo> getUserInfo() {
SystemUserInfoVo userInfoVo = systemAuthService.getCurrentUserInfoVo();
return ResponseEntity.ok(userInfoVo);
}
} }
@@ -22,11 +22,11 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Set; import java.util.Set;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -42,8 +42,7 @@ public class SystemDeptTb extends KitBaseUserTimeTb {
@TableField(exist = false) @TableField(exist = false)
@JSONField(serialize = false) @JSONField(serialize = false)
@ApiModelProperty(value = "角色") @ApiModelProperty(value = "角色")
private Set<SystemRoleTb> private Set<SystemRoleTb> roles;
roles;
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty(value = "子部门") @ApiModelProperty(value = "子部门")
private List<SystemDeptTb> children; private List<SystemDeptTb> children;
@@ -20,9 +20,9 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.util.Objects;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import java.util.Objects;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -22,10 +22,10 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import jakarta.validation.constraints.NotNull;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Set; import java.util.Set;
import jakarta.validation.constraints.NotNull;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -23,9 +23,9 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.util.Objects;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import java.util.Objects;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -21,11 +21,11 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import java.util.Objects;
import jakarta.validation.constraints.Email; import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import java.util.Date;
import java.util.Objects;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -121,7 +121,7 @@ public class SystemUserOnlineInfoDAO {
* @param pageable / * @param pageable /
* @return / * @return /
*/ */
public KitPageResult<SystemUserOnlineVo> queryUserOnlineModelPage(SystemUserOnlineVo onlineVo, public KitPageResult<SystemUserOnlineVo> searchOnlineUser(SystemUserOnlineVo onlineVo,
IPage<SystemUserOnlineVo> pageable) { IPage<SystemUserOnlineVo> pageable) {
String username = null; String username = null;
if (onlineVo != null) { if (onlineVo != null) {
@@ -0,0 +1,38 @@
/*
* Copyright 2021-2025 Odboy
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.system.framework.operalog;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 捕捉操作日志
*
* @author odboy
* @date 2025-05-12
*/
@Inherited
@Documented
@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface OperationLog {
String bizName() default "";
}
@@ -0,0 +1,120 @@
/*
* Copyright 2021-2025 Odboy
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.system.framework.operalog;
import cn.hutool.core.date.TimeInterval;
import cn.hutool.core.exceptions.ExceptionUtil;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.StrUtil;
import cn.odboy.framework.context.KitRequestHolder;
import cn.odboy.system.dal.dataobject.SystemOperationLogTb;
import cn.odboy.system.dal.mysql.SystemOperationLogMapper;
import cn.odboy.system.framework.permission.core.KitSecurityHelper;
import cn.odboy.util.KitBrowserUtil;
import cn.odboy.util.KitIPUtil;
import com.alibaba.fastjson2.JSON;
import io.swagger.annotations.ApiOperation;
import java.lang.reflect.Method;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 捕捉操作日志
*
* @author odboy
* @date 2025-05-12
*/
@Slf4j
@Aspect
@Component
public class OperationLogAspect {
@Autowired
private SystemOperationLogMapper systemOperationLogMapper;
@Around("@annotation(operationLog)")
public Object operationLogCatch(ProceedingJoinPoint joinPoint, OperationLog operationLog) throws Throwable {
return handleLog(joinPoint, operationLog);
}
private Object handleLog(ProceedingJoinPoint joinPoint, OperationLog annotation) throws Throwable {
TimeInterval timeInterval = new TimeInterval();
try {
Object result = joinPoint.proceed();
SystemOperationLogTb record = getOperationLogTb(joinPoint, annotation, timeInterval);
ThreadUtil.execAsync(() -> {
try {
systemOperationLogMapper.insert(record);
} catch (Exception e) {
// 忽略
}
});
return result;
} catch (Throwable exception) {
SystemOperationLogTb record = getOperationLogTb(joinPoint, annotation, timeInterval);
record.setExceptionDetail(ExceptionUtil.stacktraceToString(exception));
ThreadUtil.execAsync(() -> {
try {
systemOperationLogMapper.insert(record);
} catch (Exception e) {
// 忽略
}
});
throw exception;
}
}
private SystemOperationLogTb getOperationLogTb(ProceedingJoinPoint joinPoint, OperationLog annotation,
TimeInterval timeInterval) {
long executeTime = timeInterval.intervalMs();
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
String bizName = annotation.bizName();
if (StrUtil.isBlank(bizName)) {
Method method = signature.getMethod();
ApiOperation apiOperation = method.getAnnotation(ApiOperation.class);
if (apiOperation != null) {
bizName = apiOperation.value();
}
}
if (StrUtil.isBlank(bizName)) {
bizName = "默认业务";
}
String method = joinPoint.getTarget().getClass().getName() + "." + signature.getName() + "()";
Object[] args = joinPoint.getArgs();
String params = JSON.toJSONString(args);
HttpServletRequest request = KitRequestHolder.getHttpServletRequest();
String requestIp = KitBrowserUtil.getIp(request);
String browserInfo = KitBrowserUtil.getVersion(request);
String address = KitIPUtil.getCityInfo(requestIp);
String username = KitSecurityHelper.getCurrentUsername();
SystemOperationLogTb record = new SystemOperationLogTb();
record.setBizName(bizName);
record.setMethod(method);
record.setParams(params);
record.setRequestIp(requestIp);
record.setExecuteTime(executeTime);
record.setUsername(username);
record.setAddress(address);
record.setBrowserInfo(browserInfo);
return record;
}
}
@@ -0,0 +1,122 @@
/*
* Copyright 2021-2025 Odboy
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.system.framework.operalog;
import cn.hutool.core.date.TimeInterval;
import cn.hutool.core.exceptions.ExceptionUtil;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.StrUtil;
import cn.odboy.framework.context.KitRequestHolder;
import cn.odboy.system.dal.dataobject.SystemOperationLogTb;
import cn.odboy.system.dal.mysql.SystemOperationLogMapper;
import cn.odboy.system.framework.permission.core.KitSecurityHelper;
import cn.odboy.util.KitBrowserUtil;
import cn.odboy.util.KitIPUtil;
import com.alibaba.fastjson2.JSON;
import io.swagger.annotations.ApiOperation;
import java.lang.reflect.Method;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 捕捉操作日志
*
* @author odboy
* @date 2025-05-12
*/
@Slf4j
@Aspect
@Component
public class SystemOperationLogAspect {
@Autowired
private SystemOperationLogMapper systemOperationLogMapper;
@Around("@annotation(operationLog)")
public Object operationLogCatch(ProceedingJoinPoint joinPoint, OperationLog operationLog) throws Throwable {
return handleLog(joinPoint, operationLog);
}
private Object handleLog(ProceedingJoinPoint joinPoint, OperationLog annotation) throws Throwable {
TimeInterval timeInterval = new TimeInterval();
try {
Object result = joinPoint.proceed();
SystemOperationLogTb record = getOperationLogTb(joinPoint, annotation, timeInterval);
ThreadUtil.execAsync(() -> {
try {
systemOperationLogMapper.insert(record);
} catch (Exception e) {
// log.error("保存审计日志失败", e);
// 忽略
}
});
return result;
} catch (Throwable exception) {
SystemOperationLogTb record = getOperationLogTb(joinPoint, annotation, timeInterval);
record.setExceptionDetail(ExceptionUtil.stacktraceToString(exception));
ThreadUtil.execAsync(() -> {
try {
systemOperationLogMapper.insert(record);
} catch (Exception e) {
// log.error("保存审计日志失败", e);
// 忽略
}
});
throw exception;
}
}
private SystemOperationLogTb getOperationLogTb(ProceedingJoinPoint joinPoint, OperationLog annotation,
TimeInterval timeInterval) {
long executeTime = timeInterval.intervalMs();
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
String bizName = annotation.bizName();
if (StrUtil.isBlank(bizName)) {
Method method = signature.getMethod();
ApiOperation apiOperation = method.getAnnotation(ApiOperation.class);
if (apiOperation != null) {
bizName = apiOperation.value();
}
}
if (StrUtil.isBlank(bizName)) {
bizName = "默认业务";
}
String method = joinPoint.getTarget().getClass().getName() + "." + signature.getName() + "()";
Object[] args = joinPoint.getArgs();
String params = JSON.toJSONString(args);
HttpServletRequest request = KitRequestHolder.getHttpServletRequest();
String requestIp = KitBrowserUtil.getIp(request);
String browserInfo = KitBrowserUtil.getVersion(request);
String address = KitIPUtil.getCityInfo(requestIp);
String username = KitSecurityHelper.getCurrentUsername();
SystemOperationLogTb record = new SystemOperationLogTb();
record.setBizName(bizName);
record.setMethod(method);
record.setParams(params);
record.setRequestIp(requestIp);
record.setExecuteTime(executeTime);
record.setUsername(username);
record.setAddress(address);
record.setBrowserInfo(browserInfo);
return record;
}
}
@@ -78,7 +78,7 @@ public class SystemDeptService {
* @param args / * @param args /
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateDept(SystemDeptTb args) { public void updateDeptById(SystemDeptTb args) {
// 旧的部门 // 旧的部门
Long oldPid = this.getDeptById(args.getId()).getPid(); Long oldPid = this.getDeptById(args.getId()).getPid();
Long newPid = args.getPid(); Long newPid = args.getPid();
@@ -365,7 +365,7 @@ public class SystemDeptService {
return depts; return depts;
} }
public List<SystemProductLineVo> queryDeptSelectDataSource() { public List<SystemProductLineVo> listDeptSelectDataSource() {
List<SystemDeptTb> depts = this.listEnabledDepts(); List<SystemDeptTb> depts = this.listEnabledDepts();
return buildDeptSelectOptions(depts); return buildDeptSelectOptions(depts);
} }
@@ -414,7 +414,7 @@ public class SystemDeptService {
} }
} }
public List<SystemProductLineTreeVo> queryDeptSelectProDataSource() { public List<SystemProductLineTreeVo> listDeptSelectProDataSource() {
List<SystemDeptTb> depts = this.listEnabledDepts(); List<SystemDeptTb> depts = this.listEnabledDepts();
// 获取所有部门并按父子关系组织 // 获取所有部门并按父子关系组织
Map<Long, SystemDeptTb> deptMap = Map<Long, SystemDeptTb> deptMap =
@@ -255,7 +255,7 @@ public class SystemRoleService {
return systemUserRoleService.convertToRoleVo(roleTb); return systemUserRoleService.convertToRoleVo(roleTb);
} }
public Dict getRoleLevel() { public Dict getCurrentUserRoleLevel() {
return Dict.create().set("level", checkRoleLevels(null)); return Dict.create().set("level", checkRoleLevels(null));
} }
@@ -209,7 +209,7 @@ public class SystemUserService {
* @param ids / * @param ids /
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void removeUserByIds(Set<Long> ids) { public void deleteUserByIds(Set<Long> ids) {
Long currentUserId = KitSecurityHelper.getCurrentUserId(); Long currentUserId = KitSecurityHelper.getCurrentUserId();
// 校验权限 // 校验权限
for (Long id : ids) { for (Long id : ids) {
@@ -16,7 +16,6 @@
package cn.odboy.system.controller; package cn.odboy.system.controller;
import cn.odboy.annotation.AnonymousPostMapping; import cn.odboy.annotation.AnonymousPostMapping;
import cn.odboy.system.dal.model.SystemUserInfoVo;
import cn.odboy.system.dal.model.SystemUserLoginArgs; import cn.odboy.system.dal.model.SystemUserLoginArgs;
import cn.odboy.system.service.SystemAuthService; import cn.odboy.system.service.SystemAuthService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -27,7 +26,6 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@@ -17,6 +17,7 @@ package cn.odboy.system.controller;
import cn.odboy.system.constant.SystemCaptchaBizEnum; import cn.odboy.system.constant.SystemCaptchaBizEnum;
import cn.odboy.system.dal.model.SystemCheckEmailCaptchaArgs; import cn.odboy.system.dal.model.SystemCheckEmailCaptchaArgs;
import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.service.SystemEmailService; import cn.odboy.system.service.SystemEmailService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@@ -37,6 +38,7 @@ public class SystemCaptchaController {
@Autowired @Autowired
private SystemEmailService systemEmailService; private SystemEmailService systemEmailService;
@OperationLog
@ApiOperation("重置邮箱, 发送验证码") @ApiOperation("重置邮箱, 发送验证码")
@PostMapping(value = "/sendResetEmailCode") @PostMapping(value = "/sendResetEmailCode")
public ResponseEntity<Void> sendResetEmailCode(@RequestParam String email) { public ResponseEntity<Void> sendResetEmailCode(@RequestParam String email) {
@@ -44,6 +46,7 @@ public class SystemCaptchaController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("重置密码,发送验证码") @ApiOperation("重置密码,发送验证码")
@PostMapping(value = "/sendResetPasswordCode") @PostMapping(value = "/sendResetPasswordCode")
public ResponseEntity<Void> sendResetPasswordCode(@RequestParam String email) { public ResponseEntity<Void> sendResetPasswordCode(@RequestParam String email) {
@@ -20,6 +20,7 @@ import cn.odboy.base.KitPageResult;
import cn.odboy.system.dal.dataobject.SystemDeptTb; import cn.odboy.system.dal.dataobject.SystemDeptTb;
import cn.odboy.system.dal.model.SystemCreateDeptArgs; import cn.odboy.system.dal.model.SystemCreateDeptArgs;
import cn.odboy.system.dal.model.SystemQueryDeptArgs; import cn.odboy.system.dal.model.SystemQueryDeptArgs;
import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.service.SystemDeptService; import cn.odboy.system.service.SystemDeptService;
import cn.odboy.util.KitPageUtil; import cn.odboy.util.KitPageUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -46,6 +47,7 @@ public class SystemDeptController {
@Autowired @Autowired
private SystemDeptService systemDeptService; private SystemDeptService systemDeptService;
@OperationLog
@ApiOperation("导出部门数据") @ApiOperation("导出部门数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('dept:list')") @PreAuthorize("@el.check('dept:list')")
@@ -70,6 +72,7 @@ public class SystemDeptController {
return ResponseEntity.ok(systemDeptService.searchDeptTree(ids, exclude)); return ResponseEntity.ok(systemDeptService.searchDeptTree(ids, exclude));
} }
@OperationLog
@ApiOperation("新增部门") @ApiOperation("新增部门")
@PostMapping(value = "/saveDept") @PostMapping(value = "/saveDept")
@PreAuthorize("@el.check('dept:add')") @PreAuthorize("@el.check('dept:add')")
@@ -78,6 +81,7 @@ public class SystemDeptController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("修改部门") @ApiOperation("修改部门")
@PostMapping(value = "/updateDeptById") @PostMapping(value = "/updateDeptById")
@PreAuthorize("@el.check('dept:edit')") @PreAuthorize("@el.check('dept:edit')")
@@ -86,6 +90,7 @@ public class SystemDeptController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("删除部门") @ApiOperation("删除部门")
@PostMapping(value = "/deleteDeptByIds") @PostMapping(value = "/deleteDeptByIds")
@PreAuthorize("@el.check('dept:del')") @PreAuthorize("@el.check('dept:del')")
@@ -20,6 +20,7 @@ import cn.odboy.base.KitPageResult;
import cn.odboy.system.dal.dataobject.SystemDictTb; import cn.odboy.system.dal.dataobject.SystemDictTb;
import cn.odboy.system.dal.model.SystemCreateDictArgs; import cn.odboy.system.dal.model.SystemCreateDictArgs;
import cn.odboy.system.dal.model.SystemQueryDictArgs; import cn.odboy.system.dal.model.SystemQueryDictArgs;
import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.service.SystemDictService; import cn.odboy.system.service.SystemDictService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -46,6 +47,7 @@ public class SystemDictController {
@Autowired @Autowired
private SystemDictService systemDictService; private SystemDictService systemDictService;
@OperationLog
@ApiOperation("导出字典数据") @ApiOperation("导出字典数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('dict:list')") @PreAuthorize("@el.check('dict:list')")
@@ -70,6 +72,7 @@ public class SystemDictController {
return ResponseEntity.ok(systemDictService.searchDict(pageArgs.getArgs(), page)); return ResponseEntity.ok(systemDictService.searchDict(pageArgs.getArgs(), page));
} }
@OperationLog
@ApiOperation("新增字典") @ApiOperation("新增字典")
@PostMapping(value = "/saveDict") @PostMapping(value = "/saveDict")
@PreAuthorize("@el.check('dict:add')") @PreAuthorize("@el.check('dict:add')")
@@ -78,6 +81,7 @@ public class SystemDictController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("修改字典") @ApiOperation("修改字典")
@PostMapping(value = "/updateDictById") @PostMapping(value = "/updateDictById")
@PreAuthorize("@el.check('dict:edit')") @PreAuthorize("@el.check('dict:edit')")
@@ -86,6 +90,7 @@ public class SystemDictController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("删除字典") @ApiOperation("删除字典")
@PostMapping(value = "/deleteDictByIds") @PostMapping(value = "/deleteDictByIds")
@PreAuthorize("@el.check('dict:del')") @PreAuthorize("@el.check('dict:del')")
@@ -21,6 +21,7 @@ import cn.odboy.system.dal.dataobject.SystemDictDetailTb;
import cn.odboy.system.dal.model.SystemCreateDictDetailArgs; import cn.odboy.system.dal.model.SystemCreateDictDetailArgs;
import cn.odboy.system.dal.model.SystemDictDetailVo; import cn.odboy.system.dal.model.SystemDictDetailVo;
import cn.odboy.system.dal.model.SystemQueryDictDetailArgs; import cn.odboy.system.dal.model.SystemQueryDictDetailArgs;
import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.service.SystemDictDetailService; import cn.odboy.system.service.SystemDictDetailService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -61,6 +62,7 @@ public class SystemDictDetailController {
return ResponseEntity.ok(dictMap); return ResponseEntity.ok(dictMap);
} }
@OperationLog
@ApiOperation("新增字典详情") @ApiOperation("新增字典详情")
@PostMapping(value = "/saveDictDetail") @PostMapping(value = "/saveDictDetail")
@PreAuthorize("@el.check('dict:add')") @PreAuthorize("@el.check('dict:add')")
@@ -69,6 +71,7 @@ public class SystemDictDetailController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("修改字典详情") @ApiOperation("修改字典详情")
@PostMapping(value = "/updateDictDetailById") @PostMapping(value = "/updateDictDetailById")
@PreAuthorize("@el.check('dict:edit')") @PreAuthorize("@el.check('dict:edit')")
@@ -78,6 +81,7 @@ public class SystemDictDetailController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("删除字典详情") @ApiOperation("删除字典详情")
@PostMapping(value = "/deleteDictDetailById") @PostMapping(value = "/deleteDictDetailById")
@PreAuthorize("@el.check('dict:del')") @PreAuthorize("@el.check('dict:del')")
@@ -17,6 +17,7 @@ package cn.odboy.system.controller;
import cn.odboy.system.dal.dataobject.SystemEmailConfigTb; import cn.odboy.system.dal.dataobject.SystemEmailConfigTb;
import cn.odboy.system.dal.model.SystemSendEmailArgs; import cn.odboy.system.dal.model.SystemSendEmailArgs;
import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.service.SystemEmailService; import cn.odboy.system.service.SystemEmailService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@@ -45,7 +46,8 @@ public class SystemEmailController {
return ResponseEntity.ok(systemEmailService.getLastEmailConfig()); return ResponseEntity.ok(systemEmailService.getLastEmailConfig());
} }
@ApiOperation("配置邮件") @OperationLog
@ApiOperation("修改邮箱配置")
@PostMapping(value = "/updateEmailConfigById") @PostMapping(value = "/updateEmailConfigById")
public ResponseEntity<Void> updateEmailConfigById(@Validated @RequestBody SystemEmailConfigTb emailConfig) public ResponseEntity<Void> updateEmailConfigById(@Validated @RequestBody SystemEmailConfigTb emailConfig)
throws Exception { throws Exception {
@@ -53,6 +55,7 @@ public class SystemEmailController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("发送邮件") @ApiOperation("发送邮件")
@PostMapping(value = "/send") @PostMapping(value = "/send")
public ResponseEntity<Void> send(@Validated @RequestBody SystemSendEmailArgs sendEmailRequest) { public ResponseEntity<Void> send(@Validated @RequestBody SystemSendEmailArgs sendEmailRequest) {
@@ -20,6 +20,7 @@ import cn.odboy.base.KitPageResult;
import cn.odboy.system.dal.dataobject.SystemJobTb; import cn.odboy.system.dal.dataobject.SystemJobTb;
import cn.odboy.system.dal.model.SystemCreateJobArgs; import cn.odboy.system.dal.model.SystemCreateJobArgs;
import cn.odboy.system.dal.model.SystemQueryJobArgs; import cn.odboy.system.dal.model.SystemQueryJobArgs;
import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.service.SystemJobService; import cn.odboy.system.service.SystemJobService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -45,6 +46,7 @@ public class SystemJobController {
@Autowired @Autowired
private SystemJobService systemJobService; private SystemJobService systemJobService;
@OperationLog
@ApiOperation("导出岗位数据") @ApiOperation("导出岗位数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('job:list')") @PreAuthorize("@el.check('job:list')")
@@ -61,6 +63,7 @@ public class SystemJobController {
return ResponseEntity.ok(systemJobService.searchJobByArgs(pageArgs.getArgs(), page)); return ResponseEntity.ok(systemJobService.searchJobByArgs(pageArgs.getArgs(), page));
} }
@OperationLog
@ApiOperation("新增岗位") @ApiOperation("新增岗位")
@PostMapping(value = "/saveJob") @PostMapping(value = "/saveJob")
@PreAuthorize("@el.check('job:add')") @PreAuthorize("@el.check('job:add')")
@@ -69,6 +72,7 @@ public class SystemJobController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("修改岗位") @ApiOperation("修改岗位")
@PostMapping(value = "/updateJobById") @PostMapping(value = "/updateJobById")
@PreAuthorize("@el.check('job:edit')") @PreAuthorize("@el.check('job:edit')")
@@ -77,6 +81,7 @@ public class SystemJobController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("删除岗位") @ApiOperation("删除岗位")
@PostMapping(value = "/deleteJobByIds") @PostMapping(value = "/deleteJobByIds")
@PreAuthorize("@el.check('job:del')") @PreAuthorize("@el.check('job:del')")
@@ -19,6 +19,7 @@ import cn.odboy.base.KitPageArgs;
import cn.odboy.base.KitPageResult; import cn.odboy.base.KitPageResult;
import cn.odboy.system.dal.dataobject.SystemLocalStorageTb; import cn.odboy.system.dal.dataobject.SystemLocalStorageTb;
import cn.odboy.system.dal.model.SystemQueryStorageArgs; import cn.odboy.system.dal.model.SystemQueryStorageArgs;
import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.service.SystemLocalStorageService; import cn.odboy.system.service.SystemLocalStorageService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -54,13 +55,15 @@ public class SystemLocalStorageController {
return ResponseEntity.ok(localStorageService.searchLocalStorage(pageArgs.getArgs(), page)); return ResponseEntity.ok(localStorageService.searchLocalStorage(pageArgs.getArgs(), page));
} }
@ApiOperation("导出数据") @OperationLog
@ApiOperation("导出本地存储记录数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('storage:list')") @PreAuthorize("@el.check('storage:list')")
public void exportFile(HttpServletResponse response, SystemQueryStorageArgs args) throws IOException { public void exportFile(HttpServletResponse response, SystemQueryStorageArgs args) throws IOException {
localStorageService.exportLocalStorageXlsx(response, args); localStorageService.exportLocalStorageXlsx(response, args);
} }
@OperationLog
@ApiOperation("上传文件") @ApiOperation("上传文件")
@PostMapping(value = "/uploadFile") @PostMapping(value = "/uploadFile")
@PreAuthorize("@el.check('storage:add')") @PreAuthorize("@el.check('storage:add')")
@@ -69,6 +72,7 @@ public class SystemLocalStorageController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("上传图片") @ApiOperation("上传图片")
@PostMapping("/uploadPicture") @PostMapping("/uploadPicture")
public ResponseEntity<SystemLocalStorageTb> uploadPicture(@RequestParam MultipartFile file) { public ResponseEntity<SystemLocalStorageTb> uploadPicture(@RequestParam MultipartFile file) {
@@ -76,6 +80,7 @@ public class SystemLocalStorageController {
return ResponseEntity.ok(localStorage); return ResponseEntity.ok(localStorage);
} }
@OperationLog
@ApiOperation("修改文件") @ApiOperation("修改文件")
@PostMapping(value = "/updateLocalStorageById") @PostMapping(value = "/updateLocalStorageById")
@PreAuthorize("@el.check('storage:edit')") @PreAuthorize("@el.check('storage:edit')")
@@ -84,7 +89,8 @@ public class SystemLocalStorageController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@ApiOperation("多选删除") @OperationLog
@ApiOperation("删除文件")
@PostMapping(value = "/deleteFileByIds") @PostMapping(value = "/deleteFileByIds")
public ResponseEntity<Void> deleteFileByIds(@RequestBody Long[] ids) { public ResponseEntity<Void> deleteFileByIds(@RequestBody Long[] ids) {
localStorageService.deleteFileByIds(ids); localStorageService.deleteFileByIds(ids);
@@ -21,6 +21,7 @@ import cn.odboy.framework.exception.BadRequestException;
import cn.odboy.system.dal.dataobject.SystemMenuTb; import cn.odboy.system.dal.dataobject.SystemMenuTb;
import cn.odboy.system.dal.model.SystemMenuVo; import cn.odboy.system.dal.model.SystemMenuVo;
import cn.odboy.system.dal.model.SystemQueryMenuArgs; import cn.odboy.system.dal.model.SystemQueryMenuArgs;
import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.service.SystemMenuService; import cn.odboy.system.service.SystemMenuService;
import cn.odboy.util.KitPageUtil; import cn.odboy.util.KitPageUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -47,6 +48,7 @@ public class SystemMenuController {
@Autowired @Autowired
private SystemMenuService systemMenuService; private SystemMenuService systemMenuService;
@OperationLog
@ApiOperation("导出菜单数据") @ApiOperation("导出菜单数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('menu:list')") @PreAuthorize("@el.check('menu:list')")
@@ -94,6 +96,7 @@ public class SystemMenuController {
return ResponseEntity.ok(systemMenuTbs); return ResponseEntity.ok(systemMenuTbs);
} }
@OperationLog
@ApiOperation("新增菜单") @ApiOperation("新增菜单")
@PostMapping(value = "/saveMenu") @PostMapping(value = "/saveMenu")
@PreAuthorize("@el.check('menu:add')") @PreAuthorize("@el.check('menu:add')")
@@ -105,6 +108,7 @@ public class SystemMenuController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("修改菜单") @ApiOperation("修改菜单")
@PostMapping(value = "/updateMenuById") @PostMapping(value = "/updateMenuById")
@PreAuthorize("@el.check('menu:edit')") @PreAuthorize("@el.check('menu:edit')")
@@ -113,6 +117,7 @@ public class SystemMenuController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("删除菜单") @ApiOperation("删除菜单")
@PostMapping(value = "/deleteMenuByIds") @PostMapping(value = "/deleteMenuByIds")
@PreAuthorize("@el.check('menu:del')") @PreAuthorize("@el.check('menu:del')")
@@ -15,6 +15,7 @@
*/ */
package cn.odboy.system.controller; package cn.odboy.system.controller;
import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.service.SystemMonitorService; import cn.odboy.system.service.SystemMonitorService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@@ -34,6 +35,7 @@ public class SystemMonitorController {
@Autowired @Autowired
private SystemMonitorService systemMonitorService; private SystemMonitorService systemMonitorService;
@OperationLog
@PostMapping(value = "/getServerMonitorInfo") @PostMapping(value = "/getServerMonitorInfo")
@ApiOperation("查询服务监控") @ApiOperation("查询服务监控")
@PreAuthorize("@el.check('monitor:list')") @PreAuthorize("@el.check('monitor:list')")
@@ -19,6 +19,7 @@ import cn.odboy.base.KitPageArgs;
import cn.odboy.base.KitPageResult; import cn.odboy.base.KitPageResult;
import cn.odboy.system.dal.model.SystemUserOnlineVo; import cn.odboy.system.dal.model.SystemUserOnlineVo;
import cn.odboy.system.dal.redis.SystemUserOnlineInfoDAO; import cn.odboy.system.dal.redis.SystemUserOnlineInfoDAO;
import cn.odboy.system.framework.operalog.OperationLog;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -43,6 +44,7 @@ public class SystemOnlineController {
@Autowired @Autowired
private SystemUserOnlineInfoDAO systemUserOnlineInfoDAO; private SystemUserOnlineInfoDAO systemUserOnlineInfoDAO;
@OperationLog
@ApiOperation("查询在线用户") @ApiOperation("查询在线用户")
@PostMapping(value = "/searchOnlineUser") @PostMapping(value = "/searchOnlineUser")
@PreAuthorize("@el.check()") @PreAuthorize("@el.check()")
@@ -52,14 +54,16 @@ public class SystemOnlineController {
return ResponseEntity.ok(systemUserOnlineInfoDAO.searchOnlineUser(pageArgs.getArgs(), page)); return ResponseEntity.ok(systemUserOnlineInfoDAO.searchOnlineUser(pageArgs.getArgs(), page));
} }
@ApiOperation("导出数据") @OperationLog
@ApiOperation("导出在线用户数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check()") @PreAuthorize("@el.check()")
public void exportOnlineUser(HttpServletResponse response, String username) { public void exportOnlineUser(HttpServletResponse response, String username) {
systemUserOnlineInfoDAO.exportOnlineUserXlsx(response, username); systemUserOnlineInfoDAO.exportOnlineUserXlsx(response, username);
} }
@ApiOperation("踢出用户") @OperationLog
@ApiOperation("踢出在线用户")
@PostMapping(value = "/kickOutUser") @PostMapping(value = "/kickOutUser")
@PreAuthorize("@el.check()") @PreAuthorize("@el.check()")
public ResponseEntity<Void> kickOutUser(@RequestBody Set<String> keys) throws Exception { public ResponseEntity<Void> kickOutUser(@RequestBody Set<String> keys) throws Exception {
@@ -20,6 +20,7 @@ import cn.odboy.base.KitPageResult;
import cn.odboy.system.dal.dataobject.SystemOssStorageTb; import cn.odboy.system.dal.dataobject.SystemOssStorageTb;
import cn.odboy.system.dal.model.SystemOssStorageVo; import cn.odboy.system.dal.model.SystemOssStorageVo;
import cn.odboy.system.dal.model.SystemQueryStorageArgs; import cn.odboy.system.dal.model.SystemQueryStorageArgs;
import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.service.SystemOssStorageService; import cn.odboy.system.service.SystemOssStorageService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -57,14 +58,16 @@ public class SystemOssStorageController {
return ResponseEntity.ok(systemOssStorageService.searchOssStorage(pageArgs.getArgs(), page)); return ResponseEntity.ok(systemOssStorageService.searchOssStorage(pageArgs.getArgs(), page));
} }
@ApiOperation("导出数据") @OperationLog
@ApiOperation("导出OSS存储记录数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('storage:list')") @PreAuthorize("@el.check('storage:list')")
public void exportFile(HttpServletResponse response, SystemQueryStorageArgs args) throws IOException { public void exportFile(HttpServletResponse response, SystemQueryStorageArgs args) throws IOException {
systemOssStorageService.exportOssStorageXlsx(response, args); systemOssStorageService.exportOssStorageXlsx(response, args);
} }
@ApiOperation("上传文件") @OperationLog
@ApiOperation("上传文件到OSS")
@PostMapping(value = "/uploadFile") @PostMapping(value = "/uploadFile")
@PreAuthorize("@el.check('storage:add')") @PreAuthorize("@el.check('storage:add')")
public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile file) { public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile file) {
@@ -72,7 +75,8 @@ public class SystemOssStorageController {
return ResponseEntity.ok(fileUrl); return ResponseEntity.ok(fileUrl);
} }
@ApiOperation("多选删除") @OperationLog
@ApiOperation("从OSS删除文件")
@PostMapping(value = "/deleteFileByIds") @PostMapping(value = "/deleteFileByIds")
public ResponseEntity<Void> deleteFileByIds(@RequestBody Long[] ids) { public ResponseEntity<Void> deleteFileByIds(@RequestBody Long[] ids) {
systemOssStorageService.deleteFileByIds(ids); systemOssStorageService.deleteFileByIds(ids);
@@ -21,6 +21,7 @@ import cn.odboy.system.dal.dataobject.SystemQuartzJobTb;
import cn.odboy.system.dal.dataobject.SystemQuartzLogTb; import cn.odboy.system.dal.dataobject.SystemQuartzLogTb;
import cn.odboy.system.dal.model.SystemQueryQuartzJobArgs; import cn.odboy.system.dal.model.SystemQueryQuartzJobArgs;
import cn.odboy.system.dal.model.SystemUpdateQuartzJobArgs; import cn.odboy.system.dal.model.SystemUpdateQuartzJobArgs;
import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.service.SystemQuartzJobService; import cn.odboy.system.service.SystemQuartzJobService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -35,7 +36,6 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@@ -58,21 +58,23 @@ public class SystemQuartzJobController {
return ResponseEntity.ok(systemQuartzJobService.searchQuartzJobByArgs(pageArgs.getArgs(), page)); return ResponseEntity.ok(systemQuartzJobService.searchQuartzJobByArgs(pageArgs.getArgs(), page));
} }
@ApiOperation("导出任务数据") @OperationLog
@ApiOperation("导出定时任务数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('quartzJob:list')") @PreAuthorize("@el.check('quartzJob:list')")
public void exportQuartzJob(HttpServletResponse response, SystemQueryQuartzJobArgs args) { public void exportQuartzJob(HttpServletResponse response, SystemQueryQuartzJobArgs args) {
systemQuartzJobService.exportQuartzJobXlsx(response, args); systemQuartzJobService.exportQuartzJobXlsx(response, args);
} }
@ApiOperation("导出日志数据") @OperationLog
@ApiOperation("导出定时任务日志数据")
@GetMapping(value = "/logs/download") @GetMapping(value = "/logs/download")
@PreAuthorize("@el.check('quartzJob:list')") @PreAuthorize("@el.check('quartzJob:list')")
public void exportQuartzJobLog(HttpServletResponse response, SystemQueryQuartzJobArgs args) { public void exportQuartzJobLog(HttpServletResponse response, SystemQueryQuartzJobArgs args) {
systemQuartzJobService.exportQuartzLogXlsx(response, args); systemQuartzJobService.exportQuartzLogXlsx(response, args);
} }
@ApiOperation("查询任务执行日志") @ApiOperation("查询定时任务执行日志")
@PostMapping(value = "/searchQuartzLog") @PostMapping(value = "/searchQuartzLog")
@PreAuthorize("@el.check('quartzJob:list')") @PreAuthorize("@el.check('quartzJob:list')")
public ResponseEntity<KitPageResult<SystemQuartzLogTb>> queryQuartzJobLog(SystemQueryQuartzJobArgs args) { public ResponseEntity<KitPageResult<SystemQuartzLogTb>> queryQuartzJobLog(SystemQueryQuartzJobArgs args) {
@@ -80,6 +82,7 @@ public class SystemQuartzJobController {
return ResponseEntity.ok(systemQuartzJobService.searchQuartzLogByArgs(args, page)); return ResponseEntity.ok(systemQuartzJobService.searchQuartzLogByArgs(args, page));
} }
@OperationLog
@ApiOperation("新增定时任务") @ApiOperation("新增定时任务")
@PostMapping(value = "/createQuartzJob") @PostMapping(value = "/createQuartzJob")
@PreAuthorize("@el.check('quartzJob:add')") @PreAuthorize("@el.check('quartzJob:add')")
@@ -88,6 +91,7 @@ public class SystemQuartzJobController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("修改定时任务") @ApiOperation("修改定时任务")
@PostMapping(value = "/updateQuartzJobResumeCron") @PostMapping(value = "/updateQuartzJobResumeCron")
@PreAuthorize("@el.check('quartzJob:edit')") @PreAuthorize("@el.check('quartzJob:edit')")
@@ -97,6 +101,7 @@ public class SystemQuartzJobController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("更改定时任务状态") @ApiOperation("更改定时任务状态")
@PostMapping(value = "/switchQuartzJobStatus/{id}") @PostMapping(value = "/switchQuartzJobStatus/{id}")
@PreAuthorize("@el.check('quartzJob:edit')") @PreAuthorize("@el.check('quartzJob:edit')")
@@ -105,6 +110,7 @@ public class SystemQuartzJobController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("执行定时任务") @ApiOperation("执行定时任务")
@PostMapping(value = "/startQuartzJob/{id}") @PostMapping(value = "/startQuartzJob/{id}")
@PreAuthorize("@el.check('quartzJob:edit')") @PreAuthorize("@el.check('quartzJob:edit')")
@@ -113,6 +119,7 @@ public class SystemQuartzJobController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("删除定时任务") @ApiOperation("删除定时任务")
@PostMapping(value = "/deleteJobByIds") @PostMapping(value = "/deleteJobByIds")
@PreAuthorize("@el.check('quartzJob:del')") @PreAuthorize("@el.check('quartzJob:del')")
@@ -22,6 +22,7 @@ import cn.odboy.system.dal.dataobject.SystemRoleTb;
import cn.odboy.system.dal.model.SystemCreateRoleArgs; import cn.odboy.system.dal.model.SystemCreateRoleArgs;
import cn.odboy.system.dal.model.SystemQueryRoleArgs; import cn.odboy.system.dal.model.SystemQueryRoleArgs;
import cn.odboy.system.dal.model.SystemRoleVo; import cn.odboy.system.dal.model.SystemRoleVo;
import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.service.SystemRoleService; import cn.odboy.system.service.SystemRoleService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -84,6 +85,7 @@ public class SystemRoleController {
return ResponseEntity.ok(systemRoleService.getCurrentUserRoleLevel()); return ResponseEntity.ok(systemRoleService.getCurrentUserRoleLevel());
} }
@OperationLog
@ApiOperation("新增角色") @ApiOperation("新增角色")
@PostMapping(value = "/saveRole") @PostMapping(value = "/saveRole")
@PreAuthorize("@el.check('roles:add')") @PreAuthorize("@el.check('roles:add')")
@@ -92,6 +94,7 @@ public class SystemRoleController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("修改角色") @ApiOperation("修改角色")
@PostMapping(value = "/updateRoleById") @PostMapping(value = "/updateRoleById")
@PreAuthorize("@el.check('roles:edit')") @PreAuthorize("@el.check('roles:edit')")
@@ -100,6 +103,7 @@ public class SystemRoleController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("修改角色菜单") @ApiOperation("修改角色菜单")
@PostMapping(value = "/updateBindMenuById") @PostMapping(value = "/updateBindMenuById")
@PreAuthorize("@el.check('roles:edit')") @PreAuthorize("@el.check('roles:edit')")
@@ -108,6 +112,7 @@ public class SystemRoleController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("删除角色") @ApiOperation("删除角色")
@PostMapping(value = "/deleteRoleByIds") @PostMapping(value = "/deleteRoleByIds")
@PreAuthorize("@el.check('roles:del')") @PreAuthorize("@el.check('roles:del')")
@@ -23,6 +23,7 @@ import cn.odboy.system.dal.model.SystemQueryUserArgs;
import cn.odboy.system.dal.model.SystemUpdateUserPasswordArgs; import cn.odboy.system.dal.model.SystemUpdateUserPasswordArgs;
import cn.odboy.system.dal.model.SystemUserInfoVo; import cn.odboy.system.dal.model.SystemUserInfoVo;
import cn.odboy.system.dal.model.SystemUserVo; import cn.odboy.system.dal.model.SystemUserVo;
import cn.odboy.system.framework.operalog.OperationLog;
import cn.odboy.system.framework.permission.core.KitSecurityHelper; import cn.odboy.system.framework.permission.core.KitSecurityHelper;
import cn.odboy.system.service.SystemAuthService; import cn.odboy.system.service.SystemAuthService;
import cn.odboy.system.service.SystemUserService; import cn.odboy.system.service.SystemUserService;
@@ -55,7 +56,7 @@ public class SystemUserController {
@Autowired @Autowired
private SystemAuthService systemAuthService; private SystemAuthService systemAuthService;
@OperationLog
@ApiOperation("导出用户数据") @ApiOperation("导出用户数据")
@GetMapping(value = "/download") @GetMapping(value = "/download")
@PreAuthorize("@el.check('user:list')") @PreAuthorize("@el.check('user:list')")
@@ -72,6 +73,7 @@ public class SystemUserController {
return ResponseEntity.ok(systemUserService.aggregationSearchUserByArgs(page, pageArgs.getArgs(), currentUsername)); return ResponseEntity.ok(systemUserService.aggregationSearchUserByArgs(page, pageArgs.getArgs(), currentUsername));
} }
@OperationLog
@ApiOperation("新增用户") @ApiOperation("新增用户")
@PostMapping(value = "/saveUser") @PostMapping(value = "/saveUser")
@PreAuthorize("@el.check('user:add')") @PreAuthorize("@el.check('user:add')")
@@ -80,7 +82,8 @@ public class SystemUserController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@ApiOperation("修改用户") @OperationLog
@ApiOperation("修改用户数据")
@PostMapping(value = "/updateUserById") @PostMapping(value = "/updateUserById")
@PreAuthorize("@el.check('user:edit')") @PreAuthorize("@el.check('user:edit')")
public ResponseEntity<Object> updateUserById(@Validated(SystemUserTb.Update.class) @RequestBody SystemUserVo args) { public ResponseEntity<Object> updateUserById(@Validated(SystemUserTb.Update.class) @RequestBody SystemUserVo args) {
@@ -88,13 +91,15 @@ public class SystemUserController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@ApiOperation("修改用户:个人中心") @OperationLog
@ApiOperation("修改个人中心信息")
@PostMapping(value = "/updateUserCenterInfoById") @PostMapping(value = "/updateUserCenterInfoById")
public ResponseEntity<Object> updateUserCenterInfoById(@Validated(SystemUserTb.Update.class) @RequestBody SystemUserTb args) { public ResponseEntity<Object> updateUserCenterInfoById(@Validated(SystemUserTb.Update.class) @RequestBody SystemUserTb args) {
systemUserService.updateUserCenterInfoById(args); systemUserService.updateUserCenterInfoById(args);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@OperationLog
@ApiOperation("删除用户") @ApiOperation("删除用户")
@PostMapping(value = "/deleteUserByIds") @PostMapping(value = "/deleteUserByIds")
@PreAuthorize("@el.check('user:del')") @PreAuthorize("@el.check('user:del')")
@@ -103,7 +108,8 @@ public class SystemUserController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@ApiOperation("修改密码") @OperationLog
@ApiOperation("修改用户密码")
@PostMapping(value = "/updateUserPasswordByUsername") @PostMapping(value = "/updateUserPasswordByUsername")
public ResponseEntity<Object> updateUserPasswordByUsername(@RequestBody SystemUpdateUserPasswordArgs passVo) throws Exception { public ResponseEntity<Object> updateUserPasswordByUsername(@RequestBody SystemUpdateUserPasswordArgs passVo) throws Exception {
String currentUsername = KitSecurityHelper.getCurrentUsername(); String currentUsername = KitSecurityHelper.getCurrentUsername();
@@ -111,20 +117,23 @@ public class SystemUserController {
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@ApiOperation("重置密码") @OperationLog
@ApiOperation("重置用户密码")
@PostMapping(value = "/resetUserPasswordByIds") @PostMapping(value = "/resetUserPasswordByIds")
public ResponseEntity<Object> resetUserPasswordByIds(@RequestBody Set<Long> ids) { public ResponseEntity<Object> resetUserPasswordByIds(@RequestBody Set<Long> ids) {
systemUserService.resetUserPasswordByIds(ids); systemUserService.resetUserPasswordByIds(ids);
return ResponseEntity.ok(null); return ResponseEntity.ok(null);
} }
@ApiOperation("修改头像") @OperationLog
@ApiOperation("修改用户头像")
@PostMapping(value = "/updateUserAvatar") @PostMapping(value = "/updateUserAvatar")
public ResponseEntity<Object> updateUserAvatar(@RequestParam MultipartFile avatar) { public ResponseEntity<Object> updateUserAvatar(@RequestParam MultipartFile avatar) {
return ResponseEntity.ok(systemUserService.updateUserAvatar(avatar)); return ResponseEntity.ok(systemUserService.updateUserAvatar(avatar));
} }
@ApiOperation("修改邮箱") @OperationLog
@ApiOperation("修改用户邮箱")
@PostMapping(value = "/updateUserEmailByUsername/{code}") @PostMapping(value = "/updateUserEmailByUsername/{code}")
public ResponseEntity<Object> updateUserEmailByUsername(@PathVariable String code, @RequestBody SystemUserTb args) throws Exception { public ResponseEntity<Object> updateUserEmailByUsername(@PathVariable String code, @RequestBody SystemUserTb args) throws Exception {
String currentUsername = KitSecurityHelper.getCurrentUsername(); String currentUsername = KitSecurityHelper.getCurrentUsername();