$order_info['goods_num']]); } else { Logic('queue')->cancelOrderUpdateStorage([$order_info['goods_id'] => $order_info['goods_num']]); } $model_pd = Model('predeposit'); //解冻充值卡 $pd_amount = floatval($order_info['rcb_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']; $model_pd->changeRcb('order_cancel', $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']; $model_pd->changePd('order_cancel', $data_pd); } //更新订单信息 $update_order = [ 'order_state' => ORDER_STATE_CANCEL, 'pd_amount' => 0, 'close_time' => time(), 'close_reason' => $msg ]; $update = $model_vr_order->editOrder($update_order, ['order_id' => $order_info['order_id']]); if (!$update) { throw new Exception('保存失败'); } else { QueueClient::push('OnVrOrderCancel', ['order_sn' => $order_info['order_sn']]); } $trans->commit(); return callback(true, '更新成功'); } catch (Exception $e) { $trans->rollback(); return callback(false, $e->getMessage()); } } /** * 支付订单 * @param array $order_info * @param string $role 操作角色 buyer、seller、admin、system 分别代表买家、商家、管理员、系统 * @param string $post * @return array */ public function changeOrderStatePay($order_info, $role, $post) { try { $model_vr_order = Model('vr_order'); $trans = new trans_wapper($model_vr_order, __METHOD__); $model_pd = 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']; $model_pd->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']; $model_pd->changePd('order_comb_pay', $data_pd); } //更新订单状态 $update_order = []; $update_order['order_state'] = ORDER_STATE_PAY; $update_order['payment_time'] = $post['payment_time'] ? strtotime($post['payment_time']) : time(); $update_order['payment_code'] = $post['payment_code']; $update_order['trade_no'] = $post['trade_no']; $update = $model_vr_order->editOrder($update_order, ['order_id' => $order_info['order_id']]); if (!$update) { throw new Exception(L('nc_common_save_fail')); } //发放兑换码 $insert = $model_vr_order->addOrderCode($order_info); if (!$insert) { throw new Exception('兑换码发送失败'); } // 支付成功发送买家消息 $param = []; $param['code'] = 'order_payment_success'; $param['member_id'] = $order_info['buyer_id']; $param['param'] = [ 'order_sn' => $order_info['order_sn'], 'order_url' => urlShop('member_vr_order', 'show_order', ['order_id' => $order_info['order_id']]) ]; QueueClient::push('sendMemberMsg', $param); // 支付成功发送店铺消息 $param = []; $param['code'] = 'new_order'; $param['store_id'] = $order_info['store_id']; $param['param'] = ['order_sn' => $order_info['order_sn']]; QueueClient::push('sendStoreMsg', $param); $trans->commit(); return callback(true, '更新成功'); } catch (Exception $e) { $trans->rollback(); return callback(false, $e->getMessage()); } } public function changeOrderStateSend($order_id) { $model_vr_order = Model('vr_order'); $condition = []; $condition['vr_state'] = 0; $condition['refund_lock'] = ['in', [0, 1]]; $condition['order_id'] = $order_id; $condition['vr_indate'] = ['gt', time()]; $order_code_info = $model_vr_order->getOrderCodeInfo($condition, '*', true); if (!empty($order_code_info)) { $update = $model_vr_order->editOrder(['order_state' => ORDER_STATE_SEND], ['order_id' => $order_id]); if (!$update) { callback(false, '更新失败'); } } return callback(true, '更新成功'); } /** * 完成订单 * @param int $order_id * @return array */ public function changeOrderStateSuccess($order_id) { $model_vr_order = Model('vr_order'); $condition = []; $condition['vr_state'] = 0; $condition['refund_lock'] = ['in', [0, 1]]; $condition['order_id'] = $order_id; $condition['vr_indate'] = ['gt', time()]; $order_code_info = $model_vr_order->getOrderCodeInfo($condition, '*', true); if (!empty($order_code_info)) { $update = $model_vr_order->editOrder(['order_state' => ORDER_STATE_SUCCESS, 'finnshed_time' => time()], ['order_id' => $order_id]); if (!$update) { callback(false, '更新失败'); } } $order_info = $model_vr_order->getOrderInfo(['order_id' => $order_id]); QueueClient::push('OnVrOrderComplete',['order_sn' => $order_info['order_sn']]); //添加会员积分 if (C('points_isuse') == 1) { Model('points')->savePointsLog('order', ['pl_memberid' => $order_info['buyer_id'], 'pl_membername' => $order_info['buyer_name'], 'orderprice' => $order_info['order_amount'], 'order_sn' => $order_info['order_sn'], 'order_id' => $order_info['order_id']], true); } //添加会员经验值 Model('exppoints')->saveExppointsLog('order', ['exp_memberid' => $order_info['buyer_id'], 'exp_membername' => $order_info['buyer_name'], 'orderprice' => $order_info['order_amount'], 'order_sn' => $order_info['order_sn'], 'order_id' => $order_info['order_id']]); return callback(true, '更新成功'); } }