mirror of
https://gitee.com/hhyykk/ipms-sjy.git
synced 2025-08-15 10:41:54 +08:00
product:商品规格,调整成商品属性,避免和 sku 概念冲突
This commit is contained in:
@@ -72,7 +72,7 @@ public class TradeAfterSaleBaseVO {
|
||||
@NotNull(message = "商品 SKU 编号不能为空")
|
||||
private Long skuId;
|
||||
|
||||
@ApiModelProperty(value = "规格值数组")
|
||||
@ApiModelProperty(value = "商品属性数组")
|
||||
private List<ProductPropertyValueDetailRespVO> properties;
|
||||
|
||||
@ApiModelProperty(value = "商品图片", example = "https://www.iocoder.cn/2.png")
|
||||
|
@@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@ApiModel("管理后台 - 商品规格 + 规格值的明细 Response VO")
|
||||
@ApiModel("管理后台 - 商品属性值的明细 Response VO")
|
||||
@Data
|
||||
public class ProductPropertyValueDetailRespVO {
|
||||
|
||||
|
@@ -1,11 +1,14 @@
|
||||
package cn.iocoder.yudao.module.trade.controller.admin.order;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderDeliveryReqVO;
|
||||
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageItemRespVO;
|
||||
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageReqVO;
|
||||
import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert;
|
||||
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
|
||||
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO;
|
||||
import cn.iocoder.yudao.module.trade.service.order.TradeOrderService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
@@ -15,8 +18,11 @@ import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
|
||||
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
|
||||
|
||||
@Api(tags = "管理后台 - 交易订单")
|
||||
@@ -33,7 +39,19 @@ public class TradeOrderController {
|
||||
@ApiOperation("获得交易订单分页")
|
||||
@PreAuthorize("@ss.hasPermission('trade:order:query')")
|
||||
public CommonResult<PageResult<TradeOrderPageItemRespVO>> getOrderPage(TradeOrderPageReqVO reqVO) {
|
||||
// 查询订单
|
||||
PageResult<TradeOrderDO> pageResult = tradeOrderService.getOrderPage(reqVO);
|
||||
if (CollUtil.isEmpty(pageResult.getList())) {
|
||||
return success(PageResult.empty());
|
||||
}
|
||||
|
||||
// 查询订单项
|
||||
List<TradeOrderItemDO> orderItems = tradeOrderService.getOrderItems(
|
||||
convertSet(pageResult.getList(), TradeOrderDO::getId));
|
||||
// 查询属性
|
||||
Set<Long> propertyValueIds = TradeOrderConvert.INSTANCE.convertPropertyValueIds(orderItems);
|
||||
|
||||
|
||||
return success(null);
|
||||
}
|
||||
|
||||
|
@@ -20,7 +20,7 @@ public class TradeOrderPageItemRespVO {
|
||||
public static class Item extends TradeOrderItemBaseVO {
|
||||
|
||||
/**
|
||||
* 规格值数组
|
||||
* 属性数组
|
||||
*/
|
||||
private List<ProductPropertyValueDetailRespVO> properties;
|
||||
|
||||
|
@@ -1,5 +1,6 @@
|
||||
package cn.iocoder.yudao.module.trade.controller.admin.order.vo;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import cn.iocoder.yudao.framework.common.validation.InEnum;
|
||||
import cn.iocoder.yudao.module.trade.enums.order.TradeOrderStatusEnum;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
@@ -8,7 +9,7 @@ import lombok.Data;
|
||||
|
||||
@ApiModel("管理后台 - 交易订单的分页 Request VO")
|
||||
@Data
|
||||
public class TradeOrderPageReqVO {
|
||||
public class TradeOrderPageReqVO extends PageParam {
|
||||
|
||||
@ApiModelProperty(value = "订单状态", example = "1", notes = "参见 TradeOrderStatusEnum 枚举")
|
||||
@InEnum(value = TradeOrderStatusEnum.class, message = "订单状态必须是 {value}")
|
||||
|
@@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@ApiModel("用户 App - 商品规格 + 规格值的明细 Response VO")
|
||||
@ApiModel("用户 App - 商品属性值的明细 Response VO")
|
||||
@Data
|
||||
public class AppProductPropertyValueDetailRespVO {
|
||||
|
||||
|
@@ -27,7 +27,7 @@ public class AppProductSkuBaseRespVO {
|
||||
private Integer stock;
|
||||
|
||||
/**
|
||||
* 规格数组
|
||||
* 属性数组
|
||||
*/
|
||||
private List<AppProductPropertyValueDetailRespVO> properties;
|
||||
|
||||
|
@@ -56,7 +56,7 @@ public class AppTradeOrderGetCreateInfoRespVO {
|
||||
*/
|
||||
private String picURL;
|
||||
// /**
|
||||
// * 规格值数组
|
||||
// * 属性数组
|
||||
// */
|
||||
// private List<ProductAttrKeyValueRespVO> attrs; // TODO 后面改下
|
||||
/**
|
||||
|
@@ -1,5 +1,6 @@
|
||||
package cn.iocoder.yudao.module.trade.convert.order;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
||||
import cn.iocoder.yudao.module.member.api.address.dto.AddressRespDTO;
|
||||
import cn.iocoder.yudao.module.pay.api.order.dto.PayOrderCreateReqDTO;
|
||||
@@ -18,8 +19,11 @@ import org.mapstruct.Mapping;
|
||||
import org.mapstruct.Mappings;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
|
||||
import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.addTime;
|
||||
@@ -88,4 +92,14 @@ public interface TradeOrderConvert {
|
||||
return createReqDTO;
|
||||
}
|
||||
|
||||
default Set<Long> convertPropertyValueIds(List<TradeOrderItemDO> orderItems) {
|
||||
if (CollUtil.isEmpty(orderItems)) {
|
||||
return new HashSet<>();
|
||||
}
|
||||
return orderItems.stream().filter(item -> item.getProperties() != null)
|
||||
.flatMap(p -> p.getProperties().stream()) // 遍历多个 Property 属性
|
||||
.map(TradeOrderItemDO.Property::getValueId) // 将每个 Property 转换成对应的 propertyId,最后形成集合
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -120,7 +120,7 @@ public class TradeAfterSaleDO extends BaseDO {
|
||||
*/
|
||||
private Long skuId;
|
||||
/**
|
||||
* 规格值数组,JSON 格式
|
||||
* 属性数组,JSON 格式
|
||||
*
|
||||
* 冗余 {@link TradeOrderItemDO#getProperties()}
|
||||
*/
|
||||
|
@@ -63,7 +63,7 @@ public class TradeOrderItemDO extends BaseDO {
|
||||
*/
|
||||
private Long skuId;
|
||||
/**
|
||||
* 规格值数组,JSON 格式
|
||||
* 属性数组,JSON 格式
|
||||
*
|
||||
* 冗余 ProductSkuDO 的 properties 字段
|
||||
*/
|
||||
|
@@ -1,6 +1,9 @@
|
||||
package cn.iocoder.yudao.module.trade.dal.mysql.order;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageReqVO;
|
||||
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
@@ -14,8 +17,12 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
|
||||
}
|
||||
|
||||
default TradeOrderDO selectByIdAndUserId(Long id, Long userId) {
|
||||
return selectOne(TradeOrderDO::getId, id,
|
||||
TradeOrderDO::getUserId, userId);
|
||||
return selectOne(TradeOrderDO::getId, id, TradeOrderDO::getUserId, userId);
|
||||
}
|
||||
|
||||
default PageResult<TradeOrderDO> selectPage(TradeOrderPageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<TradeOrderDO>()
|
||||
.eqIfPresent(TradeOrderDO::getStatus, reqVO.getStatus()));
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -7,6 +7,12 @@ import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderCreate
|
||||
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
|
||||
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap;
|
||||
|
||||
/**
|
||||
* 交易订单 Service 接口
|
||||
*
|
||||
@@ -90,4 +96,23 @@ public interface TradeOrderService {
|
||||
void updateOrderItemAfterSaleStatus(Long id, Integer oldAfterSaleStatus,
|
||||
Integer newAfterSaleStatus, Integer refundPrice);
|
||||
|
||||
/**
|
||||
* 查询交易订单项
|
||||
*
|
||||
* @param ids 交易订单项编号数组
|
||||
* @return 交易订单项数组
|
||||
*/
|
||||
List<TradeOrderItemDO> getOrderItems(Collection<Long> ids);
|
||||
|
||||
/**
|
||||
* 查询交易订单项 Map
|
||||
*
|
||||
* @param ids 交易订单项编号数组
|
||||
* @return 交易订单项 Map
|
||||
*/
|
||||
default Map<Long, List<TradeOrderItemDO>> getOrderItemMap(Collection<Long> ids) {
|
||||
List<TradeOrderItemDO> orderItems = getOrderItems(ids);
|
||||
return convertMultiMap(orderItems, TradeOrderItemDO::getOrderId);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -43,10 +43,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
|
||||
@@ -423,7 +420,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
|
||||
|
||||
@Override
|
||||
public PageResult<TradeOrderDO> getOrderPage(TradeOrderPageReqVO reqVO) {
|
||||
return null;
|
||||
return tradeOrderMapper.selectPage(reqVO);
|
||||
}
|
||||
|
||||
// =================== Order Item ===================
|
||||
@@ -475,6 +472,11 @@ public class TradeOrderServiceImpl implements TradeOrderService {
|
||||
// TODO 芋艿:未来如果有分佣,需要更新相关分佣订单为已失效
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TradeOrderItemDO> getOrderItems(Collection<Long> ids) {
|
||||
return tradeOrderItemMapper.selectBatchIds(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断指定订单的所有订单项,是不是都售后成功
|
||||
*
|
||||
|
Reference in New Issue
Block a user