商城下单流程各流程判断小计 **下单接口需要验证** 1:是否有扣除商品的库存 2:是否商品信息发生变化导致商品失效 3:是否商品下架 4:商品库存是否足够 5:积分是否满足最大可用积分,因为部分商品不支持使用积分,是否用户积分充足 6:使用积分后商品的实际可退款金额发生变化,即拍下价非原价 7:0元订单使用余额支付接口支付 8:订单在创建时即算好订单如支付成功需要给予的积分数,即(给予积分数*商品数量+给予积分数*商品数量...) 9:当商品使用优惠后,商品的金额分为拍下价格与实际支付金额,最后一个商品的价格应该包含除不尽的情况的价格,如商品买三个商品共计120,使用20优惠后,订单商品总价100,第一个和第二个商品的实际支付价格为33.33,第三个商品的价格为33.34。 10:如果商品的库存被减去后 <= 预警库存,则商品表的is_stock_warning = 1,代表亮起库存警戒。 11:运费采用累加原则,即订单的运费 = 所有商品运费之和 **改价(后台)** 1:更改商品的总价格会引起商品的实付款的变化,即商品实付款 = 商品原价 * 修改后价格 / 订单原价,注意最后一个商品为订单商品实付款 - 前面所有商品实付款之和 2:更改运费会引起每个商品的实付运费的变化,即商品需付运费 = 商品原运费 * 修改后订单运费 / 订单原运费。注意最后一个商品和上面同理。 3:商品运费与总价不一定非要减少,可增加。 4:注意考虑多次改价的计算是否正确。 **取消订单需要验证** 1:取消后库存需要回滚 2:回滚库存可能使商品的警戒线恢复,当然也有可能不恢复,如订单中该商品的其他规格还处在警戒线之下。所以需要测试两种情况 **支付订单需要验证** 1:订单状态是否为1,失效或已经支付不需要重新调起,0元订单不支持微信支付。 2:支付不给予积分,只有完成订单才给予。 3:支付订单需要判断当前订单使用的积分是否足够,并且要求写入积分使用明细记录 4:如是微信支付,则需要在调起支付前判断积分是否足够,在用户支付后计入积分使用明细并扣除积分。 **支付完成** 余额: 1:写入订单状态与支付信息,支付编码为时间格式+三位随机码 2:记录账号明细,并扣除账号对应金额 3:扣除使用的积分,并记录积分明细。 微信支付: 1:写入订单状态与支付信息 2:记录账号明细。注意明细金额不动 3:扣除使用的积分,并记录积分明细。 4:如果订单异常,会往异常表写入一条异常。 **完成订单需要** 1:完成订单需要把销量统计到商品的规格,并且商品的总销量增加。 2:支付成功需要给予用户积分,积分由下单时即计算完成。(注意:积分不是实际支付金额),并且要求写入积分明细记录。退款成功的商品不再给予积分。 **退款订单** 发起退款 1:每个商品都单独计算可退款的金额与可退款的运费,合起来等于订单的实付款,如出现除不尽,订单实付金额>商品可退金额,一般为0.01 2:当修改申请时,需要判断当前修改的该订单状态是否还处于可以申请的状态,以及当前修改的退款状态是否还处在申请中或主动取消(0或1) 3:申请成功,需要更改订单详情商品的退款状态为退款申请中,订单的退款状态为退款中 4:需要验证最大可申请的价格是否正确,特别注意判断改价,以及当商品出现除不尽情况最后一个商品的价格是否正确。 取消退款 1:取消时需要判断退款状态处于1,2,3的状态。 2:取消后订单商品的退款状态需要更新为0 3:如果是订单的最后一个商品的退款取消,需要更新订单的退款状态从退款中改为正常。 同意退款并且为仅退款refund_status = 4(后台) 1:refund_status = 4 2:退完完成需要更新对应退款商品的退款状态为完成。 3:如果商品所有商品退款完成,则订单的退款状态为退款完成。 4:当订单所有商品均退款时需要回退积分。(无论何种退款)目前无红包,有红包同理但不延长红包可用时长 5:退款成功后,退款的商品不再给予积分 6:退款分为微信支付原路退回与余额支付退回,余额支付退回需要验证账户余额与明细是否正确 同意退款并且为退货退款 refund_status = 2(后台) 1:填写回寄地址 2:订单详情商品的refund_status = 2 拒绝退款,商品未回寄 refund_status = -1(后台) 1:拒绝理由必填,同时更新订单详情的退款状态为-1 2:当订单的最后一个退款商品被拒绝后,需要更改订单的状态为正常(refund_status = 0)。 3:当退款被拒绝后,无法继续发起退款。 拒绝退款,商品已回寄(后台) 1:拒绝理由必填,同时更新订单详情的退款状态为-1 2:当订单的最后一个退款商品被拒绝后,需要更改订单的状态为正常(refund_status = 0)。 3:当退款被拒绝后,无法继续发起退款。 后台操作注意应该都要有日志 **签到功能** 1:签到时需要优先检测后台是否开启签到功能 2:判断今日是否已经签到,防止复签 3:给予积分,注意后台修改的时候是带有缓存的,修改成功需要程序自动清除缓存。 4:计算连续签到是否正确 5:判断是否满足连续签到XX天,赠送XX积分。 6:注意,积分统计汇总是即时的,签到完需要判断是否统计正确。