From d5984087a306de31690e9a81d951bd831434a0c9 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Fri, 12 Jan 2024 23:19:00 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=80=82=E9=85=8D=20Crane4j=20?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A1=AB=E5=85=85=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/config/Crane4jConfiguration.java | 28 ++++++++ .../admin/monitor/model/resp/LogResp.java | 13 ++-- .../admin/monitor/service/LogService.java | 6 +- .../monitor/service/impl/LogServiceImpl.java | 65 +++++-------------- .../system/service/impl/DeptServiceImpl.java | 24 +++---- .../service/impl/DictItemServiceImpl.java | 8 +-- .../system/service/impl/FileServiceImpl.java | 27 ++++---- .../system/service/impl/RoleServiceImpl.java | 21 +++--- .../system/service/impl/UserServiceImpl.java | 26 ++++---- 9 files changed, 102 insertions(+), 116 deletions(-) create mode 100644 continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/Crane4jConfiguration.java diff --git a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/Crane4jConfiguration.java b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/Crane4jConfiguration.java new file mode 100644 index 00000000..1a14d78f --- /dev/null +++ b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/Crane4jConfiguration.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. + * + * 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 top.charles7c.continew.admin.common.config; + +import org.springframework.context.annotation.Configuration; + +/** + * Crane4j 配置 + * + * @author Charles7c + * @since 2024/1/11 21:22 + */ +@Configuration +public class Crane4jConfiguration extends cn.crane4j.spring.boot.config.Crane4jAutoConfiguration {} \ No newline at end of file diff --git a/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/model/resp/LogResp.java b/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/model/resp/LogResp.java index 9c31d379..4fa9adc3 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/model/resp/LogResp.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/model/resp/LogResp.java @@ -16,16 +16,16 @@ package top.charles7c.continew.admin.monitor.model.resp; +import cn.crane4j.annotation.Assemble; +import cn.crane4j.annotation.Mapping; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + import java.io.Serial; import java.io.Serializable; import java.time.LocalDateTime; -import lombok.Data; - -import io.swagger.v3.oas.annotations.media.Schema; - -import com.fasterxml.jackson.annotation.JsonIgnore; - /** * 基础日志信息 * @@ -48,6 +48,7 @@ public class LogResp implements Serializable { * 创建人 */ @JsonIgnore + @Assemble(container = "userNickname", props = @Mapping(ref = "createUserString")) private Long createUser; /** diff --git a/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/service/LogService.java b/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/service/LogService.java index c58b0d4b..7f1bf017 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/service/LogService.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/service/LogService.java @@ -16,9 +16,6 @@ package top.charles7c.continew.admin.monitor.service; -import java.util.List; -import java.util.Map; - import top.charles7c.continew.admin.monitor.model.query.LoginLogQuery; import top.charles7c.continew.admin.monitor.model.query.OperationLogQuery; import top.charles7c.continew.admin.monitor.model.query.SystemLogQuery; @@ -26,6 +23,9 @@ import top.charles7c.continew.starter.extension.crud.model.query.PageQuery; import top.charles7c.continew.starter.extension.crud.model.resp.PageResp; +import java.util.List; +import java.util.Map; + /** * 系统日志业务接口 * diff --git a/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/service/impl/LogServiceImpl.java b/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/service/impl/LogServiceImpl.java index cbe9b778..4dce5087 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/service/impl/LogServiceImpl.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/service/impl/LogServiceImpl.java @@ -16,21 +16,14 @@ package top.charles7c.continew.admin.monitor.service.impl; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - +import cn.crane4j.annotation.AutoOperate; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; - import org.springframework.stereotype.Service; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.util.StrUtil; - import top.charles7c.continew.admin.common.constant.SysConstants; import top.charles7c.continew.admin.monitor.mapper.LogMapper; import top.charles7c.continew.admin.monitor.model.entity.LogDO; @@ -39,14 +32,16 @@ import top.charles7c.continew.admin.monitor.model.query.SystemLogQuery; import top.charles7c.continew.admin.monitor.model.resp.*; import top.charles7c.continew.admin.monitor.service.LogService; -import top.charles7c.continew.starter.core.util.ExceptionUtils; import top.charles7c.continew.starter.core.util.ReflectUtils; import top.charles7c.continew.starter.core.util.validate.CheckUtils; import top.charles7c.continew.starter.data.mybatis.plus.query.QueryHelper; -import top.charles7c.continew.starter.extension.crud.base.CommonUserService; import top.charles7c.continew.starter.extension.crud.model.query.PageQuery; import top.charles7c.continew.starter.extension.crud.model.resp.PageResp; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + /** * 系统日志业务实现 * @@ -59,9 +54,9 @@ public class LogServiceImpl implements LogService { private final LogMapper logMapper; - private final CommonUserService commonUserService; @Override + @AutoOperate(type = OperationLogResp.class, on = "list") public PageResp page(OperationLogQuery query, PageQuery pageQuery) { QueryWrapper queryWrapper = QueryHelper.build(query); // 限定查询信息 @@ -73,18 +68,11 @@ public PageResp page(OperationLogQuery query, PageQuery pageQu queryWrapper.select(columnNameList); // 分页查询 IPage page = logMapper.selectPage(pageQuery.toPage(), queryWrapper); - PageResp pageResp = PageResp.build(page, OperationLogResp.class); - // 填充数据(如果是查询个人操作日志,只查询一次用户信息即可) - if (null != query.getUid()) { - String nickname = ExceptionUtils.exToNull(() -> commonUserService.getNicknameById(query.getUid())); - pageResp.getList().forEach(o -> o.setCreateUserString(nickname)); - } else { - pageResp.getList().forEach(this::fill); - } - return pageResp; + return PageResp.build(page, OperationLogResp.class); } @Override + @AutoOperate(type = LoginLogResp.class, on = "list") public PageResp page(LoginLogQuery query, PageQuery pageQuery) { QueryWrapper queryWrapper = QueryHelper.build(query); queryWrapper.eq("module", "登录"); @@ -97,13 +85,11 @@ public PageResp page(LoginLogQuery query, PageQuery pageQuery) { queryWrapper.select(columnNameList); // 分页查询 IPage page = logMapper.selectPage(pageQuery.toPage(), queryWrapper); - PageResp pageResp = PageResp.build(page, LoginLogResp.class); - // 填充数据 - pageResp.getList().forEach(this::fill); - return pageResp; + return PageResp.build(page, LoginLogResp.class); } @Override + @AutoOperate(type = SystemLogResp.class, on = "list") public PageResp page(SystemLogQuery query, PageQuery pageQuery) { QueryWrapper queryWrapper = QueryHelper.build(query); // 限定查询信息 @@ -115,19 +101,15 @@ public PageResp page(SystemLogQuery query, PageQuery pageQuery) { queryWrapper.select(columnNameList); // 分页查询 IPage page = logMapper.selectPage(pageQuery.toPage(), queryWrapper); - PageResp pageResp = PageResp.build(page, SystemLogResp.class); - // 填充数据 - pageResp.getList().forEach(this::fill); - return pageResp; + return PageResp.build(page, SystemLogResp.class); } @Override + @AutoOperate(type = SystemLogDetailResp.class) public SystemLogDetailResp get(Long id) { LogDO logDO = logMapper.selectById(id); CheckUtils.throwIfNotExists(logDO, "LogDO", "ID", id); - SystemLogDetailResp detail = BeanUtil.copyProperties(logDO, SystemLogDetailResp.class); - this.fill(detail); - return detail; + return BeanUtil.copyProperties(logDO, SystemLogDetailResp.class); } @Override @@ -149,17 +131,4 @@ public List listDashboardPopularModule() { public List> listDashboardGeoDistribution() { return logMapper.selectListDashboardGeoDistribution(); } - - /** - * 填充数据 - * - * @param logResp 日志信息 - */ - private void fill(LogResp logResp) { - Long createUser = logResp.getCreateUser(); - if (null == createUser) { - return; - } - logResp.setCreateUserString(ExceptionUtils.exToNull(() -> commonUserService.getNicknameById(createUser))); - } } diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/DeptServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/DeptServiceImpl.java index ec816ddc..227a7bcd 100644 --- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/DeptServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/DeptServiceImpl.java @@ -16,21 +16,12 @@ package top.charles7c.continew.admin.system.service.impl; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.Optional; - +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import jakarta.annotation.Resource; - import lombok.RequiredArgsConstructor; - import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ObjectUtil; - import top.charles7c.continew.admin.common.constant.SysConstants; import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum; import top.charles7c.continew.admin.system.mapper.DeptMapper; @@ -46,6 +37,11 @@ import top.charles7c.continew.starter.core.util.validate.CheckUtils; import top.charles7c.continew.starter.extension.crud.base.BaseServiceImpl; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.Optional; + /** * 部门业务实现 * @@ -126,9 +122,9 @@ public void delete(List ids) { } @Override - public void fillDetail(Object detailObj) { - super.fillDetail(detailObj); - if (detailObj instanceof DeptDetailResp detail) { + protected void fill(Object obj) { + super.fill(obj); + if (obj instanceof DeptDetailResp detail) { if (Objects.equals(SysConstants.SUPER_PARENT_ID, detail.getParentId())) { return; } diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/DictItemServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/DictItemServiceImpl.java index bd16a757..821ddea4 100644 --- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/DictItemServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/DictItemServiceImpl.java @@ -16,14 +16,10 @@ package top.charles7c.continew.admin.system.service.impl; -import java.util.List; - import lombok.RequiredArgsConstructor; - import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; import org.springframework.stereotype.Service; - import top.charles7c.continew.admin.common.constant.CacheConstants; import top.charles7c.continew.admin.common.model.resp.LabelValueResp; import top.charles7c.continew.admin.system.mapper.DictItemMapper; @@ -37,6 +33,8 @@ import top.charles7c.continew.starter.extension.crud.base.BaseServiceImpl; import top.charles7c.continew.starter.extension.crud.model.query.SortQuery; +import java.util.List; + /** * 字典项业务实现 * @@ -71,7 +69,7 @@ public List listByDictId(Long dictId) { SortQuery sortQuery = new SortQuery(); sortQuery.setSort(new String[] {"sort,asc"}); List detailList = super.list(dictItemQuery, sortQuery, DictItemDetailResp.class); - detailList.forEach(super::fillDetail); + detailList.forEach(super::fill); return detailList; } diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/FileServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/FileServiceImpl.java index cb6ecb40..debfc8cf 100644 --- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/FileServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/FileServiceImpl.java @@ -16,22 +16,17 @@ package top.charles7c.continew.admin.system.service.impl; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - +import cn.hutool.core.util.StrUtil; +import cn.hutool.core.util.URLUtil; import jakarta.annotation.Resource; - import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; - -import org.dromara.x.file.storage.core.*; +import org.dromara.x.file.storage.core.FileInfo; +import org.dromara.x.file.storage.core.FileStorageService; +import org.dromara.x.file.storage.core.ProgressListener; +import org.dromara.x.file.storage.core.UploadPretreatment; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; - -import cn.hutool.core.util.StrUtil; -import cn.hutool.core.util.URLUtil; - import top.charles7c.continew.admin.system.enums.StorageTypeEnum; import top.charles7c.continew.admin.system.mapper.FileMapper; import top.charles7c.continew.admin.system.model.entity.FileDO; @@ -47,6 +42,10 @@ import top.charles7c.continew.starter.core.util.validate.CheckUtils; import top.charles7c.continew.starter.extension.crud.base.BaseServiceImpl; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + /** * 文件业务实现 * @@ -117,11 +116,11 @@ public Long countByStorageIds(List storageIds) { } @Override - protected void fill(Object baseObj) { - if (baseObj instanceof FileResp fileResp && !URLUtils.isHttpUrl(fileResp.getUrl())) { + protected void fill(Object obj) { + super.fill(obj); + if (obj instanceof FileResp fileResp && !URLUtils.isHttpUrl(fileResp.getUrl())) { StorageDetailResp storage = storageService.get(fileResp.getStorageId()); fileResp.setUrl(URLUtil.normalize(storage.getDomain() + StringConstants.SLASH + fileResp.getUrl())); } - super.fill(baseObj); } } \ No newline at end of file diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/RoleServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/RoleServiceImpl.java index 67661585..4f4f5e04 100644 --- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/RoleServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/RoleServiceImpl.java @@ -16,19 +16,13 @@ package top.charles7c.continew.admin.system.service.impl; -import java.util.*; -import java.util.stream.Collectors; - +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import lombok.RequiredArgsConstructor; - import org.springframework.cache.annotation.CacheEvict; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ObjectUtil; - import top.charles7c.continew.admin.auth.service.OnlineUserService; import top.charles7c.continew.admin.common.constant.CacheConstants; import top.charles7c.continew.admin.common.constant.SysConstants; @@ -47,6 +41,9 @@ import top.charles7c.continew.starter.core.util.validate.CheckUtils; import top.charles7c.continew.starter.extension.crud.base.BaseServiceImpl; +import java.util.*; +import java.util.stream.Collectors; + /** * 角色业务实现 * @@ -133,9 +130,9 @@ public void delete(List ids) { } @Override - public void fillDetail(Object detailObj) { - super.fillDetail(detailObj); - if (detailObj instanceof RoleDetailResp detail) { + protected void fill(Object obj) { + super.fill(obj); + if (obj instanceof RoleDetailResp detail) { Long roleId = detail.getId(); if (SysConstants.ADMIN_ROLE_CODE.equals(detail.getCode())) { List list = menuService.list(null, null); diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/UserServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/UserServiceImpl.java index 9eaaf99c..353ea87c 100644 --- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/UserServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/UserServiceImpl.java @@ -16,13 +16,12 @@ package top.charles7c.continew.admin.system.service.impl; -import java.time.LocalDateTime; -import java.util.*; - +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.io.file.FileNameUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import jakarta.annotation.Resource; - import lombok.RequiredArgsConstructor; - import org.dromara.x.file.storage.core.FileInfo; import org.dromara.x.file.storage.core.FileStorageService; import org.springframework.cache.annotation.CacheConfig; @@ -30,12 +29,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.io.file.FileNameUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; - import top.charles7c.continew.admin.common.constant.CacheConstants; import top.charles7c.continew.admin.common.constant.FileConstants; import top.charles7c.continew.admin.common.constant.SysConstants; @@ -57,6 +50,11 @@ import top.charles7c.continew.starter.extension.crud.base.BaseServiceImpl; import top.charles7c.continew.starter.extension.crud.base.CommonUserService; +import java.time.LocalDateTime; +import java.util.Collection; +import java.util.List; +import java.util.Optional; + /** * 用户业务实现 * @@ -148,9 +146,9 @@ public void delete(List ids) { } @Override - public void fillDetail(Object detailObj) { - super.fillDetail(detailObj); - if (detailObj instanceof UserDetailResp detail) { + protected void fill(Object obj) { + super.fill(obj); + if (obj instanceof UserDetailResp detail) { detail.setDeptName(ExceptionUtils.exToNull(() -> deptService.get(detail.getDeptId()).getName())); List roleIdList = userRoleService.listRoleIdByUserId(detail.getId()); detail.setRoleIds(roleIdList);