mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-10-31 10:57:13 +08:00 
			
		
		
		
	refactor: 使用 Crane4j 优化部分数据填充处理
This commit is contained in:
		| @@ -16,12 +16,15 @@ | |||||||
|  |  | ||||||
| package top.charles7c.continew.admin.system.model.resp; | package top.charles7c.continew.admin.system.model.resp; | ||||||
|  |  | ||||||
|  | import cn.crane4j.annotation.AssembleMethod; | ||||||
|  | import cn.crane4j.annotation.ContainerMethod; | ||||||
|  | import cn.crane4j.annotation.Mapping; | ||||||
| import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | ||||||
| import com.alibaba.excel.annotation.ExcelProperty; | import com.alibaba.excel.annotation.ExcelProperty; | ||||||
| import com.baomidou.mybatisplus.annotation.TableField; |  | ||||||
| import io.swagger.v3.oas.annotations.media.Schema; | import io.swagger.v3.oas.annotations.media.Schema; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum; | import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum; | ||||||
|  | import top.charles7c.continew.admin.system.service.DeptService; | ||||||
| import top.charles7c.continew.starter.extension.crud.base.BaseDetailResp; | import top.charles7c.continew.starter.extension.crud.base.BaseDetailResp; | ||||||
| import top.charles7c.continew.starter.extension.crud.converter.ExcelBaseEnumConverter; | import top.charles7c.continew.starter.extension.crud.converter.ExcelBaseEnumConverter; | ||||||
|  |  | ||||||
| @@ -52,13 +55,13 @@ public class DeptDetailResp extends BaseDetailResp { | |||||||
|      * 上级部门 ID |      * 上级部门 ID | ||||||
|      */ |      */ | ||||||
|     @Schema(description = "上级部门 ID", example = "2") |     @Schema(description = "上级部门 ID", example = "2") | ||||||
|  |     @AssembleMethod(targetType = DeptService.class, method = @ContainerMethod(bindMethod = "get", resultType = DeptDetailResp.class), props = @Mapping(src = "name", ref = "parentName")) | ||||||
|     private Long parentId; |     private Long parentId; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 上级部门 |      * 上级部门 | ||||||
|      */ |      */ | ||||||
|     @Schema(description = "上级部门", example = "天津总部") |     @Schema(description = "上级部门", example = "天津总部") | ||||||
|     @TableField(exist = false) |  | ||||||
|     @ExcelProperty(value = "上级部门") |     @ExcelProperty(value = "上级部门") | ||||||
|     private String parentName; |     private String parentName; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -16,18 +16,17 @@ | |||||||
|  |  | ||||||
| package top.charles7c.continew.admin.system.model.resp; | package top.charles7c.continew.admin.system.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 top.charles7c.continew.admin.common.enums.MessageTypeEnum; | ||||||
|  |  | ||||||
| import java.io.Serial; | import java.io.Serial; | ||||||
| import java.io.Serializable; | import java.io.Serializable; | ||||||
| import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||||
|  |  | ||||||
| import lombok.Data; |  | ||||||
|  |  | ||||||
| import io.swagger.v3.oas.annotations.media.Schema; |  | ||||||
|  |  | ||||||
| import com.fasterxml.jackson.annotation.JsonIgnore; |  | ||||||
|  |  | ||||||
| import top.charles7c.continew.admin.common.enums.MessageTypeEnum; |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 消息信息 |  * 消息信息 | ||||||
|  * |  * | ||||||
| @@ -81,6 +80,7 @@ public class MessageResp implements Serializable { | |||||||
|      * 创建人 |      * 创建人 | ||||||
|      */ |      */ | ||||||
|     @JsonIgnore |     @JsonIgnore | ||||||
|  |     @Assemble(container = "userNickname", props = @Mapping(ref = "createUserString")) | ||||||
|     private Long createUser; |     private Long createUser; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|   | |||||||
| @@ -16,24 +16,25 @@ | |||||||
|  |  | ||||||
| package top.charles7c.continew.admin.system.model.resp; | package top.charles7c.continew.admin.system.model.resp; | ||||||
|  |  | ||||||
|  | import cn.crane4j.annotation.AssembleMethod; | ||||||
|  | import cn.crane4j.annotation.ContainerMethod; | ||||||
|  | import cn.crane4j.annotation.Mapping; | ||||||
|  | import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | ||||||
|  | import com.alibaba.excel.annotation.ExcelProperty; | ||||||
|  | import io.swagger.v3.oas.annotations.media.Schema; | ||||||
|  | import lombok.Data; | ||||||
|  | import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum; | ||||||
|  | import top.charles7c.continew.admin.common.enums.GenderEnum; | ||||||
|  | import top.charles7c.continew.admin.common.util.helper.LoginHelper; | ||||||
|  | import top.charles7c.continew.admin.system.service.DeptService; | ||||||
|  | import top.charles7c.continew.starter.extension.crud.base.BaseDetailResp; | ||||||
|  | import top.charles7c.continew.starter.extension.crud.converter.ExcelBaseEnumConverter; | ||||||
|  |  | ||||||
| import java.io.Serial; | import java.io.Serial; | ||||||
| import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Objects; | import java.util.Objects; | ||||||
|  |  | ||||||
| import lombok.Data; |  | ||||||
|  |  | ||||||
| import io.swagger.v3.oas.annotations.media.Schema; |  | ||||||
|  |  | ||||||
| import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; |  | ||||||
| import com.alibaba.excel.annotation.ExcelProperty; |  | ||||||
|  |  | ||||||
| import top.charles7c.continew.starter.extension.crud.converter.ExcelBaseEnumConverter; |  | ||||||
| import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum; |  | ||||||
| import top.charles7c.continew.admin.common.enums.GenderEnum; |  | ||||||
| import top.charles7c.continew.admin.common.util.helper.LoginHelper; |  | ||||||
| import top.charles7c.continew.starter.extension.crud.base.BaseDetailResp; |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 用户详情信息 |  * 用户详情信息 | ||||||
|  * |  * | ||||||
| @@ -121,6 +122,7 @@ public class UserDetailResp extends BaseDetailResp { | |||||||
|      * 部门 ID |      * 部门 ID | ||||||
|      */ |      */ | ||||||
|     @Schema(description = "部门 ID", example = "5") |     @Schema(description = "部门 ID", example = "5") | ||||||
|  |     @AssembleMethod(targetType = DeptService.class, method = @ContainerMethod(bindMethod = "get", resultType = DeptDetailResp.class), props = @Mapping(src = "name", ref = "deptName")) | ||||||
|     private Long deptId; |     private Long deptId; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|   | |||||||
| @@ -22,7 +22,6 @@ import jakarta.annotation.Resource; | |||||||
| import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| import org.springframework.transaction.annotation.Transactional; | import org.springframework.transaction.annotation.Transactional; | ||||||
| import top.charles7c.continew.admin.common.constant.SysConstants; |  | ||||||
| import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum; | import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum; | ||||||
| import top.charles7c.continew.admin.system.mapper.DeptMapper; | import top.charles7c.continew.admin.system.mapper.DeptMapper; | ||||||
| import top.charles7c.continew.admin.system.model.entity.DeptDO; | import top.charles7c.continew.admin.system.model.entity.DeptDO; | ||||||
| @@ -33,13 +32,11 @@ import top.charles7c.continew.admin.system.model.resp.DeptResp; | |||||||
| import top.charles7c.continew.admin.system.service.DeptService; | import top.charles7c.continew.admin.system.service.DeptService; | ||||||
| import top.charles7c.continew.admin.system.service.RoleDeptService; | import top.charles7c.continew.admin.system.service.RoleDeptService; | ||||||
| import top.charles7c.continew.admin.system.service.UserService; | import top.charles7c.continew.admin.system.service.UserService; | ||||||
| import top.charles7c.continew.starter.core.util.ExceptionUtils; |  | ||||||
| import top.charles7c.continew.starter.core.util.validate.CheckUtils; | import top.charles7c.continew.starter.core.util.validate.CheckUtils; | ||||||
| import top.charles7c.continew.starter.extension.crud.base.BaseServiceImpl; | import top.charles7c.continew.starter.extension.crud.base.BaseServiceImpl; | ||||||
|  |  | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Objects; |  | ||||||
| import java.util.Optional; | import java.util.Optional; | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @@ -121,17 +118,6 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptRes | |||||||
|         super.delete(ids); |         super.delete(ids); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |  | ||||||
|     protected void fill(Object obj) { |  | ||||||
|         super.fill(obj); |  | ||||||
|         if (obj instanceof DeptDetailResp detail) { |  | ||||||
|             if (Objects.equals(SysConstants.SUPER_PARENT_ID, detail.getParentId())) { |  | ||||||
|                 return; |  | ||||||
|             } |  | ||||||
|             detail.setParentName(ExceptionUtils.exToNull(() -> this.get(detail.getParentId()).getName())); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 名称是否存在 |      * 名称是否存在 | ||||||
|      * |      * | ||||||
|   | |||||||
| @@ -16,20 +16,14 @@ | |||||||
|  |  | ||||||
| package top.charles7c.continew.admin.system.service.impl; | package top.charles7c.continew.admin.system.service.impl; | ||||||
|  |  | ||||||
| import java.util.List; | import cn.crane4j.annotation.AutoOperate; | ||||||
|  |  | ||||||
| import lombok.RequiredArgsConstructor; |  | ||||||
|  |  | ||||||
| import org.springframework.stereotype.Service; |  | ||||||
| import org.springframework.transaction.annotation.Transactional; |  | ||||||
|  |  | ||||||
| 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.bean.BeanUtil; | ||||||
| import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||||
| import cn.hutool.extra.spring.SpringUtil; | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||||||
|  | import com.baomidou.mybatisplus.core.metadata.IPage; | ||||||
|  | import lombok.RequiredArgsConstructor; | ||||||
|  | import org.springframework.stereotype.Service; | ||||||
|  | import org.springframework.transaction.annotation.Transactional; | ||||||
| import top.charles7c.continew.admin.system.mapper.MessageMapper; | import top.charles7c.continew.admin.system.mapper.MessageMapper; | ||||||
| import top.charles7c.continew.admin.system.model.entity.MessageDO; | import top.charles7c.continew.admin.system.model.entity.MessageDO; | ||||||
| import top.charles7c.continew.admin.system.model.query.MessageQuery; | import top.charles7c.continew.admin.system.model.query.MessageQuery; | ||||||
| @@ -37,13 +31,13 @@ import top.charles7c.continew.admin.system.model.req.MessageReq; | |||||||
| import top.charles7c.continew.admin.system.model.resp.MessageResp; | import top.charles7c.continew.admin.system.model.resp.MessageResp; | ||||||
| import top.charles7c.continew.admin.system.service.MessageService; | import top.charles7c.continew.admin.system.service.MessageService; | ||||||
| import top.charles7c.continew.admin.system.service.MessageUserService; | import top.charles7c.continew.admin.system.service.MessageUserService; | ||||||
| import top.charles7c.continew.starter.core.util.ExceptionUtils; |  | ||||||
| import top.charles7c.continew.starter.core.util.validate.CheckUtils; | import top.charles7c.continew.starter.core.util.validate.CheckUtils; | ||||||
| import top.charles7c.continew.starter.data.mybatis.plus.query.QueryHelper; | 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.query.PageQuery; | ||||||
| import top.charles7c.continew.starter.extension.crud.model.resp.PageResp; | import top.charles7c.continew.starter.extension.crud.model.resp.PageResp; | ||||||
|  |  | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 消息业务实现 |  * 消息业务实现 | ||||||
|  * |  * | ||||||
| @@ -58,12 +52,12 @@ public class MessageServiceImpl implements MessageService { | |||||||
|     private final MessageUserService messageUserService; |     private final MessageUserService messageUserService; | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|  |     @AutoOperate(type = MessageResp.class, on = "list") | ||||||
|     public PageResp<MessageResp> page(MessageQuery query, PageQuery pageQuery) { |     public PageResp<MessageResp> page(MessageQuery query, PageQuery pageQuery) { | ||||||
|         QueryWrapper<MessageDO> queryWrapper = QueryHelper.build(query); |         QueryWrapper<MessageDO> queryWrapper = QueryHelper.build(query); | ||||||
|         queryWrapper.apply(null != query.getUserId(), "t2.user_id={0}", query.getUserId()) |         queryWrapper.apply(null != query.getUserId(), "t2.user_id={0}", query.getUserId()) | ||||||
|             .apply(null != query.getIsRead(), "t2.is_read={0}", query.getIsRead()); |             .apply(null != query.getIsRead(), "t2.is_read={0}", query.getIsRead()); | ||||||
|         IPage<MessageResp> page = baseMapper.selectPageByUserId(pageQuery.toPage(), queryWrapper); |         IPage<MessageResp> page = baseMapper.selectPageByUserId(pageQuery.toPage(), queryWrapper); | ||||||
|         page.getRecords().forEach(this::fill); |  | ||||||
|         return PageResp.build(page); |         return PageResp.build(page); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -82,18 +76,4 @@ public class MessageServiceImpl implements MessageService { | |||||||
|         baseMapper.deleteBatchIds(ids); |         baseMapper.deleteBatchIds(ids); | ||||||
|         messageUserService.deleteByMessageIds(ids); |         messageUserService.deleteByMessageIds(ids); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * 填充数据 |  | ||||||
|      * |  | ||||||
|      * @param message 待填充信息 |  | ||||||
|      */ |  | ||||||
|     private void fill(MessageResp message) { |  | ||||||
|         Long createUser = message.getCreateUser(); |  | ||||||
|         if (null == createUser) { |  | ||||||
|             return; |  | ||||||
|         } |  | ||||||
|         CommonUserService userService = SpringUtil.getBean(CommonUserService.class); |  | ||||||
|         message.setCreateUserString(ExceptionUtils.exToNull(() -> userService.getNicknameById(createUser))); |  | ||||||
|     } |  | ||||||
| } | } | ||||||
| @@ -24,7 +24,6 @@ import com.alicp.jetcache.anno.CacheInvalidate; | |||||||
| import com.alicp.jetcache.anno.CacheType; | import com.alicp.jetcache.anno.CacheType; | ||||||
| import com.alicp.jetcache.anno.CacheUpdate; | import com.alicp.jetcache.anno.CacheUpdate; | ||||||
| import com.alicp.jetcache.anno.Cached; | import com.alicp.jetcache.anno.Cached; | ||||||
| import jakarta.annotation.Resource; |  | ||||||
| import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||||
| import org.dromara.x.file.storage.core.FileInfo; | import org.dromara.x.file.storage.core.FileInfo; | ||||||
| import org.dromara.x.file.storage.core.FileStorageService; | import org.dromara.x.file.storage.core.FileStorageService; | ||||||
| @@ -45,9 +44,11 @@ import top.charles7c.continew.admin.system.model.req.UserReq; | |||||||
| import top.charles7c.continew.admin.system.model.req.UserRoleUpdateReq; | import top.charles7c.continew.admin.system.model.req.UserRoleUpdateReq; | ||||||
| import top.charles7c.continew.admin.system.model.resp.UserDetailResp; | import top.charles7c.continew.admin.system.model.resp.UserDetailResp; | ||||||
| import top.charles7c.continew.admin.system.model.resp.UserResp; | import top.charles7c.continew.admin.system.model.resp.UserResp; | ||||||
| import top.charles7c.continew.admin.system.service.*; | import top.charles7c.continew.admin.system.service.FileService; | ||||||
|  | import top.charles7c.continew.admin.system.service.RoleService; | ||||||
|  | import top.charles7c.continew.admin.system.service.UserRoleService; | ||||||
|  | import top.charles7c.continew.admin.system.service.UserService; | ||||||
| import top.charles7c.continew.starter.core.constant.StringConstants; | import top.charles7c.continew.starter.core.constant.StringConstants; | ||||||
| import top.charles7c.continew.starter.core.util.ExceptionUtils; |  | ||||||
| import top.charles7c.continew.starter.core.util.validate.CheckUtils; | import top.charles7c.continew.starter.core.util.validate.CheckUtils; | ||||||
| import top.charles7c.continew.starter.extension.crud.base.BaseServiceImpl; | import top.charles7c.continew.starter.extension.crud.base.BaseServiceImpl; | ||||||
| import top.charles7c.continew.starter.extension.crud.base.CommonUserService; | import top.charles7c.continew.starter.extension.crud.base.CommonUserService; | ||||||
| @@ -67,8 +68,6 @@ import java.util.Optional; | |||||||
| @RequiredArgsConstructor | @RequiredArgsConstructor | ||||||
| public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserResp, UserDetailResp, UserQuery, UserReq> implements UserService, CommonUserService { | public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserResp, UserDetailResp, UserQuery, UserReq> implements UserService, CommonUserService { | ||||||
|  |  | ||||||
|     @Resource |  | ||||||
|     private DeptService deptService; |  | ||||||
|     private final RoleService roleService; |     private final RoleService roleService; | ||||||
|     private final UserRoleService userRoleService; |     private final UserRoleService userRoleService; | ||||||
|     private final FileService fileService; |     private final FileService fileService; | ||||||
| @@ -152,7 +151,6 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserRes | |||||||
|     protected void fill(Object obj) { |     protected void fill(Object obj) { | ||||||
|         super.fill(obj); |         super.fill(obj); | ||||||
|         if (obj instanceof UserDetailResp detail) { |         if (obj instanceof UserDetailResp detail) { | ||||||
|             detail.setDeptName(ExceptionUtils.exToNull(() -> deptService.get(detail.getDeptId()).getName())); |  | ||||||
|             List<Long> roleIdList = userRoleService.listRoleIdByUserId(detail.getId()); |             List<Long> roleIdList = userRoleService.listRoleIdByUserId(detail.getId()); | ||||||
|             detail.setRoleIds(roleIdList); |             detail.setRoleIds(roleIdList); | ||||||
|             detail.setRoleNames(String.join(StringConstants.CHINESE_COMMA, roleService.listNameByIds(roleIdList))); |             detail.setRoleNames(String.join(StringConstants.CHINESE_COMMA, roleService.listNameByIds(roleIdList))); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user