From 45885bf5092d8307ccf2ac57ac8766d2fb2e10f5 Mon Sep 17 00:00:00 2001 From: litianxiang Date: Wed, 20 May 2026 15:33:22 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/controller/OrderController.java | 13 ++++- .../seller/module/order/dto/AssetsDTO.java | 29 +++++++++++ .../module/order/entity/OrderItemEntity.java | 4 +- .../module/order/mapper/OrderItemMapper.java | 9 ++++ .../module/order/service/OrderService.java | 10 ++++ .../order/service/OrderServiceImpl.java | 25 +++++++++- .../seller/module/order/vo/AssetsItemVO.java | 33 ++++++++++++ src/main/resources/db/schema.sql | 1 + src/main/resources/mapper/OrderItemMapper.xml | 50 +++++++++++++++++++ 9 files changed, 169 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/aida/seller/module/order/dto/AssetsDTO.java create mode 100644 src/main/java/com/aida/seller/module/order/vo/AssetsItemVO.java create mode 100644 src/main/resources/mapper/OrderItemMapper.xml diff --git a/src/main/java/com/aida/seller/module/order/controller/OrderController.java b/src/main/java/com/aida/seller/module/order/controller/OrderController.java index 5f8dda7..d4f4f8b 100644 --- a/src/main/java/com/aida/seller/module/order/controller/OrderController.java +++ b/src/main/java/com/aida/seller/module/order/controller/OrderController.java @@ -4,11 +4,13 @@ import com.aida.seller.common.annotation.InternalOnly; import com.aida.seller.common.context.UserContext; import com.aida.seller.common.result.PageResponse; import com.aida.seller.common.result.Response; +import com.aida.seller.module.order.dto.AssetsDTO; import com.aida.seller.module.order.dto.CreateOrderDTO; import com.aida.seller.module.order.dto.OrderListDTO; import com.aida.seller.module.order.dto.BuyerOrdersDTO; import com.aida.seller.module.order.dto.UpdateOrderStatusDTO; import com.aida.seller.module.order.service.OrderService; +import com.aida.seller.module.order.vo.AssetsItemVO; import com.aida.seller.module.order.vo.BuyerOrderVO; import com.aida.seller.module.order.vo.CreateOrderResultVO; import com.aida.seller.module.order.vo.OrderSummaryVO; @@ -18,8 +20,6 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; -import java.util.List; - import org.springframework.web.bind.annotation.*; /** @@ -68,12 +68,14 @@ public class OrderController { return Response.success(PageResponse.success(orderPage)); } + @InternalOnly @PostMapping("/buyer/orders") @Operation(summary = "根据买家ID查询订单列表(供远程调用)") public Response> getOrdersByBuyerId(@RequestBody BuyerOrdersDTO dto) { return Response.success(PageResponse.success(orderService.getOrdersByBuyerId(dto))); } + @InternalOnly @PostMapping("/create") @Operation(summary = "创建订单(按卖家分组合并)") public Response createOrder(@RequestBody CreateOrderDTO dto) { @@ -87,4 +89,11 @@ public class OrderController { orderService.updateOrderStatus(dto); return Response.success(); } + + @InternalOnly + @PostMapping("/assets/page") + @Operation(summary = "我的资产分页查询") + public Response> getAssetsPage(@RequestBody AssetsDTO dto) { + return Response.success(PageResponse.success(orderService.getAssetsPage(dto))); + } } diff --git a/src/main/java/com/aida/seller/module/order/dto/AssetsDTO.java b/src/main/java/com/aida/seller/module/order/dto/AssetsDTO.java new file mode 100644 index 0000000..faa1077 --- /dev/null +++ b/src/main/java/com/aida/seller/module/order/dto/AssetsDTO.java @@ -0,0 +1,29 @@ +package com.aida.seller.module.order.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +@Schema(description = "我的资产分页查询请求参数") +public class AssetsDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "买家ID") + private Long buyerId; + + @Schema(description = "商品分类列表,支持多选,如 outwear&categories=dress") + private List categories; + + @Schema(description = "适用性别 female/male/all,不传表示全部") + private String designFor; + + @Schema(description = "页码,默认1") + private long page = 1; + + @Schema(description = "每页数量,默认10") + private long size = 10; +} diff --git a/src/main/java/com/aida/seller/module/order/entity/OrderItemEntity.java b/src/main/java/com/aida/seller/module/order/entity/OrderItemEntity.java index 5a185e2..7afe2d0 100644 --- a/src/main/java/com/aida/seller/module/order/entity/OrderItemEntity.java +++ b/src/main/java/com/aida/seller/module/order/entity/OrderItemEntity.java @@ -15,7 +15,7 @@ import java.util.List; * 订单商品明细表 */ @Data -@TableName("seller_order_item") +@TableName(value = "seller_order_item", autoResultMap = true) public class OrderItemEntity implements Serializable { private static final long serialVersionUID = 1L; @@ -55,7 +55,7 @@ public class OrderItemEntity implements Serializable { /** 是否删除:0-否,1-是 */ @TableLogic private Integer deleted; - + /** 商品分类列表 */ @TableField(typeHandler = JacksonTypeHandler.class) private List productCategory; diff --git a/src/main/java/com/aida/seller/module/order/mapper/OrderItemMapper.java b/src/main/java/com/aida/seller/module/order/mapper/OrderItemMapper.java index f04c007..6f521da 100644 --- a/src/main/java/com/aida/seller/module/order/mapper/OrderItemMapper.java +++ b/src/main/java/com/aida/seller/module/order/mapper/OrderItemMapper.java @@ -1,9 +1,18 @@ package com.aida.seller.module.order.mapper; +import com.aida.seller.module.order.dto.AssetsDTO; import com.aida.seller.module.order.entity.OrderItemEntity; +import com.aida.seller.module.order.vo.AssetsItemVO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; @Mapper public interface OrderItemMapper extends BaseMapper { + + List selectAssetsPage(@Param("offset") long offset, @Param("size") long size, @Param("dto") AssetsDTO dto); + + Long selectAssetsCount(@Param("dto") AssetsDTO dto); } diff --git a/src/main/java/com/aida/seller/module/order/service/OrderService.java b/src/main/java/com/aida/seller/module/order/service/OrderService.java index 3d43304..b5ca1b7 100644 --- a/src/main/java/com/aida/seller/module/order/service/OrderService.java +++ b/src/main/java/com/aida/seller/module/order/service/OrderService.java @@ -1,9 +1,11 @@ package com.aida.seller.module.order.service; +import com.aida.seller.module.order.dto.AssetsDTO; import com.aida.seller.module.order.dto.CreateOrderDTO; import com.aida.seller.module.order.dto.OrderListDTO; import com.aida.seller.module.order.dto.UpdateOrderStatusDTO; import com.aida.seller.module.order.dto.BuyerOrdersDTO; +import com.aida.seller.module.order.vo.AssetsItemVO; import com.aida.seller.module.order.vo.BuyerOrderVO; import com.aida.seller.module.order.vo.CreateOrderResultVO; import com.aida.seller.module.order.vo.OrderSummaryVO; @@ -56,4 +58,12 @@ public interface OrderService { * @return 买家订单分页列表,按更新时间降序排列 */ IPage getOrdersByBuyerId(BuyerOrdersDTO dto); + + /** + * 我的资产分页查询 + * + * @param dto 查询参数(买家ID、分类列表、适用性别) + * @return 已购商品分页列表,按购买时间降序排列 + */ + IPage getAssetsPage(AssetsDTO dto); } diff --git a/src/main/java/com/aida/seller/module/order/service/OrderServiceImpl.java b/src/main/java/com/aida/seller/module/order/service/OrderServiceImpl.java index 64e192a..5d52135 100644 --- a/src/main/java/com/aida/seller/module/order/service/OrderServiceImpl.java +++ b/src/main/java/com/aida/seller/module/order/service/OrderServiceImpl.java @@ -6,6 +6,7 @@ import com.aida.seller.module.designer.entity.DesignerEntity; import com.aida.seller.module.designer.mapper.DesignerMapper; import com.aida.seller.module.listing.entity.ListingEntity; import com.aida.seller.module.listing.mapper.ListingMapper; +import com.aida.seller.module.order.dto.AssetsDTO; import com.aida.seller.module.order.dto.CreateOrderDTO; import com.aida.seller.module.order.dto.OrderListDTO; import com.aida.seller.module.order.dto.UpdateOrderStatusDTO; @@ -14,6 +15,7 @@ import com.aida.seller.module.order.entity.OrderInfoEntity; import com.aida.seller.module.order.entity.OrderItemEntity; import com.aida.seller.module.order.mapper.OrderInfoMapper; import com.aida.seller.module.order.mapper.OrderItemMapper; +import com.aida.seller.module.order.vo.AssetsItemVO; import com.aida.seller.module.order.vo.BuyerOrderItemVO; import com.aida.seller.module.order.vo.BuyerOrderVO; import com.aida.seller.module.order.vo.CreateOrderResultVO; @@ -153,7 +155,7 @@ public class OrderServiceImpl extends ServiceImpl orderPage = this.page(pageParam, wrapper); if (orderPage.getRecords().isEmpty()) { - return new Page<>(page, size, 0); + return new Page<>(dto.getPage(), dto.getSize(), 0); } List orderIds = orderPage.getRecords().stream() @@ -298,4 +300,25 @@ public class OrderServiceImpl extends ServiceImpl getAssetsPage(AssetsDTO dto) { + if (dto.getBuyerId() == null) { + throw new BusinessException("买家ID不能为空"); + } + long page = dto.getPage(); + long size = dto.getSize(); + long offset = (page - 1) * size; + + List records = orderItemMapper.selectAssetsPage(offset, size, dto); + Long total = orderItemMapper.selectAssetsCount(dto); + + records.forEach(item -> { + item.setThumbnailUrl(minioUtil.processMinioResource(item.getThumbnailUrl(), CommonConstants.MINIO_PATH_TIMEOUT)); + }); + + Page resultPage = new Page<>(page, size, total); + resultPage.setRecords(records); + return resultPage; + } } diff --git a/src/main/java/com/aida/seller/module/order/vo/AssetsItemVO.java b/src/main/java/com/aida/seller/module/order/vo/AssetsItemVO.java new file mode 100644 index 0000000..dfae11c --- /dev/null +++ b/src/main/java/com/aida/seller/module/order/vo/AssetsItemVO.java @@ -0,0 +1,33 @@ +package com.aida.seller.module.order.vo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +@Schema(description = "我的资产商品明细") +public class AssetsItemVO implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "商品ID") + @JsonSerialize(using = ToStringSerializer.class) + private Long listingId; + + @Schema(description = "商品名称") + private String listingName; + + @Schema(description = "商品缩略图URL") + private String thumbnailUrl; + + @Schema(description = "成交单价(HK$)") + private BigDecimal price; + + @Schema(description = "购买时间") + private LocalDateTime createTime; +} diff --git a/src/main/resources/db/schema.sql b/src/main/resources/db/schema.sql index bb3525f..e319182 100644 --- a/src/main/resources/db/schema.sql +++ b/src/main/resources/db/schema.sql @@ -64,6 +64,7 @@ CREATE TABLE seller_orders ( seller_id BIGINT NOT NULL COMMENT '卖家ID', buyer_id BIGINT NOT NULL COMMENT '买家ID', status INT DEFAULT 0 COMMENT '订单状态: 0-未支付, 1-已支付, 2-已取消', + shop_name VARCHAR(100) COMMENT '店铺名称', total_price DECIMAL(10,2) COMMENT '订单总金额(HK$)', buyer_username VARCHAR(100) COMMENT '买家账号', total_items INT COMMENT '商品总数量', diff --git a/src/main/resources/mapper/OrderItemMapper.xml b/src/main/resources/mapper/OrderItemMapper.xml new file mode 100644 index 0000000..2c35829 --- /dev/null +++ b/src/main/resources/mapper/OrderItemMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + +