整体逻辑:

  1. 前端:
    • 订单详情获取主接口成功:主数据中的maskLayerSwitch为true 才往下执行
      • 热配【MASK_LAYER_SWITCH】
    • setMaskLayerRuleParams 设置入参【带上缓存:orderDetailMaskLayer】
    • 请求api/order/maskLayerHandle
  2. xapi:
    • 判断订单,取热配:正常订单【MASK_LAYER_CONTROL】、扫码住【MASK_LAYER_CONTROL_SMZ_NEW】
    • 判断:前端带的弹窗与xapi配的maping映射,热配是否包含,热配的amount>0
    • 满足push数组,循环数组,对应的弹窗,对应处理,再push进promise请求数组
    • 请求回来,判断 订单状态、城市id、前端缓存处理比较(订单维度结合缓存、时间再进行比较)最后判断优先级、更新缓存、返回弹窗数据 吐给前端

订单状态对应表: http://wiki.17usoft.com/pages/viewpage.action?pageId=23280665
订单详情首屏弹窗.jpg

1、bargain: 砍价弹窗

wiki: http://wiki.17usoft.com/pages/viewpage.action?pageId=56525971

  1. 热配:
  2. "sort": 3, //优先级
  3. "statusIds": [], // 订单状态ID,空数组为不限制
  4. "cityIds": [], // 城市ID,空数组为不限制
  5. "orderSwitch": true, // 订单维度
  6. "amount": 1, //次数,不能为空
  7. "timeDay": 1 //有效时间范围天数,0为不限制
  8. 前端请求砍价请求条件:
  9. wxqbBargain:微信砍价【主数据吐】orderResp.bargin.wxqbBargain
  10. !canContinuePay:是否可以继续支付【主数据吐】orderResp.body.paymentInfo.isPayable
  11. statusId!=13:订单状态客户端code不是13已取消【主数据吐】orderResp.body.eClientStatus.statusId
  12. isExpireTime:过期时间(请求订单主数据时间-创单时间< bargin.expireTime || 86400000)
  13. 入参:
  14. bargain: {
  15. activityId: barginActivityId || '', // 活动id 热配:barginActivityId
  16. hotelName , // 酒店名称
  17. orderMoney: roomPrice || 0, // 订单金额
  18. maxDiscountMoney: bargin.amount || 0, // 最大可砍价金额
  19. isStudent // 是否是学生用户
  20. }
  21. 出参:
  22. bargain: {}
  23. 业务梳理:
  24. 弹窗组成:
  25. 弹窗背景:css
  26. 头部logo: 前端写死【https://m.elongstatic.com/hotel/h5/wechat-xcx/20210401/bargin/logo.png】
  27. 中部文案:前端写死 + 订单主接口吐的 砍价金额
  28. 底部按钮:【查看详情】和【点击领取】 都跳转砍价落地页
  29. 手指:前端写死【https://m.elongstatic.com/hotel/h5/wechat-xcx/20210401/bargin/hand.png】
  30. 弹窗金额:【主数据吐】orderResp.bargin.amount
  31. 底层接口:http://tchotel.vip.elong.com/api/fission/registfromorder 【砍价注册接口】
  32. 返回 !resp.errorCode 为注册成功

订单页首屏弹窗-砍价.png

2、quickRefund:极速退款

wiki: http://wiki.17usoft.com/pages/viewpage.action?pageId=51794203

  1. 热配
  2. "quickRefund": {
  3. "sort": 4,
  4. "statusIds": [
  5. 3, // 待确认
  6. 12, // 待入住
  7. 14, // 已确认
  8. 16, // 已入住
  9. 17 // 已离店
  10. ],
  11. "cityIds": [],
  12. "orderSwitch": false,
  13. "amount": 1,
  14. "timeDay": 0
  15. }
  16. 前端极速退款请求条件:
  17. refundStatus !== -1 【主数据吐】急速退款标识 body.orderQuickRefund.refundStatus
  18. xapi突出数据条件:refundStatus 包含 xapi [0, 1, 3]
  19. 字段对应状态:
  20. 0 : 未退款
  21. 1 : 员工审核退款
  22. 2 : 风控未通过
  23. 3 : 已经极速退款
  24. 4 : 极速退款后订单投noshow
  25. 入参:
  26. "quickRefund": {
  27. "refundStatus": 1 (订单详情主数据返回的)
  28. }
  29. 出参:
  30. "maskData": {
  31. "quickRefund": {
  32. "quickRefundLayerUrl":"https://m.elongstatic.com/hotel/h5/wechat-xcx/20201224/quickrefund.png" // 热配 QUICK_REFUND_LAYER_URL
  33. }
  34. }
  35. 弹窗组成
  36. 图片:xapi https://m.elongstatic.com/hotel/h5/wechat-xcx/20201224/quickrefund.png】
  37. 按钮:前端写死【开心收下】
  38. 点击按钮:动画关闭弹窗,啥也不做
  39. 底层接口:无

急速退款.png

3、flight:机票

wiki: http://wiki.17usoft.com/pages/viewpage.action?pageId=43619325

