This commit is contained in:
@@ -3,24 +3,30 @@ import { useAssetStore } from '@/store/asset.js';
|
||||
import { useUserStore } from '@/store/user.js';
|
||||
import { getSessionContext, isCurrentSession } from '@/utils/session-context.js';
|
||||
|
||||
export const normalizeAssetInfo = (data = {}) => ({
|
||||
...data,
|
||||
allowed_payment_methods: Array.isArray(data.allowed_payment_methods)
|
||||
? data.allowed_payment_methods
|
||||
: [],
|
||||
real_name_status: data.real_name_status === undefined || data.real_name_status === null
|
||||
? data.real_name_status
|
||||
: Number(data.real_name_status),
|
||||
realname_required: data.realname_required === undefined || data.realname_required === null
|
||||
? data.realname_required
|
||||
: data.realname_required === true || data.realname_required === 1,
|
||||
days_until_final_expiry: data.days_until_final_expiry === null || data.days_until_final_expiry === undefined
|
||||
? data.days_until_final_expiry
|
||||
: Number(data.days_until_final_expiry),
|
||||
is_expiring: data.is_expiring === undefined || data.is_expiring === null
|
||||
? data.is_expiring
|
||||
: data.is_expiring === true || data.is_expiring === 1
|
||||
});
|
||||
let assetInfoRequestId = 0;
|
||||
|
||||
export const normalizeAssetInfo = (data = {}) => {
|
||||
// 保护期已下线:不向展示和业务判断透传废弃字段,兼容 none 或字段缺失。
|
||||
const { device_protect_status, ...info } = data;
|
||||
return {
|
||||
...info,
|
||||
allowed_payment_methods: Array.isArray(data.allowed_payment_methods)
|
||||
? data.allowed_payment_methods
|
||||
: [],
|
||||
real_name_status: data.real_name_status === undefined || data.real_name_status === null
|
||||
? data.real_name_status
|
||||
: Number(data.real_name_status),
|
||||
realname_required: data.realname_required === undefined || data.realname_required === null
|
||||
? data.realname_required
|
||||
: data.realname_required === true || data.realname_required === 1,
|
||||
days_until_final_expiry: data.days_until_final_expiry === null || data.days_until_final_expiry === undefined
|
||||
? data.days_until_final_expiry
|
||||
: Number(data.days_until_final_expiry),
|
||||
is_expiring: data.is_expiring === undefined || data.is_expiring === null
|
||||
? data.is_expiring
|
||||
: data.is_expiring === true || data.is_expiring === 1
|
||||
};
|
||||
};
|
||||
|
||||
const normalizePackageHistoryNode = (node = {}) => ({
|
||||
...node,
|
||||
@@ -69,6 +75,7 @@ export const assetApi = {
|
||||
return Promise.reject({ msg: '登录和微信配置尚未完成,请稍后重试' });
|
||||
}
|
||||
const phoneRevision = userStore.state.phoneRevision;
|
||||
const requestId = identifier === context.identifier ? ++assetInfoRequestId : null;
|
||||
return request({
|
||||
url: '/api/c/v1/asset/info',
|
||||
method: 'GET',
|
||||
@@ -76,7 +83,10 @@ export const assetApi = {
|
||||
}).then((response) => {
|
||||
const data = normalizeAssetInfo(response);
|
||||
if (identifier === context.identifier && isCurrentSession(context)) {
|
||||
useAssetStore().receiveExpiryReminder(context, data.expiry_reminder);
|
||||
const assetStore = useAssetStore();
|
||||
// 替换整个快照,不合并旧轮询开关;迟到的旧请求不得覆盖新状态。
|
||||
if (requestId === assetInfoRequestId) assetStore.setAssetInfo(data);
|
||||
assetStore.receiveExpiryReminder(context, data.expiry_reminder);
|
||||
if (phoneRevision === userStore.state.phoneRevision && typeof data.bound_phone === 'string') {
|
||||
userStore.setCustomerPhone(data.bound_phone);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user