diff --git a/agileboot-admin/src/main/java/com/agileboot/admin/controller/shop/ReturnApprovalController.java b/agileboot-admin/src/main/java/com/agileboot/admin/controller/shop/ReturnApprovalController.java new file mode 100644 index 0000000..eeaae2e --- /dev/null +++ b/agileboot-admin/src/main/java/com/agileboot/admin/controller/shop/ReturnApprovalController.java @@ -0,0 +1,68 @@ +package com.agileboot.admin.controller.shop; + +import com.agileboot.admin.customize.aop.accessLog.AccessLog; +import com.agileboot.common.core.base.BaseController; +import com.agileboot.common.core.dto.ResponseDTO; +import com.agileboot.common.core.page.PageDTO; +import com.agileboot.common.enums.common.BusinessTypeEnum; +import com.agileboot.domain.common.command.BulkOperationCommand; +import com.agileboot.domain.shop.approval.ReturnApprovalApplicationService; +import com.agileboot.domain.shop.approval.command.AddReturnApprovalCommand; +import com.agileboot.domain.shop.approval.command.UpdateReturnApprovalCommand; +import com.agileboot.domain.shop.approval.db.ReturnApprovalEntity; +import com.agileboot.domain.shop.approval.dto.ReturnApprovalDTO; +import com.agileboot.domain.shop.approval.query.SearchReturnApprovalQuery; +import io.swagger.v3.oas.annotations.Operation; +import java.util.List; +import javax.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/shop/returnApproval") +@RequiredArgsConstructor +@Validated +public class ReturnApprovalController extends BaseController { + + private final ReturnApprovalApplicationService approvalApplicationService; + + @Operation(summary = "退货审批列表") + @GetMapping + public ResponseDTO<PageDTO<ReturnApprovalDTO>> list(SearchReturnApprovalQuery<ReturnApprovalEntity> query) { + PageDTO<ReturnApprovalDTO> page = approvalApplicationService.getApprovalList(query); + return ResponseDTO.ok(page); + } + + @Operation(summary = "新增退货审批") + @AccessLog(title = "退货审批管理", businessType = BusinessTypeEnum.ADD) + @PostMapping + public ResponseDTO<Void> add(@Validated @RequestBody AddReturnApprovalCommand command) { + approvalApplicationService.addApproval(command); + return ResponseDTO.ok(); + } + + @Operation(summary = "修改退货审批") + @AccessLog(title = "退货审批管理", businessType = BusinessTypeEnum.MODIFY) + @PutMapping("/{approvalId}") + public ResponseDTO<Void> edit(@PathVariable Long approvalId, @Validated @RequestBody UpdateReturnApprovalCommand command) { + command.setApprovalId(approvalId); + approvalApplicationService.updateApproval(command); + return ResponseDTO.ok(); + } + + @Operation(summary = "删除退货审批") + @AccessLog(title = "退货审批管理", businessType = BusinessTypeEnum.DELETE) + @DeleteMapping("/{approvalIds}") + public ResponseDTO<Void> remove(@PathVariable @NotNull List<Long> approvalIds) { + approvalApplicationService.deleteApproval(new BulkOperationCommand<>(approvalIds)); + return ResponseDTO.ok(); + } +} \ No newline at end of file diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/ReturnApprovalApplicationService.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/ReturnApprovalApplicationService.java new file mode 100644 index 0000000..1486051 --- /dev/null +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/ReturnApprovalApplicationService.java @@ -0,0 +1,54 @@ +package com.agileboot.domain.shop.approval; + +import com.agileboot.common.core.page.PageDTO; +import com.agileboot.domain.common.command.BulkOperationCommand; +import com.agileboot.domain.shop.approval.command.AddReturnApprovalCommand; +import com.agileboot.domain.shop.approval.command.UpdateReturnApprovalCommand; +import com.agileboot.domain.shop.approval.db.ReturnApprovalEntity; +import com.agileboot.domain.shop.approval.db.ReturnApprovalService; +import com.agileboot.domain.shop.approval.dto.ReturnApprovalDTO; +import com.agileboot.domain.shop.approval.model.ReturnApprovalModel; +import com.agileboot.domain.shop.approval.model.ReturnApprovalModelFactory; +import com.agileboot.domain.shop.approval.query.SearchReturnApprovalQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +import java.util.stream.Collectors; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +@Service +@Slf4j +@RequiredArgsConstructor +public class ReturnApprovalApplicationService { + + private final ReturnApprovalService approvalService; + private final ReturnApprovalModelFactory modelFactory; + + public PageDTO<ReturnApprovalDTO> getApprovalList(SearchReturnApprovalQuery<ReturnApprovalEntity> query) { + Page<ReturnApprovalEntity> page = approvalService.getApprovalList(query); + List<ReturnApprovalDTO> dtoList = page.getRecords().stream() + .map(ReturnApprovalDTO::new) + .collect(Collectors.toList()); + return new PageDTO<>(dtoList, page.getTotal()); + } + + public void addApproval(AddReturnApprovalCommand command) { + ReturnApprovalModel model = modelFactory.create(); + model.loadAddCommand(command); + model.insert(); + } + + public void updateApproval(UpdateReturnApprovalCommand command) { + ReturnApprovalModel model = modelFactory.loadById(command.getApprovalId()); + model.loadUpdateCommand(command); + model.updateById(); + } + + public void deleteApproval(BulkOperationCommand<Long> command) { + for (Long approvalId : command.getIds()) { + ReturnApprovalModel model = modelFactory.loadById(approvalId); + model.deleteById(); + } + } +} \ No newline at end of file diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/command/AddReturnApprovalCommand.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/command/AddReturnApprovalCommand.java new file mode 100644 index 0000000..77c6d59 --- /dev/null +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/command/AddReturnApprovalCommand.java @@ -0,0 +1,11 @@ +package com.agileboot.domain.shop.approval.command; + +import com.agileboot.domain.shop.approval.db.ReturnApprovalEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class AddReturnApprovalCommand extends ReturnApprovalEntity { + +} \ No newline at end of file diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/command/UpdateReturnApprovalCommand.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/command/UpdateReturnApprovalCommand.java new file mode 100644 index 0000000..ca75577 --- /dev/null +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/command/UpdateReturnApprovalCommand.java @@ -0,0 +1,16 @@ +package com.agileboot.domain.shop.approval.command; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.PositiveOrZero; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UpdateReturnApprovalCommand extends AddReturnApprovalCommand { + + @NotNull + @PositiveOrZero + private Long approvalId; + +} \ No newline at end of file diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/db/ReturnApprovalEntity.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/db/ReturnApprovalEntity.java new file mode 100644 index 0000000..3bc4751 --- /dev/null +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/db/ReturnApprovalEntity.java @@ -0,0 +1,81 @@ +package com.agileboot.domain.shop.approval.db; + +import com.agileboot.common.core.base.BaseEntity; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.math.BigDecimal; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + * <p> + * 商品归还审批表 + * </p> + * + * @author valarchie + * @since 2025-04-03 + */ +@Getter +@Setter +@TableName("return_approval") +@ApiModel(value = "ReturnApprovalEntity对象", description = "商品归还审批表") +public class ReturnApprovalEntity extends BaseEntity<ReturnApprovalEntity> { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("审批编号") + @TableId(value = "approval_id", type = IdType.AUTO) + private Long approvalId; + + @ApiModelProperty("关联订单ID") + @TableField("order_id") + private Long orderId; + + @ApiModelProperty("关联商品ID") + @TableField("goods_id") + private Long goodsId; + + @ApiModelProperty("归还数量") + @TableField("return_quantity") + private Integer returnQuantity; + + @ApiModelProperty("商品单价") + @TableField("goods_price") + private BigDecimal goodsPrice; + + @ApiModelProperty("退还金额") + @TableField("return_amount") + private BigDecimal returnAmount; + + @ApiModelProperty("归还图片路径数组") + @TableField("return_images") + private String returnImages; + + @ApiModelProperty("审核图片路径数组") + @TableField("audit_images") + private String auditImages; + + @ApiModelProperty("归还说明") + @TableField("return_remark") + private String returnRemark; + + @ApiModelProperty("审核说明") + @TableField("audit_remark") + private String auditRemark; + + @ApiModelProperty("审批状态(1待审核 2已通过 3已驳回)") + @TableField("`status`") + private Integer status; + + + @Override + public Serializable pkVal() { + return this.approvalId; + } + +} diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/db/ReturnApprovalMapper.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/db/ReturnApprovalMapper.java new file mode 100644 index 0000000..13efa6c --- /dev/null +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/db/ReturnApprovalMapper.java @@ -0,0 +1,43 @@ +package com.agileboot.domain.shop.approval.db; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.List; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +/** + * <p> + * 商品归还审批表 Mapper 接口 + * </p> + * + * @author valarchie + * @since 2025-04-03 + */ +public interface ReturnApprovalMapper extends BaseMapper<ReturnApprovalEntity> { + @Select("SELECT approval_id, order_id, goods_id, return_quantity, goods_price, return_amount, return_images, audit_images, return_remark, audit_remark, status " + + "FROM return_approval " + + "${ew.customSqlSegment}") + Page<ReturnApprovalEntity> getApprovalList( + Page<ReturnApprovalEntity> page, + @Param(Constants.WRAPPER) Wrapper<ReturnApprovalEntity> queryWrapper + ); + + @Select("SELECT * " + + "FROM return_approval " + + "WHERE status = #{status} " + + "ORDER BY create_time DESC " + + "LIMIT 1") + ReturnApprovalEntity selectFirstByStatus(@Param("status") Integer status); + + @Select("SELECT * " + + "FROM return_approval " + + "WHERE status = #{status} " + + "ORDER BY create_time DESC") + List<ReturnApprovalEntity> selectAllByStatus(@Param("status") Integer status); + + @Select("SELECT * FROM return_approval WHERE order_id = #{orderId} LIMIT 1") + ReturnApprovalEntity selectByOrderId(@Param("orderId") Long orderId); +} diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/db/ReturnApprovalService.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/db/ReturnApprovalService.java new file mode 100644 index 0000000..1212987 --- /dev/null +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/db/ReturnApprovalService.java @@ -0,0 +1,24 @@ +package com.agileboot.domain.shop.approval.db; + +import com.agileboot.common.core.page.AbstractPageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * <p> + * 商品归还审批表 服务类 + * </p> + * + * @author valarchie + * @since 2025-04-03 + */ +public interface ReturnApprovalService extends IService<ReturnApprovalEntity> { + + Page<ReturnApprovalEntity> getApprovalList(AbstractPageQuery<ReturnApprovalEntity> query); + + List<ReturnApprovalEntity> selectAll(); + + ReturnApprovalEntity getByOrderId(Long orderId); +} diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/db/ReturnApprovalServiceImpl.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/db/ReturnApprovalServiceImpl.java new file mode 100644 index 0000000..47b0411 --- /dev/null +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/db/ReturnApprovalServiceImpl.java @@ -0,0 +1,41 @@ +package com.agileboot.domain.shop.approval.db; + +import com.agileboot.common.core.page.AbstractPageQuery; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * <p> + * 商品归还审批表 服务实现类 + * </p> + * + * @author valarchie + * @since 2025-04-03 + */ +@Service +public class ReturnApprovalServiceImpl extends ServiceImpl<ReturnApprovalMapper, ReturnApprovalEntity> implements ReturnApprovalService { + + @Override + public Page<ReturnApprovalEntity> getApprovalList(AbstractPageQuery<ReturnApprovalEntity> query) { + return this.page(query.toPage(), query.toQueryWrapper()); + } + + @Override + public List<ReturnApprovalEntity> selectAll() { + LambdaQueryWrapper<ReturnApprovalEntity> wrapper = new LambdaQueryWrapper<>(); + wrapper.orderByDesc(ReturnApprovalEntity::getCreateTime); + return this.list(wrapper); + } + + @Override + public ReturnApprovalEntity getByOrderId(Long orderId) { + LambdaQueryWrapper<ReturnApprovalEntity> wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ReturnApprovalEntity::getOrderId, orderId) + .last("LIMIT 1"); + return this.getOne(wrapper); + } +} diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/dto/ReturnApprovalDTO.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/dto/ReturnApprovalDTO.java new file mode 100644 index 0000000..ac70468 --- /dev/null +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/dto/ReturnApprovalDTO.java @@ -0,0 +1,67 @@ +package com.agileboot.domain.shop.approval.dto; + +import cn.hutool.core.bean.BeanUtil; +import com.agileboot.common.annotation.ExcelColumn; +import com.agileboot.common.annotation.ExcelSheet; +import com.agileboot.domain.common.cache.CacheCenter; +import com.agileboot.domain.shop.approval.db.ReturnApprovalEntity; +import com.agileboot.domain.system.user.db.SysUserEntity; +import lombok.Data; + +import java.math.BigDecimal; + +@ExcelSheet(name = "商品归还审批列表") +@Data +public class ReturnApprovalDTO { + + public ReturnApprovalDTO(ReturnApprovalEntity entity) { + if (entity != null) { + BeanUtil.copyProperties(entity, this); + + this.statusStr = convertStatus(entity.getStatus()); + } + } + + private String convertStatus(Integer status) { + if (status == null) return "-"; + switch (status) { + case 1: return "待审核"; + case 2: return "已通过"; + case 3: return "已驳回"; + default: return "未知状态"; + } + } + + @ExcelColumn(name = "审批编号") + private Long approvalId; + + @ExcelColumn(name = "关联订单ID") + private Long orderId; + + @ExcelColumn(name = "关联商品ID") + private Long goodsId; + + @ExcelColumn(name = "归还数量") + private Integer returnQuantity; + + @ExcelColumn(name = "商品单价") + private BigDecimal goodsPrice; + + @ExcelColumn(name = "退还金额") + private BigDecimal returnAmount; + + @ExcelColumn(name = "归还图片") + private String returnImages; + + @ExcelColumn(name = "审核图片") + private String auditImages; + + @ExcelColumn(name = "归还说明") + private String returnRemark; + + @ExcelColumn(name = "审核说明") + private String auditRemark; + + @ExcelColumn(name = "审批状态") + private String statusStr; +} \ No newline at end of file diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/model/ReturnApprovalModel.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/model/ReturnApprovalModel.java new file mode 100644 index 0000000..c1a7084 --- /dev/null +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/model/ReturnApprovalModel.java @@ -0,0 +1,39 @@ +package com.agileboot.domain.shop.approval.model; + +import cn.hutool.core.bean.BeanUtil; +import com.agileboot.domain.shop.approval.command.AddReturnApprovalCommand; +import com.agileboot.domain.shop.approval.command.UpdateReturnApprovalCommand; +import com.agileboot.domain.shop.approval.db.ReturnApprovalEntity; +import com.agileboot.domain.shop.approval.db.ReturnApprovalService; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class ReturnApprovalModel extends ReturnApprovalEntity { + + private ReturnApprovalService approvalService; + + public ReturnApprovalModel(ReturnApprovalEntity entity, ReturnApprovalService approvalService) { + this(approvalService); + if (entity != null) { + BeanUtil.copyProperties(entity, this); + } + } + + public ReturnApprovalModel(ReturnApprovalService approvalService) { + this.approvalService = approvalService; + } + + public void loadAddCommand(AddReturnApprovalCommand command) { + if (command != null) { + BeanUtil.copyProperties(command, this, "approvalId"); + } + } + + public void loadUpdateCommand(UpdateReturnApprovalCommand command) { + if (command != null) { + loadAddCommand(command); + } + } +} \ No newline at end of file diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/model/ReturnApprovalModelFactory.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/model/ReturnApprovalModelFactory.java new file mode 100644 index 0000000..8592974 --- /dev/null +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/model/ReturnApprovalModelFactory.java @@ -0,0 +1,27 @@ +package com.agileboot.domain.shop.approval.model; + +import com.agileboot.common.exception.ApiException; +import com.agileboot.common.exception.error.ErrorCode; +import com.agileboot.domain.shop.approval.db.ReturnApprovalEntity; +import com.agileboot.domain.shop.approval.db.ReturnApprovalService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +public class ReturnApprovalModelFactory { + + private final ReturnApprovalService approvalService; + + public ReturnApprovalModel loadById(Long approvalId) { + ReturnApprovalEntity entity = approvalService.getById(approvalId); + if (entity == null) { + throw new ApiException(ErrorCode.Business.COMMON_OBJECT_NOT_FOUND, approvalId, "审批"); + } + return new ReturnApprovalModel(entity, approvalService); + } + + public ReturnApprovalModel create() { + return new ReturnApprovalModel(approvalService); + } +} \ No newline at end of file diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/query/SearchReturnApprovalQuery.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/query/SearchReturnApprovalQuery.java new file mode 100644 index 0000000..e02e1e7 --- /dev/null +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approval/query/SearchReturnApprovalQuery.java @@ -0,0 +1,40 @@ +package com.agileboot.domain.shop.approval.query; + +import cn.hutool.core.util.StrUtil; +import com.agileboot.common.core.page.AbstractPageQuery; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import java.util.Date; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class SearchReturnApprovalQuery<T> extends AbstractPageQuery<T> { + + private Long approvalId; + private Long orderId; + private Long goodsId; + private Integer status; + private String returnRemark; + private String auditRemark; + private Date startTime; + private Date endTime; + + @Override + public QueryWrapper<T> addQueryCondition() { + QueryWrapper<T> queryWrapper = new QueryWrapper<>(); + + queryWrapper + .eq(approvalId != null, "approval_id", approvalId) + .eq(orderId != null, "order_id", orderId) + .eq(goodsId != null, "goods_id", goodsId) + .eq(status != null, "status", status) + .like(StrUtil.isNotEmpty(returnRemark), "return_remark", returnRemark) + .like(StrUtil.isNotEmpty(auditRemark), "audit_remark", auditRemark) + .between(startTime != null && endTime != null, "create_time", startTime, endTime); + + this.timeRangeColumn = "create_time"; + + return queryWrapper; + } +} \ No newline at end of file diff --git a/agileboot-domain/src/main/resources/mapper/shop/ReturnApprovalMapper.xml b/agileboot-domain/src/main/resources/mapper/shop/ReturnApprovalMapper.xml new file mode 100644 index 0000000..529e06a --- /dev/null +++ b/agileboot-domain/src/main/resources/mapper/shop/ReturnApprovalMapper.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.agileboot.domain.shop.approval.db.ReturnApprovalMapper"> + +</mapper> diff --git a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/mybatisplus/CodeGenerator.java b/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/mybatisplus/CodeGenerator.java index 263d92f..8ef4bdb 100644 --- a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/mybatisplus/CodeGenerator.java +++ b/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/mybatisplus/CodeGenerator.java @@ -61,7 +61,7 @@ public class CodeGenerator { //生成的类 放在orm子模块下的/target/generated-code目录底下 .module("/agileboot-orm/target/generated-code") .parentPackage("com.agileboot") - .tableName("sys_user_qy_user") + .tableName("return_approval") // 决定是否继承基类 .isExtendsFromBaseEntity(true) .build();