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; | ||||
|  | ||||
| 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 com.baomidou.mybatisplus.annotation.TableField; | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
| import lombok.Data; | ||||
| 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.converter.ExcelBaseEnumConverter; | ||||
|  | ||||
| @@ -52,13 +55,13 @@ public class DeptDetailResp extends BaseDetailResp { | ||||
|      * 上级部门 ID | ||||
|      */ | ||||
|     @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; | ||||
|  | ||||
|     /** | ||||
|      * 上级部门 | ||||
|      */ | ||||
|     @Schema(description = "上级部门", example = "天津总部") | ||||
|     @TableField(exist = false) | ||||
|     @ExcelProperty(value = "上级部门") | ||||
|     private String parentName; | ||||
|  | ||||
|   | ||||
| @@ -16,18 +16,17 @@ | ||||
|  | ||||
| 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.Serializable; | ||||
| 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 | ||||
|     @Assemble(container = "userNickname", props = @Mapping(ref = "createUserString")) | ||||
|     private Long createUser; | ||||
|  | ||||
|     /** | ||||
|   | ||||
| @@ -16,24 +16,25 @@ | ||||
|  | ||||
| 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.time.LocalDateTime; | ||||
| import java.util.List; | ||||
| 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 | ||||
|      */ | ||||
|     @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; | ||||
|  | ||||
|     /** | ||||
|   | ||||
| @@ -22,7 +22,6 @@ import jakarta.annotation.Resource; | ||||
| import lombok.RequiredArgsConstructor; | ||||
| import org.springframework.stereotype.Service; | ||||
| 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.system.mapper.DeptMapper; | ||||
| 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.RoleDeptService; | ||||
| 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.extension.crud.base.BaseServiceImpl; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
| import java.util.Objects; | ||||
| import java.util.Optional; | ||||
|  | ||||
| /** | ||||
| @@ -121,17 +118,6 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptRes | ||||
|         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; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| 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.crane4j.annotation.AutoOperate; | ||||
| import cn.hutool.core.bean.BeanUtil; | ||||
| 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.model.entity.MessageDO; | ||||
| 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.service.MessageService; | ||||
| 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.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; | ||||
|  | ||||
| /** | ||||
|  * 消息业务实现 | ||||
|  * | ||||
| @@ -58,12 +52,12 @@ public class MessageServiceImpl implements MessageService { | ||||
|     private final MessageUserService messageUserService; | ||||
|  | ||||
|     @Override | ||||
|     @AutoOperate(type = MessageResp.class, on = "list") | ||||
|     public PageResp<MessageResp> page(MessageQuery query, PageQuery pageQuery) { | ||||
|         QueryWrapper<MessageDO> queryWrapper = QueryHelper.build(query); | ||||
|         queryWrapper.apply(null != query.getUserId(), "t2.user_id={0}", query.getUserId()) | ||||
|             .apply(null != query.getIsRead(), "t2.is_read={0}", query.getIsRead()); | ||||
|         IPage<MessageResp> page = baseMapper.selectPageByUserId(pageQuery.toPage(), queryWrapper); | ||||
|         page.getRecords().forEach(this::fill); | ||||
|         return PageResp.build(page); | ||||
|     } | ||||
|  | ||||
| @@ -82,18 +76,4 @@ public class MessageServiceImpl implements MessageService { | ||||
|         baseMapper.deleteBatchIds(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.CacheUpdate; | ||||
| import com.alicp.jetcache.anno.Cached; | ||||
| import jakarta.annotation.Resource; | ||||
| import lombok.RequiredArgsConstructor; | ||||
| import org.dromara.x.file.storage.core.FileInfo; | ||||
| 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.resp.UserDetailResp; | ||||
| 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.util.ExceptionUtils; | ||||
| 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.CommonUserService; | ||||
| @@ -67,8 +68,6 @@ import java.util.Optional; | ||||
| @RequiredArgsConstructor | ||||
| public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserResp, UserDetailResp, UserQuery, UserReq> implements UserService, CommonUserService { | ||||
|  | ||||
|     @Resource | ||||
|     private DeptService deptService; | ||||
|     private final RoleService roleService; | ||||
|     private final UserRoleService userRoleService; | ||||
|     private final FileService fileService; | ||||
| @@ -152,7 +151,6 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserRes | ||||
|     protected void fill(Object obj) { | ||||
|         super.fill(obj); | ||||
|         if (obj instanceof UserDetailResp detail) { | ||||
|             detail.setDeptName(ExceptionUtils.exToNull(() -> deptService.get(detail.getDeptId()).getName())); | ||||
|             List<Long> roleIdList = userRoleService.listRoleIdByUserId(detail.getId()); | ||||
|             detail.setRoleIds(roleIdList); | ||||
|             detail.setRoleNames(String.join(StringConstants.CHINESE_COMMA, roleService.listNameByIds(roleIdList))); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user