validate([ 'id' => ['required', 'array', 'min:1'], ]); $orderList = OrderModel::whereIn('id', $params['id'])->get(); foreach ($orderList as $order) { if ($order->return_status != 0 || $order->pay_status != 1 || $order->settlement_status != 0) { continue; } $order->status = 2; $order->return_status = 2; $order->return_operation_time = time(); $order->save(); // 获取用户余额 $walletInfo = Wallet::where(['member_id' => $order->user_id])->first(); if (!$walletInfo) continue; $before = $walletInfo->available_balance; $after = bcsub($walletInfo->available_balance, $order->amount, 2); $walletInfo->available_balance = $after; $walletInfo->save(); FundsRecord::addData([ 'change_type' => '退款', 'amount' => $order->amount, 'before_balance' => $before, 'after_balance' => $after, 'member_id' => $order->user_id, 'related_id' => $order->id, 'remark' => '体彩订单退款', ]); } DB::commit(); } catch (Exception $e) { DB::rollBack(); return $this->error(HttpStatus::CUSTOM_ERROR, $e->getMessage()); } return $this->success(); } /** * 订单列表 */ public function list() { try { $params = request()->validate([ 'page' => ['nullable', 'integer', 'min:1'], 'limit' => ['nullable', 'integer', 'min:1'], 'id' => ['nullable', 'string'], 'user_id' => ['nullable', 'string'], 'order_id' => ['nullable', 'string'], 'pay_status' => ['nullable', 'integer', 'in:0,1'], 'is_win' => ['nullable', 'integer', 'in:0,1'], 'is_roll' => ['nullable', 'integer', 'in:0,1'], 'settlement_status' => ['nullable', 'integer', 'in:0,1,2,3'], 'return_status' => ['nullable', 'integer', 'in:0,1,2,3'], 'status' => ['nullable', 'integer', 'in:0,1,2,-1'], 'start_time' => ['nullable', 'date', 'date_format:Y-m-d', 'required_with:end_time'], 'end_time' => ['nullable', 'date', 'date_format:Y-m-d', 'required_with:start_time'], ]); $page = request()->input('page', 1); $limit = request()->input('limit', 15); $query = new OrderModel(); if (!empty($params['start_time'])) { $startTime = strtotime($params['start_time'] . " 00:00:00"); $query = $query->where('create_time', '>=', $startTime); } if (!empty($params['end_time'])) { $endTime = strtotime($params['end_time'] . " 23:59:59"); $query = $query->where('create_time', '<=', $endTime); } if (!empty($params['id'])) { $query = $query->where('id', $params['id']); } if (!empty($params['order_id'])) { $query = $query->where('order_id', $params['order_id']); } if (!empty($params['user_id'])) { $query = $query->where('user_id', $params['user_id']); } if (isset($params['status'])) { $query = $query->where('status', $params['status']); } if (isset($params['return_status'])) { $query = $query->where('return_status', $params['return_status']); } if (isset($params['pay_status'])) { $query = $query->where('pay_status', $params['pay_status']); } if (isset($params['is_win'])) { $query = $query->where('is_win', $params['is_win']); } if (isset($params['settlement_status'])) { $query = $query->where('settlement_status', $params['settlement_status']); } if (isset($params['is_roll'])) { $query = $query->where('is_roll', $params['is_roll']); } $count = $query->count(); $list = $query ->forPage($page, $limit) ->orderByDesc('create_time') ->get(); } catch (Exception $e) { return $this->error(HttpStatus::CUSTOM_ERROR,$e->getMessage()); } return $this->success(['total' => $count, 'data' => $list]); } //订单详情 function info() { try { request()->validate([ 'order_id' => ['required', 'string'], ]); $order_id = request()->input('order_id'); $order = OrderModel::where('order_id', $order_id)->first(); if (!$order) throw new Exception('订单不存在'); $order = $order->toArray(); $order['detail'] = json_decode($order['detail'],true); $order['game_result'] = $order['game_result'] ? json_decode($order['game_result'],true) : null; $order['first_name'] = User::where('user_id', $order['user_id'])->value('first_name'); ksort($order); } catch (Exception $e) { return $this->error(HttpStatus::CUSTOM_ERROR,$e->getMessage()); } return $this->success($order); } }