pluck('company_tag'); $companiesTags = $companiesTags->flatten()->implode(','); $companiesTags = array_unique(explode(',', $companiesTags)); // 去除$companiesTags中包含小数点的元素 $companiesTags = array_filter($companiesTags, function ($item) { return !strpos($item, '.'); }); $companiesTags = array_values($companiesTags); return $this->success(compact('companiesTags')); } /** * @OA\Get( * path="/api/admin/company/index", * tags={"公司管理"}, * summary="列表", * description="", * @OA\Parameter(name="is_export", in="query", @OA\Schema(type="string"), required=false, description="是否导出0否1是"), * @OA\Parameter(name="export_fields", in="query", @OA\Schema(type="string"), required=false, description="需要导出的字段数组"), * @OA\Parameter(name="filter", in="query", @OA\Schema(type="string"), required=false, description="查询条件。数组"), * @OA\Parameter(name="show_relation", in="query", @OA\Schema(type="string"), required=false, description="需要输出的关联关系数组,包括:teacher,courseSettings,coursePeriods"), * @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="token", in="query", @OA\Schema(type="string"), required=true, description="token"), * @OA\Parameter(name="course_type_id", in="query", @OA\Schema(type="string"), required=true, description="课程体系id"), * @OA\Parameter(name="course_name", in="query", @OA\Schema(type="string"), required=true, description="课程名称"), * @OA\Parameter(name="user_name", in="query", @OA\Schema(type="string"), required=true, description="学员名称"), * @OA\Parameter(name="is_schoolmate", in="query", @OA\Schema(type="string"), required=true, description="是否校友0否1是"), * @OA\Response( * response="200", * description="暂无" * ) * ) */ public function index() { $all = request()->all(); $list = $this->model->with(['users' => function ($query) use ($all) { if (isset($all['course_type_id'])) { $query->whereHas('courses', function ($q) use ($all) { $q->where('type', $all['course_type_id']); }); } if (isset($all['course_name'])) { $query->whereHas('courses', function ($q) use ($all) { $q->where('name', 'like', '%' . $all['course_name'] . '%'); }); } if (isset($all['user_name'])) { $query->where('username', 'like', '%' . $all['user_name'] . '%'); } if (isset($all['is_schoolmate'])) { $query->where('is_schoolmate', $all['is_schoolmate']); } $query->whereHas('courseSigns', function ($q) { $q->where('status', 1); })->with('courseSigns.course'); }])->where(function ($query) use ($all) { if (isset($all['filter']) && !empty($all['filter'])) { foreach ($all['filter'] as $condition) { $key = $condition['key'] ?? null; $op = $condition['op'] ?? null; $value = $condition['value'] ?? null; if (!isset($key) || !isset($op) || !isset($value)) { continue; } if ($key == 'company_tag') { $valueArray = explode(',', $value); $query->whereIn($key, $valueArray); continue; } // 等于 if ($op == 'eq') { $query->where($key, $value); } // 不等于 if ($op == 'neq') { $query->where($key, '!=', $value); } // 大于 if ($op == 'gt') { $query->where($key, '>', $value); } // 大于等于 if ($op == 'egt') { $query->where($key, '>=', $value); } // 小于 if ($op == 'lt') { $query->where($key, '<', $value); } // 小于等于 if ($op == 'elt') { $query->where($key, '<=', $value); } // 模糊搜索 if ($op == 'like') { $query->where($key, 'like', '%' . $value . '%'); } // 否定模糊搜索 if ($op == 'notlike') { $query->where($key, 'not like', '%' . $value . '%'); } // 范围搜索 if ($op == 'range') { list($from, $to) = explode(',', $value); if (empty($from) || empty($to)) { continue; } $query->whereBetween($key, [$from, $to]); } } } })->orderBy($all['sort_name'] ?? 'id', $all['sort_type'] ?? 'desc'); if (isset($all['is_export']) && !empty($all['is_export'])) { $list = $list->get()->toArray(); return Excel::download(new CommonExport($list, $all['export_fields'] ?? ''), $all['file_name'] ?? '' . date('YmdHis') . '.xlsx'); } else { // 输出 $list = $list->paginate($all['page_size'] ?? 20); } return $this->success($list); } /** * @OA\Get( * path="/api/admin/company/show", * tags={"公司管理"}, * summary="详情", * description="", * @OA\Parameter(name="id", in="query", @OA\Schema(type="string"), required=true, description="id"), * @OA\Parameter(name="show_relation", in="query", @OA\Schema(type="string"), required=false, description="需要输出的关联关系数组,填写输出指定数据"), * @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(); $messages = [ 'id.required' => 'Id必填', ]; $validator = Validator::make($all, [ 'id' => 'required' ], $messages); if ($validator->fails()) { return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); } $detail = $this->model->with(['users' => function ($query) { $query->whereHas('courseSigns', function ($q) { $q->where('status', 1); })->with('courseSigns.course'); }])->find($all['id']); return $this->success($detail); } /** * @OA\Post( * path="/api/admin/company/save", * tags={"公司管理"}, * summary="保存", * description="", * @OA\Parameter(name="id", in="query", @OA\Schema(type="int"), required=true, description="Id(存在更新,不存在新增)"), * @OA\Parameter(name="company_name", in="query", @OA\Schema(type="string", nullable=true), description="企业名字"), * @OA\Parameter(name="company_attribute", in="query", @OA\Schema(type="string", nullable=true), description="行业类型"), * @OA\Parameter(name="company_tag", in="query", @OA\Schema(type="string", nullable=true), description="标签"), * @OA\Parameter(name="company_scale", in="query", @OA\Schema(type="string", nullable=true), description="企业规模"), * @OA\Parameter(name="company_date", in="query", @OA\Schema(type="string", format="date", nullable=true), description="成立时间"), * @OA\Parameter(name="company_legal_representative", in="query", @OA\Schema(type="string", nullable=true), description="法人代表"), * @OA\Parameter(name="company_shareholder", in="query", @OA\Schema(type="string", nullable=true), description="股东信息"), * @OA\Parameter(name="management_platform", in="query", @OA\Schema(type="string", nullable=true), description="管理平台"), * @OA\Parameter(name="project_manager", in="query", @OA\Schema(type="string", nullable=true), description="项目经理"), * @OA\Parameter(name="market_value", in="query", @OA\Schema(type="integer", format="int64", nullable=true), description="市值"), * @OA\Parameter(name="company_fund", in="query", @OA\Schema(type="integer", format="int64", nullable=true), description="公司融资情况"), * @OA\Parameter(name="valuation", in="query", @OA\Schema(type="integer", format="int64", nullable=true), description="估值"), * @OA\Parameter(name="company_address", in="query", @OA\Schema(type="string", nullable=true), description="公司地址"), * @OA\Parameter(name="company_area", in="query", @OA\Schema(type="string", nullable=true), description="公司区域"), * @OA\Parameter(name="company_city", in="query", @OA\Schema(type="string", nullable=true), description="公司城市"), * @OA\Parameter(name="company_market", in="query", @OA\Schema(type="string", nullable=true), description="是否上市0否1是"), * @OA\Parameter(name="company_industry", in="query", @OA\Schema(type="string", nullable=true), description="公司所属行业"), * @OA\Parameter(name="is_schoolmate", in="query", @OA\Schema(type="string", nullable=true), description="是否校友企业-0非校友1校友"), * @OA\Parameter(name="company_need_fund", in="query", @OA\Schema(type="string", nullable=true), description="公司是否需要融资-0否1是"), * @OA\Parameter(name="company_introduce", in="query", @OA\Schema(type="string", format="textarea", nullable=true), description="公司简介"), * @OA\Parameter(name="company_other", in="query", @OA\Schema(type="string", nullable=true), description="其他"), * @OA\Parameter(name="company_product", in="query", @OA\Schema(type="string", format="textarea", nullable=true), description="产品"), * @OA\Parameter(name="overseas_experience", in="query", @OA\Schema(type="string", nullable=true), description="海外经验"), * @OA\Parameter(name="sales_volume", in="query", @OA\Schema(type="string", nullable=true), description="销售额"), * @OA\Parameter(name="tag", in="query", @OA\Schema(type="string", nullable=true), description="标签,千企走访这类的数据"), * @OA\Parameter(name="company_invested", in="query", @OA\Schema(type="string"), required=true, description="投资金额"), * @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(); DB::beginTransaction(); try { if (isset($all['id'])) { $model = $this->model->find($all['id']); if (empty($model)) { return $this->fail([ResponseCode::ERROR_BUSINESS, '数据不存在']); } } else { $model = $this->model; $all['admin_id'] = $this->getUserId(); $all['department_id'] = $this->getUser()->department_id; } $original = $model->getOriginal(); $model->fill($all); $model->save(); DB::commit(); // 记录日志 $this->saveLogs($original, $model); return $this->success($model); } catch (\Exception $exception) { DB::rollBack(); return $this->fail([$exception->getCode(), $exception->getMessage()]); } } /** * @OA\Get( * path="/api/admin/company/destroy", * 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 destroy() { return parent::destroy(); } }