captain下单流程
2020-08-26 10:12:22 0 举报
业务流程图
作者其他创作
大纲/内容
循环查询eap db:tb_app_discount获取优惠券信息
校验订单所需支付金额是否与前端传入支付金额一致
获取优惠券模板信息
key:CAPTAIN_CART_LIST_ + stuId
优惠校验
获取教材详情数据(批量查eap db:tb_commodity)
获取班级详情数据
delete cache
不通过
已支付(账户余额支付)
判断订单支付状态
if不存在,添加redis,2秒过期
账户/卡校验
db中存在相同数据
OrderException(\"班级已售完\")
if redis中不存在,查询db(eap: jrclass)
if redis不存在,查询db(tb_app_discount_series)
不一致
防重复提交校验
创建订单
续课权限校验
构建订单信息:1、构建订单项(涉及优惠活动最优解计算,巨复杂,性能大户)2、构建订单3、根据账户金额计算是否需要混合支付4、订单项排序
第三方支付金额不一致
存在
LUA脚本运行redis指令,返回剩余库存数量key:stock:class_id: + classId
captain
1、优惠券:已使用或下架2、优惠券用户id和购物车用户id不一致3、优惠券有效期为4、优惠类型为[金额优惠] 优惠金额: 小于等于05、优惠类型为[折扣优惠] 优惠折扣:6、优惠券:同类互斥>17、班级类别/属性 不能使用次优惠券
校验库存
校验优惠券有效性
feign调用(/v1/qualification/check)
key:discount_series_ + 优惠券模板id
payStatus为4(支付成功)
redis
任一班级库存0
rocketmq
修改库存
if 修改后库存0,返还库存if redis不存在,查询tb_jrclass初始化库存,过期时间2小时
事物执行
待支付
hulk
订单项重复校验(查询cap db:captain_order_item)
购物车校验
if redis中不存在,查询db(cap:cart)
hash_key:php_app_data_course_all
获取购物车数据(前端只传入了购物车项id,需要获取对应班级id)
是否存在
校验班级与教材有效性
delete cart数据(cap db:captain_cart)
班级:1、下单用户id和购物车用户不一致2、购物车中对应班级不存在3、已结课不可报名哦4、太受欢迎已满班,请选择其他班级报名哦5、已删除6、已结课不可报名哦7、已停班不可报名哦8、需要您前往校区报名哦9、已停报请联系校区报名10、不可网报请联系校区报名教材:1、所选教材不存在
key:createOrderMD5(购物车商品id拼接)
下单
事物消息topic:ORDER_CREATE_CHANNEL
return
太受欢迎已满班,请选择其他班级报名哦
hulk返回message
结束
insert order&orderItem数据(cap db:captain_order&captain_order_item)
收藏
0 条评论
下一页