You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

276 lines
11 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace App\Http\Controllers\Admin;
use App\Helpers\StarterResponseCode;
use App\Models\Parameter;
use App\Models\ParameterDetail;
use Illuminate\Support\Facades\Validator;
class ParameterController extends CommonController
{
/**
* @OA\Get(
* path="/api/admin/parameter/index",
* tags={"数据参数字典"},
* summary="数据参数字典列表",
* description="",
* @OA\Parameter(name="page_size", in="query", @OA\Schema(type="string"), required=false, description="每页显示的条数"),
* @OA\Parameter(name="page", in="query", @OA\Schema(type="string"), required=false, description="页码"),
* @OA\Parameter(name="sort_name", in="query", @OA\Schema(type="string"), required=false, description="排序字段名字"),
* @OA\Parameter(name="sort_type", in="query", @OA\Schema(type="string"), required=false, description="排序类型"),
* @OA\Parameter(name="number", in="query", @OA\Schema(type="string"), required=false, description="编号"),
* @OA\Parameter(name="status", in="query", @OA\Schema(type="string"), required=false, description="状态 0禁用 1启用"),
* @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"),
* @OA\Response(
* response="200",
* description="暂无"
* )
* )
*/
public function index()
{
$all = request()->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数据源idvalue数据值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('删除成功');
}
}