all(); $list = $this->model->with(underlineToHump($all['show_relation'] ?? []))->where(function ($query) use ($all) { if (isset($all['name'])) { $query->whereHas('user', function ($q) use ($all) { $q->where('name', 'like', '%' . $all['name'] . '%'); }); } if (isset($all['course_name'])) { $query->whereHas('course', function ($q) use ($all) { $q->where('name', 'like', '%' . $all['course_name'] . '%'); }); } if (isset($all['filter']) && !empty($all['filter'])) { foreach ($all['filter'] as $condition) { $key = $condition['key'] ?? null; $op = $condition['op'] ?? null; $value = $condition['value'] ?? null; if (!isset($key) || !isset($op) || !isset($value)) { continue; } // 等于 if ($op == 'eq') { $query->where($key, $value); } // 不等于 if ($op == 'neq') { $query->where($key, '!=', $value); } // 大于 if ($op == 'gt') { $query->where($key, '>', $value); } // 大于等于 if ($op == 'egt') { $query->where($key, '>=', $value); } // 小于 if ($op == 'lt') { $query->where($key, '<', $value); } // 小于等于 if ($op == 'elt') { $query->where($key, '<=', $value); } // 模糊搜索 if ($op == 'like') { $query->where($key, 'like', '%' . $value . '%'); } // 否定模糊搜索 if ($op == 'notlike') { $query->where($key, 'not like', '%' . $value . '%'); } // 范围搜索 if ($op == 'range') { list($from, $to) = explode(',', $value); if (empty($from) || empty($to)) { continue; } $query->whereBetween($key, [$from, $to]); } } } })->orderBy($all['sort_name'] ?? 'id', $all['sort_type'] ?? 'desc'); if (isset($all['is_export']) && !empty($all['is_export'])) { $list = $list->get()->toArray(); $export_fields = $all['export_fields'] ?? []; // 导出文件名字 $tableName = $this->model->getTable(); $filename = (new CustomForm())->getTableComment($tableName); return Excel::download(new BaseExport($export_fields, $list, $tableName), $filename . date('YmdHis') . '.xlsx'); } else { // 输出 $list = $list->paginate($all['page_size'] ?? 20); } return $this->success($list); } /** * @OA\Get( * path="/api/admin/course-appointment-total/show", * tags={"预约次数管理"}, * summary="详情", * description="", * @OA\Parameter(name="id", in="query", @OA\Schema(type="string"), required=true, description="id"), * @OA\Parameter(name="show_relation", in="query", @OA\Schema(type="string"), required=false, description="需要输出的关联关系数组,填写输出指定数据"), * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"), * @OA\Response( * response="200", * description="暂无" * ) * ) */ public function show() { return parent::show(); } /** * @OA\Post( * path="/api/admin/course-appointment-total/batch-update-total", * tags={"预约次数管理"}, * summary="批量调整次数", * description="", * @OA\Parameter(name="course_id", in="query", @OA\Schema(type="string"), required=true, description="课程id"), * @OA\Parameter(name="total", in="query", @OA\Schema(type="string"), required=true, description="次数"), * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"), * @OA\Response( * response="200", * description="暂无" * ) * ) */ public function batchUpdateTotal() { $all = \request()->all(); $messages = [ 'course_id.required' => '课程编号必填', 'total.required' => '次数必填', ]; $validator = Validator::make($all, [ 'course_id' => 'required', 'total' => 'required', ], $messages); if ($validator->fails()) { return $this->fail([StarterResponseCode::START_ERROR_PARAMETER, implode(',', $validator->errors()->all())]); } $this->model->where('course_id', $all['course_id'])->update(['total' => $all['total']]); return $this->success('批量更新成功'); } /** * @OA\Post( * path="/api/admin/course-appointment-total/save", * tags={"预约次数管理"}, * summary="更新或新增", * @OA\Parameter(name="id", in="query", @OA\Schema(type="integer"), required=true, description="id"), * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="验证token"), * @OA\Parameter(name="course_id", in="query", @OA\Schema(type="string"), description="课程id"), * @OA\Parameter(name="user_id", in="query", @OA\Schema(type="string"), description="用户id"), * @OA\Parameter(name="start_time", in="query", @OA\Schema(type="string"), description="开始时间"), * @OA\Parameter(name="end_time", in="query", @OA\Schema(type="string"), description="结束时间"), * @OA\Parameter(name="total", in="query", @OA\Schema(type="string"), description="次数"), * @OA\Response( * response=200, * description="操作成功" * ) * ) */ public function save() { return parent::save(); } /** * @OA\Get( * path="/api/admin/course-appointment-total/destroy", * tags={"预约次数管理"}, * summary="删除", * description="", * @OA\Parameter(name="id", in="query", @OA\Schema(type="string"), required=true, description="id"), * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"), * @OA\Response( * response="200", * description="暂无" * ) * ) */ public function destroy() { return parent::destroy(); } }