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}}
+
+