拼团活动:完善 TradeCombinationHandler

This commit is contained in:
puhui999 2023-10-05 19:14:19 +08:00
parent 1bda3c8b53
commit 07d6ab5842
5 changed files with 78 additions and 38 deletions

View File

@ -1,6 +1,5 @@
package cn.iocoder.yudao.module.promotion.api.bargain;
import cn.iocoder.yudao.module.promotion.api.bargain.dto.BargainRecordCreateReqDTO;
import cn.iocoder.yudao.module.promotion.api.bargain.dto.BargainValidateJoinRespDTO;
import cn.iocoder.yudao.module.promotion.service.bargain.BargainRecordService;
import org.springframework.stereotype.Service;
@ -18,9 +17,9 @@ public class BargainRecordApiImpl implements BargainRecordApi {
@Resource
private BargainRecordService bargainRecordService;
@Override
public void createBargainRecord(BargainRecordCreateReqDTO reqDTO) {
}
//@Override
//public void createBargainRecord(BargainRecordCreateReqDTO reqDTO) {
//}
@Override
public BargainValidateJoinRespDTO validateJoinBargain(Long userId, Long bargainRecordId, Long skuId) {

View File

@ -77,12 +77,12 @@ public class BargainRecordServiceImpl implements BargainRecordService {
@Override
public BargainValidateJoinRespDTO validateJoinBargain(Long userId, Long bargainRecordId, Long skuId) {
// 1.1 拼团记录不存在
// 1.1 砍价记录不存在
BargainRecordDO record = bargainRecordMapper.selectByIdAndUserId(bargainRecordId, userId);
if (record == null) {
throw exception(BARGAIN_RECORD_NOT_EXISTS);
}
// 1.2 拼团记录未在进行中
// 1.2 砍价记录未在进行中
if (ObjUtil.notEqual(record.getStatus(), BargainRecordStatusEnum.IN_PROGRESS)) {
throw exception(BARGAIN_JOIN_RECORD_NOT_SUCCESS);
}

View File

@ -16,6 +16,7 @@ import cn.iocoder.yudao.module.product.api.property.dto.ProductPropertyValueDeta
import cn.iocoder.yudao.module.product.api.sku.dto.ProductSkuRespDTO;
import cn.iocoder.yudao.module.product.api.sku.dto.ProductSkuUpdateStockReqDTO;
import cn.iocoder.yudao.module.product.api.spu.dto.ProductSpuRespDTO;
import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordCreateReqDTO;
import cn.iocoder.yudao.module.trade.api.order.dto.TradeOrderRespDTO;
import cn.iocoder.yudao.module.trade.controller.admin.base.member.user.MemberUserRespVO;
import cn.iocoder.yudao.module.trade.controller.admin.base.product.property.ProductPropertyValueDetailRespVO;
@ -263,4 +264,16 @@ public interface TradeOrderConvert {
List<TradeOrderRespDTO> convertList04(List<TradeOrderDO> list);
@Mappings({
@Mapping(target = "activityId", source = "order.combinationActivityId"),
@Mapping(target = "spuId", source = "item.spuId"),
@Mapping(target = "skuId", source = "item.skuId"),
@Mapping(target = "count", source = "item.count"),
@Mapping(target = "orderId", source = "order.id"),
@Mapping(target = "userId", source = "order.userId"),
@Mapping(target = "headId", source = "order.combinationRecordHeadId"),
@Mapping(target = "combinationPrice", source = "item.payPrice"),
})
CombinationRecordCreateReqDTO convert(TradeOrderDO order, TradeOrderItemDO item);
}

View File

@ -7,7 +7,10 @@ import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.BrokerageUserDO;
import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO;
import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryPickUpStoreDO;
import cn.iocoder.yudao.module.trade.enums.delivery.DeliveryTypeEnum;
import cn.iocoder.yudao.module.trade.enums.order.*;
import cn.iocoder.yudao.module.trade.enums.order.TradeOrderCancelTypeEnum;
import cn.iocoder.yudao.module.trade.enums.order.TradeOrderRefundStatusEnum;
import cn.iocoder.yudao.module.trade.enums.order.TradeOrderStatusEnum;
import cn.iocoder.yudao.module.trade.enums.order.TradeOrderTypeEnum;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
@ -308,4 +311,17 @@ public class TradeOrderDO extends BaseDO {
*/
private Long bargainRecordId;
/**
* 拼团活动编号 TODO puhui999价格计算后设置
*
* 关联 CombinationActivityDO id 字段
*/
private Long combinationActivityId;
/**
* 团长编号
*
* 关联 CombinationRecordDO id 字段
*/
private Long combinationRecordHeadId;
}

View File

@ -1,9 +1,16 @@
package cn.iocoder.yudao.module.trade.service.order.handler;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
import cn.iocoder.yudao.module.promotion.api.combination.CombinationRecordApi;
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.enums.order.TradeOrderTypeEnum;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
/**
* 拼团订单 handler 接口实现类
@ -16,38 +23,43 @@ public class TradeCombinationHandler implements TradeOrderHandler {
@Resource
private CombinationRecordApi combinationRecordApi;
// @Override
// public void beforeOrderCreate(TradeBeforeOrderCreateReqBO reqBO) {
// // 如果不是拼团订单则结束
// if (ObjectUtil.notEqual(TradeOrderTypeEnum.COMBINATION.getType(), reqBO.getOrderType())) {
// return;
// }
//
// // 获取商品信息
// TradeBeforeOrderCreateReqBO.Item item = reqBO.getItems().get(0);
// // 校验是否满足拼团活动相关限制
// combinationRecordApi.validateCombinationRecord(reqBO.getCombinationActivityId(), reqBO.getUserId(), item.getSkuId(), item.getCount());
// }
@Override
public void beforeOrderCreate(TradeOrderDO order, List<TradeOrderItemDO> orderItems) {
// 如果不是拼团订单则结束
if (ObjectUtil.notEqual(TradeOrderTypeEnum.COMBINATION.getType(), order.getType())) {
return;
}
Assert.isTrue(orderItems.size() == 1, "拼团时,只允许选择一个商品");
// @Override
// public void afterOrderCreate(TradeAfterOrderCreateReqBO reqBO) {
// if (reqBO.getCombinationActivityId() == null) {
// return;
// }
//
// // 创建砍价记录
// combinationRecordApi.createCombinationRecord(TradeOrderConvert.INSTANCE.convert(reqBO));
// }
// 获取商品信息
TradeOrderItemDO item = orderItems.get(0);
// 校验是否满足拼团活动相关限制
combinationRecordApi.validateCombinationRecord(order.getCombinationActivityId(), order.getUserId(), item.getSkuId(), item.getCount());
}
// @Override
// public void afterPayOrder(TradeAfterPayOrderReqBO reqBO) {
// // 如果不是拼团订单则结束
// if (ObjectUtil.notEqual(TradeOrderTypeEnum.COMBINATION.getType(), reqBO.getOrderType())) {
// return;
// }
//
// // 更新拼团状态 TODO puhui999订单支付失败或订单支付过期删除这条拼团记录
// combinationRecordApi.updateRecordStatusToInProgress(reqBO.getUserId(), reqBO.getOrderId(), reqBO.getPayTime());
// }
@Override
public void afterOrderCreate(TradeOrderDO order, List<TradeOrderItemDO> orderItems) {
// 如果不是拼团订单则结束
if (ObjectUtil.notEqual(TradeOrderTypeEnum.COMBINATION.getType(), order.getType())) {
return;
}
Assert.isTrue(orderItems.size() == 1, "拼团时,只允许选择一个商品");
// 获取商品信息
TradeOrderItemDO item = orderItems.get(0);
// 创建砍价记录
combinationRecordApi.createCombinationRecord(TradeOrderConvert.INSTANCE.convert(order, item));
}
@Override
public void afterPayOrder(TradeOrderDO order) {
// 如果不是拼团订单则结束
if (ObjectUtil.notEqual(TradeOrderTypeEnum.COMBINATION.getType(), order.getType())) {
return;
}
// 更新拼团状态 TODO puhui999订单支付失败或订单支付过期删除这条拼团记录
combinationRecordApi.updateRecordStatusToInProgress(order.getUserId(), order.getId(), order.getPayTime());
}
}