dFinishOrder[getFeeDetail重构](1)
2016-03-31 16:41:39 2 举报
AI智能生成
`dFinishOrder[getFeeDetail重构]` 是一个函数或方法,它可能是用于处理订单的完成和费用明细的获取。从名称来看,它可能涉及到订单的完成状态和费用明细的重构。重构通常指的是对代码进行改进以提高可读性、可维护性和性能的过程。这个函数可能接收一个参数 `1`,该参数可能表示某个特定的订单或操作。通过调用这个函数,我们可以获取与该订单相关的费用明细信息,并对其进行重构以适应特定的需求或场景。
作者其他创作
大纲/内容
场景
nativeapp
1.司机正常结束行程/司机出账
2、服务管控-乘客取消
预约单走老管控
试乘试驾单走老管控
快车+拼车+专车实时单走新管控
依赖getfeedetail
专车预约+接送机全部走新管控
功能开发中
3.乘客历史订单查询
4.崩溃后恢复
6.乘客获取支付信息
7.乘客取消行程时,如果需要乘客支付取消行程费用
8.司机给乘客充值
9、其他待确认使用场景
pGetPayInfo
pGetFeeDetail
pGetOverdraftOrder
dfinishorder
mis关单
webapp
快车
专车
企业叫车
web页面
分支主题
nativeapp
接送机
试乘试驾
商业调用openApi的getFeedetail给乘客推送账单
乘客崩溃恢复商业自己实现
场景代码
nativeapp
1.controllers->driver->dFinishOrder
2.controllers->passenger->pCancelTrip
3.controllers->passenger->pGetOrderDetail
4.controllers->passenger->pGetOverdraftOrder?
6.controllers->passenger->pGetPayInfo
7.controllers->passenger->pGetFeeDetail
8.controllers->driver->dRechargeToPassenger
老:getFeeDetail 新getFeeDetailChange
webapp
企业叫车
web页面
nativeapp
1.controllers->driver->dFinishOrder
5.controllers->b2b->pCancelTrip
场景CASE代码逻辑梳理
nativeapp手机端
1.司机正常结束行程(司机端接口)
getFeeDetailForDriBill司机出账
tip_fee>=0.0
计算$aPrice:司乘计价分离吗?extra_type&&o_price_separate?
yes
CityPriceNew->getCurrentCityPriceByArea
no
CityPrice->getCurrentCityPriceByArea
传进来的费用明细数组费用明细数组aOrderValuation为empty?
yes
orderResult有结果?有费用明细(redis里面 O_ORDER_RESULT_INFO_$distirct@$order_id的key存在?)赋值费用明细数组aOrderValuation
yes
获取redis里面费用明细数组$aOrderValuation变量里各个值:
dynamic_price>=0.0
limit_fee>=0.0
limit_pay>=0.0
pay_tip>=0
voucher_id!=''&&is_pay!=1
yes
验证绑定的券是否可用并返回(调用_validOrderCoupon)
$aOrderValuation==nil
yes:errno=2109
no
返回券相关信息_orderCouponInfo
coupon_id
coupon_money
coupon_discount
no
start_price
total_fee
normal_fee
获取地速行驶时间total_low_speed_time
total_low_speed_fee
highway_fee
bridge_fee
park_fee
other_fee
其他费用描述other_fee_desc
empty_fee
night_fee
乘客券支付voucher_pay
乘客折扣voucher_discount
balance_pay
card_pay
乘客微信支付wx_pay
存在一口价 订单信息的cap_price>0?
yes
计算$dCapPriceDeduct;且公式:$dCapPriceDeduct=start_price+normal_fee+total_low_speed_fee+actual_empty_fee+actual_night_fee-cap_price; if $dCapPriceDeduct>0 then $dCapPriceDeduct else 0;
no
no
起步很短,还没有接收司机端上报的坐标,导致缓存里没有计费数据,这种基础科目只有起步价
start_price取$aPrice数组里的
传进来的$iHighwayFee
传进来的$iBridgeFee
传进来的$iParkFee
传进来的$iTipFee
传进来的$iOtherFee
计算的$iTmpPunishPassenger
计算的$iTmpForwardPassenger
计算基础费用(包含最低消费)limit_pay
$iActualFee=$aPrice['start_price']+limit_pay
计算$iDynamicFee
计算$dTotalFee:公式: $dTotalFee = $iActualFee + $iHighwayFee + $iBridgeFee + $iParkFee + $iTipFee + $iDynamicFee + $iOtherFee + $iTmpPunishPassenger - $iTmpForwardPassenger
有一口价 cap_price>0?
计算$dCapPriceDeduct 且:$dCapPriceDeduct=$iActualFee - $aOrderInfo['cap_price'];if $dCapPriceDeduct<0 then 0 else $dCapPriceDeduct
订单状态11:就位后改派
$bBeginCharge = FALSE
$dTotalFee = 0
no
司机正常出账
获取或设置aOrderValuation数组中值,准备数据
没有actual_fee?
yes
设置start_fee=$aPrice['start_price']
no
有start_fee和actual_total_normal_fee?
yes
actual_total_normal_fee
保留start_fee 小数点后1位
total_low_speed_fee
actual_empty_fee
actual_night_fee
normal_time_fee
重新 计算$iActualFee:$iActualFee = $aOrderValuation['start_fee'] + $aOrderValuation['actual_total_normal_fee'] + $aOrderValuation['total_low_speed_fee']
+ $aOrderValuation['actual_empty_fee'] + $aOrderValuation['actual_night_fee'] + $aOrderValuation['normal_time_fee']
no
$iActualFee=actual_fee并保留小数点后1位
actual_total_normal_fee!=0
normal_fee=actual_total_normal_fee并保留小数点后1位
计算基础费用(包含最低消费)
拼车单:limit_fee=0,limit_pay=0.0
非拼车单:
1.没有最低消费:limit_fee=0,limit_pay=0.0
2.消费金额大于等于最低消费:limit_fee>0,limit_pay=0.0
3. 消费金额小于最低消费:limit_fee>0,limit_pay= limit_fee-actual_fee
计算动态调价费用$iDynamicFee
拼车单
start_price = if cap_price then 一口价cap_price else 0.0
非拼车单
计算基本费用,为计算$iDynamicFee做准备(准备$totalFee)
start_price= if $aOrderValuation['start_fee'] then $aOrderValuation['start_fee'] else 0.0
normal_fee=if $aOrderValuation['actual_total_normal_fee'] then $aOrderValuation['actual_total_normal_fee'] else 0.0
low_speed_fee=if $aOrderValuation['total_low_speed_fee'] then $aOrderValuation['total_low_speed_fee'] else 0.0
normal_time_fee=if $aOrderValuation['normal_time_fee'] then $aOrderValuation['normal_time_fee'] else 0.0
night_fee=if $aOrderValuation['actual_night_fee'] then $aOrderValuation['actual_night_fee'] else 0.0
empty_fee=if $aOrderValuation['actual_empty_fee'] then $aOrderValuation['actual_empty_fee'] else 0.0
limit_pay=if $aOrderValuation['limit_pay'] then $aOrderValuation['limit_pay'] else 0.0
(拼车/非拼车)订单记录的dynamic_price==0?
yes
$dynamicPrice=0
no
动态调价倍数?extra_type &&o_dynamic
yes
计算$dynamicPrice = round($totalFee * $dynamicMultiple) 其中:$dynamicMultiple = round(($orderInfo['dynamic_price']/1000) , 1); $totalFee = $startPrice+$normalFee+$lowSpeedFee+$timeFee+$emptyFee+$nightFee+$limitPay
no
$dynamicPrice = $orderInfo['dynamic_price']
最后:计算司机账单¥$dTotalFee
$dTotalFee = $iActualFee + $iHighwayFee + $iBridgeFee + $iParkFee + $iTipFee + $iDynamicFee + $iOtherFee + $iTmpPunishPassenger - $iTmpForwardPassenger;
订单状态=4 &&起步价 + 动态调价 + 小费>$dTotalFee 则计费中拦截:判定为司机端计算得到的total_fee和base_fee有异常 返回errno:50101
fixed_price_tip一口价抵扣计算
$dCapPriceDeduct = max{ $iActualFee - $aOrderInfo['cap_price'],0}
计算$dCapPrice
$dCapPrice = $aOrderInfo['cap_price'] + $iHighwayFee + $iBridgeFee + $iParkFee + $iTipFee + $iDynamicFee + $iOtherFee + $iTmpPunishPassenger - $iTmpForwardPassenger;
(订单完成1||订单状态完成5||乘客取消抢单前取消7||订单改派8)&&订单可以用券 则:获取券信息$aVoucherInfo
计算$dSmallFee
拼车单
订单状态:改派8
$dSmallFee = $iTmpPunishPassenger - $iTmpForwardPassenger; // 惩罚 - 奖励
非取消状态7的其他
$dSmallFee = $dCapPrice
非拼车单
$dSmallFee=[if cap_price==0 then $dTotalFee else min{dCapPrice,$dTotalFee}]
计算$dWillPay和$dAccBalanceDeduct
余额不够支付
yes
balance_pay=$dAccBalanceDeduct = $dAccountBalance
$dWillPay = $dInsertWillPay - $dAccountBalance
no
balance_pay=$dAccBalanceDeduct = $dInsertWillPay
乘客端下发消息内容
pay_titile
拼车单
$dPassengerTotalFee=$dSmallFee
非拼车单
if $dTotalFee ==0 then start_price else $dTotalFee 即:出账为0则起步价
balance_pay_tip
balance_pay_tip=$dAccountBalance
其他费用信息
验证微信代扣用户 并组装账单消息
已经支付is_pay=1,继续组装账单信息
默认绑券处理,返回券系统返回的券信息,并得出$dWillPay
最后,组装返回数组
errno=0
send_msg
insert_order_result
fields
balance
total_fee
will_pay
business_pay_type
limit_fee
2.乘客取消
getFeeDetailForPassengerCancel
是行程很短,计价之前的取消吗?(start_price=0?)订单状态7
yes
$bBeginCharge = FALSE
no
start_price>=0.0
有低速行驶费total_low_speed_fee
乘客加价tip_fee>=0.0
iTmpPunishPassenger>=0.0
是拼车单吗?(extra_type不为0&&o_carpool)
yes
计算司机总费用:$dTotalFe=total_low_speed_fee+tip_fee+iTmpPunishPassenger
计算司机最低费用$dSmallFee:计算规则:min($dCapPrice,$dTotalFee中);其中:$dCapPrice=cap_price+highway_fee+bridge_fee+park_fee+tip_fee+dynamic_price+other_fee+iTmpPunishPassenger-$iTmpForwardPassenger
乘客端下发消息内容:pay_title=$dSmallFee
no
计算司机总费用:$dTotalFe=start_price+total_low_speed_fee+normal_time_fee+tip_fee+iTmpPunishPassenger
乘客端下发消息内容:pay_title={if $dTotalFee=0 then start_price else $dTotalFee}
乘客加价tip_fee为0
动态调价dynamic_price为0
limit_pay=0
limit_fee=0
cap_price=0
平台支付?pay_type=2
yes
will_pay=0($dWillPay)
balance_pay_tip=0($dAccBalanceDeduct)
$dInsertWillPay=0
webapp端
1.司机正常结束行程(司机端接口)
企业叫车单
nativeapp
预约单
专车
快车
拼车
不拼车
包车
实时单
专车
快车
拼车
不拼车
包车
web
测试方法
功能测试
代码diff
结果diff
老getFeeDetail函数验证
新getFeeDetail函数验证
编写两个函数调用的case,构造各种情况参数参数,批量做结果diff
系统测试
nativeapp/专车、快车、拼车/实时、预约。特殊车型如800 小滴
司机结束行程
乘客取消
乘客历史订单查询
崩溃恢复 即到达后强制退出app,下次进入
乘客到达确认费用
不支付,下次进入支付
司机给乘客充值
webapp/专车、快车/实时、预约
司机结束行程
乘客取消
乘客历史订单查询
崩溃恢复 即到达后强制退出app,下次进入
乘客到达确认费用
不支付,下次进入支付
司机给乘客充值
企业叫车:专车、快车/实时 (web叫、nativeapp叫)、!注意包车服务
司机结束行程
企业取消
乘客历史订单查询
崩溃恢复 即到达后强制退出app,下次进入
乘客到达确认费用
不支付,下次进入支付
司机给乘客充值
测试CASE
正常CASE
企业平台叫车
企业
快车/专车单
行程中
司机正常出账
无小费/有小费
专车
司乘计价分离
yes
普通订单
子主题 6
子主题 7
子主题 8
子主题 9
子主题 10
时租订单
使用套餐
不使用套餐
接机订单
使用套餐
不使用套餐
送机订单
使用套餐
不使用套餐
试乘试驾
使用套餐
不使用套餐
no
普通订单
时租订单
使用套餐
不使用套餐
接机订单
使用套餐
不使用套餐
送机订单
使用套餐
不使用套餐
试乘试驾
使用套餐
不使用套餐
有高速费
有路桥费
有停车费
有小费
有其他费用
有一口价吗?
乘客取消了吗?
no
司机正常出账
出账流程
yes
乘客取消流程
有用券吗?
出账流程
有余额吗
企业用户吗
支持何种支付方式
是否免密用户
快车
司乘计价分离
yes
普通订单
时租订单
使用套餐
不使用套餐
接机订单
使用套餐
不使用套餐
送机订单
使用套餐
不使用套餐
拼车
试乘试驾
使用套餐
不使用套餐
no
普通订单
时租订单
使用套餐
不使用套餐
接机订单
使用套餐
不使用套餐
送机订单
使用套餐
不使用套餐
拼车
试乘试驾
使用套餐
不使用套餐
有高速费
有路桥费
有停车费
有小费
有其他费用
有一口价吗?
乘客取消了吗?
no
司机正常出账
出账流程
yes
乘客取消流程
有动态调价吗?
有用券吗?
出账流程
乘客查看账单
账单有券
无小费/有小费
专车
司乘计价分离
yes
普通订单
时租订单
使用套餐
不使用套餐
接机订单
使用套餐
不使用套餐
送机订单
使用套餐
不使用套餐
试乘试驾
使用套餐
不使用套餐
no
普通订单
时租订单
使用套餐
不使用套餐
接机订单
使用套餐
不使用套餐
送机订单
使用套餐
不使用套餐
试乘试驾
使用套餐
不使用套餐
有高速费
有路桥费
有停车费
有小费
有其他费用
有一口价吗?
乘客取消了吗?
no
司机正常出账
出账流程
yes
乘客取消流程
有用券吗?
出账流程
快车
司乘计价分离
yes
普通订单
时租订单
使用套餐
不使用套餐
接机订单
使用套餐
不使用套餐
送机订单
使用套餐
不使用套餐
拼车
试乘试驾
使用套餐
不使用套餐
no
普通订单
时租订单
使用套餐
不使用套餐
接机订单
使用套餐
不使用套餐
送机订单
使用套餐
不使用套餐
拼车
试乘试驾
使用套餐
不使用套餐
有高速费
有路桥费
有停车费
有小费
有其他费用
有一口价吗?
乘客取消了吗?
no
司机正常出账
出账流程
yes
乘客取消流程
有动态调价吗?
有用券吗?
出账流程
账单无券
无小费/有小费
专车
司乘计价分离
yes
普通订单
时租订单
使用套餐
不使用套餐
接机订单
使用套餐
不使用套餐
送机订单
使用套餐
不使用套餐
试乘试驾
使用套餐
不使用套餐
no
普通订单
时租订单
使用套餐
不使用套餐
接机订单
使用套餐
不使用套餐
送机订单
使用套餐
不使用套餐
试乘试驾
使用套餐
不使用套餐
有高速费
有路桥费
有停车费
有小费
有其他费用
有一口价吗?
乘客取消了吗?
no
司机正常出账
出账流程
yes
乘客取消流程
有用券吗?
出账流程
快车
司乘计价分离
yes
普通订单
时租订单
使用套餐
不使用套餐
接机订单
使用套餐
不使用套餐
送机订单
使用套餐
不使用套餐
拼车
试乘试驾
使用套餐
不使用套餐
no
普通订单
时租订单
使用套餐
不使用套餐
接机订单
使用套餐
不使用套餐
送机订单
使用套餐
不使用套餐
拼车
试乘试驾
使用套餐
不使用套餐
有高速费
有路桥费
有停车费
有小费
有其他费用
有一口价吗?
乘客取消了吗?
no
司机正常出账
出账流程
yes
乘客取消流程
有动态调价吗?
有用券吗?
出账流程
乘客取消
发单前取消
无小费/有小费
专车
司乘计价分离
yes
普通订单
时租订单
使用套餐
不使用套餐
接机订单
使用套餐
不使用套餐
送机订单
使用套餐
不使用套餐
试乘试驾
使用套餐
不使用套餐
no
普通订单
时租订单
使用套餐
不使用套餐
接机订单
使用套餐
不使用套餐
送机订单
使用套餐
不使用套餐
试乘试驾
使用套餐
不使用套餐
快车
司乘计价分离
yes
普通订单
时租订单
使用套餐
不使用套餐
接机订单
使用套餐
不使用套餐
送机订单
使用套餐
不使用套餐
拼车
试乘试驾
使用套餐
不使用套餐
no
普通订单
时租订单
使用套餐
不使用套餐
接机订单
使用套餐
不使用套餐
送机订单
使用套餐
不使用套餐
拼车
试乘试驾
使用套餐
不使用套餐
行程中取消,没券
无小费/有小费
专车
司乘计价分离
yes
普通订单
时租订单
使用套餐
不使用套餐
接机订单
使用套餐
不使用套餐
送机订单
使用套餐
不使用套餐
试乘试驾
使用套餐
不使用套餐
no
普通订单
时租订单
使用套餐
不使用套餐
接机订单
使用套餐
不使用套餐
送机订单
使用套餐
不使用套餐
试乘试驾
使用套餐
不使用套餐
有高速费
有路桥费
有停车费
有小费
有其他费用
快车
司乘计价分离
yes
普通订单
时租订单
使用套餐
不使用套餐
接机订单
使用套餐
不使用套餐
送机订单
使用套餐
不使用套餐
拼车
试乘试驾
使用套餐
不使用套餐
no
普通订单
时租订单
使用套餐
不使用套餐
接机订单
使用套餐
不使用套餐
送机订单
使用套餐
不使用套餐
拼车
试乘试驾
使用套餐
不使用套餐
有高速费
有路桥费
有停车费
有小费
有其他费用
有动态调价吗?
行程中取消,用券
无小费/有小费
专车
司乘计价分离
yes
普通订单
时租订单
使用套餐
不使用套餐
接机订单
使用套餐
不使用套餐
送机订单
使用套餐
不使用套餐
试乘试驾
使用套餐
不使用套餐
no
普通订单
时租订单
使用套餐
不使用套餐
接机订单
使用套餐
不使用套餐
送机订单
使用套餐
不使用套餐
试乘试驾
使用套餐
不使用套餐
有高速费
有路桥费
有停车费
有小费
有其他费用
快车
司乘计价分离
yes
普通订单
时租订单
使用套餐
不使用套餐
接机订单
使用套餐
不使用套餐
送机订单
使用套餐
不使用套餐
拼车
试乘试驾
使用套餐
不使用套餐
no
普通订单
时租订单
使用套餐
不使用套餐
接机订单
使用套餐
不使用套餐
送机订单
使用套餐
不使用套餐
拼车
试乘试驾
使用套餐
不使用套餐
有高速费
有路桥费
有停车费
有小费
有其他费用
有动态调价吗?
乘客看历史详情
正常结束单
乘客取消单
崩溃恢复
就位后改派(关单)
异常CASE
district为空
验证errno=2001
oid为空
验证errno=2001
按district和oid查不到
验证errno=2001
redis里以O_ORDER_RESULT_INFO*的订单key有记录
(起步价 + 动态调价 + 小费)>total_fee &&order_status=4 开始计费状态
验证errno=50101
更新ORDER_RESULT失败
验证errno=4004
绑券处理失败
验证errno=2109
环境支持
webapp环境
企业web&企业native环境
native app环境
券系统
计价系统
0 条评论
下一页