code review:商品评价哈

This commit is contained in:
YunaiV 2023-06-17 21:57:52 +08:00
parent 08535d6019
commit 35df912be7
21 changed files with 80 additions and 99 deletions

View File

@ -1,6 +1,6 @@
package cn.iocoder.yudao.module.product.api.comment;
import cn.iocoder.yudao.module.product.api.comment.dto.CommentCreateReqDTO;
import cn.iocoder.yudao.module.product.api.comment.dto.ProductCommentCreateReqDTO;
/**
* 产品评论 API 接口
@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.product.api.comment.dto.CommentCreateReqDTO;
*/
public interface ProductCommentApi {
// TODO @puhuiLong orderId 放到 createReqDTO 里噶
/**
* 创建评论
*
@ -16,6 +17,6 @@ public interface ProductCommentApi {
* @param orderId 订单 id
* @return 返回评论创建后的 id
*/
Long createComment(CommentCreateReqDTO createReqDTO, Long orderId);
Long createComment(ProductCommentCreateReqDTO createReqDTO, Long orderId);
}

View File

@ -10,71 +10,64 @@ import java.util.List;
* @author HUIHUI
*/
@Data
public class CommentCreateReqDTO {
public class ProductCommentCreateReqDTO {
/**
* 是否匿名
* 商品 SKU 编号
*/
private Boolean anonymous;
private Long skuId;
/**
* 交易订单项编号
*/
private Long orderItemId;
// TODO @huihuispuIdspuName 去查询哇通过 skuId
/**
* 商品 SPU 编号
*/
private Long spuId;
/**
* 商品 SPU 名称
*/
private String spuName;
/**
* 商品 SKU 编号
*/
private Long skuId;
/**
* 评分星级 1-5
*/
private Integer scores;
/**
* 描述星级 1-5
*/
private Integer descriptionScores;
/**
* 服务星级 1-5
*/
private Integer benefitScores;
/**
* 评论内容
*/
private String content;
/**
* 评论图片地址数组以逗号分隔最多上传9张
* 评论图片地址数组以逗号分隔最多上传 9
*/
private List<String> picUrls;
/**
* 是否匿名
*/
private Boolean anonymous;
/**
* 评价人
*/
private Long userId;
// TODO @puhui999是不是 userNicknameuserAvatar 去掉通过 userId 查询
/**
* 评价人名称
*/
private String userNickname;
/**
* 评价人头像
*/
private String userAvatar;
/**
* 评价人
*/
private Long userId;
}

View File

@ -1,6 +1,6 @@
package cn.iocoder.yudao.module.product.api.comment;
import cn.iocoder.yudao.module.product.api.comment.dto.CommentCreateReqDTO;
import cn.iocoder.yudao.module.product.api.comment.dto.ProductCommentCreateReqDTO;
import cn.iocoder.yudao.module.product.convert.comment.ProductCommentConvert;
import cn.iocoder.yudao.module.product.dal.dataobject.comment.ProductCommentDO;
import cn.iocoder.yudao.module.product.service.comment.ProductCommentService;
@ -17,12 +17,14 @@ import javax.annotation.Resource;
@Service
@Validated
public class ProductCommentApiImpl implements ProductCommentApi {
@Resource
private ProductCommentService productCommentService;
@Override
public Long createComment(CommentCreateReqDTO createReqDTO, Long orderId) {
public Long createComment(ProductCommentCreateReqDTO createReqDTO, Long orderId) {
ProductCommentDO commentDO = ProductCommentConvert.INSTANCE.convert(createReqDTO, orderId);
return productCommentService.createComment(commentDO);
}
}

View File

@ -30,15 +30,15 @@ public class ProductCommentBaseVO {
@NotNull(message = "商品 SKU 编号不能为空")
private Long skuId;
@Schema(description = "评分星级 1-5", required = true, example = "5")
@Schema(description = "评分星级 1-5 ", required = true, example = "5")
@NotNull(message = "评分星级不能为空")
private Integer scores;
@Schema(description = "描述星级 1-5", required = true, example = "5")
@Schema(description = "描述星级 1-5 ", required = true, example = "5")
@NotNull(message = "描述星级不能为空")
private Integer descriptionScores;
@Schema(description = "服务星级 1-5", required = true, example = "5")
@Schema(description = "服务星级 1-5 ", required = true, example = "5")
@NotNull(message = "服务星级分不能为空")
private Integer benefitScores;
@ -46,8 +46,8 @@ public class ProductCommentBaseVO {
@NotNull(message = "评论内容不能为空")
private String content;
@Schema(description = "评论图片地址数组,以逗号分隔最多上传9张", required = true, example = "[https://www.iocoder.cn/xx.png, https://www.iocoder.cn/xxx.png]")
@Size(max = 9, message = "评论图片地址数组长度不能超过9张")
@Schema(description = "评论图片地址数组,以逗号分隔最多上传 9 ", required = true, example = "[https://www.iocoder.cn/xx.png, https://www.iocoder.cn/xxx.png]")
@Size(max = 9, message = "评论图片地址数组长度不能超过 9 ")
private List<String> picUrls;
}

View File

@ -13,6 +13,7 @@ import javax.validation.constraints.NotNull;
@ToString(callSuper = true)
public class ProductCommentCreateReqVO extends ProductCommentBaseVO {
// TODO @puhui999是不是也放到父类里
@Schema(description = "评价人", required = true, example = "16868")
@NotNull(message = "评价人不能为空")
private Long userId;

View File

@ -31,7 +31,7 @@ public class ProductCommentPageReqVO extends PageParam {
@Schema(description = "商品SPU名称", example = "感冒药")
private String spuName;
@Schema(description = "评分星级 1-5", example = "5")
@Schema(description = "评分星级 1-5 ", example = "5")
@InEnum(ProductCommentScoresEnum.class)
private Integer scores;

View File

@ -16,7 +16,7 @@ public class ProductCommentRespVO extends ProductCommentBaseVO {
@Schema(description = "订单项编号", required = true, example = "24965")
private Long id;
@Schema(description = "是否匿名[false:不匿名 true:匿名]", required = true, example = "false")
@Schema(description = "是否匿名", required = true, example = "false")
private Boolean anonymous;
@Schema(description = "交易订单编号", required = true, example = "24428")

View File

@ -36,6 +36,7 @@ public class AppProductCommentController {
@Resource
private ProductCommentService productCommentService;
// TODO @puhui999可以实现下
@GetMapping("/list")
@Operation(summary = "获得最近的 n 条商品评价")
@Parameters({
@ -44,7 +45,6 @@ public class AppProductCommentController {
})
public CommonResult<List<AppProductCommentRespVO>> getCommentList(@RequestParam("spuId") Long spuId,
@RequestParam(value = "count", defaultValue = "10") Integer count) {
List<AppProductPropertyValueDetailRespVO> list = new ArrayList<>();
AppProductPropertyValueDetailRespVO item1 = new AppProductPropertyValueDetailRespVO();
@ -101,6 +101,7 @@ public class AppProductCommentController {
return success(productCommentService.getCommentPage(pageVO, Boolean.TRUE));
}
// TODO @puhuiget-statistics方法改成 getCommentStatisticsgetCommentPageTabsCount 也改掉哈
@GetMapping("/getCommentStatistics")
@Operation(summary = "获得商品的评价统计")
public CommonResult<AppCommentStatisticsRespVO> getCommentPage(@Valid @RequestParam("spuId") Long spuId) {

View File

@ -8,11 +8,6 @@ import lombok.ToString;
import javax.validation.constraints.NotNull;
/**
* 用户 APP - 商品评价分页 Request VO
*
* @author HUIHUI
*/
@Schema(description = "用户APP - 商品评价分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ -23,12 +18,10 @@ public class AppCommentPageReqVO extends PageParam {
* 好评
*/
public static final Integer GOOD_COMMENT = 1;
/**
* 中评
*/
public static final Integer MEDIOCRE_COMMENT = 2;
/**
* 差评
*/

View File

@ -4,11 +4,6 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.ToString;
/**
* APP 商品评价页评论分类数统计 Response VO
*
* @author HUIHUI
*/
@Schema(description = "APP - 商品评价页评论分类数统计 Response VO")
@Data
@ToString(callSuper = true)

View File

@ -8,11 +8,6 @@ import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;
/**
* 用户APP - 商品评价创建 Request VO
*
* @author HUIHUI
*/
@Schema(description = "用户APP - 商品评价创建 Request VO")
@Data
@ToString(callSuper = true)
@ -26,36 +21,36 @@ public class AppProductCommentCreateReqVO {
@NotNull(message = "交易订单项编号不能为空")
private Long orderItemId;
@Schema(description = "商品SPU编号", required = true, example = "91192")
@Schema(description = "商品 SPU 编号", required = true, example = "91192")
@NotNull(message = "商品SPU编号不能为空")
private Long spuId;
@Schema(description = "商品SPU名称", required = true, example = "清凉丝滑小短袖")
@Schema(description = "商品 SPU 名称", required = true, example = "清凉丝滑小短袖")
@NotNull(message = "商品SPU名称不能为空")
private String spuName;
@Schema(description = "商品SKU编号", required = true, example = "81192")
@Schema(description = "商品 SKU 编号", required = true, example = "81192")
@NotNull(message = "商品SKU编号不能为空")
private Long skuId;
@Schema(description = "评分星级 1-5", required = true, example = "5")
@NotNull(message = "评分星级 1-5分不能为空")
@Schema(description = "评分星级 1-5 ", required = true, example = "5")
@NotNull(message = "评分星级 1-5 分不能为空")
private Integer scores;
@Schema(description = "描述星级 1-5", required = true, example = "5")
@NotNull(message = "描述星级 1-5分不能为空")
@Schema(description = "描述星级 1-5 ", required = true, example = "5")
@NotNull(message = "描述星级 1-5 分不能为空")
private Integer descriptionScores;
@Schema(description = "服务星级 1-5", required = true, example = "5")
@NotNull(message = "服务星级 1-5分不能为空")
@Schema(description = "服务星级 1-5 ", required = true, example = "5")
@NotNull(message = "服务星级 1-5 分不能为空")
private Integer benefitScores;
@Schema(description = "评论内容", required = true, example = "哇,真的很丝滑凉快诶,好评")
@NotNull(message = "评论内容不能为空")
private String content;
@Schema(description = "评论图片地址数组,以逗号分隔最多上传9张", required = true, example = "[https://www.iocoder.cn/xx.png, https://www.iocoder.cn/xxx.png]")
@Size(max = 9, message = "评论图片地址数组长度不能超过9张")
@Schema(description = "评论图片地址数组,以逗号分隔最多上传 9 ", required = true, example = "[https://www.iocoder.cn/xx.png, https://www.iocoder.cn/xxx.png]")
@Size(max = 9, message = "评论图片地址数组长度不能超过 9 ")
private List<String> picUrls;
}

View File

@ -60,7 +60,7 @@ public class AppProductCommentRespVO {
@Schema(description = "追加评价内容", example = "穿了很久都很丝滑诶")
private String additionalContent;
@Schema(description = "追评评价图片地址数组,以逗号分隔最多上传9张", example = "[https://www.iocoder.cn/xx.png, https://www.iocoder.cn/xxx.png]")
@Schema(description = "追评评价图片地址数组,以逗号分隔最多上传 9 ", example = "[https://www.iocoder.cn/xx.png, https://www.iocoder.cn/xxx.png]")
private List<String> additionalPicUrls;
@Schema(description = "追加评价时间")
@ -86,24 +86,24 @@ public class AppProductCommentRespVO {
@Schema(description = "商品 SKU 属性", required = true)
private List<AppProductPropertyValueDetailRespVO> skuProperties;
@Schema(description = "评分星级 1-5", required = true, example = "5")
@NotNull(message = "评分星级 1-5分不能为空")
@Schema(description = "评分星级 1-5 ", required = true, example = "5")
@NotNull(message = "评分星级 1-5 分不能为空")
private Integer scores;
@Schema(description = "描述星级 1-5", required = true, example = "5")
@NotNull(message = "描述星级 1-5分不能为空")
@Schema(description = "描述星级 1-5 ", required = true, example = "5")
@NotNull(message = "描述星级 1-5 分不能为空")
private Integer descriptionScores;
@Schema(description = "服务星级 1-5", required = true, example = "5")
@NotNull(message = "服务星级 1-5分不能为空")
@Schema(description = "服务星级 1-5 ", required = true, example = "5")
@NotNull(message = "服务星级 1-5 分不能为空")
private Integer benefitScores;
@Schema(description = "评论内容", required = true, example = "哇,真的很丝滑凉快诶,好评")
@NotNull(message = "评论内容不能为空")
private String content;
@Schema(description = "评论图片地址数组,以逗号分隔最多上传9张", required = true, example = "[https://www.iocoder.cn/xx.png, https://www.iocoder.cn/xxx.png]")
@Size(max = 9, message = "评论图片地址数组长度不能超过9张")
@Schema(description = "评论图片地址数组,以逗号分隔最多上传 9 ", required = true, example = "[https://www.iocoder.cn/xx.png, https://www.iocoder.cn/xxx.png]")
@Size(max = 9, message = "评论图片地址数组长度不能超过 9 ")
private List<String> picUrls;
}

View File

@ -1,7 +1,7 @@
package cn.iocoder.yudao.module.product.convert.comment;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.product.api.comment.dto.CommentCreateReqDTO;
import cn.iocoder.yudao.module.product.api.comment.dto.ProductCommentCreateReqDTO;
import cn.iocoder.yudao.module.product.controller.admin.comment.vo.ProductCommentCreateReqVO;
import cn.iocoder.yudao.module.product.controller.admin.comment.vo.ProductCommentRespVO;
import cn.iocoder.yudao.module.product.controller.app.comment.vo.AppCommentStatisticsRespVO;
@ -49,7 +49,7 @@ public interface ProductCommentConvert {
*
* @param descriptionScores 描述星级
* @param benefitScores 服务星级
* @return {@link Integer}
* @return 综合评分
*/
@Named("convertScores")
default Integer convertScores(Integer descriptionScores, Integer benefitScores) {
@ -61,7 +61,7 @@ public interface ProductCommentConvert {
@Mapping(target = "orderId", source = "orderId")
@Mapping(target = "scores", expression = "java(convertScores(createReqDTO.getDescriptionScores(), createReqDTO.getBenefitScores()))")
ProductCommentDO convert(CommentCreateReqDTO createReqDTO, Long orderId);
ProductCommentDO convert(ProductCommentCreateReqDTO createReqDTO, Long orderId);
@Mapping(target = "userId", constant = "0L")
@Mapping(target = "orderId", constant = "0L")

View File

@ -97,7 +97,7 @@ public class ProductCommentDO extends BaseDO {
/**
* 评分星级
*
* 1-5
* 1-5
*/
private Integer scores;
/**

View File

@ -25,6 +25,7 @@ public interface ProductCommentMapper extends BaseMapperX<ProductCommentDO> {
}
// TODO 芋艿在看看这块
// TODO @puhui999直接使用 scores 来算好评中评差评
static void appendTabQuery(LambdaQueryWrapperX<ProductCommentDO> queryWrapper, Integer type) {
// 构建好评查询语句好评计算 (商品评分星级+服务评分星级) >= 8
if (ObjectUtil.equal(type, AppCommentPageReqVO.GOOD_COMMENT)) {

View File

@ -54,7 +54,8 @@ public interface ProductCommentService {
PageResult<AppProductCommentRespVO> getCommentPage(AppCommentPageReqVO pageVO, Boolean visible);
/**
* 创建商品评论 后台管理员创建评论使用
* 创建商品评论
* 后台管理员创建评论使用
*
* @param createReqVO 商品评价创建 Request VO 对象
*/

View File

@ -86,6 +86,7 @@ public class ProductCommentServiceImpl implements ProductCommentService {
@Transactional(rollbackFor = Exception.class)
public void createComment(ProductCommentCreateReqVO createReqVO) {
// 校验订单
// TODO @puhui999不校验哈尽可能解耦
Long orderId = tradeOrderApi.validateOrder(createReqVO.getUserId(), createReqVO.getOrderItemId());
// 校验评论
validateComment(createReqVO.getSpuId(), createReqVO.getUserId(), orderId);
@ -104,8 +105,6 @@ public class ProductCommentServiceImpl implements ProductCommentService {
return commentDO.getId();
}
// TODO 只有创建和更新诶 要不要删除接口
private void validateComment(Long spuId, Long userId, Long orderId) {
ProductSpuDO spu = productSpuService.getSpu(spuId);
if (null == spu) {
@ -144,6 +143,7 @@ public class ProductCommentServiceImpl implements ProductCommentService {
public PageResult<AppProductCommentRespVO> getCommentPage(AppCommentPageReqVO pageVO, Boolean visible) {
PageResult<AppProductCommentRespVO> result = ProductCommentConvert.INSTANCE.convertPage02(
productCommentMapper.selectPage(pageVO, visible));
// TODO @puhui999要不这块放到 controller 里拼接
Set<Long> skuIds = result.getList().stream().map(AppProductCommentRespVO::getSkuId).collect(Collectors.toSet());
List<ProductSkuDO> skuList = productSkuService.getSkuList(skuIds);
Map<Long, ProductSkuDO> skuDOMap = new HashMap<>(skuIds.size());

View File

@ -126,6 +126,7 @@ CREATE TABLE IF NOT EXISTS `product_property_value` (
PRIMARY KEY("id")
) COMMENT '规格值';
-- TODO @puhui999格式不太对哈
CREATE TABLE IF NOT EXISTS `product_comment`
(
`id`
@ -166,7 +167,7 @@ CREATE TABLE IF NOT EXISTS `product_comment`
(
1
) DEFAULT NULL COMMENT '是否可见true:显示false:隐藏',
`scores` tinyint DEFAULT NULL COMMENT '评分星级1-5',
`scores` tinyint DEFAULT NULL COMMENT '评分星级1-5 ',
`description_scores` tinyint DEFAULT NULL COMMENT '描述星级1-5 ',
`benefit_scores` tinyint DEFAULT NULL COMMENT '服务星级1-5 ',
`content` varchar

View File

@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.trade.controller.app.order;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated;
import cn.iocoder.yudao.module.pay.api.notify.dto.PayOrderNotifyReqDTO;
import cn.iocoder.yudao.module.product.api.comment.ProductCommentApi;
@ -49,13 +48,12 @@ public class AppTradeOrderController {
@Resource
private ProductPropertyValueApi productPropertyValueApi;
@Resource
private ProductCommentApi productCommentApi;
@Resource
private TradeOrderProperties tradeOrderProperties;
@Resource
private ProductCommentApi productCommentApi;
@GetMapping("/settlement")
@Operation(summary = "获得订单结算信息")
@PreAuthenticated
@ -141,6 +139,7 @@ public class AppTradeOrderController {
@Operation(summary = "创建交易订单项的评价")
public CommonResult<Long> createOrderItemComment(@RequestBody AppTradeOrderItemCommentCreateReqVO createReqVO) {
// 校验订单项订单项存在订单就存在
// TODO @puhui999要去查询订单是不是自己的不然别人模拟请求哈
TradeOrderItemDO item = tradeOrderService.getOrderItem(createReqVO.getUserId(), createReqVO.getOrderItemId());
if (item == null) {
throw exception(ORDER_ITEM_NOT_FOUND);
@ -149,6 +148,6 @@ public class AppTradeOrderController {
return success(productCommentApi.createComment(TradeOrderConvert.INSTANCE.convert04(createReqVO), item.getOrderId()));
}
// TODO 合并代码后发现只有商家回复功能 用户追评不要了吗
// TODO 合并代码后发现只有商家回复功能 用户追评不要了吗不要了哈
}

View File

@ -7,11 +7,6 @@ import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;
/**
* 商品评价创建 Request VO
*
* @author HUIHUI
*/
@Schema(description = "用户APP - 商品评价创建 Request VO")
@Data
public class AppTradeOrderItemCommentCreateReqVO {
@ -24,6 +19,7 @@ public class AppTradeOrderItemCommentCreateReqVO {
@NotNull(message = "交易订单项编号不能为空")
private Long orderItemId;
// TODO @puhuispuIdspuNameskuId 直接查询出来
@Schema(description = "商品SPU编号", required = true, example = "29502")
@NotNull(message = "商品SPU编号不能为空")
private Long spuId;
@ -36,30 +32,32 @@ public class AppTradeOrderItemCommentCreateReqVO {
@NotNull(message = "商品SKU编号不能为空")
private Long skuId;
@Schema(description = "评分星级 1-5", required = true, example = "5")
@NotNull(message = "评分星级 1-5分不能为空")
@Schema(description = "评分星级 1-5 ", required = true, example = "5")
@NotNull(message = "评分星级 1-5 分不能为空")
private Integer scores;
@Schema(description = "描述星级 1-5", required = true, example = "5")
@NotNull(message = "描述星级 1-5分不能为空")
@Schema(description = "描述星级 1-5 ", required = true, example = "5")
@NotNull(message = "描述星级 1-5 分不能为空")
private Integer descriptionScores;
@Schema(description = "服务星级 1-5", required = true, example = "5")
@NotNull(message = "服务星级 1-5分不能为空")
@Schema(description = "服务星级 1-5 ", required = true, example = "5")
@NotNull(message = "服务星级 1-5 分不能为空")
private Integer benefitScores;
@Schema(description = "评论内容", required = true, example = "穿身上很漂亮诶(*^▽^*)")
@NotNull(message = "评论内容不能为空")
private String content;
@Schema(description = "评论图片地址数组,以逗号分隔最多上传9张", required = true, example = "[https://www.iocoder.cn/xx.png, https://www.iocoder.cn/xx.png]")
@Size(max = 9, message = "评论图片地址数组长度不能超过9张")
@Schema(description = "评论图片地址数组,以逗号分隔最多上传 9 ", required = true, example = "[https://www.iocoder.cn/xx.png, https://www.iocoder.cn/xx.png]")
@Size(max = 9, message = "评论图片地址数组长度不能超过 9 ")
private List<String> picUrls;
@Schema(description = "评价人名称", required = true, example = "小姑凉")
@NotNull(message = "评价人名称不能为空")
private String userNickname;
// TODO @puhuiuserAvataruserAvataruserId 直接查询出来
@Schema(description = "评价人头像", required = true, example = "https://www.iocoder.cn/xx.png")
@NotNull(message = "评价人头像不能为空")
private String userAvatar;

View File

@ -8,7 +8,7 @@ import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils;
import cn.iocoder.yudao.module.member.api.address.dto.AddressRespDTO;
import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
import cn.iocoder.yudao.module.pay.api.order.dto.PayOrderCreateReqDTO;
import cn.iocoder.yudao.module.product.api.comment.dto.CommentCreateReqDTO;
import cn.iocoder.yudao.module.product.api.comment.dto.ProductCommentCreateReqDTO;
import cn.iocoder.yudao.module.product.api.property.dto.ProductPropertyValueDetailRespDTO;
import cn.iocoder.yudao.module.product.api.sku.dto.ProductSkuUpdateStockReqDTO;
import cn.iocoder.yudao.module.promotion.api.price.dto.PriceCalculateReqDTO;
@ -227,6 +227,7 @@ public interface TradeOrderConvert {
AppProductPropertyValueDetailRespVO convert02(ProductPropertyValueDetailRespDTO bean);
// TODO 芋艿可简化
default AppTradeOrderDetailRespVO convert02(TradeOrderDO order, List<TradeOrderItemDO> orderItems,
List<ProductPropertyValueDetailRespDTO> propertyValueDetails, TradeOrderProperties tradeOrderProperties) {
AppTradeOrderDetailRespVO orderVO = convert3(order, orderItems);
@ -258,7 +259,7 @@ public interface TradeOrderConvert {
AppTradeOrderItemRespVO convert03(TradeOrderItemDO bean);
CommentCreateReqDTO convert04(AppTradeOrderItemCommentCreateReqVO createReqVO);
ProductCommentCreateReqDTO convert04(AppTradeOrderItemCommentCreateReqVO createReqVO);
default TradePriceCalculateReqBO convert(Long userId, AppTradeOrderSettlementReqVO settlementReqVO,
List<TradeCartDO> cartList) {
@ -302,5 +303,4 @@ public interface TradeOrderConvert {
AppTradeOrderSettlementRespVO convert0(TradePriceCalculateRespBO calculate, AddressRespDTO address);
}