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