all(); $list = Parameter::where(function ($query) use ($all) { if (isset($all['number'])) { $query->where('number', 'like', '%' . $all['number'] . '%'); } if (isset($all['status'])) { $query->where('status', $all['status']); } })->orderBy($all['sort_name'] ?? 'id', $all['sort_type'] ?? 'desc') ->paginate($all['page_size'] ?? 20); return $this->success($list); } /** * @OA\Post( * path="/api/admin/parameter/store", * tags={"数据参数字典"}, * summary="添加数据参数字典", * description="", * @OA\Parameter(name="number", in="query", @OA\Schema(type="int"), required=true, description="编号"), * @OA\Parameter(name="name", in="query", @OA\Schema(type="string"), required=true, description="名字"), * @OA\Parameter(name="pid", in="query", @OA\Schema(type="string"), required=true, description="父id"), * @OA\Parameter(name="sort", in="query", @OA\Schema(type="string"), required=true, description="排序"), * @OA\Parameter(name="status", in="query", @OA\Schema(type="string"), required=true, description="状态 0禁用1启用"), * @OA\Parameter(name="remark", in="query", @OA\Schema(type="string"), required=true, description="备注"), * @OA\Parameter(name="detail_list", in="query", @OA\Schema(type="object"), required=false, description="字典明细二维数组。包括:key数据源id,value数据值,sort排序,status状态0禁用1启用,remark备注"), * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"), * @OA\Response( * response="200", * description="暂无" * ) * ) */ public function store() { $all = \request()->all(); $messages = [ 'number.required' => '编号必填', 'name.required' => '名称必填', ]; $validator = Validator::make($all, [ 'number' => 'required', 'name' => 'required' ], $messages); if ($validator->fails()) { return $this->fail([StarterResponseCode::START_ERROR_PARAMETER, implode(',', $validator->errors()->all())]); } $model = new Parameter(); // number唯一性检测 $check = $model->where('number', $all['number'])->first(); if ($check) { return $this->fail([StarterResponseCode::START_ERROR_BUSINESS, '编号已存在']); } $all['admin_id'] = 0; $model->fill($all); $model->save(); // 新增附件表 if (isset($all['detail_list']) && !empty($all['detail_list'])) { $model->detail()->createMany($all['detail_list']); } return $this->success('添加成功'); } /** * @OA\Get( * path="/api/admin/parameter/show", * tags={"数据参数字典"}, * summary="数据参数字典详情", * description="", * @OA\Parameter(name="id", in="query", @OA\Schema(type="string"), required=false, description="id值或数组"), * @OA\Parameter(name="number", in="query", @OA\Schema(type="string"), required=false, description="number编号值或数组"), * @OA\Parameter(name="pid", in="query", @OA\Schema(type="string"), required=false, description="父id值或数组"), * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"), * @OA\Response( * response="200", * description="暂无" * ) * ) */ public function show() { $all = \request()->all(); $detail = []; if (isset($all['id'])) { $detail = Parameter::with(['detail' => function ($query) { $query->orderBy('sort', 'asc'); }]); if (is_array($all['id'])) { $detail = $detail->whereIn('id', $all['id'])->get(); } else { $detail = $detail->where('id', $all['id'])->first(); } } if (isset($all['number'])) { $detail = Parameter::with(['detail' => function ($query) { $query->orderBy('sort', 'asc'); }]); if (is_array($all['number'])) { $detail = $detail->whereIn('number', $all['number'])->get(); } else { $detail = $detail->where('number', $all['number'])->first(); } } if (isset($all['pid'])) { $detail = Parameter::with(['detail' => function ($query) { $query->orderBy('sort', 'asc'); }]); if (is_array($all['pid'])) { $detail = $detail->whereIn('pid', $all['pid'])->get(); } else { $detail = $detail->where('pid', $all['pid'])->first(); } } return $this->success($detail); } /** * @OA\Post( * path="/api/admin/parameter/save", * tags={"数据参数字典"}, * summary="更新数据参数字典", * description="", * @OA\Parameter(name="id", in="query", @OA\Schema(type="int"), required=true, description="Id"), * @OA\Parameter(name="number", in="query", @OA\Schema(type="int"), required=true, description="编号"), * @OA\Parameter(name="name", in="query", @OA\Schema(type="string"), required=true, description="名字"), * @OA\Parameter(name="pid", in="query", @OA\Schema(type="string"), required=true, description="父id"), * @OA\Parameter(name="sort", in="query", @OA\Schema(type="string"), required=true, description="排序"), * @OA\Parameter(name="status", in="query", @OA\Schema(type="string"), required=true, description="状态 0禁用1启用"), * @OA\Parameter(name="remark", in="query", @OA\Schema(type="string"), required=true, description="备注"), * @OA\Parameter(name="detail_list", in="query", @OA\Schema(type="object"), required=false, description="字典明细二维数组。包括:id数据原始id,有就传没有就传空,value数据值,sort排序,status状态0禁用1启用,remark备注"), * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"), * @OA\Response( * response="200", * description="暂无" * ) * ) */ public function save() { $all = \request()->all(); $messages = [ 'id.required' => 'Id必填', 'number.required' => '编号必填', 'name.required' => '名称必填', ]; $validator = Validator::make($all, [ 'id' => 'required', 'number' => 'required', 'name' => 'required' ], $messages); if ($validator->fails()) { return $this->fail([StarterResponseCode::START_ERROR_PARAMETER, implode(',', $validator->errors()->all())]); } // number唯一性检测 $check = Parameter::where('number', $all['number'])->where('id', '!=', $all['id'])->first(); if ($check) { return $this->fail([StarterResponseCode::START_ERROR_BUSINESS, '编号已存在']); } $model = Parameter::find($all['id']); $model->fill($all); $model->save(); // 更新关联表 if (isset($all['detail_list']) && !empty($all['detail_list'])) { foreach ($all['detail_list'] as $key => $detail) { if (isset($detail['id'])) { // 更新 (ParameterDetail::find($detail['id']))->fill($detail)->save(); } else { // 新增 $model->detail()->create($detail); } } } return $this->success('更新成功'); } /** * @OA\Get( * path="/api/admin/parameter/delete", * 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 delete() { $all = \request()->all(); $messages = [ 'id.required' => 'Id必填', ]; $validator = Validator::make($all, [ 'id' => 'required' ], $messages); if ($validator->fails()) { return $this->fail([StarterResponseCode::START_ERROR_PARAMETER, implode(',', $validator->errors()->all())]); } Parameter::where('id', $all['id'])->delete(); ParameterDetail::where('parameter_id', $all['id'])->delete(); return $this->success('删除成功'); } /** * @OA\Get( * path="/api/admin/parameter/detail-delete", * 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 deleteDetail() { $all = \request()->all(); $messages = [ 'id.required' => 'Id必填', ]; $validator = Validator::make($all, [ 'id' => 'required' ], $messages); if ($validator->fails()) { return $this->fail([StarterResponseCode::START_ERROR_PARAMETER, implode(',', $validator->errors()->all())]); } ParameterDetail::where('id', $all['id'])->delete(); return $this->success('删除成功'); } }