优化历史包袱,修复发布页面默认0 恢哈伏笔
This commit is contained in:
@@ -13,8 +13,6 @@ export interface ListingDisplayResource {
|
||||
}
|
||||
|
||||
export function getCoinWan(item: Listing) {
|
||||
const assetCoin = readAssetNumber(item, "haf_coin_wan");
|
||||
if (assetCoin > 0) return assetCoin;
|
||||
return Math.round(Number(item.haf_coin_amount || 0) / 10000);
|
||||
}
|
||||
|
||||
@@ -29,8 +27,6 @@ export function formatHafCoinM(amountWan: number) {
|
||||
}
|
||||
|
||||
export function getListingDisplayPrice(item: Listing) {
|
||||
const assetPrice = readAssetNumber(item, "price");
|
||||
if (assetPrice > 0) return assetPrice;
|
||||
const rentDays = getRentDays(item);
|
||||
if (rentDays > 0 && item.price_daily > 0) {
|
||||
return roundMoney(item.price_daily * rentDays);
|
||||
@@ -39,15 +35,11 @@ export function getListingDisplayPrice(item: Listing) {
|
||||
}
|
||||
|
||||
export function getRentDays(item: Listing) {
|
||||
const assetDays = readAssetNumber(item, "rent_days");
|
||||
if (assetDays > 0) return assetDays;
|
||||
if (item.max_rent_hours >= 24) return Math.max(Math.round(item.max_rent_hours / 24), 1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
export function getRatioValue(item: Listing) {
|
||||
const ratio = readAssetNumber(item, "ratio");
|
||||
if (ratio > 0) return ratio;
|
||||
const price = getListingDisplayPrice(item);
|
||||
if (price <= 0) return 0;
|
||||
return getCoinWan(item) / price;
|
||||
@@ -65,11 +57,11 @@ export function getValuePerYuanText(item: Listing) {
|
||||
}
|
||||
|
||||
export function getLoginMethod(item: Listing) {
|
||||
return normalizeLoginMethod(readAssetString(item, "login_method") || item.login_platform);
|
||||
return item.login_platform.trim();
|
||||
}
|
||||
|
||||
export function getServerRegion(item: Listing) {
|
||||
return normalizeServerRegion(item.server_region);
|
||||
return item.server_region.trim();
|
||||
}
|
||||
|
||||
export function getListingTitle(item: Listing) {
|
||||
@@ -134,8 +126,7 @@ export function getListingResources(item: Listing): ListingDisplayResource[] {
|
||||
}
|
||||
|
||||
export function getResourceQuantity(item: Listing, resourceKey: string) {
|
||||
const keys = getResourceKeyAliases(resourceKey);
|
||||
return getListingResources(item).find((resource) => keys.includes(resource.key))?.quantity || 0;
|
||||
return getListingResources(item).find((resource) => resource.key === resourceKey)?.quantity || 0;
|
||||
}
|
||||
|
||||
export function hasGiftResources(item: Listing) {
|
||||
@@ -158,13 +149,10 @@ export function getSkinGroup(item: Listing, groupKey: string) {
|
||||
|
||||
export function getSkinNames(item: Listing) {
|
||||
const skinGroups = item.asset_summary?.skin_groups;
|
||||
if (typeof skinGroups === "object" && skinGroups !== null) {
|
||||
return Object.values(skinGroups as Record<string, unknown>)
|
||||
.flatMap((group) => (Array.isArray(group) ? group : []))
|
||||
.filter((skin): skin is string => typeof skin === "string");
|
||||
}
|
||||
const skins = item.asset_summary?.skins;
|
||||
return Array.isArray(skins) ? skins.filter((skin): skin is string => typeof skin === "string") : [];
|
||||
if (typeof skinGroups !== "object" || skinGroups === null) return [];
|
||||
return Object.values(skinGroups as Record<string, unknown>)
|
||||
.flatMap((group) => (Array.isArray(group) ? group : []))
|
||||
.filter((skin): skin is string => typeof skin === "string");
|
||||
}
|
||||
|
||||
export function assetRegions(item: Listing) {
|
||||
@@ -174,13 +162,6 @@ export function assetRegions(item: Listing) {
|
||||
: [];
|
||||
}
|
||||
|
||||
export function getScreenshotMap(item: Listing) {
|
||||
const screenshots = item.asset_summary?.screenshots;
|
||||
return typeof screenshots === "object" && screenshots !== null
|
||||
? (screenshots as Record<string, unknown>)
|
||||
: {};
|
||||
}
|
||||
|
||||
export function getOnlineTimeText(item: Listing) {
|
||||
const onlineTime = item.asset_summary?.online_time;
|
||||
if (typeof onlineTime !== "object" || onlineTime === null) return "";
|
||||
@@ -190,6 +171,13 @@ export function getOnlineTimeText(item: Listing) {
|
||||
return `${start.replace(":00", "")}-${end.replace(":00", "")}点`;
|
||||
}
|
||||
|
||||
export function getDailyLoss(item: Listing) {
|
||||
const coinWan = getCoinWan(item);
|
||||
if (coinWan >= 30000) return "30M";
|
||||
if (coinWan >= 10000) return "20M";
|
||||
return "10M";
|
||||
}
|
||||
|
||||
export function readAssetString(item: Listing, key: string) {
|
||||
const value = item.asset_summary?.[key];
|
||||
return typeof value === "string" ? value : "";
|
||||
@@ -208,23 +196,6 @@ function readUnknownNumber(value: unknown) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
export function normalizeServerRegion(value: string) {
|
||||
const text = value.trim();
|
||||
const upper = text.toUpperCase();
|
||||
if (upper.includes("STEAM")) return "Steam";
|
||||
if (upper.includes("QQ")) return "QQ";
|
||||
if (text.includes("微信")) return "微信";
|
||||
return text;
|
||||
}
|
||||
|
||||
export function normalizeLoginMethod(value: string) {
|
||||
const text = value.trim();
|
||||
if (!text) return "";
|
||||
if (text.includes("扫码")) return "扫码";
|
||||
if (text.includes("账密") || text.includes("账号密码")) return "账号密码";
|
||||
return text;
|
||||
}
|
||||
|
||||
function formatInsuranceSlotText(value: string) {
|
||||
const parts = value.split("*").map((item) => Number(item));
|
||||
const rows = parts[0] || 0;
|
||||
@@ -245,12 +216,6 @@ function formatResourceShort(item: Listing, key: string, label: string) {
|
||||
return quantity > 0 ? `${quantity}${label}` : "";
|
||||
}
|
||||
|
||||
function getResourceKeyAliases(key: string) {
|
||||
if (key === "level6Ammo") return ["level6Ammo", "armor6Ammo"];
|
||||
if (key === "armor6Ammo") return ["armor6Ammo", "level6Ammo"];
|
||||
return [key];
|
||||
}
|
||||
|
||||
function roundMoney(value: number) {
|
||||
return Math.round(value * 100) / 100;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user