From 93a15c4ba8b9e8f86bd9b7bb20dcee49cf2d00a4 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 17 Jul 2024 14:03:37 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B5=84=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controller/ResourceController.php | 50 ++++++++++++++++++++++++++++--- app/model/AccreditFile.php | 9 ++++++ app/model/File.php | 26 +++++++++++++++++ app/model/Resource.php | 55 +++++++++++++++++++---------------- app/model/ResourceFile.php | 21 ++++++++++++- app/model/User.php | 9 ++++++ app/validate/ResourceValidate.php | 6 ++-- route/app.php | 3 +- 8 files changed, 145 insertions(+), 34 deletions(-) create mode 100644 app/model/AccreditFile.php create mode 100644 app/model/User.php diff --git a/app/controller/ResourceController.php b/app/controller/ResourceController.php index ee3c858..fdd827f 100644 --- a/app/controller/ResourceController.php +++ b/app/controller/ResourceController.php @@ -7,24 +7,55 @@ use app\validate\ResourceValidate; use think\facade\Db; use think\facade\Lang; use think\exception\ValidateException; +use think\Request; class ResourceController { + /** * 全部资源 列表 */ - public function index() + public function index(Request $request) { - $resource_list = Resource::where('type', 1)->select(); + $param = $request->param(); + $resource_list = Resource::field('id, name,user_id, resource_type, audit_status, del_audit_status, copyright_type, copyright_status, effective_start_time, effective_end_time,create_time') + ->when(isset($param['resource_type']), function ($query) use ($param) { + $query->where('resource_type', $param['resource_type']); + }) + ->when(isset($param['copyright_type']), function ($query) use ($param) { + $query->where('copyright_type', $param['copyright_type']); + }) + ->when(isset($param['copyright_status']), function ($query) use ($param) { + $query->where('copyright_status', $param['copyright_status']); + }) + ->when(isset($param['create_time']), function ($query) use ($param) { + $query->where('create_time', '>', $param['create_time']); + }) + ->when(isset($param['audit_status']), function ($query) use ($param) { + $query->where('audit_status', $param['audit_status']); + }) + ->when(isset($param['del_audit_status']), function ($query) use ($param) { + $query->where('del_audit_status', $param['del_audit_status']); + }) + ->when(isset($param['order_field']) && isset($param['order_sort']), function ($query) use ($param) { + $query->order($param['order_field'], $param['order_sort']); + }) + ->with('user') + ->where('type', 1) + ->select(); + // $userService = app('userService'); // return $userService->doSomething(); return jsonReturn(0, Lang::get('成功'), $resource_list); } - public function save(Resource $resource) + /** + * 全部资源 新增 + */ + public function save(Resource $resource, Request $request) { - $param = input('post.'); + $param = $request->param(); // 数据验证 try { switch ($param['copyright_type']) { @@ -52,4 +83,15 @@ class ResourceController } return json($res); } + + /** + * 资源 详情 + */ + public function detail(Resource $resource, $id) + { + $resource_detail = $resource::with('user') + ->with('files') + ->find($id); + return jsonReturn(0, Lang::get('成功'), $resource_detail); + } } diff --git a/app/model/AccreditFile.php b/app/model/AccreditFile.php new file mode 100644 index 0000000..63447ab --- /dev/null +++ b/app/model/AccreditFile.php @@ -0,0 +1,9 @@ +files()->saveAll($file_array); + } + /** + * @param $files 素材数组 + * 获得一组素材的大小 + */ + public function getFileSize($files) + { + $size = 0; + foreach ($files as $file) { + $size += $file['size']; + } + return $size; + } } diff --git a/app/model/Resource.php b/app/model/Resource.php index c233329..c4be9ac 100644 --- a/app/model/Resource.php +++ b/app/model/Resource.php @@ -6,41 +6,46 @@ use app\exception\ModelException; class Resource extends Model { + public function user() + { + return $this->belongsTo(User::class); + } + + public function files() + { + return $this->belongsToMany(File::class, ResourceFile::class, 'file_id', 'resource_id'); + } + /** - * @param $param + * @param $param 前端提交的参数 * @return array - * @throws ModelException + * 添加资源 */ public function addResource($param): array { try { + //添加资源的前置操作 + $param = $this->beforeAddResource($param); //插入资源表 - $resource_res = self::create($param); - - //插入素材表 添加素材录入方式 并获取插入后的ids - $file_obj = new File(); - foreach ($param['file'] as $file) { - $file['file_input_mode'] = $param['file_input_mode']; - $file_array[] = $file; - } + $resource = self::create($param); - $file_res = $file_obj->saveAll($file_array); - foreach ($file_res as $item) { - $file_ids[] = $item->id; - } - - //插入资源素材关联表 - foreach ($file_ids as $file_id) { - $resource_file_array[] = [ - 'resource_id' => $resource_res->id, - 'file_id' => $file_id, - ]; - } - $ResourceFile = new ResourceFile(); - $ResourceFile->saveAll($resource_file_array); + //插入素材表 + (new File())->addFile($resource, $param['files'], $param['file_input_mode']); } catch (\Exception $e) { throw new ModelException($e->getMessage()); } - return dataReturn($this->sucCode, $this->addMsg, $resource_res->id); + return dataReturn($this->sucCode, $this->addMsg, $resource->id); + } + + /** + * @param $param 前端提交的参数 + * @return array + * 添加资源前的操作 + */ + public function beforeAddResource($param) + { + $param['size'] = (new File())->getFileSize($param['files']); + //todo 还有状态的啥的 + return $param; } } diff --git a/app/model/ResourceFile.php b/app/model/ResourceFile.php index 17fd8a9..f71250c 100644 --- a/app/model/ResourceFile.php +++ b/app/model/ResourceFile.php @@ -3,7 +3,26 @@ namespace app\model; use app\exception\ModelException; +use think\model\Pivot; -class ResourceFile extends Model +class ResourceFile extends Pivot { + protected $autoWriteTimestamp = true; + /** + * @param int $resource_id 资源id + * @param array $file_ids 素材ids + * @return array + * 手动添加 添加资源素材关联表 + */ + public function addResourceFile($resource_id, $file_ids) + { + foreach ($file_ids as $file_id) { + $resource_file_array[] = [ + 'resource_id' => $resource_id, + 'file_id' => $file_id, + ]; + } + $ResourceFile = new ResourceFile(); + $ResourceFile->saveAll($resource_file_array); + } } diff --git a/app/model/User.php b/app/model/User.php new file mode 100644 index 0000000..95864b0 --- /dev/null +++ b/app/model/User.php @@ -0,0 +1,9 @@ + 'require', "use_range|适用范围" => 'require', "file_input_mode|素材录入方式" => 'require', - "file|素材" => 'require', + "files|素材" => 'require', ]; protected $scene = [ - 'save_purchase' => ['name', 'resource_type', 'accredit_main_body', 'supplier', 'price', 'accredit_file_number', 'use_range', 'file_input_mode', 'file'], - 'save_selfown' => ['name', 'resource_type', 'file_input_mode', 'file'], + 'save_purchase' => ['name', 'resource_type', 'accredit_main_body', 'supplier', 'price', 'accredit_file_number', 'use_range', 'file_input_mode', 'files'], + 'save_selfown' => ['name', 'resource_type', 'file_input_mode', 'files'], // 'update' => ['id', 'title', 'domain', 'parent_id'], // 'setStatus' => ['id', 'status'], ]; diff --git a/route/app.php b/route/app.php index d0fa379..f6d23d1 100644 --- a/route/app.php +++ b/route/app.php @@ -17,8 +17,9 @@ Route::get('think', function () { Route::get('hello/:name', 'index/hello'); Route::group('resource', function () { + Route::get('/index', 'resource/index'); Route::post('/save', 'resource/save'); - Route::rule('/index', 'resource/index'); + Route::get('/detail/:id', 'resource/detail'); }); Route::group('oss', function () {