feat(order-service): 增加资料提交后自定义说明
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
-- 135_order_service_post_submit_text.sql
|
||||
-- 客户提交资料后,页面底部展示的自定义说明。
|
||||
|
||||
ALTER TABLE order_service_profiles
|
||||
ADD COLUMN IF NOT EXISTS post_submit_text TEXT NOT NULL
|
||||
DEFAULT '资料提交后如需修改,请联系客服。';
|
||||
|
||||
COMMENT ON COLUMN order_service_profiles.post_submit_text IS
|
||||
'客户资料页底部的提交后说明,支持多行文本';
|
||||
@@ -15,6 +15,7 @@ export type OrderServiceProfileRow = {
|
||||
material_confirmation_json: Record<string, unknown>
|
||||
submit_text: string
|
||||
success_text: string
|
||||
post_submit_text: string
|
||||
status: string
|
||||
current_version_id: number | null
|
||||
current_version_no: number | null
|
||||
@@ -102,6 +103,7 @@ export async function upsertOrderServiceProfile(input: {
|
||||
materialConfirmation: Record<string, unknown>
|
||||
submitText: string
|
||||
successText: string
|
||||
postSubmitText: string
|
||||
adminUserId: number | null
|
||||
}): Promise<OrderServiceProfileRow> {
|
||||
const result = await query<OrderServiceProfileRow>(
|
||||
@@ -110,11 +112,11 @@ export async function upsertOrderServiceProfile(input: {
|
||||
category_id, name, title, description,
|
||||
guide_image_json, fields_json, screenshots_json, auto_publish_json,
|
||||
material_confirmation_json,
|
||||
submit_text, success_text, status, created_by_admin_user_id
|
||||
submit_text, success_text, post_submit_text, status, created_by_admin_user_id
|
||||
) VALUES (
|
||||
$1, $2, $3, $4,
|
||||
$5::jsonb, $6::jsonb, $7::jsonb, $8::jsonb, $9::jsonb,
|
||||
$10, $11, 'draft', $12
|
||||
$10, $11, $12, 'draft', $13
|
||||
)
|
||||
ON CONFLICT (category_id) DO UPDATE SET
|
||||
name = EXCLUDED.name,
|
||||
@@ -127,6 +129,7 @@ export async function upsertOrderServiceProfile(input: {
|
||||
material_confirmation_json = EXCLUDED.material_confirmation_json,
|
||||
submit_text = EXCLUDED.submit_text,
|
||||
success_text = EXCLUDED.success_text,
|
||||
post_submit_text = EXCLUDED.post_submit_text,
|
||||
current_version_id = CASE
|
||||
WHEN order_service_profiles.status = 'archived' THEN NULL
|
||||
ELSE order_service_profiles.current_version_id
|
||||
@@ -147,6 +150,7 @@ export async function upsertOrderServiceProfile(input: {
|
||||
JSON.stringify(input.materialConfirmation),
|
||||
input.submitText,
|
||||
input.successText,
|
||||
input.postSubmitText,
|
||||
input.adminUserId,
|
||||
],
|
||||
)
|
||||
|
||||
@@ -86,6 +86,14 @@ test('订单服务游戏 ID:标准化为纯数字字符串校验', () => {
|
||||
assert.equal(normalized.fields[0]?.validation, 'digits')
|
||||
})
|
||||
|
||||
test('订单服务提交后说明:旧配置使用默认文案,新配置支持多行自定义', () => {
|
||||
assert.equal(config().postSubmitText, '资料提交后如需修改,请联系客服。')
|
||||
assert.equal(
|
||||
config({ postSubmitText: '资料提交后不可修改。\n如填写错误,请联系客服。' }).postSubmitText,
|
||||
'资料提交后不可修改。\n如填写错误,请联系客服。',
|
||||
)
|
||||
})
|
||||
|
||||
test('订单服务提交确认:旧配置默认展示不可修改与资料错误免责声明', () => {
|
||||
const normalized = config()
|
||||
assert.deepEqual(normalized.materialConfirmation, {
|
||||
|
||||
@@ -68,6 +68,7 @@ export type OrderServiceProfileConfig = {
|
||||
materialConfirmation: OrderServiceMaterialConfirmation
|
||||
submitText: string
|
||||
successText: string
|
||||
postSubmitText: string
|
||||
}
|
||||
|
||||
export type OrderServiceProfileSnapshot = {
|
||||
@@ -96,6 +97,8 @@ export const DEFAULT_ORDER_SERVICE_MATERIAL_CONFIRMATION: OrderServiceMaterialCo
|
||||
cancelText: '返回检查',
|
||||
}
|
||||
|
||||
export const DEFAULT_ORDER_SERVICE_POST_SUBMIT_TEXT = '资料提交后如需修改,请联系客服。'
|
||||
|
||||
export async function listAdminOrderServiceProfiles() {
|
||||
const [categories, profiles] = await Promise.all([
|
||||
listAllWorkCategories(),
|
||||
@@ -153,6 +156,7 @@ export async function saveAdminOrderServiceProfile(payload: JsonObject = {}) {
|
||||
materialConfirmation,
|
||||
submitText: text(payload.submitText, 30) || '提交资料',
|
||||
successText: text(payload.successText, 80) || '资料已提交,请等待处理',
|
||||
postSubmitText: text(payload.postSubmitText, 500) || DEFAULT_ORDER_SERVICE_POST_SUBMIT_TEXT,
|
||||
adminUserId,
|
||||
})
|
||||
return { profile: mapAdminProfile(saved) }
|
||||
@@ -231,6 +235,7 @@ function mapAdminProfile(row: OrderServiceProfileRow) {
|
||||
materialConfirmation: normalizeMaterialConfirmation(row.material_confirmation_json),
|
||||
submitText: row.submit_text,
|
||||
successText: row.success_text,
|
||||
postSubmitText: buildProfileConfig(row).postSubmitText,
|
||||
status: row.status,
|
||||
currentVersionId: row.current_version_id,
|
||||
currentVersionNo: row.current_version_no,
|
||||
@@ -250,6 +255,7 @@ export function buildProfileConfig(row: {
|
||||
material_confirmation_json: unknown
|
||||
submit_text: string
|
||||
success_text: string
|
||||
post_submit_text: string
|
||||
}): OrderServiceProfileConfig & { guideImage: Record<string, unknown> } {
|
||||
return {
|
||||
name: row.name,
|
||||
@@ -262,6 +268,7 @@ export function buildProfileConfig(row: {
|
||||
materialConfirmation: normalizeMaterialConfirmation(row.material_confirmation_json),
|
||||
submitText: row.submit_text || '提交资料',
|
||||
successText: row.success_text || '资料已提交,请等待处理',
|
||||
postSubmitText: text(row.post_submit_text, 500) || DEFAULT_ORDER_SERVICE_POST_SUBMIT_TEXT,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -314,6 +321,7 @@ export function normalizeProfileConfig(value: JsonObject): OrderServiceProfileCo
|
||||
materialConfirmation: normalizeMaterialConfirmation(value.materialConfirmation),
|
||||
submitText: text(value.submitText, 30) || '提交资料',
|
||||
successText: text(value.successText, 80) || '资料已提交,请等待处理',
|
||||
postSubmitText: text(value.postSubmitText, 500) || DEFAULT_ORDER_SERVICE_POST_SUBMIT_TEXT,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ import {
|
||||
} from './work-order-material-link-service.js'
|
||||
import {
|
||||
DEFAULT_ORDER_SERVICE_MATERIAL_CONFIRMATION,
|
||||
DEFAULT_ORDER_SERVICE_POST_SUBMIT_TEXT,
|
||||
getOrderServiceProfileSnapshotByVersion,
|
||||
normalizeProfileConfig,
|
||||
type OrderServiceField,
|
||||
@@ -74,6 +75,7 @@ export type OrderServicePublicItem = {
|
||||
description: string
|
||||
submitText: string
|
||||
successText: string
|
||||
postSubmitText: string
|
||||
state: string
|
||||
stateLabel: string
|
||||
message: string
|
||||
@@ -371,6 +373,7 @@ async function mapPublicOrderItem(order: WorkOrderRow): Promise<OrderServicePubl
|
||||
description: profile?.description || '',
|
||||
submitText: profile?.submitText || '提交资料',
|
||||
successText: profile?.successText || '资料已提交,请等待处理',
|
||||
postSubmitText: profile?.postSubmitText || DEFAULT_ORDER_SERVICE_POST_SUBMIT_TEXT,
|
||||
state: order.status,
|
||||
stateLabel: resolveOrderServiceStatusLabel(order.status, state.statusLabel),
|
||||
message: resolveOrderServiceStatusMessage({
|
||||
@@ -446,6 +449,7 @@ async function resolveProfileConfig(
|
||||
materialConfirmation: DEFAULT_ORDER_SERVICE_MATERIAL_CONFIRMATION,
|
||||
submitText: '提交资料',
|
||||
successText: '资料已提交,请等待处理',
|
||||
postSubmitText: DEFAULT_ORDER_SERVICE_POST_SUBMIT_TEXT,
|
||||
}
|
||||
}
|
||||
return null
|
||||
|
||||
Reference in New Issue
Block a user