From 163dfeb3e843385f75d7ae5c9ac465d1feb0bd82 Mon Sep 17 00:00:00 2001 From: dzq Date: Sat, 7 Jun 2025 10:21:47 +0800 Subject: [PATCH] =?UTF-8?q?feat(shop):=20=E6=96=B0=E5=A2=9E=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E9=A2=86=E7=94=A8=E5=95=86=E5=93=81=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加申请领用商品相关功能,包括: - 实体类ApprovalGoodsEntity及Mapper/Service实现 - 新增/修改命令对象AddApprovalGoodsCommand/UpdateApprovalGoodsCommand - 查询对象SearchApprovalGoodsQuery - 数据传输对象ApprovalGoodsDTO - 业务模型ApprovalGoodsModel及工厂类 - 应用服务ApprovalGoodsApplicationService - 控制器ApprovalGoodsController --- .../shop/ApprovalGoodsController.java | 68 ++++++++++++++++ .../ApprovalGoodsApplicationService.java | 74 ++++++++++++++++++ .../command/AddApprovalGoodsCommand.java | 11 +++ .../command/UpdateApprovalGoodsCommand.java | 16 ++++ .../approvalGoods/db/ApprovalGoodsEntity.java | 77 +++++++++++++++++++ .../approvalGoods/db/ApprovalGoodsMapper.java | 44 +++++++++++ .../db/ApprovalGoodsService.java | 27 +++++++ .../db/ApprovalGoodsServiceImpl.java | 45 +++++++++++ .../approvalGoods/dto/ApprovalGoodsDTO.java | 51 ++++++++++++ .../model/ApprovalGoodsModel.java | 41 ++++++++++ .../model/ApprovalGoodsModelFactory.java | 27 +++++++ .../query/SearchApprovalGoodsQuery.java | 50 ++++++++++++ .../mapper/shop/ApprovalGoodsMapper.xml | 5 ++ .../mybatisplus/CodeGenerator.java | 2 +- 14 files changed, 537 insertions(+), 1 deletion(-) create mode 100644 agileboot-admin/src/main/java/com/agileboot/admin/controller/shop/ApprovalGoodsController.java create mode 100644 agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/ApprovalGoodsApplicationService.java create mode 100644 agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/command/AddApprovalGoodsCommand.java create mode 100644 agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/command/UpdateApprovalGoodsCommand.java create mode 100644 agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/db/ApprovalGoodsEntity.java create mode 100644 agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/db/ApprovalGoodsMapper.java create mode 100644 agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/db/ApprovalGoodsService.java create mode 100644 agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/db/ApprovalGoodsServiceImpl.java create mode 100644 agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/dto/ApprovalGoodsDTO.java create mode 100644 agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/model/ApprovalGoodsModel.java create mode 100644 agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/model/ApprovalGoodsModelFactory.java create mode 100644 agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/query/SearchApprovalGoodsQuery.java create mode 100644 agileboot-domain/src/main/resources/mapper/shop/ApprovalGoodsMapper.xml diff --git a/agileboot-admin/src/main/java/com/agileboot/admin/controller/shop/ApprovalGoodsController.java b/agileboot-admin/src/main/java/com/agileboot/admin/controller/shop/ApprovalGoodsController.java new file mode 100644 index 0000000..2bb886f --- /dev/null +++ b/agileboot-admin/src/main/java/com/agileboot/admin/controller/shop/ApprovalGoodsController.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.approvalGoods.ApprovalGoodsApplicationService; +import com.agileboot.domain.shop.approvalGoods.command.AddApprovalGoodsCommand; +import com.agileboot.domain.shop.approvalGoods.command.UpdateApprovalGoodsCommand; +import com.agileboot.domain.shop.approvalGoods.db.ApprovalGoodsEntity; +import com.agileboot.domain.shop.approvalGoods.dto.ApprovalGoodsDTO; +import com.agileboot.domain.shop.approvalGoods.query.SearchApprovalGoodsQuery; +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/approvalGoods") +@RequiredArgsConstructor +@Validated +public class ApprovalGoodsController extends BaseController { + + private final ApprovalGoodsApplicationService approvalGoodsApplicationService; + + @Operation(summary = "申请领用商品列表") + @GetMapping + public ResponseDTO> list(SearchApprovalGoodsQuery query) { + PageDTO page = approvalGoodsApplicationService.getApprovalGoodsList(query); + return ResponseDTO.ok(page); + } + + @Operation(summary = "新增申请领用商品") + @AccessLog(title = "申请领用商品管理", businessType = BusinessTypeEnum.ADD) + @PostMapping + public ResponseDTO add(@Validated @RequestBody AddApprovalGoodsCommand command) { + approvalGoodsApplicationService.addApprovalGoods(command); + return ResponseDTO.ok(); + } + + @Operation(summary = "修改申请领用商品") + @AccessLog(title = "申请领用商品管理", businessType = BusinessTypeEnum.MODIFY) + @PutMapping("/{id}") + public ResponseDTO edit(@PathVariable Long id, @Validated @RequestBody UpdateApprovalGoodsCommand command) { + command.setApprovalGoodsId(id); + approvalGoodsApplicationService.updateApprovalGoods(command); + return ResponseDTO.ok(); + } + + @Operation(summary = "删除申请领用商品") + @AccessLog(title = "申请领用商品管理", businessType = BusinessTypeEnum.DELETE) + @DeleteMapping("/{ids}") + public ResponseDTO remove(@PathVariable @NotNull List ids) { + approvalGoodsApplicationService.deleteApprovalGoods(new BulkOperationCommand<>(ids)); + return ResponseDTO.ok(); + } +} \ No newline at end of file diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/ApprovalGoodsApplicationService.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/ApprovalGoodsApplicationService.java new file mode 100644 index 0000000..29035b7 --- /dev/null +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/ApprovalGoodsApplicationService.java @@ -0,0 +1,74 @@ +package com.agileboot.domain.shop.approvalGoods; + +import cn.hutool.json.JSONObject; +import com.agileboot.common.core.page.PageDTO; +import com.agileboot.domain.common.command.BulkOperationCommand; +import com.agileboot.domain.shop.approvalGoods.command.AddApprovalGoodsCommand; +import com.agileboot.domain.shop.approvalGoods.command.UpdateApprovalGoodsCommand; +import com.agileboot.domain.shop.approvalGoods.db.ApprovalGoodsEntity; +import com.agileboot.domain.shop.approvalGoods.db.ApprovalGoodsService; +import com.agileboot.domain.shop.approvalGoods.dto.ApprovalGoodsDTO; +import com.agileboot.domain.shop.approvalGoods.model.ApprovalGoodsModel; +import com.agileboot.domain.shop.approvalGoods.model.ApprovalGoodsModelFactory; +import com.agileboot.domain.shop.approvalGoods.query.SearchApprovalGoodsQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONUtil; + +@Service +@Slf4j +@RequiredArgsConstructor +public class ApprovalGoodsApplicationService { + private final ApprovalGoodsService approvalGoodsService; + private final ApprovalGoodsModelFactory approvalGoodsModelFactory; + + public PageDTO getApprovalGoodsList(SearchApprovalGoodsQuery query) { + Page page = approvalGoodsService.getApprovalGoodsList(query); + List dtoList = page.getRecords().stream() + .map(ApprovalGoodsDTO::new) + .collect(Collectors.toList()); + return new PageDTO<>(dtoList, page.getTotal()); + } + + public void addApprovalGoods(AddApprovalGoodsCommand command) { + ApprovalGoodsModel model = approvalGoodsModelFactory.create(); + model.loadAddCommand(command); + model.insert(); + } + + public void updateApprovalGoods(UpdateApprovalGoodsCommand command) { + ApprovalGoodsModel model = approvalGoodsModelFactory.loadById(command.getApprovalGoodsId()); + model.loadUpdateCommand(command); + model.updateById(); + } + + public void deleteApprovalGoods(BulkOperationCommand command) { + for (Long id : command.getIds()) { + ApprovalGoodsModel model = approvalGoodsModelFactory.loadById(id); + model.deleteById(); + } + } + + public ApprovalGoodsEntity getFirstEnabledApprovalGoods() { + return approvalGoodsService.selectLatest(); + } + + public ApprovalGoodsEntity getByApprovalId(Long approvalId) { + return approvalGoodsService.selectByApprovalId(approvalId); + } + + public ApprovalGoodsEntity getByGoodsId(Long goodsId) { + return approvalGoodsService.selectByGoodsId(goodsId); + } +} \ No newline at end of file diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/command/AddApprovalGoodsCommand.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/command/AddApprovalGoodsCommand.java new file mode 100644 index 0000000..0bec869 --- /dev/null +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/command/AddApprovalGoodsCommand.java @@ -0,0 +1,11 @@ +package com.agileboot.domain.shop.approvalGoods.command; + +import com.agileboot.domain.shop.approvalGoods.db.ApprovalGoodsEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class AddApprovalGoodsCommand extends ApprovalGoodsEntity { + +} \ No newline at end of file diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/command/UpdateApprovalGoodsCommand.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/command/UpdateApprovalGoodsCommand.java new file mode 100644 index 0000000..83c5ff1 --- /dev/null +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/command/UpdateApprovalGoodsCommand.java @@ -0,0 +1,16 @@ +package com.agileboot.domain.shop.approvalGoods.command; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.PositiveOrZero; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UpdateApprovalGoodsCommand extends AddApprovalGoodsCommand { + + @NotNull + @PositiveOrZero + private Long approvalGoodsId; + +} \ No newline at end of file diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/db/ApprovalGoodsEntity.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/db/ApprovalGoodsEntity.java new file mode 100644 index 0000000..b0d0e11 --- /dev/null +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/db/ApprovalGoodsEntity.java @@ -0,0 +1,77 @@ +package com.agileboot.domain.shop.approvalGoods.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; + +/** + *

