mirror of
https://gitee.com/hhyykk/ipms-sjy.git
synced 2025-08-15 18:51:54 +08:00
review 拼团、秒杀活动的实现
This commit is contained in:
@@ -21,13 +21,15 @@ public class TradeOrderDeliveryReqVO {
|
||||
@NotNull(message = "发货类型不能为空")
|
||||
private Integer type;
|
||||
|
||||
// TODO @puhui999:还是要校验下
|
||||
|
||||
@Schema(description = "发货物流公司编号", example = "1")
|
||||
private Long logisticsId;
|
||||
|
||||
@Schema(description = "发货物流单号", example = "SF123456789")
|
||||
private String logisticsNo;
|
||||
|
||||
// TODO 订单项商品单独发货
|
||||
// TODO 订单项商品单独发货;不做单独发
|
||||
|
||||
@Schema(description = "发货订单项", example = "[1,2,3]")
|
||||
@NotNull(message = "发货订单项不能为空")
|
||||
|
@@ -108,13 +108,17 @@ public class AppTradeOrderController {
|
||||
// 全部
|
||||
orderCount.put("allCount", tradeOrderService.getOrderCount(getLoginUserId(), null, null));
|
||||
// 待付款(未支付)
|
||||
orderCount.put("unpaidCount", tradeOrderService.getOrderCount(getLoginUserId(), TradeOrderStatusEnum.UNPAID.getStatus(), null));
|
||||
orderCount.put("unpaidCount", tradeOrderService.getOrderCount(getLoginUserId(),
|
||||
TradeOrderStatusEnum.UNPAID.getStatus(), null));
|
||||
// 待发货
|
||||
orderCount.put("undeliveredCount", tradeOrderService.getOrderCount(getLoginUserId(), TradeOrderStatusEnum.UNDELIVERED.getStatus(), null));
|
||||
orderCount.put("undeliveredCount", tradeOrderService.getOrderCount(getLoginUserId(),
|
||||
TradeOrderStatusEnum.UNDELIVERED.getStatus(), null));
|
||||
// 待收货
|
||||
orderCount.put("deliveredCount", tradeOrderService.getOrderCount(getLoginUserId(), TradeOrderStatusEnum.DELIVERED.getStatus(), null));
|
||||
orderCount.put("deliveredCount", tradeOrderService.getOrderCount(getLoginUserId(),
|
||||
TradeOrderStatusEnum.DELIVERED.getStatus(), null));
|
||||
// 待评价
|
||||
orderCount.put("uncommentedCount", tradeOrderService.getOrderCount(getLoginUserId(), TradeOrderStatusEnum.COMPLETED.getStatus(), false));
|
||||
orderCount.put("uncommentedCount", tradeOrderService.getOrderCount(getLoginUserId(),
|
||||
TradeOrderStatusEnum.COMPLETED.getStatus(), false));
|
||||
return success(orderCount);
|
||||
}
|
||||
|
||||
|
@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.*;
|
||||
|
||||
|
||||
// TODO @puhui999:
|
||||
/**
|
||||
* 交易订单发货记录 DO
|
||||
*
|
||||
|
@@ -7,6 +7,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
// TODO @puhui999:应该去掉啦
|
||||
/**
|
||||
* 交易订单发货记录 Mapper
|
||||
*
|
||||
|
@@ -180,8 +180,7 @@ public interface TradeOrderService {
|
||||
TradeOrderDO getOrderByIdAndUserId(Long orderId, Long loginUserId);
|
||||
|
||||
/**
|
||||
* 创建订单项评论
|
||||
* 创建交易订单项的评价
|
||||
* 创建订单项的评论
|
||||
*
|
||||
* @param createReqVO 创建请求
|
||||
* @return 得到评价 id
|
||||
|
@@ -178,7 +178,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
|
||||
MemberUserRespDTO user = memberUserApi.getUser(userId);
|
||||
// TODO 拼团一次应该只能选择一种规格的商品
|
||||
combinationApi.createRecord(TradeOrderConvert.INSTANCE.convert(order, orderItems.get(0), createReqVO, user)
|
||||
.setStatus(CombinationRecordStatusEnum.NOT_PAY.getStatus()));
|
||||
.setStatus(CombinationRecordStatusEnum.WAITING.getStatus()));
|
||||
}
|
||||
// TODO 秒杀扣减库存是下单就扣除还是等待订单支付成功再扣除
|
||||
if (ObjectUtil.equal(TradeOrderTypeEnum.SECKILL.getType(), order.getType())) {
|
||||
@@ -204,23 +204,6 @@ public class TradeOrderServiceImpl implements TradeOrderService {
|
||||
return address;
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验活动返回订单类型
|
||||
*
|
||||
* @param createReqVO 请求参数
|
||||
* @return 订单类型
|
||||
*/
|
||||
private Integer validateActivity(AppTradeOrderCreateReqVO createReqVO) {
|
||||
if (createReqVO.getSeckillActivityId() != null) {
|
||||
return TradeOrderTypeEnum.SECKILL.getType();
|
||||
}
|
||||
if (createReqVO.getCombinationActivityId() != null) {
|
||||
return TradeOrderTypeEnum.COMBINATION.getType();
|
||||
}
|
||||
// TODO 砍价敬请期待
|
||||
return TradeOrderTypeEnum.NORMAL.getType();
|
||||
}
|
||||
|
||||
private TradeOrderDO createTradeOrder(Long userId, String clientIp, AppTradeOrderCreateReqVO createReqVO,
|
||||
TradePriceCalculateRespBO calculateRespBO) {
|
||||
// 用户选择物流配送的时候才需要填写收货地址
|
||||
@@ -246,6 +229,23 @@ public class TradeOrderServiceImpl implements TradeOrderService {
|
||||
return order;
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验活动,并返回订单类型
|
||||
*
|
||||
* @param createReqVO 请求参数
|
||||
* @return 订单类型
|
||||
*/
|
||||
private Integer validateActivity(AppTradeOrderCreateReqVO createReqVO) {
|
||||
if (createReqVO.getSeckillActivityId() != null) {
|
||||
return TradeOrderTypeEnum.SECKILL.getType();
|
||||
}
|
||||
if (createReqVO.getCombinationActivityId() != null) {
|
||||
return TradeOrderTypeEnum.COMBINATION.getType();
|
||||
}
|
||||
// TODO 砍价敬请期待
|
||||
return TradeOrderTypeEnum.NORMAL.getType();
|
||||
}
|
||||
|
||||
private List<TradeOrderItemDO> createTradeOrderItems(TradeOrderDO tradeOrderDO, TradePriceCalculateRespBO calculateRespBO) {
|
||||
List<TradeOrderItemDO> orderItems = TradeOrderConvert.INSTANCE.convertList(tradeOrderDO, calculateRespBO);
|
||||
tradeOrderItemMapper.insertBatch(orderItems);
|
||||
@@ -314,7 +314,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
|
||||
// 1、拼团活动
|
||||
if (ObjectUtil.equal(TradeOrderTypeEnum.COMBINATION.getType(), order.getType())) {
|
||||
// 更新拼团状态 TODO puhui999:订单支付失败或订单支付过期删除这条拼团记录
|
||||
combinationApi.updateRecordStatusAndStartTime(order.getUserId(), order.getId(), CombinationRecordStatusEnum.ONGOING.getStatus());
|
||||
combinationApi.updateRecordStatusAndStartTime(order.getUserId(), order.getId(), CombinationRecordStatusEnum.IN_PROGRESS.getStatus());
|
||||
}
|
||||
// TODO 芋艿:发送订单变化的消息
|
||||
|
||||
@@ -422,6 +422,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
|
||||
orderDeliveryMapper.insertBatch(deliveryDOs);
|
||||
// TODO 芋艿:发送订单变化的消息
|
||||
|
||||
// TODO @puhui999:可以抽个 message 包,里面是 Order 所有的 message;类似工作流的
|
||||
// 发送站内信
|
||||
// 1、构造消息
|
||||
Map<String, Object> msgMap = new HashMap<>();
|
||||
@@ -684,24 +685,26 @@ public class TradeOrderServiceImpl implements TradeOrderService {
|
||||
@Override
|
||||
public Long createOrderItemComment(AppTradeOrderItemCommentCreateReqVO createReqVO) {
|
||||
Long loginUserId = getLoginUserId();
|
||||
// 先通过订单项 ID 查询订单项是否存在
|
||||
TradeOrderItemDO orderItemDO = getOrderItemByIdAndUserId(createReqVO.getOrderItemId(), loginUserId);
|
||||
if (orderItemDO == null) {
|
||||
// 先通过订单项 ID,查询订单项是否存在
|
||||
TradeOrderItemDO orderItem = getOrderItemByIdAndUserId(createReqVO.getOrderItemId(), loginUserId);
|
||||
if (orderItem == null) {
|
||||
throw exception(ORDER_ITEM_NOT_FOUND);
|
||||
}
|
||||
// 校验订单
|
||||
TradeOrderDO orderDO = getOrderByIdAndUserId(orderItemDO.getOrderId(), loginUserId);
|
||||
if (orderDO == null) {
|
||||
TradeOrderDO order = getOrderByIdAndUserId(orderItem.getOrderId(), loginUserId);
|
||||
if (order == null) {
|
||||
throw exception(ORDER_NOT_FOUND);
|
||||
}
|
||||
if (ObjectUtil.notEqual(orderDO.getStatus(), TradeOrderStatusEnum.COMPLETED.getStatus())) {
|
||||
if (ObjectUtil.notEqual(order.getStatus(), TradeOrderStatusEnum.COMPLETED.getStatus())) {
|
||||
throw exception(ORDER_COMMENT_FAIL_STATUS_NOT_COMPLETED);
|
||||
}
|
||||
if (ObjectUtil.notEqual(orderDO.getCommentStatus(), Boolean.FALSE)) {
|
||||
if (ObjectUtil.notEqual(order.getCommentStatus(), Boolean.FALSE)) {
|
||||
throw exception(ORDER_COMMENT_STATUS_NOT_FALSE);
|
||||
}
|
||||
// TODO @puhui999:是不是评论完,要更新 status、commentStatus;另外,是不是上面 order 可以不校验,直接只判断 orderItem 就够;
|
||||
// 对于 order 来说,就是评论完,把 order 更新完合理的 status 等字段。
|
||||
|
||||
ProductCommentCreateReqDTO productCommentCreateReqDTO = TradeOrderConvert.INSTANCE.convert04(createReqVO, orderItemDO);
|
||||
ProductCommentCreateReqDTO productCommentCreateReqDTO = TradeOrderConvert.INSTANCE.convert04(createReqVO, orderItem);
|
||||
return productCommentApi.createComment(productCommentCreateReqDTO);
|
||||
}
|
||||
|
||||
|
@@ -21,7 +21,7 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU
|
||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
|
||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
|
||||
import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.*;
|
||||
import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.PRICE_CALCULATE_PAY_PRICE_ILLEGAL;
|
||||
import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.PRICE_CALCULATE_PAY_PRICE_ILLEGAL;
|
||||
|
||||
/**
|
||||
* 价格计算 Service 实现类
|
||||
|
Reference in New Issue
Block a user