feat: 系统模块集成操作日志功能
- 添加操作日志管理Controller,提供完整的CRUD和查询接口 - 实现操作日志Service业务逻辑,支持分页查询和统计分析 - 添加操作日志定时清理任务,定期清理过期日志数据 - 集成操作日志插件依赖到系统模块POM配置 - 为所有Controller方法添加@OperLog注解,实现操作记录 - 创建操作日志Mapper和XML映射文件,支持数据库操作 - 提供日志统计和仪表盘数据接口,便于监控分析
This commit is contained in:
parent
16fbe7dc09
commit
60d0598975
@ -35,11 +35,11 @@
|
|||||||
<version>${revision}</version>
|
<version>${revision}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- 操作日志组件 -->
|
<!-- 操作日志组件 -->
|
||||||
<!-- <dependency> -->
|
<dependency>
|
||||||
<!-- <groupId>org.leocoder.thin</groupId> -->
|
<groupId>org.leocoder.thin</groupId>
|
||||||
<!-- <artifactId>coder-common-thin-oper-logs</artifactId> -->
|
<artifactId>coder-common-thin-oper-logs</artifactId>
|
||||||
<!-- <version>${revision}</version> -->
|
<version>${revision}</version>
|
||||||
<!-- </dependency> -->
|
</dependency>
|
||||||
<!-- SpringDoc OpenAPI 3.0 -->
|
<!-- SpringDoc OpenAPI 3.0 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springdoc</groupId>
|
<groupId>org.springdoc</groupId>
|
||||||
|
|||||||
@ -1,20 +1,22 @@
|
|||||||
package org.leocoder.thin.system.controller.file;
|
package org.leocoder.thin.system.controller.file;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
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.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.leocoder.thin.common.constants.CoderConstants;
|
import org.leocoder.thin.common.constants.CoderConstants;
|
||||||
import org.leocoder.thin.common.exception.coder.YUtil;
|
import org.leocoder.thin.common.exception.coder.YUtil;
|
||||||
import org.leocoder.thin.common.satoken.CoderLoginUtil;
|
import org.leocoder.thin.common.satoken.CoderLoginUtil;
|
||||||
import org.leocoder.thin.common.utils.file.FileUtil;
|
import org.leocoder.thin.common.utils.file.FileUtil;
|
||||||
|
import org.leocoder.thin.domain.enums.oper.OperType;
|
||||||
import org.leocoder.thin.domain.model.vo.system.SysFileVo;
|
import org.leocoder.thin.domain.model.vo.system.SysFileVo;
|
||||||
import org.leocoder.thin.domain.pojo.system.SysFile;
|
import org.leocoder.thin.domain.pojo.system.SysFile;
|
||||||
|
import org.leocoder.thin.operlog.annotation.OperLog;
|
||||||
import org.leocoder.thin.system.service.file.SysFileService;
|
import org.leocoder.thin.system.service.file.SysFileService;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
@ -91,7 +93,7 @@ public class SysFileController {
|
|||||||
@Operation(summary = "新增文件记录", description = "添加新的文件资源记录")
|
@Operation(summary = "新增文件记录", description = "添加新的文件资源记录")
|
||||||
@SaCheckPermission("system:file:add")
|
@SaCheckPermission("system:file:add")
|
||||||
@PostMapping("/sysFile/add")
|
@PostMapping("/sysFile/add")
|
||||||
// @OperLog(value = "新增文件资源", operType = OperType.INSERT)
|
@OperLog(value = "新增文件资源", operType = OperType.INSERT)
|
||||||
public void add(@Validated @RequestBody SysFile sysFile) {
|
public void add(@Validated @RequestBody SysFile sysFile) {
|
||||||
sysFile.setCreateBy(CoderLoginUtil.getUserName());
|
sysFile.setCreateBy(CoderLoginUtil.getUserName());
|
||||||
YUtil.isTrue(!sysFileService.save(sysFile), "新增失败,请稍后重试");
|
YUtil.isTrue(!sysFileService.save(sysFile), "新增失败,请稍后重试");
|
||||||
@ -104,7 +106,7 @@ public class SysFileController {
|
|||||||
@Operation(summary = "修改文件信息", description = "更新系统文件的基本信息")
|
@Operation(summary = "修改文件信息", description = "更新系统文件的基本信息")
|
||||||
@SaCheckPermission("system:file:update")
|
@SaCheckPermission("system:file:update")
|
||||||
@PostMapping("/sysFile/update")
|
@PostMapping("/sysFile/update")
|
||||||
// @OperLog(value = "修改文件资源", operType = OperType.UPDATE)
|
@OperLog(value = "修改文件资源", operType = OperType.UPDATE)
|
||||||
public void update(@Validated @RequestBody SysFile sysFile) {
|
public void update(@Validated @RequestBody SysFile sysFile) {
|
||||||
sysFile.setUpdateBy(CoderLoginUtil.getUserName());
|
sysFile.setUpdateBy(CoderLoginUtil.getUserName());
|
||||||
YUtil.isTrue(!sysFileService.updateById(sysFile), "修改失败,请稍后重试");
|
YUtil.isTrue(!sysFileService.updateById(sysFile), "修改失败,请稍后重试");
|
||||||
@ -117,7 +119,7 @@ public class SysFileController {
|
|||||||
@Operation(summary = "删除文件", description = "根据文件ID删除指定文件及其记录")
|
@Operation(summary = "删除文件", description = "根据文件ID删除指定文件及其记录")
|
||||||
@SaCheckPermission("system:file:delete")
|
@SaCheckPermission("system:file:delete")
|
||||||
@PostMapping("/sysFile/deleteById/{id}")
|
@PostMapping("/sysFile/deleteById/{id}")
|
||||||
// @OperLog(value = "删除文件资源", operType = OperType.DELETE)
|
@OperLog(value = "删除文件资源", operType = OperType.DELETE)
|
||||||
public void delete(@PathVariable("id") Long id) {
|
public void delete(@PathVariable("id") Long id) {
|
||||||
SysFile sysFile = sysFileService.getById(id);
|
SysFile sysFile = sysFileService.getById(id);
|
||||||
if (!ObjectUtil.isEmpty(sysFile)) {
|
if (!ObjectUtil.isEmpty(sysFile)) {
|
||||||
@ -137,7 +139,7 @@ public class SysFileController {
|
|||||||
@SaCheckPermission("system:file:delete")
|
@SaCheckPermission("system:file:delete")
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@PostMapping("/sysFile/batchDelete")
|
@PostMapping("/sysFile/batchDelete")
|
||||||
// @OperLog(value = "批量删除文件资源", operType = OperType.DELETE)
|
@OperLog(value = "批量删除文件资源", operType = OperType.DELETE)
|
||||||
public void batchDelete(@RequestBody List<Long> ids) {
|
public void batchDelete(@RequestBody List<Long> ids) {
|
||||||
LambdaQueryWrapper<SysFile> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SysFile> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
lambdaQueryWrapper.in(SysFile::getFileId, ids);
|
lambdaQueryWrapper.in(SysFile::getFileId, ids);
|
||||||
|
|||||||
@ -1,24 +1,26 @@
|
|||||||
package org.leocoder.thin.system.controller.menu;
|
package org.leocoder.thin.system.controller.menu;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
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.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.leocoder.thin.common.constants.CoderConstants;
|
import org.leocoder.thin.common.constants.CoderConstants;
|
||||||
import org.leocoder.thin.common.exception.coder.YUtil;
|
import org.leocoder.thin.common.exception.coder.YUtil;
|
||||||
import org.leocoder.thin.common.satoken.CoderLoginUtil;
|
import org.leocoder.thin.common.satoken.CoderLoginUtil;
|
||||||
|
import org.leocoder.thin.domain.enums.oper.OperType;
|
||||||
import org.leocoder.thin.domain.model.bo.element.CascaderLongBo;
|
import org.leocoder.thin.domain.model.bo.element.CascaderLongBo;
|
||||||
import org.leocoder.thin.domain.model.bo.system.SysMenuBo;
|
import org.leocoder.thin.domain.model.bo.system.SysMenuBo;
|
||||||
import org.leocoder.thin.domain.model.vo.system.SysMenuVo;
|
import org.leocoder.thin.domain.model.vo.system.SysMenuVo;
|
||||||
import org.leocoder.thin.domain.pojo.system.SysMenu;
|
import org.leocoder.thin.domain.pojo.system.SysMenu;
|
||||||
|
import org.leocoder.thin.operlog.annotation.OperLog;
|
||||||
import org.leocoder.thin.system.service.menu.SysMenuService;
|
import org.leocoder.thin.system.service.menu.SysMenuService;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
@ -93,7 +95,7 @@ public class SysMenuController {
|
|||||||
@Operation(summary = "新增菜单", description = "添加新的系统菜单")
|
@Operation(summary = "新增菜单", description = "添加新的系统菜单")
|
||||||
@SaCheckPermission("system:menu:add")
|
@SaCheckPermission("system:menu:add")
|
||||||
@PostMapping("/sysMenu/add")
|
@PostMapping("/sysMenu/add")
|
||||||
// @OperLog(value = "新增菜单", operType = OperType.INSERT)
|
@OperLog(value = "新增菜单", operType = OperType.INSERT)
|
||||||
public void add(@Validated @RequestBody SysMenu sysMenu) {
|
public void add(@Validated @RequestBody SysMenu sysMenu) {
|
||||||
// 路由Path不能重复
|
// 路由Path不能重复
|
||||||
if (StringUtils.isNotBlank(sysMenu.getPath())) {
|
if (StringUtils.isNotBlank(sysMenu.getPath())) {
|
||||||
@ -124,7 +126,7 @@ public class SysMenuController {
|
|||||||
@Operation(summary = "修改菜单信息", description = "更新系统菜单的基本信息")
|
@Operation(summary = "修改菜单信息", description = "更新系统菜单的基本信息")
|
||||||
@SaCheckPermission("system:menu:update")
|
@SaCheckPermission("system:menu:update")
|
||||||
@PostMapping("/sysMenu/update")
|
@PostMapping("/sysMenu/update")
|
||||||
// @OperLog(value = "修改菜单", operType = OperType.UPDATE)
|
@OperLog(value = "修改菜单", operType = OperType.UPDATE)
|
||||||
public void update(@Validated @RequestBody SysMenu sysMenu) {
|
public void update(@Validated @RequestBody SysMenu sysMenu) {
|
||||||
// 路由Path不能重复
|
// 路由Path不能重复
|
||||||
if (StringUtils.isNotBlank(sysMenu.getPath())) {
|
if (StringUtils.isNotBlank(sysMenu.getPath())) {
|
||||||
@ -151,7 +153,7 @@ public class SysMenuController {
|
|||||||
@Operation(summary = "删除菜单", description = "根据菜单ID删除指定菜单")
|
@Operation(summary = "删除菜单", description = "根据菜单ID删除指定菜单")
|
||||||
@SaCheckPermission("system:menu:delete")
|
@SaCheckPermission("system:menu:delete")
|
||||||
@PostMapping("/sysMenu/deleteById/{id}")
|
@PostMapping("/sysMenu/deleteById/{id}")
|
||||||
// @OperLog(value = "删除菜单", operType = OperType.DELETE)
|
@OperLog(value = "删除菜单", operType = OperType.DELETE)
|
||||||
public void delete(@PathVariable Long id) {
|
public void delete(@PathVariable Long id) {
|
||||||
SysMenu menu = sysMenuService.getById(id);
|
SysMenu menu = sysMenuService.getById(id);
|
||||||
YUtil.isTrue(ObjectUtils.isEmpty(menu) || menu.getMenuId() == null, "请选择需要删除的数据");
|
YUtil.isTrue(ObjectUtils.isEmpty(menu) || menu.getMenuId() == null, "请选择需要删除的数据");
|
||||||
@ -170,7 +172,7 @@ public class SysMenuController {
|
|||||||
@Operation(summary = "批量删除菜单", description = "批量删除多个系统菜单")
|
@Operation(summary = "批量删除菜单", description = "批量删除多个系统菜单")
|
||||||
@SaCheckPermission("system:menu:delete")
|
@SaCheckPermission("system:menu:delete")
|
||||||
@PostMapping("/sysMenu/batchDelete")
|
@PostMapping("/sysMenu/batchDelete")
|
||||||
// @OperLog(value = "批量删除菜单", operType = OperType.DELETE)
|
@OperLog(value = "批量删除菜单", operType = OperType.DELETE)
|
||||||
public void batchDelete(@RequestBody List<Long> ids) {
|
public void batchDelete(@RequestBody List<Long> ids) {
|
||||||
YUtil.isTrue(!sysMenuService.removeBatchByIds(ids), "删除失败,请稍后重试");
|
YUtil.isTrue(!sysMenuService.removeBatchByIds(ids), "删除失败,请稍后重试");
|
||||||
}
|
}
|
||||||
@ -183,7 +185,7 @@ public class SysMenuController {
|
|||||||
@Operation(summary = "修改菜单状态", description = "启用或禁用系统菜单")
|
@Operation(summary = "修改菜单状态", description = "启用或禁用系统菜单")
|
||||||
@SaCheckPermission("system:menu:update")
|
@SaCheckPermission("system:menu:update")
|
||||||
@PostMapping("/sysMenu/updateStatus/{id}/{menuStatus}")
|
@PostMapping("/sysMenu/updateStatus/{id}/{menuStatus}")
|
||||||
// @OperLog(value = "修改菜单状态", operType = OperType.UPDATE)
|
@OperLog(value = "修改菜单状态", operType = OperType.UPDATE)
|
||||||
public void updateStatus(@PathVariable("id") Long id, @PathVariable("menuStatus") String menuStatus) {
|
public void updateStatus(@PathVariable("id") Long id, @PathVariable("menuStatus") String menuStatus) {
|
||||||
UpdateWrapper<SysMenu> updateWrapper = new UpdateWrapper<>();
|
UpdateWrapper<SysMenu> updateWrapper = new UpdateWrapper<>();
|
||||||
updateWrapper.set("menu_status", menuStatus).eq("menu_id", id);
|
updateWrapper.set("menu_status", menuStatus).eq("menu_id", id);
|
||||||
@ -196,7 +198,7 @@ public class SysMenuController {
|
|||||||
*/
|
*/
|
||||||
@Operation(summary = "修改菜单展开状态", description = "设置菜单是否默认展开")
|
@Operation(summary = "修改菜单展开状态", description = "设置菜单是否默认展开")
|
||||||
@PostMapping("/sysMenu/updateSpread/{id}/{isSpread}")
|
@PostMapping("/sysMenu/updateSpread/{id}/{isSpread}")
|
||||||
// @OperLog(value = "修改菜单展开状态", operType = OperType.UPDATE)
|
@OperLog(value = "修改菜单展开状态", operType = OperType.UPDATE)
|
||||||
public void updateSpread(@PathVariable("id") Long id, @PathVariable("isSpread") String isSpread) {
|
public void updateSpread(@PathVariable("id") Long id, @PathVariable("isSpread") String isSpread) {
|
||||||
LambdaUpdateWrapper<SysMenu> updateWrapper = new LambdaUpdateWrapper<>();
|
LambdaUpdateWrapper<SysMenu> updateWrapper = new LambdaUpdateWrapper<>();
|
||||||
updateWrapper.set(StringUtils.isNotBlank(isSpread), SysMenu::getIsSpread, isSpread).eq(SysMenu::getMenuId, id);
|
updateWrapper.set(StringUtils.isNotBlank(isSpread), SysMenu::getIsSpread, isSpread).eq(SysMenu::getMenuId, id);
|
||||||
@ -272,7 +274,7 @@ public class SysMenuController {
|
|||||||
@Operation(summary = "保存角色菜单权限", description = "保存角色和菜单权限之间的关联关系")
|
@Operation(summary = "保存角色菜单权限", description = "保存角色和菜单权限之间的关联关系")
|
||||||
@SaCheckPermission("system:role:menu")
|
@SaCheckPermission("system:role:menu")
|
||||||
@PostMapping("/sysMenu/saveRoleMenu/{roleId}/{menuIds}")
|
@PostMapping("/sysMenu/saveRoleMenu/{roleId}/{menuIds}")
|
||||||
// @OperLog(value = "保存角色菜单权限", operType = OperType.UPDATE)
|
@OperLog(value = "保存角色菜单权限", operType = OperType.UPDATE)
|
||||||
public void saveRoleMenu(@PathVariable("roleId") Long roleId, @PathVariable("menuIds") List<Long> menuIds) {
|
public void saveRoleMenu(@PathVariable("roleId") Long roleId, @PathVariable("menuIds") List<Long> menuIds) {
|
||||||
sysMenuService.saveRoleMenu(roleId, menuIds);
|
sysMenuService.saveRoleMenu(roleId, menuIds);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
package org.leocoder.system.controller.operlog;
|
package org.leocoder.thin.system.controller.operlog;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.leocoder.domain.pojo.system.SysOperLog;
|
import org.leocoder.thin.domain.model.vo.system.SysOperLogVo;
|
||||||
import org.leocoder.domain.model.vo.system.SysOperLogVo;
|
import org.leocoder.thin.domain.pojo.system.SysOperLog;
|
||||||
import org.leocoder.system.service.operlog.SysOperLogService;
|
import org.leocoder.thin.system.service.operlog.SysOperLogService;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|||||||
@ -1,18 +1,20 @@
|
|||||||
package org.leocoder.thin.system.controller.picture;
|
package org.leocoder.thin.system.controller.picture;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
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.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.leocoder.thin.common.constants.CoderConstants;
|
import org.leocoder.thin.common.constants.CoderConstants;
|
||||||
import org.leocoder.thin.common.exception.coder.YUtil;
|
import org.leocoder.thin.common.exception.coder.YUtil;
|
||||||
import org.leocoder.thin.common.satoken.CoderLoginUtil;
|
import org.leocoder.thin.common.satoken.CoderLoginUtil;
|
||||||
|
import org.leocoder.thin.domain.enums.oper.OperType;
|
||||||
import org.leocoder.thin.domain.model.vo.system.SysPictureVo;
|
import org.leocoder.thin.domain.model.vo.system.SysPictureVo;
|
||||||
import org.leocoder.thin.domain.pojo.system.SysPicture;
|
import org.leocoder.thin.domain.pojo.system.SysPicture;
|
||||||
|
import org.leocoder.thin.operlog.annotation.OperLog;
|
||||||
import org.leocoder.thin.system.service.picture.SysPictureService;
|
import org.leocoder.thin.system.service.picture.SysPictureService;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
@ -87,7 +89,7 @@ public class SysPictureController {
|
|||||||
@Operation(summary = "新增图片记录", description = "添加新的图片资源记录")
|
@Operation(summary = "新增图片记录", description = "添加新的图片资源记录")
|
||||||
@SaCheckPermission("system:sysPicture:add")
|
@SaCheckPermission("system:sysPicture:add")
|
||||||
@PostMapping("/sysPicture/add")
|
@PostMapping("/sysPicture/add")
|
||||||
// @OperLog(value = "新增图库", operType = OperType.INSERT)
|
@OperLog(value = "新增图库", operType = OperType.INSERT)
|
||||||
public void add(@Validated @RequestBody SysPicture sysPicture) {
|
public void add(@Validated @RequestBody SysPicture sysPicture) {
|
||||||
sysPicture.setCreateBy(CoderLoginUtil.getUserName());
|
sysPicture.setCreateBy(CoderLoginUtil.getUserName());
|
||||||
YUtil.isTrue(!sysPictureService.save(sysPicture), "新增失败,请稍后重试");
|
YUtil.isTrue(!sysPictureService.save(sysPicture), "新增失败,请稍后重试");
|
||||||
@ -100,7 +102,7 @@ public class SysPictureController {
|
|||||||
@Operation(summary = "修改图片信息", description = "更新系统图片的基本信息")
|
@Operation(summary = "修改图片信息", description = "更新系统图片的基本信息")
|
||||||
@SaCheckPermission("system:sysPicture:update")
|
@SaCheckPermission("system:sysPicture:update")
|
||||||
@PostMapping("/sysPicture/update")
|
@PostMapping("/sysPicture/update")
|
||||||
// @OperLog(value = "修改图库", operType = OperType.UPDATE)
|
@OperLog(value = "修改图库", operType = OperType.UPDATE)
|
||||||
public void update(@Validated @RequestBody SysPicture sysPicture) {
|
public void update(@Validated @RequestBody SysPicture sysPicture) {
|
||||||
sysPicture.setUpdateBy(CoderLoginUtil.getUserName());
|
sysPicture.setUpdateBy(CoderLoginUtil.getUserName());
|
||||||
YUtil.isTrue(!sysPictureService.updateById(sysPicture), "修改失败,请稍后重试");
|
YUtil.isTrue(!sysPictureService.updateById(sysPicture), "修改失败,请稍后重试");
|
||||||
@ -113,7 +115,7 @@ public class SysPictureController {
|
|||||||
@Operation(summary = "删除图片", description = "根据图片ID删除指定图片记录")
|
@Operation(summary = "删除图片", description = "根据图片ID删除指定图片记录")
|
||||||
@SaCheckPermission("system:sysPicture:delete")
|
@SaCheckPermission("system:sysPicture:delete")
|
||||||
@PostMapping("/sysPicture/deleteById/{id}")
|
@PostMapping("/sysPicture/deleteById/{id}")
|
||||||
// @OperLog(value = "删除图库", operType = OperType.DELETE)
|
@OperLog(value = "删除图库", operType = OperType.DELETE)
|
||||||
public void delete(@PathVariable("id") Long id) {
|
public void delete(@PathVariable("id") Long id) {
|
||||||
YUtil.isTrue(!sysPictureService.removeById(id), "删除失败,请稍后重试");
|
YUtil.isTrue(!sysPictureService.removeById(id), "删除失败,请稍后重试");
|
||||||
}
|
}
|
||||||
@ -126,7 +128,7 @@ public class SysPictureController {
|
|||||||
@SaCheckPermission("system:sysPicture:delete")
|
@SaCheckPermission("system:sysPicture:delete")
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@PostMapping("/sysPicture/batchDelete")
|
@PostMapping("/sysPicture/batchDelete")
|
||||||
// @OperLog(value = "批量删除图库", operType = OperType.DELETE)
|
@OperLog(value = "批量删除图库", operType = OperType.DELETE)
|
||||||
public void batchDelete(@RequestBody List<Long> ids) {
|
public void batchDelete(@RequestBody List<Long> ids) {
|
||||||
YUtil.isTrue(!sysPictureService.removeBatchByIds(ids), "删除失败,请稍后重试");
|
YUtil.isTrue(!sysPictureService.removeBatchByIds(ids), "删除失败,请稍后重试");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,10 +11,12 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
import org.leocoder.thin.common.constants.CoderConstants;
|
import org.leocoder.thin.common.constants.CoderConstants;
|
||||||
import org.leocoder.thin.common.exception.coder.YUtil;
|
import org.leocoder.thin.common.exception.coder.YUtil;
|
||||||
import org.leocoder.thin.common.satoken.CoderLoginUtil;
|
import org.leocoder.thin.common.satoken.CoderLoginUtil;
|
||||||
|
import org.leocoder.thin.domain.enums.oper.OperType;
|
||||||
import org.leocoder.thin.domain.model.bo.element.SelectLongBo;
|
import org.leocoder.thin.domain.model.bo.element.SelectLongBo;
|
||||||
import org.leocoder.thin.domain.model.vo.base.BaseVo;
|
import org.leocoder.thin.domain.model.vo.base.BaseVo;
|
||||||
import org.leocoder.thin.domain.model.vo.system.SysRoleVo;
|
import org.leocoder.thin.domain.model.vo.system.SysRoleVo;
|
||||||
import org.leocoder.thin.domain.pojo.system.SysRole;
|
import org.leocoder.thin.domain.pojo.system.SysRole;
|
||||||
|
import org.leocoder.thin.operlog.annotation.OperLog;
|
||||||
import org.leocoder.thin.system.service.role.SysRoleService;
|
import org.leocoder.thin.system.service.role.SysRoleService;
|
||||||
import org.springframework.util.ObjectUtils;
|
import org.springframework.util.ObjectUtils;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
@ -77,7 +79,7 @@ public class SysRoleController {
|
|||||||
@Operation(summary = "新增角色", description = "添加新的系统角色")
|
@Operation(summary = "新增角色", description = "添加新的系统角色")
|
||||||
@SaCheckPermission("system:role:add")
|
@SaCheckPermission("system:role:add")
|
||||||
@PostMapping("/sysRole/add")
|
@PostMapping("/sysRole/add")
|
||||||
// @OperLog(value = "新增角色", operType = OperType.INSERT)
|
@OperLog(value = "新增角色", operType = OperType.INSERT)
|
||||||
public void add(@Validated @RequestBody SysRole sysRole) {
|
public void add(@Validated @RequestBody SysRole sysRole) {
|
||||||
if (StringUtils.isNotBlank(CoderLoginUtil.getUserName())) {
|
if (StringUtils.isNotBlank(CoderLoginUtil.getUserName())) {
|
||||||
sysRole.setCreateBy(CoderLoginUtil.getUserName());
|
sysRole.setCreateBy(CoderLoginUtil.getUserName());
|
||||||
@ -108,7 +110,7 @@ public class SysRoleController {
|
|||||||
@Operation(summary = "修改角色信息", description = "更新系统角色的基本信息")
|
@Operation(summary = "修改角色信息", description = "更新系统角色的基本信息")
|
||||||
@SaCheckPermission("system:role:update")
|
@SaCheckPermission("system:role:update")
|
||||||
@PostMapping("/sysRole/update")
|
@PostMapping("/sysRole/update")
|
||||||
// @OperLog(value = "修改角色", operType = OperType.UPDATE)
|
@OperLog(value = "修改角色", operType = OperType.UPDATE)
|
||||||
public void update(@Validated @RequestBody SysRole sysRole) {
|
public void update(@Validated @RequestBody SysRole sysRole) {
|
||||||
if (StringUtils.isNotBlank(CoderLoginUtil.getUserName())) {
|
if (StringUtils.isNotBlank(CoderLoginUtil.getUserName())) {
|
||||||
sysRole.setUpdateBy(CoderLoginUtil.getUserName());
|
sysRole.setUpdateBy(CoderLoginUtil.getUserName());
|
||||||
@ -123,7 +125,7 @@ public class SysRoleController {
|
|||||||
@Operation(summary = "删除角色", description = "根据角色ID删除指定角色")
|
@Operation(summary = "删除角色", description = "根据角色ID删除指定角色")
|
||||||
@SaCheckPermission("system:role:delete")
|
@SaCheckPermission("system:role:delete")
|
||||||
@PostMapping("/sysRole/deleteById/{id}")
|
@PostMapping("/sysRole/deleteById/{id}")
|
||||||
// @OperLog(value = "删除角色", operType = OperType.DELETE)
|
@OperLog(value = "删除角色", operType = OperType.DELETE)
|
||||||
public void delete(@PathVariable("id") Long id) {
|
public void delete(@PathVariable("id") Long id) {
|
||||||
YUtil.isTrue(Objects.equals(id, 1L), "超级管理员不可删除");
|
YUtil.isTrue(Objects.equals(id, 1L), "超级管理员不可删除");
|
||||||
YUtil.isTrue(!sysRoleService.removeById(id), "删除失败,请稍后重试");
|
YUtil.isTrue(!sysRoleService.removeById(id), "删除失败,请稍后重试");
|
||||||
@ -136,7 +138,7 @@ public class SysRoleController {
|
|||||||
@Operation(summary = "批量删除角色", description = "批量删除多个系统角色")
|
@Operation(summary = "批量删除角色", description = "批量删除多个系统角色")
|
||||||
@SaCheckPermission("system:role:delete")
|
@SaCheckPermission("system:role:delete")
|
||||||
@PostMapping("/sysRole/batchDelete")
|
@PostMapping("/sysRole/batchDelete")
|
||||||
// @OperLog(value = "批量删除角色", operType = OperType.DELETE)
|
@OperLog(value = "批量删除角色", operType = OperType.DELETE)
|
||||||
public void batchDelete(@RequestBody List<Long> ids) {
|
public void batchDelete(@RequestBody List<Long> ids) {
|
||||||
for (Long id : ids) {
|
for (Long id : ids) {
|
||||||
YUtil.isTrue(Objects.equals(id, 1L), "超级管理员不可删除");
|
YUtil.isTrue(Objects.equals(id, 1L), "超级管理员不可删除");
|
||||||
@ -150,7 +152,7 @@ public class SysRoleController {
|
|||||||
*/
|
*/
|
||||||
@Operation(summary = "修改角色状态", description = "启用或禁用系统角色")
|
@Operation(summary = "修改角色状态", description = "启用或禁用系统角色")
|
||||||
@PostMapping("/sysRole/updateStatus/{roleId}/{roleStatus}")
|
@PostMapping("/sysRole/updateStatus/{roleId}/{roleStatus}")
|
||||||
// @OperLog(value = "修改角色状态", operType = OperType.UPDATE)
|
@OperLog(value = "修改角色状态", operType = OperType.UPDATE)
|
||||||
public void update(@PathVariable("roleId") Long roleId, @PathVariable("roleStatus") String roleStatus) {
|
public void update(@PathVariable("roleId") Long roleId, @PathVariable("roleStatus") String roleStatus) {
|
||||||
UpdateWrapper<SysRole> updateWrapper = new UpdateWrapper<>();
|
UpdateWrapper<SysRole> updateWrapper = new UpdateWrapper<>();
|
||||||
updateWrapper.set("role_status", roleStatus).eq("role_id", roleId);
|
updateWrapper.set("role_status", roleStatus).eq("role_id", roleId);
|
||||||
@ -178,7 +180,7 @@ public class SysRoleController {
|
|||||||
@Operation(summary = "分配用户角色", description = "为指定用户分配角色权限")
|
@Operation(summary = "分配用户角色", description = "为指定用户分配角色权限")
|
||||||
@SaCheckPermission("system:user:role")
|
@SaCheckPermission("system:user:role")
|
||||||
@GetMapping("/sysRole/assignUserRole/{userId}/{roleIds}")
|
@GetMapping("/sysRole/assignUserRole/{userId}/{roleIds}")
|
||||||
// @OperLog(value = "分配用户角色", operType = OperType.UPDATE)
|
@OperLog(value = "分配用户角色", operType = OperType.UPDATE)
|
||||||
public void assignUserRole(@PathVariable("userId") Long userId, @PathVariable("roleIds") List<Long> roleIds) {
|
public void assignUserRole(@PathVariable("userId") Long userId, @PathVariable("roleIds") List<Long> roleIds) {
|
||||||
sysRoleService.assignUserRole(userId, roleIds);
|
sysRoleService.assignUserRole(userId, roleIds);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,13 +1,12 @@
|
|||||||
package org.leocoder.thin.system.controller.user;
|
package org.leocoder.thin.system.controller.user;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@ -21,10 +20,12 @@ import org.leocoder.thin.common.satoken.CoderLoginUtil;
|
|||||||
import org.leocoder.thin.common.satoken.CoderPasswordUtil;
|
import org.leocoder.thin.common.satoken.CoderPasswordUtil;
|
||||||
import org.leocoder.thin.common.utils.file.FileTypeUtil;
|
import org.leocoder.thin.common.utils.file.FileTypeUtil;
|
||||||
import org.leocoder.thin.common.utils.number.VerifyCodeUtil;
|
import org.leocoder.thin.common.utils.number.VerifyCodeUtil;
|
||||||
|
import org.leocoder.thin.domain.enums.oper.OperType;
|
||||||
import org.leocoder.thin.domain.model.vo.system.SysLoginUserVo;
|
import org.leocoder.thin.domain.model.vo.system.SysLoginUserVo;
|
||||||
import org.leocoder.thin.domain.model.vo.system.SysPwdVo;
|
import org.leocoder.thin.domain.model.vo.system.SysPwdVo;
|
||||||
import org.leocoder.thin.domain.pojo.system.SysLoginUser;
|
import org.leocoder.thin.domain.pojo.system.SysLoginUser;
|
||||||
import org.leocoder.thin.easyexcel.core.utils.EasyExcelUtil;
|
import org.leocoder.thin.easyexcel.core.utils.EasyExcelUtil;
|
||||||
|
import org.leocoder.thin.operlog.annotation.OperLog;
|
||||||
import org.leocoder.thin.system.service.role.SysRoleService;
|
import org.leocoder.thin.system.service.role.SysRoleService;
|
||||||
import org.leocoder.thin.system.service.user.SysLoginUserService;
|
import org.leocoder.thin.system.service.user.SysLoginUserService;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@ -112,7 +113,7 @@ public class SysLoginUserController {
|
|||||||
@SaCheckPermission("system:user:add")
|
@SaCheckPermission("system:user:add")
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@PostMapping("/sysLoginUser/add")
|
@PostMapping("/sysLoginUser/add")
|
||||||
// @OperLog(value = "新增用户", operType = OperType.INSERT, excludeFields = {"password", "salt"})
|
@OperLog(value = "新增用户", operType = OperType.INSERT, excludeFields = {"password", "salt"})
|
||||||
public void add(@Validated @RequestBody SysLoginUser sysLoginUser) {
|
public void add(@Validated @RequestBody SysLoginUser sysLoginUser) {
|
||||||
// 1、先查询是否已经存在登录名
|
// 1、先查询是否已经存在登录名
|
||||||
LambdaQueryWrapper<SysLoginUser> wrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SysLoginUser> wrapper = new LambdaQueryWrapper<>();
|
||||||
@ -139,7 +140,7 @@ public class SysLoginUserController {
|
|||||||
@SaCheckPermission("system:user:update")
|
@SaCheckPermission("system:user:update")
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@PostMapping("/sysLoginUser/update")
|
@PostMapping("/sysLoginUser/update")
|
||||||
// @OperLog(value = "修改用户", operType = OperType.UPDATE, excludeFields = {"password", "salt"})
|
@OperLog(value = "修改用户", operType = OperType.UPDATE, excludeFields = {"password", "salt"})
|
||||||
public void update(@Validated @RequestBody SysLoginUser sysLoginUser) {
|
public void update(@Validated @RequestBody SysLoginUser sysLoginUser) {
|
||||||
// 1、修改用户基本信息
|
// 1、修改用户基本信息
|
||||||
if (StringUtils.isNotBlank(CoderLoginUtil.getUserName())) {
|
if (StringUtils.isNotBlank(CoderLoginUtil.getUserName())) {
|
||||||
@ -158,7 +159,7 @@ public class SysLoginUserController {
|
|||||||
@SaCheckPermission("system:user:delete")
|
@SaCheckPermission("system:user:delete")
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@PostMapping("/sysLoginUser/deleteById/{id}")
|
@PostMapping("/sysLoginUser/deleteById/{id}")
|
||||||
// @OperLog(value = "删除用户", operType = OperType.DELETE)
|
@OperLog(value = "删除用户", operType = OperType.DELETE)
|
||||||
public void delete(@PathVariable("id") Long id) {
|
public void delete(@PathVariable("id") Long id) {
|
||||||
// 1、超级管理员不可删除
|
// 1、超级管理员不可删除
|
||||||
YUtil.isTrue(id == 1L, "超级管理员不可删除");
|
YUtil.isTrue(id == 1L, "超级管理员不可删除");
|
||||||
@ -176,7 +177,7 @@ public class SysLoginUserController {
|
|||||||
@SaCheckPermission("system:user:delete")
|
@SaCheckPermission("system:user:delete")
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@PostMapping("/sysLoginUser/batchDelete")
|
@PostMapping("/sysLoginUser/batchDelete")
|
||||||
// @OperLog(value = "批量删除用户", operType = OperType.DELETE)
|
@OperLog(value = "批量删除用户", operType = OperType.DELETE)
|
||||||
public void deleteBatch(@NotNull(message = "请选择需要删除的数据") @RequestBody List<Long> ids) {
|
public void deleteBatch(@NotNull(message = "请选择需要删除的数据") @RequestBody List<Long> ids) {
|
||||||
for (Long id : ids) {
|
for (Long id : ids) {
|
||||||
// 1、超级管理员不可删除
|
// 1、超级管理员不可删除
|
||||||
@ -194,7 +195,7 @@ public class SysLoginUserController {
|
|||||||
*/
|
*/
|
||||||
@Operation(summary = "修改用户状态", description = "启用或禁用系统用户")
|
@Operation(summary = "修改用户状态", description = "启用或禁用系统用户")
|
||||||
@PostMapping("/sysLoginUser/updateStatus/{userId}/{userStatus}")
|
@PostMapping("/sysLoginUser/updateStatus/{userId}/{userStatus}")
|
||||||
// @OperLog(value = "修改用户状态", operType = OperType.UPDATE)
|
@OperLog(value = "修改用户状态", operType = OperType.UPDATE)
|
||||||
public void update(@PathVariable("userId") Long userId, @PathVariable("userStatus") String userStatus) {
|
public void update(@PathVariable("userId") Long userId, @PathVariable("userStatus") String userStatus) {
|
||||||
UpdateWrapper<SysLoginUser> updateWrapper = new UpdateWrapper<>();
|
UpdateWrapper<SysLoginUser> updateWrapper = new UpdateWrapper<>();
|
||||||
updateWrapper.set("user_status", userStatus).eq("user_id", userId);
|
updateWrapper.set("user_status", userStatus).eq("user_id", userId);
|
||||||
@ -227,7 +228,7 @@ public class SysLoginUserController {
|
|||||||
*/
|
*/
|
||||||
@Operation(summary = "修改个人资料", description = "修改个人基本信息和头像")
|
@Operation(summary = "修改个人资料", description = "修改个人基本信息和头像")
|
||||||
@PostMapping("/sysLoginUser/updateBasicData")
|
@PostMapping("/sysLoginUser/updateBasicData")
|
||||||
// @OperLog(value = "修改个人资料", operType = OperType.UPDATE)
|
@OperLog(value = "修改个人资料", operType = OperType.UPDATE)
|
||||||
public void updateBasicData(@RequestBody SysLoginUser sysLoginUser) {
|
public void updateBasicData(@RequestBody SysLoginUser sysLoginUser) {
|
||||||
sysLoginUser.setUserId(CoderLoginUtil.getUserId());
|
sysLoginUser.setUserId(CoderLoginUtil.getUserId());
|
||||||
YUtil.isTrue(!sysLoginUserService.updateById(sysLoginUser), "操作失败");
|
YUtil.isTrue(!sysLoginUserService.updateById(sysLoginUser), "操作失败");
|
||||||
@ -239,7 +240,7 @@ public class SysLoginUserController {
|
|||||||
*/
|
*/
|
||||||
@Operation(summary = "修改登录密码", description = "用户修改自己的登录密码")
|
@Operation(summary = "修改登录密码", description = "用户修改自己的登录密码")
|
||||||
@PostMapping("/sysLoginUser/updateUserPwd")
|
@PostMapping("/sysLoginUser/updateUserPwd")
|
||||||
// @OperLog(value = "修改密码", operType = OperType.UPDATE, saveRequestData = false, saveResponseData = false)
|
@OperLog(value = "修改密码", operType = OperType.UPDATE, saveRequestData = false, saveResponseData = false)
|
||||||
public void updateUserPwd(@Validated @RequestBody SysPwdVo vo) {
|
public void updateUserPwd(@Validated @RequestBody SysPwdVo vo) {
|
||||||
SysLoginUser sysLoginUser = sysLoginUserService.getById(CoderLoginUtil.getUserId());
|
SysLoginUser sysLoginUser = sysLoginUserService.getById(CoderLoginUtil.getUserId());
|
||||||
YUtil.isTrue(ObjectUtils.isEmpty(sysLoginUser), "用户信息发生改变,请重新登录");
|
YUtil.isTrue(ObjectUtils.isEmpty(sysLoginUser), "用户信息发生改变,请重新登录");
|
||||||
@ -273,7 +274,7 @@ public class SysLoginUserController {
|
|||||||
@SaCheckPermission("system:user:resetPwd")
|
@SaCheckPermission("system:user:resetPwd")
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@PostMapping("/sysLoginUser/resetPwd/{id}/{password}")
|
@PostMapping("/sysLoginUser/resetPwd/{id}/{password}")
|
||||||
// @OperLog(value = "重置用户密码", operType = OperType.UPDATE, saveRequestData = false, saveResponseData = false)
|
@OperLog(value = "重置用户密码", operType = OperType.UPDATE, saveRequestData = false, saveResponseData = false)
|
||||||
public void resetPwd(@PathVariable("id") Long id, @PathVariable("password") String password) {
|
public void resetPwd(@PathVariable("id") Long id, @PathVariable("password") String password) {
|
||||||
// 1、参数校验
|
// 1、参数校验
|
||||||
YUtil.isTrue(id == null, "用户ID不能为空");
|
YUtil.isTrue(id == null, "用户ID不能为空");
|
||||||
@ -298,7 +299,7 @@ public class SysLoginUserController {
|
|||||||
*/
|
*/
|
||||||
@Operation(summary = "下载用户导入模版", description = "下载用户数据导入的Excel模版文件")
|
@Operation(summary = "下载用户导入模版", description = "下载用户数据导入的Excel模版文件")
|
||||||
@GetMapping("/sysLoginUser/downloadExcelTemplate")
|
@GetMapping("/sysLoginUser/downloadExcelTemplate")
|
||||||
// @OperLog(value = "下载用户导入模板", operType = OperType.EXPORT)
|
@OperLog(value = "下载用户导入模板", operType = OperType.EXPORT)
|
||||||
public void downloadExcelTemplate(HttpServletResponse response) {
|
public void downloadExcelTemplate(HttpServletResponse response) {
|
||||||
List<SysLoginUser> list = new ArrayList<>();
|
List<SysLoginUser> list = new ArrayList<>();
|
||||||
easyExcelUtil.exportExcel(response, list, SysLoginUser.class, "下载模版", "下载模版");
|
easyExcelUtil.exportExcel(response, list, SysLoginUser.class, "下载模版", "下载模版");
|
||||||
@ -311,7 +312,7 @@ public class SysLoginUserController {
|
|||||||
@Operation(summary = "导出用户数据", description = "根据查询条件导出用户数据到Excel文件")
|
@Operation(summary = "导出用户数据", description = "根据查询条件导出用户数据到Excel文件")
|
||||||
@SaCheckPermission("system:user:export")
|
@SaCheckPermission("system:user:export")
|
||||||
@GetMapping("/sysLoginUser/exportExcelData")
|
@GetMapping("/sysLoginUser/exportExcelData")
|
||||||
// @OperLog(value = "导出用户数据", operType = OperType.EXPORT)
|
@OperLog(value = "导出用户数据", operType = OperType.EXPORT)
|
||||||
public void exportExcelData(SysLoginUserVo vo, HttpServletResponse response) {
|
public void exportExcelData(SysLoginUserVo vo, HttpServletResponse response) {
|
||||||
List<SysLoginUser> list = sysLoginUserService.listLoginUser(vo);
|
List<SysLoginUser> list = sysLoginUserService.listLoginUser(vo);
|
||||||
easyExcelUtil.exportExcel(response, list, SysLoginUser.class, "导出", "用户信息表");
|
easyExcelUtil.exportExcel(response, list, SysLoginUser.class, "导出", "用户信息表");
|
||||||
@ -325,7 +326,7 @@ public class SysLoginUserController {
|
|||||||
@SaCheckPermission("system:user:import")
|
@SaCheckPermission("system:user:import")
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@PostMapping("/sysLoginUser/importExcelData")
|
@PostMapping("/sysLoginUser/importExcelData")
|
||||||
// @OperLog(value = "导入用户数据", operType = OperType.IMPORT, saveRequestData = false, saveResponseData = true)
|
@OperLog(value = "导入用户数据", operType = OperType.IMPORT, saveRequestData = false, saveResponseData = true)
|
||||||
public void importExcelData(@RequestParam("file") MultipartFile multipartFile) {
|
public void importExcelData(@RequestParam("file") MultipartFile multipartFile) {
|
||||||
// 判断是否符合excel文件格式
|
// 判断是否符合excel文件格式
|
||||||
FileTypeUtil.decideIsExcel(multipartFile);
|
FileTypeUtil.decideIsExcel(multipartFile);
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
package org.leocoder.system.service.operlog;
|
package org.leocoder.thin.system.service.operlog;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import org.leocoder.domain.pojo.system.SysOperLog;
|
import org.leocoder.thin.domain.model.vo.system.SysOperLogVo;
|
||||||
import org.leocoder.domain.model.vo.system.SysOperLogVo;
|
import org.leocoder.thin.domain.pojo.system.SysOperLog;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package org.leocoder.system.service.operlog;
|
package org.leocoder.thin.system.service.operlog;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
@ -7,12 +7,12 @@ import jakarta.servlet.http.HttpServletResponse;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.leocoder.common.exception.coder.YUtil;
|
import org.leocoder.thin.common.exception.coder.YUtil;
|
||||||
import org.leocoder.common.utils.cache.RedisUtil;
|
import org.leocoder.thin.common.utils.cache.RedisUtil;
|
||||||
import org.leocoder.common.utils.date.DateUtil;
|
import org.leocoder.thin.common.utils.date.DateUtil;
|
||||||
import org.leocoder.domain.pojo.system.SysOperLog;
|
import org.leocoder.thin.domain.model.vo.system.SysOperLogVo;
|
||||||
import org.leocoder.domain.model.vo.system.SysOperLogVo;
|
import org.leocoder.thin.domain.pojo.system.SysOperLog;
|
||||||
import org.leocoder.mp.mapper.system.SysOperLogMapper;
|
import org.leocoder.thin.mybatisplus.mapper.system.SysOperLogMapper;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
@ -222,8 +222,8 @@ public class SysOperLogServiceImpl extends ServiceImpl<SysOperLogMapper, SysOper
|
|||||||
|
|
||||||
// 本月统计
|
// 本月统计
|
||||||
// 获取本月第一天
|
// 获取本月第一天
|
||||||
java.util.Calendar calendar = java.util.Calendar.getInstance();
|
Calendar calendar = Calendar.getInstance();
|
||||||
calendar.set(java.util.Calendar.DAY_OF_MONTH, 1);
|
calendar.set(Calendar.DAY_OF_MONTH, 1);
|
||||||
String monthStart = DateUtil.format(calendar.getTime(), "yyyy-MM-dd");
|
String monthStart = DateUtil.format(calendar.getTime(), "yyyy-MM-dd");
|
||||||
Long monthCount = this.count(new LambdaQueryWrapper<SysOperLog>()
|
Long monthCount = this.count(new LambdaQueryWrapper<SysOperLog>()
|
||||||
.ge(SysOperLog::getOperTime, monthStart + " 00:00:00"));
|
.ge(SysOperLog::getOperTime, monthStart + " 00:00:00"));
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
package org.leocoder.system.task;
|
package org.leocoder.thin.system.task;
|
||||||
|
|
||||||
import org.leocoder.system.service.operlog.SysOperLogService;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.leocoder.thin.system.service.operlog.SysOperLogService;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Leocoder
|
* @author Leocoder
|
||||||
|
|||||||
@ -1,10 +1,11 @@
|
|||||||
package org.leocoder.mp.mapper.system;
|
package org.leocoder.thin.mybatisplus.mapper.system;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import org.leocoder.domain.pojo.system.SysOperLog;
|
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Select;
|
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.apache.ibatis.annotations.Select;
|
||||||
|
import org.leocoder.thin.domain.pojo.system.SysOperLog;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|||||||
@ -3,10 +3,10 @@
|
|||||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
|
||||||
<mapper namespace="org.leocoder.mp.mapper.system.SysOperLogMapper">
|
<mapper namespace="org.leocoder.thin.mybatisplus.mapper.system.SysOperLogMapper">
|
||||||
|
|
||||||
<!-- 基础字段映射 -->
|
<!-- 基础字段映射 -->
|
||||||
<resultMap id="BaseResultMap" type="org.leocoder.domain.pojo.system.SysOperLog">
|
<resultMap id="BaseResultMap" type="org.leocoder.thin.domain.pojo.system.SysOperLog">
|
||||||
<id column="oper_id" property="operId" />
|
<id column="oper_id" property="operId" />
|
||||||
<result column="oper_name" property="operName" />
|
<result column="oper_name" property="operName" />
|
||||||
<result column="oper_type" property="operType" />
|
<result column="oper_type" property="operType" />
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user