Commit c7b5df930ed137a7919f8e031b79889e205013af
1 parent
c8f1269d
promotion:修复拼团下单时,相关字段记录不正确的情况。
Showing
7 changed files
with
21 additions
and
9 deletions
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); | ... | ... |