From bde6edd76a9ac04db29310fc921a3d22ae116d40 Mon Sep 17 00:00:00 2001 From: Dev Date: Wed, 23 Sep 2026 18:05:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=85=B6=E5=AE=83=E6=8A=80?= =?UTF-8?q?=E6=9C=AF=E5=88=86=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/application/api/controller/Common.php | 12 ++++++++---- backend/application/api/controller/Developer.php | 15 ++++++++++++++- .../common/service/DeveloperService.php | 2 +- frontend/miniapp/pages/developer/join/index.js | 15 ++++++++++----- frontend/miniapp/pages/developer/join/index.wxml | 12 ++++++++++++ 5 files changed, 45 insertions(+), 11 deletions(-) diff --git a/backend/application/api/controller/Common.php b/backend/application/api/controller/Common.php index c9cd14b..6069d23 100644 --- a/backend/application/api/controller/Common.php +++ b/backend/application/api/controller/Common.php @@ -179,11 +179,15 @@ class Common extends Api 'key' => $key == 0 ? '-1' : $key, ]; } + // 过滤空值,避免配置项为空时返回空字符串标签 + $toLabels = function ($value) { + return array_values(array_filter(array_map('trim', explode(',', $value ?? '')))); + }; $config = [ - 'languageLabels' => explode(',', $code_languages), - 'frontLabels' => explode(',', $front_techs), - 'backendLabels' => explode(',', $back_techs), - 'otherLabels' => explode(',', $other_techs), + 'languageLabels' => $toLabels($code_languages), + 'frontLabels' => $toLabels($front_techs), + 'backendLabels' => $toLabels($back_techs), + 'otherLabels' => $toLabels($other_techs), 'developTypes' => $developTypes, ]; diff --git a/backend/application/api/controller/Developer.php b/backend/application/api/controller/Developer.php index c9f4e1a..243a453 100644 --- a/backend/application/api/controller/Developer.php +++ b/backend/application/api/controller/Developer.php @@ -20,6 +20,10 @@ class Developer extends Api * @param array $images 图片数组 * @param array $files 文件数组 * @param string $contact 联系方式 + * @param array $languageSelected 选中的编程语言 + * @param array $frontSelected 选中的前端技术 + * @param array $backendSelected 选中的后端技术 + * @param array $otherSelected 选中的其它技术 */ public function submit() { @@ -46,7 +50,16 @@ class Developer extends Api if (DeveloperService::getOne(['user_id' => $userId])) { exception('您已经申请入驻,请勿重复申请!'); } - $params['tags'] = array_filter(array_merge($params['languageSelected'], $params['frontSelected'], $params['backendSelected'])); + // 合并各技术分类选中的标签(编程语言/前端技术/后端技术/其它技术) + $params['tags'] = array_values(array_unique(array_filter(array_merge( + (array)($params['languageSelected'] ?? []), + (array)($params['frontSelected'] ?? []), + (array)($params['backendSelected'] ?? []), + (array)($params['otherSelected'] ?? []) + )))); + if (empty($params['tags'])) { + $this->error('技能标签不能为空'); + } DeveloperService::instance()->create($params, $userId); $this->success('申请已提交,等待审核通过即可接单'); } catch (\Exception $e) { diff --git a/backend/application/common/service/DeveloperService.php b/backend/application/common/service/DeveloperService.php index 39f25e1..f39e42f 100644 --- a/backend/application/common/service/DeveloperService.php +++ b/backend/application/common/service/DeveloperService.php @@ -27,7 +27,7 @@ class DeveloperService $saveData = [ 'user_id' => $userId, 'job' => $data['job'] ?? '', - 'tags' => implode(',', $data['tags'] ?? ''), + 'tags' => implode(',', array_filter((array)($data['tags'] ?? []))), 'work_years' => $data['work_years'] ?? 0, 'contact' => $data['contact'] ?? '', 'desc' => $data['desc'] ?? '', diff --git a/frontend/miniapp/pages/developer/join/index.js b/frontend/miniapp/pages/developer/join/index.js index 3a5f4f9..4193af0 100644 --- a/frontend/miniapp/pages/developer/join/index.js +++ b/frontend/miniapp/pages/developer/join/index.js @@ -9,12 +9,15 @@ Page({ languageLabels: [], frontLabels: [], backendLabels: [], + otherLabels: [], languageSelected: [], frontSelected: [], backendSelected: [], + otherSelected: [], languageSelectedMap: {}, frontSelectedMap: {}, backendSelectedMap: {}, + otherSelectedMap: {}, desc: '', job: '', workYears: 0, @@ -28,9 +31,10 @@ Page({ wx.$util.request(wx.$api.CommonGetMiniConfig, {}, 'GET').then(res => { if (res.code === 1) { this.setData({ - languageLabels: res.data.languageLabels, - frontLabels: res.data.frontLabels, - backendLabels: res.data.backendLabels, + languageLabels: res.data.languageLabels || [], + frontLabels: res.data.frontLabels || [], + backendLabels: res.data.backendLabels || [], + otherLabels: res.data.otherLabels || [], }); } }); @@ -64,11 +68,11 @@ Page({ }); }, onSubmit() { - const { backendSelected, frontSelected, languageSelected, contact, job, workYears, desc } = this.data; + const { backendSelected, frontSelected, languageSelected, otherSelected, contact, job, workYears, desc } = this.data; const validations = [ { - condition: !backendSelected.length && !frontSelected.length && !languageSelected.length, + condition: !backendSelected.length && !frontSelected.length && !languageSelected.length && !otherSelected.length, message: '技能不能为空' }, { @@ -106,6 +110,7 @@ Page({ backendSelected: backendSelected, frontSelected: frontSelected, languageSelected: languageSelected, + otherSelected: otherSelected, job: job, contact: contact, work_years: workYears, diff --git a/frontend/miniapp/pages/developer/join/index.wxml b/frontend/miniapp/pages/developer/join/index.wxml index d771176..e037fa9 100644 --- a/frontend/miniapp/pages/developer/join/index.wxml +++ b/frontend/miniapp/pages/developer/join/index.wxml @@ -38,6 +38,18 @@ >{{item}} + + + {{item}} + +