优化后端可以编辑皮肤等等

This commit is contained in:
yml
2026-05-22 23:34:18 +08:00
parent 52ac6b7827
commit b68411166d
11 changed files with 1286 additions and 694 deletions
+133
View File
@@ -0,0 +1,133 @@
import { apiClient } from './client'
export type ChargeMode = '赠送' | '收费'
export type QuantityKey =
| 'awmAmmo'
| 'helmet6'
| 'armor6'
| 'kit5'
| 'armor6Ammo'
| 'gridCard9'
export type ScreenshotKey = 'coin' | 'gameId' | 'totalAsset' | 'tencentSecurity' | 'skin'
export type SkinCategoryKey = 'melee' | 'operator' | 'weapon'
export interface PublishOptionGroup {
key: SkinCategoryKey | string
title: string
options: string[]
}
export interface PublishQuantityItem {
key: QuantityKey
label: string
price: string
placeholder?: string
}
export interface PublishScreenshotSlot {
key: ScreenshotKey
label: string
required: boolean
hint: string
}
export interface ListingPublishOptions {
server_options: string[]
face_options: string[]
rank_options: string[]
insurance_options: string[]
level_options: string[]
login_method_options: string[]
region_options: string[]
skin_groups: PublishOptionGroup[]
quantity_items: PublishQuantityItem[]
screenshot_slots: PublishScreenshotSlot[]
}
interface ApiResponse<T> {
code: string
message: string
data: T
}
export const defaultListingPublishOptions: ListingPublishOptions = {
server_options: ['QQ', '微信', 'Steam'],
face_options: ['是', '否'],
rank_options: ['青铜', '白银', '黄金', '铂金', '钻石', '黑鹰', '三角洲巅峰'],
insurance_options: ['2*1', '2*2', '2*3', '3*3'],
level_options: ['1级', '2级', '3级', '4级', '5级', '6级', '7级'],
login_method_options: ['扫码', '账号密码'],
region_options: [
'北京', '天津', '河北', '山西', '内蒙古', '辽宁', '吉林', '黑龙江',
'上海', '江苏', '浙江', '安徽', '福建', '江西', '山东', '河南',
'湖北', '湖南', '广东', '广西', '海南', '重庆', '四川', '贵州',
'云南', '陕西', '甘肃', '青海', '宁夏', '新疆', '西藏', '香港',
'澳门', '台湾',
],
skin_groups: [
{
key: 'melee',
title: '近战皮肤',
options: ['坠星者', '暗星', '龙牙', '信条', '怜悯', '赤枭', '影锋', '黑海', '北极星', '电锯惊魂', '处刑者'],
},
{
key: 'operator',
title: '干员皮肤',
options: [
'威龙-凌霄戍卫', '红狼-蚀金玫瑰', '露娜-黑天际线', '蛊-能天使午夜邮差',
'骇爪-维什戴尔', '骇爪-水墨云图', '威龙-吴彦祖', '威龙-铁面判官',
'威龙-壮志凌云', '威龙-蛟龙特战队', '蜂医-送葬人', '蜂医-危险物质',
'蜂医-黑鹰坠落', '牧羊人-街头之星', '牧羊人-黑鹰坠落', '乌鲁鲁-黑鹰坠落',
'红狼-黑鹰坠落', '无名-夜鹰', '深蓝-不破誓约', '红狼-电锯惊魂',
'露娜-古墓丽影劳拉', '赛伊德',
],
},
{
key: 'weapon',
title: '武器皮肤',
options: [
'M7棱镜攻势S2', '腾龙气象感应', 'MP7电玩高手S2', 'M250电玩高手S2',
'AS Val悬赏令', 'K416命运', 'M4A1棱镜攻势', 'SCAR-H电玩高手',
'QBZ95王牌之剑', 'AUG气象感应', 'Vector美杜莎', 'KC17-造物纪元',
],
},
],
quantity_items: [
{ key: 'awmAmmo', label: 'AWM子弹', price: '0.8元/发' },
{ key: 'helmet6', label: '6头数量', price: '2元/个' },
{ key: 'armor6', label: '6甲数量', price: '3元/个' },
{ key: 'kit5', label: '5级全装套数量', price: '5元/个' },
{ key: 'armor6Ammo', label: '6甲子弹', price: '0.26元/发' },
{ key: 'gridCard9', label: '9格体验卡', price: '5元/张', placeholder: '如果是赛季9格,此处填0即可' },
],
screenshot_slots: [
{ key: 'coin', label: '纯币截图', required: true, hint: '请上传纯币截图(必传)' },
{ key: 'gameId', label: '游戏ID截图', required: true, hint: '请上传游戏ID截图(必传)' },
{ key: 'totalAsset', label: '总资产截图', required: true, hint: '请上传总资产截图(必传)' },
{ key: 'tencentSecurity', label: '腾讯安全中心截图', required: true, hint: '请上传腾讯安全中心截图(必传)' },
{ key: 'skin', label: '皮肤截图', required: false, hint: '请上传皮肤截图(选传)' },
],
}
export async function fetchListingPublishOptions() {
const { data } = await apiClient.get<ApiResponse<ListingPublishOptions>>('/listing-publish-options')
return mergeListingPublishOptions(data.data)
}
export function mergeListingPublishOptions(options?: Partial<ListingPublishOptions>): ListingPublishOptions {
return {
server_options: options?.server_options?.length ? options.server_options : defaultListingPublishOptions.server_options,
face_options: options?.face_options?.length ? options.face_options : defaultListingPublishOptions.face_options,
rank_options: options?.rank_options?.length ? options.rank_options : defaultListingPublishOptions.rank_options,
insurance_options: options?.insurance_options?.length ? options.insurance_options : defaultListingPublishOptions.insurance_options,
level_options: options?.level_options?.length ? options.level_options : defaultListingPublishOptions.level_options,
login_method_options: options?.login_method_options?.length ? options.login_method_options : defaultListingPublishOptions.login_method_options,
region_options: options?.region_options?.length ? options.region_options : defaultListingPublishOptions.region_options,
skin_groups: options?.skin_groups?.length ? options.skin_groups : defaultListingPublishOptions.skin_groups,
quantity_items: options?.quantity_items?.length ? options.quantity_items as PublishQuantityItem[] : defaultListingPublishOptions.quantity_items,
screenshot_slots: options?.screenshot_slots?.length ? options.screenshot_slots as PublishScreenshotSlot[] : defaultListingPublishOptions.screenshot_slots,
}
}