+ * 申请领用商品信息表 + *

+ * + * @author valarchie + * @since 2025-06-07 + */ +@Getter +@Setter +@TableName("approval_goods") +@ApiModel(value = "ApprovalGoodsEntity对象", description = "申请领用商品信息表") +public class ApprovalGoodsEntity extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键ID") + @TableId(value = "approval_goods_id", type = IdType.AUTO) + private Long approvalGoodsId; + + @ApiModelProperty("审批ID") + @TableField("approval_id") + private Long approvalId; + + @ApiModelProperty("商品名称") + @TableField("goods_name") + private String goodsName; + + @ApiModelProperty("关联商品ID") + @TableField("goods_id") + private Long goodsId; + + @ApiModelProperty("外部归属类型的商品ID") + @TableField("external_goods_id") + private Long externalGoodsId; + + @ApiModelProperty("企业微信id") + @TableField("corpid") + private String corpid; + + @ApiModelProperty("归属类型(0-借还柜 1-固资通)") + @TableField("belong_type") + private Integer belongType; + + @ApiModelProperty("销售价格") + @TableField("price") + private BigDecimal price; + + @ApiModelProperty("申请数量") + @TableField("apply_quantity") + private Integer applyQuantity; + + @ApiModelProperty("封面图URL") + @TableField("cover_img") + private String coverImg; + + + @Override + public Serializable pkVal() { + return this.approvalGoodsId; + } + +} diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/db/ApprovalGoodsMapper.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/db/ApprovalGoodsMapper.java new file mode 100644 index 0000000..5bce39d --- /dev/null +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/db/ApprovalGoodsMapper.java @@ -0,0 +1,44 @@ +package com.agileboot.domain.shop.approvalGoods.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; + +/** + *

