all(); $page = $params['page'] ?? 1; $limit = $params['limit'] ?? 20; $type = $params['type'] ?? ''; $status = $params['status'] ?? ''; $keyword = $params['keyword'] ?? ''; $startTime = $params['start_time'] ?? ''; $endTime = $params['end_time'] ?? ''; $query = PayOrdersModel::where('mark', 1); // 类型筛选 if ($type !== '') { $query->where('type', $type); } // 状态筛选 if ($status !== '') { $query->where('status', $status); } // 关键词搜索 if (!empty($keyword)) { $query->where(function($q) use ($keyword) { $q->where('order_no', 'like', "%{$keyword}%") ->orWhere('account', 'like', "%{$keyword}%") ->orWhere('transaction_id', 'like', "%{$keyword}%") ->orWhereHas('user', function($sq) use ($keyword) { $sq->where('nickname', 'like', "%{$keyword}%") ->orWhere('mobile', 'like', "%{$keyword}%"); }); }); } // 时间范围 if (!empty($startTime)) { $query->where('create_time', '>=', strtotime($startTime)); } if (!empty($endTime)) { $query->where('create_time', '<=', strtotime($endTime . ' 23:59:59')); } $total = $query->count(); $list = $query->with(['user:id,nickname,mobile']) ->orderBy('create_time', 'desc') ->offset(($page - 1) * $limit) ->limit($limit) ->get() ->toArray(); // 格式化数据 foreach ($list as &$item) { $item['total'] = number_format($item['total'], 2, '.', ''); $item['discount'] = number_format($item['discount'], 2, '.', ''); $item['pay_total'] = number_format($item['pay_total'], 2, '.', ''); $item['create_time_text'] = date('Y-m-d H:i:s', (int)$item['create_time']); $item['update_time_text'] = date('Y-m-d H:i:s', (int)$item['update_time']); // 用户信息 if (isset($item['user'])) { $item['user_nickname'] = $item['user']['nickname'] ?? ''; $item['user_mobile'] = $item['user']['mobile'] ?? ''; } } return [ 'code' => 0, 'msg' => '获取成功', 'data' => $list, 'count' => $total ]; } /** * 获取详情 */ public function getInfo($id = null) { if ($id === null) { $id = request()->input('id'); } $info = PayOrdersModel::where('id', $id) ->where('mark', 1) ->with(['user:id,nickname,mobile', 'meal']) ->first(); if (!$info) { return ['code' => 1, 'msg' => '记录不存在']; } $info = $info->toArray(); $info['total'] = number_format($info['total'], 2, '.', ''); $info['discount'] = number_format($info['discount'], 2, '.', ''); $info['pay_total'] = number_format($info['pay_total'], 2, '.', ''); $info['create_time_text'] = date('Y-m-d H:i:s', (int)$info['create_time']); $info['update_time_text'] = date('Y-m-d H:i:s', (int)$info['update_time']); return [ 'code' => 0, 'msg' => '获取成功', 'data' => $info ]; } /** * 删除 */ public function delete() { $id = request()->input('id'); $order = PayOrdersModel::where('id', $id) ->where('mark', 1) ->first(); if (!$order) { return ['code' => 1, 'msg' => '记录不存在']; } $order->mark = 0; $order->save(); return ['code' => 0, 'msg' => '删除成功']; } /** * 批量删除 */ public function deleteAll($ids = null) { if ($ids === null) { $ids = request()->input('ids', []); } $count = PayOrdersModel::whereIn('id', $ids) ->where('mark', 1) ->update(['mark' => 0]); return [ 'code' => 0, 'msg' => "成功删除{$count}条记录" ]; } }