123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- <?php
- namespace app\common\logic;
- use think\facade\Db;
- class Ticketorder
- {
-
- public function changeOrderStatePay($order_info, $role, $post)
- {
- try {
- $TicketOrder = model('TicketOrder');
- Db::startTrans();
- $predeposit_model = model('predeposit');
-
- $rcb_amount = floatval($order_info['rcb_amount']);
- if ($rcb_amount > 0) {
- $data_pd = [];
- $data_pd['member_id'] = $order_info['buyer_id'];
- $data_pd['member_name'] = $order_info['buyer_name'];
- $data_pd['amount'] = $rcb_amount;
- $data_pd['order_sn'] = $order_info['order_sn'];
- $predeposit_model->changeRcb('order_comb_pay', $data_pd);
- }
-
- $pd_amount = floatval($order_info['pd_amount']);
- if ($pd_amount > 0) {
- $data_pd = [];
- $data_pd['member_id'] = $order_info['buyer_id'];
- $data_pd['member_name'] = $order_info['buyer_name'];
- $data_pd['amount'] = $pd_amount;
- $data_pd['order_sn'] = $order_info['order_sn'];
- $predeposit_model->changePd('order_comb_pay', $data_pd);
- }
-
- $update_order = [];
- $update_order['order_state'] = ORDER_STATE_PAY;
- $update_order['payment_time'] = isset($post['payment_time']) ? strtotime($post['payment_time']) : TIMESTAMP;
- $update_order['payment_code'] = $post['payment_code'];
- $update_order['trade_no'] = $post['trade_no'];
- $update = $TicketOrder->edit($update_order, ['id' => $order_info['id']]);
- if (!$update) {
- throw new \think\Exception(lang('ds_common_save_fail'), 10006);
- }
- Db::commit();
- return ds_callback(true, '更新成功');
- } catch (Exception $e) {
- Db::rollback();
- return ds_callback(false, $e->getMessage());
- }
- }
-
- public function pointPay($order_info, $input, $buyer_info)
- {
- $point_ratio = config('app.point_ratio');
- $point_amount = floatval($buyer_info['point'] / $point_ratio);
- if ($point_amount <= 0)
- return $order_info;
- $order_model = model('TicketOrder');
- $predeposit_model = model('predeposit');
- $order_amount = round($order_info['order_amount'] - $order_info['rcb_amount'] - $order_info['pd_amount'], 2);
- $data_point = [];
- $data_point['member_id'] = $buyer_info['member_id'];
- $data_point['union_id'] = $buyer_info['member_wxunionid'];
- $data_point['member_name'] = $buyer_info['member_name'];
- $data_point['amount'] = $order_amount;
- $data_point['order_sn'] = $order_info['order_sn'];
- if ($point_amount >= $order_amount) {
-
- $predeposit_model->changePoint('order_pay', $data_point);
-
- $data_order = [];
- $order_info['order_state'] = $data_order['order_state'] = 40;
- $data_order['payment_time'] = TIMESTAMP;
- $data_order['finished_time'] = TIMESTAMP;
- $data_order['payment_code'] = 'predeposit';
- $order_info['point_amount'] = $data_order['point_amount'] = round($order_info['point_amount'] + ($order_amount * $point_ratio), 2);
- $result = $order_model->edit($data_order, ['id' => $order_info['id']]);
- if (!$result) {
- throw new \think\Exception('订单更新失败', 10006);
- }
- } else {
-
- $data_point['amount'] = $point_amount;
- $predeposit_model->changeRcb('order_freeze', $data_point);
-
- $data_order = [];
- $order_info['point_amount'] = $data_order['point_amount'] = $order_info['point_amount'] + $point_amount * $point_ratio;
- $result = $order_model->editorder($data_order, ['id' => $order_info['id']]);
- if (!$result) {
- throw new \think\Exception('订单更新失败', 10006);
- }
- }
- return $order_info;
- }
- }
|