Skip to content

Commit

Permalink
refactor: 使用 Crane4j 优化部分数据填充处理
Browse files Browse the repository at this point in the history
  • Loading branch information
Charles7c committed Jan 14, 2024
1 parent 1b7aa9d commit a2411f7
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 69 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

/**
* 消息信息
*
Expand Down Expand Up @@ -81,6 +80,7 @@ public class MessageResp implements Serializable {
* 创建人
*/
@JsonIgnore
@Assemble(container = "userNickname", props = @Mapping(ref = "createUserString"))
private Long createUser;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,24 @@

package top.charles7c.continew.admin.system.model.resp;

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 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 top.charles7c.continew.starter.extension.crud.converter.ExcelBaseEnumConverter;
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;

/**
* 用户详情信息
Expand Down Expand Up @@ -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;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
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;
Expand All @@ -33,13 +32,11 @@
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;

/**
Expand Down Expand Up @@ -121,17 +118,6 @@ public void delete(List<Long> 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()));
}
}

/**
* 名称是否存在
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,34 +16,28 @@

package top.charles7c.continew.admin.system.service.impl;

import java.util.List;

import cn.crane4j.annotation.AutoOperate;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
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 com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.extra.spring.SpringUtil;

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;
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;

/**
* 消息业务实现
*
Expand All @@ -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);
}

Expand All @@ -82,18 +76,4 @@ public void delete(List<Long> ids) {
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)));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
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;
Expand All @@ -45,9 +44,11 @@
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;
Expand All @@ -67,8 +68,6 @@
@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;
Expand Down Expand Up @@ -152,7 +151,6 @@ public void delete(List<Long> ids) {
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)));
Expand Down

0 comments on commit a2411f7

Please sign in to comment.