+ * 申请领用商品信息表 Mapper 接口 + *

+ * + * @author valarchie + * @since 2025-06-07 + */ +public interface ApprovalGoodsMapper extends BaseMapper { + @Select("SELECT * " + + "FROM approval_goods " + + "${ew.customSqlSegment}") + Page getApprovalGoodsList( + Page page, + @Param(Constants.WRAPPER) Wrapper queryWrapper + ); + + @Select("SELECT * " + + "FROM approval_goods " + + "ORDER BY approval_goods_id DESC " + + "LIMIT 1") + ApprovalGoodsEntity selectLatest(); + + @Select("SELECT * " + + "FROM approval_goods " + + "ORDER BY approval_goods_id DESC") + List selectAll(); + + @Select("SELECT * FROM approval_goods WHERE approval_id = #{approvalId} LIMIT 1") + ApprovalGoodsEntity selectByApprovalId(Long approvalId); + + @Select("SELECT * FROM approval_goods WHERE goods_id = #{goodsId} LIMIT 1") + ApprovalGoodsEntity selectByGoodsId(Long goodsId); +} diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/db/ApprovalGoodsService.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/db/ApprovalGoodsService.java new file mode 100644 index 0000000..8369bca --- /dev/null +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/db/ApprovalGoodsService.java @@ -0,0 +1,27 @@ +package com.agileboot.domain.shop.approvalGoods.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; + +/** + *

+ * 申请领用商品信息表 服务类 + *

+ * + * @author valarchie + * @since 2025-06-07 + */ +public interface ApprovalGoodsService extends IService { + Page getApprovalGoodsList(AbstractPageQuery query); + + List selectAll(); + + ApprovalGoodsEntity selectLatest(); + + ApprovalGoodsEntity selectByApprovalId(Long approvalId); + + ApprovalGoodsEntity selectByGoodsId(Long goodsId); +} diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/db/ApprovalGoodsServiceImpl.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/db/ApprovalGoodsServiceImpl.java new file mode 100644 index 0000000..44b016d --- /dev/null +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/db/ApprovalGoodsServiceImpl.java @@ -0,0 +1,45 @@ +package com.agileboot.domain.shop.approvalGoods.db; + +import com.agileboot.common.core.page.AbstractPageQuery; +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; + +/** + *

+ * 申请领用商品信息表 服务实现类 + *

+ * + * @author valarchie + * @since 2025-06-07 + */ +@Service +public class ApprovalGoodsServiceImpl extends ServiceImpl implements ApprovalGoodsService { + + @Override + public Page getApprovalGoodsList(AbstractPageQuery query) { + return this.page(query.toPage(), query.toQueryWrapper()); + } + + @Override + public List selectAll() { + return baseMapper.selectAll(); + } + + @Override + public ApprovalGoodsEntity selectLatest() { + return baseMapper.selectLatest(); + } + + @Override + public ApprovalGoodsEntity selectByApprovalId(Long approvalId) { + return baseMapper.selectByApprovalId(approvalId); + } + + @Override + public ApprovalGoodsEntity selectByGoodsId(Long goodsId) { + return baseMapper.selectByGoodsId(goodsId); + } +} diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/dto/ApprovalGoodsDTO.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/dto/ApprovalGoodsDTO.java new file mode 100644 index 0000000..24ea2f7 --- /dev/null +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/dto/ApprovalGoodsDTO.java @@ -0,0 +1,51 @@ +package com.agileboot.domain.shop.approvalGoods.dto; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import com.agileboot.common.annotation.ExcelColumn; +import com.agileboot.common.annotation.ExcelSheet; +import com.agileboot.domain.shop.approvalGoods.db.ApprovalGoodsEntity; +import java.math.BigDecimal; +import java.util.Date; +import lombok.Data; + +@ExcelSheet(name = "申请领用商品信息列表") +@Data +public class ApprovalGoodsDTO { + + public ApprovalGoodsDTO(ApprovalGoodsEntity entity) { + if (entity != null) { + BeanUtil.copyProperties(entity, this); + } + } + + @ExcelColumn(name = "主键ID") + private Long approvalGoodsId; + + @ExcelColumn(name = "审批ID") + private Long approvalId; + + @ExcelColumn(name = "商品名称") + private String goodsName; + + @ExcelColumn(name = "关联商品ID") + private Long goodsId; + + @ExcelColumn(name = "外部归属类型的商品ID") + private Long externalGoodsId; + + @ExcelColumn(name = "企业微信id") + private String corpid; + + @ExcelColumn(name = "归属类型(0-借还柜 1-固资通)") + private Integer belongType; + + @ExcelColumn(name = "销售价格") + private BigDecimal price; + + @ExcelColumn(name = "申请数量") + private Integer applyQuantity; + + @ExcelColumn(name = "封面图URL") + private String coverImg; +} \ No newline at end of file diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/model/ApprovalGoodsModel.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/model/ApprovalGoodsModel.java new file mode 100644 index 0000000..ee03a9c --- /dev/null +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/model/ApprovalGoodsModel.java @@ -0,0 +1,41 @@ +package com.agileboot.domain.shop.approvalGoods.model; + +import cn.hutool.core.bean.BeanUtil; +import com.agileboot.common.exception.ApiException; +import com.agileboot.common.exception.error.ErrorCode; +import com.agileboot.domain.shop.approvalGoods.command.AddApprovalGoodsCommand; +import com.agileboot.domain.shop.approvalGoods.command.UpdateApprovalGoodsCommand; +import com.agileboot.domain.shop.approvalGoods.db.ApprovalGoodsEntity; +import com.agileboot.domain.shop.approvalGoods.db.ApprovalGoodsService; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class ApprovalGoodsModel extends ApprovalGoodsEntity { + + private ApprovalGoodsService approvalGoodsService; + + public ApprovalGoodsModel(ApprovalGoodsEntity entity, ApprovalGoodsService approvalGoodsService) { + this(approvalGoodsService); + if (entity != null) { + BeanUtil.copyProperties(entity, this); + } + } + + public ApprovalGoodsModel(ApprovalGoodsService approvalGoodsService) { + this.approvalGoodsService = approvalGoodsService; + } + + public void loadAddCommand(AddApprovalGoodsCommand command) { + if (command != null) { + BeanUtil.copyProperties(command, this, "id"); + } + } + + public void loadUpdateCommand(UpdateApprovalGoodsCommand command) { + if (command != null) { + loadAddCommand(command); + } + } +} \ No newline at end of file diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/model/ApprovalGoodsModelFactory.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/model/ApprovalGoodsModelFactory.java new file mode 100644 index 0000000..ab80ff3 --- /dev/null +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/model/ApprovalGoodsModelFactory.java @@ -0,0 +1,27 @@ +package com.agileboot.domain.shop.approvalGoods.model; + +import com.agileboot.common.exception.ApiException; +import com.agileboot.common.exception.error.ErrorCode; +import com.agileboot.domain.shop.approvalGoods.db.ApprovalGoodsEntity; +import com.agileboot.domain.shop.approvalGoods.db.ApprovalGoodsService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +public class ApprovalGoodsModelFactory { + + private final ApprovalGoodsService approvalGoodsService; + + public ApprovalGoodsModel loadById(Long approvalGoodsId) { + ApprovalGoodsEntity entity = approvalGoodsService.getById(approvalGoodsId); + if (entity == null) { + throw new ApiException(ErrorCode.Business.COMMON_OBJECT_NOT_FOUND, approvalGoodsId, "申请领用商品"); + } + return new ApprovalGoodsModel(entity, approvalGoodsService); + } + + public ApprovalGoodsModel create() { + return new ApprovalGoodsModel(approvalGoodsService); + } +} \ No newline at end of file diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/query/SearchApprovalGoodsQuery.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/query/SearchApprovalGoodsQuery.java new file mode 100644 index 0000000..2465bbf --- /dev/null +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/approvalGoods/query/SearchApprovalGoodsQuery.java @@ -0,0 +1,50 @@ +package com.agileboot.domain.shop.approvalGoods.query; + +import cn.hutool.core.util.StrUtil; +import com.agileboot.common.core.page.AbstractPageQuery; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; + +import java.math.BigDecimal; +import java.util.Date; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class SearchApprovalGoodsQuery extends AbstractPageQuery { + + private Long approvalGoodsId; + private Long approvalId; + private String goodsName; + private Long goodsId; + private Long externalGoodsId; + private String corpid; + private Integer belongType; + private BigDecimal price; + private Integer applyQuantity; + private String coverImg; + private Date startTime; + private Date endTime; + + @Override + public QueryWrapper addQueryCondition() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + queryWrapper + .eq(approvalGoodsId != null, "approval_goods_id", approvalGoodsId) + .eq(approvalId != null, "approval_id", approvalId) + .eq(StrUtil.isNotEmpty(goodsName), "goods_name", goodsName) + .eq(goodsId != null, "goods_id", goodsId) + .eq(externalGoodsId != null, "external_goods_id", externalGoodsId) + .eq(StrUtil.isNotEmpty(corpid), "corpid", corpid) + .eq(belongType != null, "belong_type", belongType) + .eq(price != null, "price", price) + .eq(applyQuantity != null, "apply_quantity", applyQuantity) + .eq(StrUtil.isNotEmpty(coverImg), "cover_img", coverImg) + .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/ApprovalGoodsMapper.xml b/agileboot-domain/src/main/resources/mapper/shop/ApprovalGoodsMapper.xml new file mode 100644 index 0000000..1387da8 --- /dev/null +++ b/agileboot-domain/src/main/resources/mapper/shop/ApprovalGoodsMapper.xml @@ -0,0 +1,5 @@ + + + + + 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 271f051..4d8d64f 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("ab98_user_tag") + .tableName("approval_goods") // 决定是否继承基类 .isExtendsFromBaseEntity(true) .build();