feat(审批): 添加带商品信息的审批列表查询功能
为了在审批列表中展示商品名称和封面图,新增了`selectApprovalWithGoodsInfo`方法,并在相关实体类中添加了`goodsName`和`coverImg`字段。同时,更新了数据库表结构和查询逻辑,确保审批列表能正确返回商品信息。
This commit is contained in:
parent
6f2eaf92a8
commit
980d279ba9
|
@ -1,12 +1,15 @@
|
|||
package com.agileboot.api.controller;
|
||||
|
||||
import com.agileboot.common.core.dto.ResponseDTO;
|
||||
import com.agileboot.common.core.page.PageDTO;
|
||||
import com.agileboot.common.exception.ApiException;
|
||||
import com.agileboot.common.exception.error.ErrorCode;
|
||||
import com.agileboot.domain.shop.approval.ReturnApprovalApplicationService;
|
||||
import com.agileboot.domain.shop.approval.command.AddReturnApprovalCommand;
|
||||
import com.agileboot.domain.shop.approval.db.ReturnApprovalEntity;
|
||||
import com.agileboot.domain.shop.approval.model.ReturnApprovalModel;
|
||||
import com.agileboot.domain.shop.approval.query.SearchApiReturnApprovalQuery;
|
||||
import com.agileboot.domain.shop.approval.query.SearchReturnApprovalQuery;
|
||||
import com.agileboot.domain.shop.order.OrderApplicationService;
|
||||
import com.agileboot.domain.shop.order.db.ShopOrderGoodsEntity;
|
||||
|
||||
|
@ -14,12 +17,8 @@ import io.swagger.annotations.Api;
|
|||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.web.bind.annotation.CrossOrigin;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.Date;
|
||||
|
@ -74,4 +73,11 @@ public class ApprovalApiController {
|
|||
ReturnApprovalEntity returnApproval = approvalApplicationService.submitApproval(command, orderGoods);
|
||||
return ResponseDTO.ok(returnApproval);
|
||||
}
|
||||
|
||||
@GetMapping("/list")
|
||||
@ApiOperation(value = "审批列表")
|
||||
public ResponseDTO<PageDTO<ReturnApprovalEntity>> list(SearchApiReturnApprovalQuery<ReturnApprovalEntity> query) {
|
||||
PageDTO<ReturnApprovalEntity> page = approvalApplicationService.getApprovalWithGoodsInfo(query);
|
||||
return ResponseDTO.ok(page);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ 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.SearchApiReturnApprovalQuery;
|
||||
import com.agileboot.domain.shop.approval.query.SearchReturnApprovalQuery;
|
||||
import com.agileboot.domain.shop.order.db.ShopOrderGoodsEntity;
|
||||
import com.agileboot.domain.shop.order.model.OrderGoodsModel;
|
||||
|
@ -63,7 +64,7 @@ public class ReturnApprovalApplicationService {
|
|||
// 设置商品价格并初始化审批状态
|
||||
command.setGoodsId(orderGoods.getGoodsId());
|
||||
command.setOrderId(orderGoods.getOrderId());
|
||||
command.setGoodsPrice(orderGoods.getPrice());
|
||||
command.setGoodsPrice(orderGoods.getTotalAmount());
|
||||
command.setReturnImages(command.getReturnImages());
|
||||
command.setReturnRemark(command.getReturnRemark());
|
||||
command.setStatus(1);
|
||||
|
@ -83,4 +84,9 @@ public class ReturnApprovalApplicationService {
|
|||
|
||||
return returnApprovalModel.selectById();
|
||||
}
|
||||
|
||||
public PageDTO<ReturnApprovalEntity> getApprovalWithGoodsInfo(SearchApiReturnApprovalQuery<ReturnApprovalEntity> query) {
|
||||
Page<ReturnApprovalEntity> page = approvalService.selectApprovalWithGoodsInfo(query);
|
||||
return new PageDTO<>(page.getRecords(), page.getTotal());
|
||||
}
|
||||
}
|
|
@ -76,6 +76,14 @@ public class ReturnApprovalEntity extends BaseEntity<ReturnApprovalEntity> {
|
|||
@TableField("`status`")
|
||||
private Integer status;
|
||||
|
||||
@ApiModelProperty("商品名称")
|
||||
@TableField(exist = false)
|
||||
private String goodsName;
|
||||
|
||||
@ApiModelProperty("封面图URL")
|
||||
@TableField(exist = false)
|
||||
private String coverImg;
|
||||
|
||||
|
||||
@Override
|
||||
public Serializable pkVal() {
|
||||
|
|
|
@ -17,6 +17,14 @@ import org.apache.ibatis.annotations.Select;
|
|||
* @since 2025-04-03
|
||||
*/
|
||||
public interface ReturnApprovalMapper extends BaseMapper<ReturnApprovalEntity> {
|
||||
|
||||
@Select("SELECT ra.*, sog.goods_name AS goodsName, sog.cover_img AS coverImg " +
|
||||
"FROM return_approval ra " +
|
||||
"LEFT JOIN shop_order_goods sog ON ra.order_goods_id = sog.order_goods_id" +
|
||||
"${ew.customSqlSegment}")
|
||||
Page<ReturnApprovalEntity> selectApprovalWithGoodsInfo(Page<ReturnApprovalEntity> page,
|
||||
@Param(Constants.WRAPPER) Wrapper<ReturnApprovalEntity> queryWrapper);
|
||||
|
||||
@Select("SELECT * " +
|
||||
"FROM return_approval " +
|
||||
"${ew.customSqlSegment}")
|
||||
|
|
|
@ -21,4 +21,6 @@ public interface ReturnApprovalService extends IService<ReturnApprovalEntity> {
|
|||
List<ReturnApprovalEntity> selectAll();
|
||||
|
||||
ReturnApprovalEntity getByOrderId(Long orderId);
|
||||
|
||||
Page<ReturnApprovalEntity> selectApprovalWithGoodsInfo(AbstractPageQuery<ReturnApprovalEntity> query);
|
||||
}
|
||||
|
|
|
@ -38,4 +38,9 @@ public class ReturnApprovalServiceImpl extends ServiceImpl<ReturnApprovalMapper,
|
|||
.last("LIMIT 1");
|
||||
return this.getOne(wrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<ReturnApprovalEntity> selectApprovalWithGoodsInfo(AbstractPageQuery<ReturnApprovalEntity> query) {
|
||||
return this.baseMapper.selectApprovalWithGoodsInfo(query.toPage(), query.toQueryWrapper());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 SearchApiReturnApprovalQuery<T> extends AbstractPageQuery<T> {
|
||||
|
||||
private Long approvalId;
|
||||
private Long orderId;
|
||||
private Long goodsId;
|
||||
private String goodsName;
|
||||
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, "ra.approval_id", approvalId)
|
||||
.eq(orderId != null, "ra.order_id", orderId)
|
||||
.eq(goodsId != null, "ra.goods_id", goodsId)
|
||||
.eq(status != null, "ra.status", status)
|
||||
.like(StrUtil.isNotEmpty(goodsName), "sog.goods_name", goodsName)
|
||||
.between(startTime != null && endTime != null, "ra.create_time", startTime, endTime);
|
||||
|
||||
this.timeRangeColumn = "create_time";
|
||||
|
||||
return queryWrapper;
|
||||
}
|
||||
}
|
|
@ -52,6 +52,14 @@ public class ShopOrderGoodsEntity extends BaseEntity<ShopOrderGoodsEntity> {
|
|||
@TableField("total_amount")
|
||||
private BigDecimal totalAmount;
|
||||
|
||||
@ApiModelProperty("商品名称")
|
||||
@TableField("goods_name")
|
||||
private String goodsName;
|
||||
|
||||
@ApiModelProperty("封面图URL")
|
||||
@TableField("cover_img")
|
||||
private String coverImg;
|
||||
|
||||
@ApiModelProperty("商品状态(1正常 2已退货 3已换货 4已完成 5审核中 6退货未通过)")
|
||||
@TableField("`status`")
|
||||
private Integer status;
|
||||
|
|
|
@ -35,6 +35,8 @@ public class OrderGoodsModel extends ShopOrderGoodsEntity {
|
|||
ShopGoodsEntity goods = goodsService.getById(getGoodsId());
|
||||
if (goods != null) {
|
||||
BigDecimal price = goods.getPrice();
|
||||
this.setGoodsName(goods.getGoodsName());
|
||||
this.setCoverImg(goods.getCoverImg());
|
||||
this.setPrice(price);
|
||||
this.setTotalAmount(price.multiply(BigDecimal.valueOf(getQuantity())));
|
||||
}
|
||||
|
|
|
@ -49,4 +49,13 @@ ALTER TABLE `return_approval`
|
|||
ADD CONSTRAINT `fk_return_order_goods` FOREIGN KEY (`order_goods_id`) REFERENCES `shop_order_goods` (`order_goods_id`);
|
||||
|
||||
ALTER TABLE `shop_order`
|
||||
ADD COLUMN `biz_order_id` VARCHAR(32) NULL COMMENT '业务系统订单ID(对接外部系统)' AFTER `trade_id`;
|
||||
ADD COLUMN `biz_order_id` VARCHAR(32) NULL COMMENT '业务系统订单ID(对接外部系统)' AFTER `trade_id`;
|
||||
|
||||
ALTER TABLE shop_order_goods
|
||||
ADD COLUMN goods_name VARCHAR(255) NOT NULL COMMENT '商品名称',
|
||||
ADD COLUMN cover_img VARCHAR(512) COMMENT '封面图URL';
|
||||
|
||||
UPDATE shop_order_goods sog
|
||||
INNER JOIN shop_goods sg ON sog.goods_id = sg.goods_id
|
||||
SET sog.goods_name = sg.goods_name,
|
||||
sog.cover_img = sg.cover_img;
|
Loading…
Reference in New Issue