|
|
|
|
|
<?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数据源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('删除成功');
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|