订单业务梳理

generate:初始化订单,生成待审核订单

  1. 校验用户是否存在以及是否被禁用
  2. 校验商品,是否已下架,选购数量是否正,不能为0,不能为null并不能操作5件,检查商品库存,门店会员则检查门店库存
  3. 预售商品,检查预售时间、预售渠道是否满足配置要求
  4. 组装满足条件的商品数据结构
  5. 处理收件人,获取默认收件人信息,如果没有默认收件人则获取收件人第一条数据
  6. 获取优惠券列表,查询此用户所有满足该商品及渠道的优惠券信息,同时将优惠券的数据封装,并筛选优惠可使用平台及跳转类型。优惠券总可使用次数及剩余可用次数,如果未传值默认为1次
  7. 根据前端传过来的数据包装需要的数据
  8. 获取支付方式,配送方式,目前支付方式包括,支付宝付款,微信付款,以及货到付款。配送方式为快递
  9. 划分订单类型为普通订单或者内卖订单
  10. 生成订单数据结构
  11. 获取会员折扣,白金卡会员9折,内卖、预售商品不享受会员折扣,保存订单基本数据。门店会员下单,订单号前缀为"RCK"且不可享受白金会员折扣
  12. 添加订单子项数据
  13. 购物车满赠
  14. 计算订单实际应付金额
  15. 保存订单,订单状态为"等待审核"保存订单子项

 

calculateAmountV2:计算金额

 

  1. 获取收件人id,支付方式id,配送方式id
  2. 校验用户,是否登录或者是否被禁用
  3. 通过订单号获取订单信息,通过收件人id获取收件人信息
  4. 组装订单 需要的数据结构
  5. 处理支付方式和配送方式
  6. 通过地区计算运费,内卖订单金额小于99的运费为12元
  7. 设置支付方式名称和支付方式类型,0为网上支付,1为货到付款
  8. 处理订单状态,如果是待审核订单或者门店订单,订单子项amount赋值给amountPaid
  9. 地址过滤
  10. 优惠券code不为null不是内卖订单,计算优惠券金额。优惠券分为礼品券、现金券、折扣券。
  11. 处理优惠券对应的商品类型,商品分为其他商品、正价商品、折扣商品
  12. 处理不使用优惠券的订单
  13. 计算订单实际支付金额
  14. 处理预售商品,如果订单类型为预售商品且订单状态不是等待支付尾款,直接返回尾款金额;如果订单类型是预售商品且订单状态为支付尾款,预售订单 ios 列表切换支付方式需要重新计算尾款,调用create计算尾款方法;普通商品计算金额,商品价格加手续费加运费加tax减促销金额减优惠券金额减抵扣价;礼品券计算
  15. 更新订单

 

create:清空购物车,扣减库存,优惠券扣减

 

  1. 校验用户,是否登录或者是否被禁用
  2. 处理订单状态不是等待发货的订单
  3. 过滤地区更新地区
  4. 修改订单过期时间,只有第一次点支付或者暂缓支付,设置过期时间,如果后台没有配置支付方式过期时间,默认2小时过期,后边再点付款不会变更过期时间
  5. 判断收获区域是否支持配送
  6. 修改订单状态,如果货到付款,则修改订单状态为等待发货,过期时间设为null;如果是预售订单且订单状态不是等待支付尾款,状态改为等待支付定金,从新计算金额;如果订单是预售且订单状态是等待支付尾款时,更新订单状态为等待支付尾款,过期时间设为null,其他情况直接修改订单状态为等待发货
  7. 扣减库存,如果是货到付款或者0元单,或者订单未分配库存,发送商品销量的消息,检查库存,更新库存。修改IsAllocatedStock为true;
  8. 扣减优惠券,同时修改setIsUseCouponCode字段
  9. 清空购物车
  10. 发送定时释放库存消息,暂缓支付不扣减库存
  11. 更新createDate,更新订单

 

 

cancel:取消订单

 

1、释放优惠券

2、扣减累计消费(整单)

3、更新订单状态(只能取消一次)

 

订单子项:

优惠券金额:amount - amoutPaid
会员折扣金额 price - amount

优惠券分摊金额

现金券

先计算权重,商品金额(price)*商品数量(quantity)/商品总金额(total)

再计算分摊到各个商品的金额, 优惠券金额*权重,最后订单子项amount - 优惠券权重金额 

 

折扣券

amount_paid = amount - 商品金额(price)*商品数量(quantity)*优惠券折扣

 

预售

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值