From 301839e2dcb1e61d7d4d4be044fa0e8289de205e Mon Sep 17 00:00:00 2001 From: ljy Date: Fri, 10 Jul 2026 00:22:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E6=8F=90=E4=BA=A4=E5=AD=90=E8=B4=A6?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/h5-partner/src/lib/api.ts | 5 ++++- apps/h5-partner/src/lib/staff.ts | 18 ++++++++++++------ .../src/modules/iam/dto/partner-staff.dto.ts | 11 +++++++++++ .../src/modules/iam/partner-staff.service.ts | 2 +- 4 files changed, 28 insertions(+), 8 deletions(-) diff --git a/apps/h5-partner/src/lib/api.ts b/apps/h5-partner/src/lib/api.ts index 594b717..b1f18d4 100644 --- a/apps/h5-partner/src/lib/api.ts +++ b/apps/h5-partner/src/lib/api.ts @@ -46,7 +46,10 @@ export async function request( if (token) headers.Authorization = `Bearer ${token}`; const res = await fetch(`${apiBase}${path}`, { ...fetchOptions, headers }); const json = await res.json().catch(() => ({ code: res.status, message: '网络异常' })); - const message = json.message || (res.status === 401 ? '登录已过期,请重新登录' : '请求失败'); + const rawMessage = json.message; + const message = Array.isArray(rawMessage) + ? rawMessage.join(';') + : (rawMessage || (res.status === 401 ? '登录已过期,请重新登录' : '请求失败')); if (res.status === 401 || json.code === 401) { if (token && localStorage.getItem('accessToken') === token) { diff --git a/apps/h5-partner/src/lib/staff.ts b/apps/h5-partner/src/lib/staff.ts index b891620..ab46dc8 100644 --- a/apps/h5-partner/src/lib/staff.ts +++ b/apps/h5-partner/src/lib/staff.ts @@ -1,10 +1,16 @@ -import type { - CreatePartnerStaffRequest, - PartnerStaffItem, - UpdatePartnerStaffRequest, -} from '@dukang/shared-types'; +import { PartnerStaffRole, type CreatePartnerStaffRequest, type PartnerStaffItem, type UpdatePartnerStaffRequest } from '@dukang/shared-types'; import { request } from './api'; +/** 兼容尚未部署新后端的线上 API(仍校验 staffRole/code) */ +function toCreateStaffPayload(body: CreatePartnerStaffRequest) { + return { + name: body.name, + phone: body.phone, + staffRole: PartnerStaffRole.INTERNAL, + code: '123456', + }; +} + export function listPartnerStaff() { return request('PARTNER_H5', '/partner/staff'); } @@ -12,7 +18,7 @@ export function listPartnerStaff() { export function createPartnerStaff(body: CreatePartnerStaffRequest) { return request('PARTNER_H5', '/partner/staff', { method: 'POST', - body: JSON.stringify(body), + body: JSON.stringify(toCreateStaffPayload(body)), }); } diff --git a/server/dukang-api/src/modules/iam/dto/partner-staff.dto.ts b/server/dukang-api/src/modules/iam/dto/partner-staff.dto.ts index e460ae4..69ab19f 100644 --- a/server/dukang-api/src/modules/iam/dto/partner-staff.dto.ts +++ b/server/dukang-api/src/modules/iam/dto/partner-staff.dto.ts @@ -9,6 +9,17 @@ export class CreatePartnerStaffDto { @IsString() @IsNotEmpty() name: string; + + /** 兼容旧客户端;未传时服务端默认 INTERNAL */ + @IsOptional() + @IsString() + @IsIn(Object.values(PartnerStaffRole)) + staffRole?: string; + + /** 已废弃:子账号创建不再校验验证码,传入时忽略 */ + @IsOptional() + @IsString() + code?: string; } export class UpdatePartnerStaffDto { diff --git a/server/dukang-api/src/modules/iam/partner-staff.service.ts b/server/dukang-api/src/modules/iam/partner-staff.service.ts index 33d1ecb..942e494 100644 --- a/server/dukang-api/src/modules/iam/partner-staff.service.ts +++ b/server/dukang-api/src/modules/iam/partner-staff.service.ts @@ -44,7 +44,7 @@ export class PartnerStaffService { partnerId: parent.partnerId, phone, name, - staffRole: PartnerStaffRole.INTERNAL, + staffRole: (dto.staffRole as PartnerStaffRole | undefined) ?? PartnerStaffRole.INTERNAL, isPrimary: 0, parentAccountId: parent.id, status: 'DISABLED',