request->get('page_no', 1); $pageSize = $this->request->get('page_size', 15); $type = $this->request->get('type'); $startTime = $this->request->get('start_time'); $endTime = $this->request->get('end_time'); $where = []; if ($type) { $where[] = ['type', '=', $type]; } if ($startTime) { $where[] = ['create_time', '>=', strtotime($startTime)]; } if ($endTime) { $where[] = ['create_time', '<=', strtotime($endTime) + 86399]; } $count = AssetResource::where($where)->count(); $lists = AssetResource::with('users') ->where($where) ->order('id', 'desc') ->page($pageNo, $pageSize) ->select(); return $this->data([ 'count' => $count, 'lists' => $lists, 'page_no' => $pageNo, 'page_size' => $pageSize, ]); } /** * @notes 添加资源及分配账号 */ public function add() { $params = $this->request->post(); if (empty($params['type']) || empty($params['title']) || empty($params['file_url'])) { return $this->fail('请填写完整的资源信息'); } Db::startTrans(); try { $resource = AssetResource::create([ 'type' => $params['type'], 'title' => $params['title'], 'file_url' => $params['file_url'], 'cover_url' => $params['cover_url'] ?? '', ]); // 绑定用户 if (!empty($params['user_ids']) && is_array($params['user_ids'])) { $userResources = []; foreach ($params['user_ids'] as $userId) { $userResources[] = [ 'user_id' => $userId, 'resource_id' => $resource->id, 'create_time' => time(), ]; } (new AssetUserResource())->saveAll($userResources); } Db::commit(); return $this->success('添加并分配成功', ['id' => $resource->id]); } catch (\Exception $e) { Db::rollback(); return $this->fail('操作失败: ' . $e->getMessage()); } } /** * @notes 编辑资源(修改标题、关联账号) */ public function edit() { $params = $this->request->post(); $id = $params['id'] ?? 0; if (empty($id)) { return $this->fail('缺少参数'); } $resource = AssetResource::find($id); if (!$resource) { return $this->fail('资源不存在'); } Db::startTrans(); try { // 更新标题 if (!empty($params['title'])) { $resource->title = $params['title']; $resource->save(); } // 重新绑定用户(先删后加) if (isset($params['user_ids'])) { AssetUserResource::where('resource_id', $id)->delete(); $userIds = is_array($params['user_ids']) ? $params['user_ids'] : []; if (!empty($userIds)) { $userResources = []; foreach ($userIds as $userId) { $userResources[] = [ 'user_id' => $userId, 'resource_id' => $id, 'create_time' => time(), ]; } (new AssetUserResource())->saveAll($userResources); } } Db::commit(); return $this->success('编辑成功'); } catch (\Exception $e) { Db::rollback(); return $this->fail('操作失败: ' . $e->getMessage()); } } /** * @notes 删除资源 */ public function delete() { $id = $this->request->post('id'); if (empty($id)) { return $this->fail('缺少参数'); } Db::startTrans(); try { AssetResource::destroy($id); AssetUserResource::where('resource_id', $id)->delete(); Db::commit(); return $this->success('删除成功'); } catch (\Exception $e) { Db::rollback(); return $this->fail('删除失败'); } } }