要如何保证大礼包发货的完整性?

1. 背景

今早,接到一个新需求,跟同事讨论了一下,确实也没有想到什么太好的解决方案,希望找社区的大佬们指点一二

2. 场景

1、一个抢购活动;

1、用户支付成功之后,会有一个大礼包要派发;

2、这个大礼包包含了 =》 9个商品;

3、商品类型(采购导入的券码、实物、第三方接口直充票券);

3. 疑问点

1、库存的问题,逻辑上的限制处理(只限制大礼包库存 还是 细分到商品的库存)

2、如何保证商品的发货流程,第三方接口出现异常,应该怎么处理?

3、漏发的情况,是应该做退款处理,还是事后补发?

4、是否使用事务,可事务回滚,没法处理第三方已经充值的问题呢

5、9个商品,感觉代码会特别臃肿,感觉代码怎么简化好些?

4. 个人思路

1、下单时只判断大礼包的库存,发货流程不再判断商品的库存,抢购前运营人员需保证库存的配置问题

2、不做退款处理,事后写脚本补发

3、伪代码

public function delivery(Order $order)
{
    $products = colletct();

    foreach($products as $product){
        // 实物商品
        if ($product->isNormal()) {
            return $this->deliveryOfNormalGoods($order, $product);
        }
        // 券码商品
        if ($product->isCode()) {
            return $this->deliveryOfCodeGoods($order, $product);
        }
        // 权益商品
        if ($product->isBenefit()) {
            return $this->deliveryOfBenefitGoods($order, $product);
        }
    }
}
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 3
Mutoulee

感觉你在说一会即将开始的小米社区大礼包 :grin:

1年前 评论

3.1是需求,不是技术问题,是PM要解决的。

订单设计是总单到分单模式,支付订单和商品订单是两个维度且关联。

支付行为是为了支付某一笔商品订单。

预扣减库存还是支付后扣减库存,这也是PM决定的。

支付后逻辑 是 $总单->subOrders()->each( function ( $subOrder ) { GoodsAbstract::factory($subOrder->goods->type)->delivery()

把不同类型的商品按照抽象出不同的分拆逻辑接口。不同类型商品实现各自的逻辑。

1年前 评论

3.1大礼包可以先由运营在后台创建并预减少礼包商品库存(价格这些可以先计算出来,就不用处理9个商品了,因为库存已经减少了,直接扣钱就行,后面删除礼包,按大礼包剩余库存返回商品数量就行了)

3.2第三方接口出现异常可以用户手动退款,或者补发都可以.

3.3第三方充值无法执行退款操作那只能补发商品了.

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!