http://wiki.17usoft.com/pages/viewpage.action?pageId=44824939

  1. 热配条件:
  2. "flight": {
  3. "sort": 9,
  4. "statusIds": [
  5. 3, // 待确认
  6. 14 // 已确认
  7. ],
  8. "cityIds": [],
  9. "orderSwitch": true,
  10. "amount": 1,
  11. "timeDay": 1
  12. }
  13. 前端入参:
  14. flight: {
  15. resaleStatus, // 转让状态:body.orderResaleInfo.resaleStatus
  16. orderOrigin
  17. }
  18. 出参:
  19. "maskData": {
  20. "flight": {
  21. flightAdUrl: "https%3A%2F%2Fwx.17u.cn%2Fmarktingapwebservice%2Factivity%2Fpage%2FAPAC14167EKT12KW05C%3Frefid%3D1465315884"
  22. flightImgUrl: "https://m.elongstatic.com/hotel/h5/wechat-xcx/20210916/plane-business.png"
  23. flightJumpType: 2
  24. flightUrlType: 1 // 1商旅,2机票新用户
  25. }
  26. }
  27. 数据来源:热配:FLIGHT_AD_SWITCH
  28. 弹窗组成:图片
  29. 弹窗图片:后端吐 取的热配
  30. 跳转链接:后端吐 取的热配
  31. 没有按钮:点击整个图片都跳【活动落地页 机票首页(小程序)】
  32. 弹窗展示了之后异步调用:机票券发放接口【/api/order/flightRecharge】接口返回成功与否,就只做了打点
  33. 底层接口:http://servicegw.ly.com/gateway/buddha.recommend/v1/recommend/multiplerecommend/
  34. 【获取用户身份-userTags字段】
  35. 接口wikihttp://wiki.17usoft.com/pages/viewpage.action?pageId=29819099
  36. http://wiki.17usoft.com/pages/viewpage.action?pageId=23278276
  37. 弹窗的跳转:1、商旅用户 商旅专题活动落地页(h5);2、新用户 ==》机票首页(小程序)
  38. 1、仅国内。不含港澳台
  39. 3、订单维度:一个订单一天仅弹一次。
  40. 4、以下维度可在xapi配置:
  41. 1) 图片和链接:根据用户标签判断,分为新客和商旅
  42. 2) 订单状态:目前仅在出行前有效的订单状态弹出:待确认3、已确认14。排除:转让的A单不弹。
  43. 5、获取用户身份:调用如来产品多推荐接口——userTags字段
  44. http://wiki.17usoft.com/pages/viewpage.action?pageId=23278276
  45. 1) 商旅用户:ut_business
  46. 2) 机票新用户:ut_user_new_forhotel
  47. 3)弹窗优先级:ut_business> ut_user_new_forhotel(一个用户只能弹一种)

订单页首屏弹窗-机票.png

4、flightSMZ: 扫码住机票红包

wiki:http://wiki.17usoft.com/pages/viewpage.action?pageId=63342306

  1. 热配:
  2. "flightSMZ": {
  3. "sort": 0,
  4. "statusIds": [
  5. 3, // 待确认
  6. 14 // 已确认
  7. ],
  8. "cityIds": [],
  9. "orderSwitch": true,
  10. "amount": 1,
  11. "timeDay": 1
  12. }
  13. 前端入参:
  14. flightSMZ: {}
  15. 弹窗组成:
  16. 背景图片:前端写死【https://m.elongstatic.com/hotel/h5/wechat-xcx/20210819/smzflight_bg.png】
  17. 标题、领取-截止日期 红包金额 xapi
  18. 底部文案:前端写死【可到[我的-代金券]中查看】
  19. 没有按钮 只能点击关闭
  20. 底层接口:http://promotion-api.vip.elong.com/promotionapi/mergescan/rechargeCoupon【红包直冲】
  21. 接口入参
  22. cityId: string; // 城市id
  23. elCardNo: string; // 用户卡号
  24. from: number; // 来源 1:扫码落地页, 2:酒店详情页,3:订单详情页,4:主流程订单详情页
  25. mHotelId: string; // 酒店id
  26. openId: string; // 微信OpenId
  27. platId: number; // 平台类型(501.微信钱包,601:极速app)
  28. traceId: string; // 请求唯一标示
  29. unionId: string; // 用户unionId
  30. 接口出参
  31. title: string; // 红包标题
  32. staTime: string; // 红包领取日期
  33. endTime: string; // 红包截止日期
  34. amount: number; // 红包金额
  35. 接口逻辑:传用户信息,平台等信息调红包直冲接口,底层判断是否有红包,有数据就展示,没有数据就不展示
  36. 前端:
  37. 1、弹屏出现位置:带有扫码住标识的订单详情页,且只在用户支付完成进入订单详情页时显示,其他场景进入订单详情页不显示
  38. 2、红包直充节点:活动组在订单详情页给一个新的红包接口(支持扩充),前端进入订单详情页调取红包充值接口,根据接口返回结果判断是否显弹屏
  39. 满足领取条件且红包充值成功-显示弹屏
  40. 已充值过红包-不显示弹屏
  41. 不满足领取条件-不显示弹屏

订单页首屏-扫码住机票红包弹窗.png

5、cpcscan:cpc弹窗

  1. 热配条件:
  2. "cpcscan": {
  3. "sort": 8,
  4. "statusIds": [
  5. 3, // 待确认
  6. 14, // 已确认
  7. 16, // 已入住
  8. 17, // 已离店
  9. 21 // 房费已结算
  10. ],
  11. "cityIds": [],
  12. "orderSwitch": true,
  13. "amount": 1,
  14. "timeDay": 1
  15. }
  16. 前端条件 cpcScan.showScan TRUE
  17. 数据来源:订单详情页主接口的cpcScan字段,热配 CPCSCAN_ORDERDETAIL
  18. 前端入参:
  19. cpcscan: {}
  20. 作用:非房的广告位
  21. 弹窗组成:
  22. 图片: xapi 热配
  23. 跳转链接: xapi 热配
  24. 按钮:没有按钮,点击图片,跳浏览得钱页面
  25. 点击图片跳转:浏览得钱页面
  26. 限制条件:不是砍价单 不是扫码住订单 并且 免费住命中 B 或者 A 但是已经领去过免费住得权益 那么也展示

订单页首屏-cpc弹窗.png