🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 修正订单唯一码实收金额之和与订单实收金额不相等的误差 **位置:** Common\Lib\OrderLib.class.php **参数:** * @param $order_Id 订单ID **调用:** * 组件文件外调用 ~~~ // 修正订单唯一码实收金额之和与订单实收金额不相等的误差 $my_correct = $my_order->correctPayinAmount($order_id); if (!$my_correct) { M()->rollback(); $result = array('success' => false, 'code' => 5014, 'msg' => '修正唯一码误差失败!'); return $result; } ~~~ **返回:** 修正误差结果 true 成功 false 失败 **完整代码:** ~~~ /** * 修正保留两位小数计算造成的订单唯一码实收金额之和与订单实收金额不相等的误差 * @param $order_id 订单ID * @return bool 修正结果 true成功 false失败 */ public function correctPayinAmount($order_id) { // 查询订单唯一码信息 $map_item['order_id'] = array('eq', $order_id); // 订单ID $map_item['is_delete'] = 0; // 伪删除状态0未删除 $order_items = M('order_item')->where($map_item)->select(); // 计算订单中所有唯一码的实收金额之和 $now_total = 0; foreach ($order_items as $key => $value) { $now_total = $now_total + $value['payin_amount']; } // 查询订单信息 $map_order['id'] = array('eq', $order_id); // 订单ID $map_order['is_delete'] = 0; // 伪删除状态0未删除 $order_info = M('order_list')->where($map_order)->find(); // 修正订单实收金额和唯一码实收金额之和的误差 $citem_id = $order_items[0]['id']; $data['payin_amount'] = $order_items[0]['payin_amount'] + ($order_info['pay_amount'] - $now_total); $res = M('order_item')->where('id='.$citem_id)->save($data); if ($res === false) { return false; } else { return true; } } ~~~