From 85f7775c0900a0a74824f0a885d70fe698d95d1e Mon Sep 17 00:00:00 2001
From: shinnosuke <tantao@1hoper.com>
Date: 星期四, 13 八月 2026 17:27:12 +0800
Subject: [PATCH] fix(admin): 隐藏运营菜单并支持商户端登录
---
talent-card-admin/src/views/MerchantCreateView.vue | 18 ++++++++++++++++--
talent-card-server/src/test/java/com/talentcard/server/business/admin/AdminBusinessServiceTests.java | 14 ++++++++++++++
talent-card-server/src/main/java/com/talentcard/server/business/admin/AdminBusinessService.java | 11 ++++++++++-
talent-card-admin/src/layouts/AdminLayout.vue | 2 --
4 files changed, 40 insertions(+), 5 deletions(-)
diff --git a/talent-card-admin/src/layouts/AdminLayout.vue b/talent-card-admin/src/layouts/AdminLayout.vue
index 87b55bd..f711298 100644
--- a/talent-card-admin/src/layouts/AdminLayout.vue
+++ b/talent-card-admin/src/layouts/AdminLayout.vue
@@ -105,8 +105,6 @@
]
const operationMenus: MenuItem[] = [
- { path: '/benefit-coupons', label: '优惠券管理' },
- { path: '/display-services', label: '展示类服务管理' },
{ path: '/equity-images', label: '权益图片管理' },
{ path: '/talent-news-management', label: '人才资讯管理' },
{ path: '/talent-policy-management', label: '人才政策管理' },
diff --git a/talent-card-admin/src/views/MerchantCreateView.vue b/talent-card-admin/src/views/MerchantCreateView.vue
index 48df017..e2a7976 100644
--- a/talent-card-admin/src/views/MerchantCreateView.vue
+++ b/talent-card-admin/src/views/MerchantCreateView.vue
@@ -89,9 +89,23 @@
const isSpouseEmploymentMerchant = computed(() => normalizedMerchantType.value === '配偶推荐就业')
const isApprovalMerchant = computed(() => normalizedMerchantType.value === '行政审批')
const isServiceMerchant = computed(() => isFoodMerchant.value || normalizedMerchantType.value === '景区服务')
+const merchantAppLoginOptionalTypes = ['数码服务', '文化服务', '电信服务', '口腔治疗保健']
+const supportsMerchantAppLogin = computed(() => (
+ isServiceMerchant.value
+ || isApartmentMerchant.value
+ || isCarWashMerchant.value
+ || isHealthCheckMerchant.value
+ || isParkingMerchant.value
+ || isChildcareMerchant.value
+ || isFinancialMerchant.value
+ || isMovieMerchant.value
+ || isSpouseEmploymentMerchant.value
+ || isApprovalMerchant.value
+ || merchantAppLoginOptionalTypes.includes(normalizedMerchantType.value)
+))
const requiresMerchantOperator = computed(() => !isEditMode.value && (
normalizedMerchantType.value === '景区服务'
- || (isFoodMerchant.value && Number(form.canLoginMerchantApp) === 1)
+ || (supportsMerchantAppLogin.value && Number(form.canLoginMerchantApp) === 1)
))
function carWashJumpMeta() {
if (!isCarWashMerchant.value) return {}
@@ -2192,7 +2206,7 @@
<section class="merchant-account-panel">
<h3>账户设置</h3>
<el-form ref="accountFormRef" class="merchant-account-form" :model="accountForm" :rules="accountRules" label-width="72px" label-position="left">
- <el-form-item v-if="isServiceMerchant || isApartmentMerchant || isCarWashMerchant || isHealthCheckMerchant || isParkingMerchant || isChildcareMerchant || isFinancialMerchant || isMovieMerchant || isSpouseEmploymentMerchant || isApprovalMerchant" label="登录商户端" label-width="100px">
+ <el-form-item v-if="supportsMerchantAppLogin" label="登录商户端" label-width="100px">
<el-switch v-model="form.canLoginMerchantApp" :active-value="1" :inactive-value="0" />
</el-form-item>
<el-form-item label="登录账号" prop="loginAccount" :required="requiresMerchantOperator" :error="accountTaken ? '登录账号已存在,请更换' : ''">
diff --git a/talent-card-server/src/main/java/com/talentcard/server/business/admin/AdminBusinessService.java b/talent-card-server/src/main/java/com/talentcard/server/business/admin/AdminBusinessService.java
index 6fa60bd..3f3f7d5 100644
--- a/talent-card-server/src/main/java/com/talentcard/server/business/admin/AdminBusinessService.java
+++ b/talent-card-server/src/main/java/com/talentcard/server/business/admin/AdminBusinessService.java
@@ -8,6 +8,7 @@
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import com.talentcard.server.business.BusinessIdGenerator;
import com.alibaba.fastjson.JSON;
@@ -24,6 +25,10 @@
@Service
public class AdminBusinessService {
+
+ private static final Set<String> MERCHANT_APP_LOGIN_TYPES = Set.of(
+ "餐饮服务", "景区服务", "数码服务", "文化服务", "电信服务", "口腔治疗保健"
+ );
private final JdbcTemplate jdbcTemplate;
@@ -382,10 +387,14 @@
}
private boolean hasMerchantAppAccess(MerchantCreateRequest request) {
- return ("餐饮服务".equals(request.merchantType()) || "景区服务".equals(request.merchantType()))
+ return supportsMerchantAppLogin(request.merchantType())
&& (request.canLoginMerchantApp() == null || request.canLoginMerchantApp() == 1);
}
+ boolean supportsMerchantAppLogin(String merchantType) {
+ return MERCHANT_APP_LOGIN_TYPES.contains(merchantType);
+ }
+
private void validateScenicMerchantCreate(MerchantCreateRequest request) {
if (!"景区服务".equals(request.merchantType())) {
return;
diff --git a/talent-card-server/src/test/java/com/talentcard/server/business/admin/AdminBusinessServiceTests.java b/talent-card-server/src/test/java/com/talentcard/server/business/admin/AdminBusinessServiceTests.java
index 864da8a..6dcb3aa 100644
--- a/talent-card-server/src/test/java/com/talentcard/server/business/admin/AdminBusinessServiceTests.java
+++ b/talent-card-server/src/test/java/com/talentcard/server/business/admin/AdminBusinessServiceTests.java
@@ -1,5 +1,6 @@
package com.talentcard.server.business.admin;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatCode;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.mockito.Mockito.mock;
@@ -24,4 +25,17 @@
.isInstanceOf(BusinessException.class)
.hasMessageContaining("请输入商家地址");
}
+
+ @Test
+ void supportsMerchantAppLoginForConfiguredServiceTypes() {
+ assertThat(service.supportsMerchantAppLogin("数码服务")).isTrue();
+ assertThat(service.supportsMerchantAppLogin("文化服务")).isTrue();
+ assertThat(service.supportsMerchantAppLogin("电信服务")).isTrue();
+ assertThat(service.supportsMerchantAppLogin("口腔治疗保健")).isTrue();
+ }
+
+ @Test
+ void doesNotSupportMerchantAppLoginForUnconfiguredServiceTypes() {
+ assertThat(service.supportsMerchantAppLogin("酒店服务")).isFalse();
+ }
}
--
Gitblit v1.7.1