Commit c7b5df930ed137a7919f8e031b79889e205013af

Authored by YunaiV
1 parent c8f1269d

promotion:修复拼团下单时,相关字段记录不正确的情况。

yudao-module-mall/yudao-module-promotion-api/src/main/java/cn/iocoder/yudao/module/promotion/api/combination/CombinationRecordApi.java
... ... @@ -77,6 +77,7 @@ public interface CombinationRecordApi {
77 77 * @param count 数量
78 78 * @return 拼团信息
79 79 */
  80 + // TODO @puhui:userId 放最前面;然后应该还有个 headId 参数;
80 81 CombinationValidateJoinRespDTO validateJoinCombination(Long activityId, Long userId, Long skuId, Integer count);
81 82  
82 83 }
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/combination/CombinationActivityConvert.java
... ... @@ -108,7 +108,7 @@ public interface CombinationActivityConvert {
108 108 CombinationActivityDO activity, MemberUserRespDTO user,
109 109 ProductSpuRespDTO spu, ProductSkuRespDTO sku) {
110 110 return convert(reqDTO)
111   - .setCount(reqDTO.getCount())
  111 + .setCount(reqDTO.getCount()).setUserCount(1)
112 112 .setVirtualGroup(false)
113 113 .setExpireTime(activity.getStartTime().plusHours(activity.getLimitDuration()))
114 114 .setUserSize(activity.getUserSize())
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationRecordServiceImpl.java
... ... @@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
5 5 import cn.iocoder.yudao.framework.common.core.KeyValue;
6 6 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
7 7 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  8 +import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils;
8 9 import cn.iocoder.yudao.module.member.api.user.MemberUserApi;
9 10 import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
10 11 import cn.iocoder.yudao.module.product.api.sku.ProductSkuApi;
... ... @@ -97,8 +98,8 @@ public class CombinationRecordServiceImpl implements CombinationRecordService {
97 98 item.setStatus(CombinationRecordStatusEnum.SUCCESS.getStatus());
98 99 }
99 100 });
  101 + recordMapper.updateBatch(records);
100 102 }
101   - recordMapper.updateBatch(records);
102 103 }
103 104  
104 105 private CombinationRecordDO validateCombinationRecord(Long userId, Long orderId) {
... ... @@ -179,7 +180,7 @@ public class CombinationRecordServiceImpl implements CombinationRecordService {
179 180 throw exception(COMBINATION_RECORD_FAILED_HAVE_JOINED);
180 181 }
181 182 // 3、校验活动是否开启
182   - if (LocalDateTime.now().isAfter(activity.getStartTime())) {
  183 + if (!LocalDateTimeUtils.beforeNow(activity.getStartTime())) {
183 184 throw exception(COMBINATION_RECORD_FAILED_TIME_NOT_START);
184 185 }
185 186 // 4、校验当前活动是否过期
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/order/TradeOrderConvert.java
... ... @@ -207,12 +207,16 @@ public interface TradeOrderConvert {
207 207 default TradePriceCalculateReqBO convert(Long userId, AppTradeOrderSettlementReqVO settlementReqVO,
208 208 List<CartDO> cartList) {
209 209 TradePriceCalculateReqBO reqBO = new TradePriceCalculateReqBO().setUserId(userId)
  210 + .setItems(new ArrayList<>(settlementReqVO.getItems().size()))
210 211 .setCouponId(settlementReqVO.getCouponId()).setPointStatus(settlementReqVO.getPointStatus())
  212 + // 物流信息
211 213 .setDeliveryType(settlementReqVO.getDeliveryType()).setAddressId(settlementReqVO.getAddressId())
212 214 .setPickUpStoreId(settlementReqVO.getPickUpStoreId())
213   - .setItems(new ArrayList<>(settlementReqVO.getItems().size()))
  215 + // 各种活动
214 216 .setSeckillActivityId(settlementReqVO.getSeckillActivityId())
215   - .setBargainRecordId(settlementReqVO.getBargainRecordId());
  217 + .setBargainRecordId(settlementReqVO.getBargainRecordId())
  218 + .setCombinationActivityId(settlementReqVO.getCombinationActivityId())
  219 + .setCombinationHeadId(settlementReqVO.getCombinationHeadId());
216 220 // 商品项的构建
217 221 Map<Long, CartDO> cartMap = convertMap(cartList, CartDO::getId);
218 222 for (AppTradeOrderSettlementReqVO.Item item : settlementReqVO.getItems()) {
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderDO.java
... ... @@ -318,10 +318,16 @@ public class TradeOrderDO extends BaseDO {
318 318 */
319 319 private Long combinationActivityId;
320 320 /**
321   - * 团长编号
  321 + * 拼团团长编号
322 322 *
323   - * 关联 CombinationRecordDO 的 id 字段
  323 + * 关联 CombinationRecordDO 的 headId 字段
324 324 */
325 325 private Long combinationHeadId;
  326 + /**
  327 + * 拼团记录编号
  328 + *
  329 + * 关联 CombinationRecordDO 的 id 字段
  330 + */
  331 + private Long combinationRecordId;
326 332  
327 333 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeCombinationHandler.java
... ... @@ -47,7 +47,8 @@ public class TradeCombinationHandler implements TradeOrderHandler {
47 47  
48 48 // 获取商品信息
49 49 TradeOrderItemDO item = orderItems.get(0);
50   - // 创建砍价记录
  50 + // 创建拼团记录
  51 + // TODO puhui:这里应该先不创建;等支付好,才去创建;另外,创建好后,需要更新编号到订单;
51 52 combinationRecordApi.createCombinationRecord(TradeOrderConvert.INSTANCE.convert(order, item));
52 53 }
53 54  
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/price/calculator/TradeCombinationActivityPriceCalculator.java
... ... @@ -31,7 +31,6 @@ public class TradeCombinationActivityPriceCalculator implements TradePriceCalcul
31 31 if (param.getCombinationActivityId() == null) {
32 32 return;
33 33 }
34   -
35 34 Assert.isTrue(param.getItems().size() == 1, "拼团时,只允许选择一个商品");
36 35 // 2. 校验是否可以参与拼团
37 36 TradePriceCalculateRespBO.OrderItem orderItem = result.getItems().get(0);
... ...