refactor: 重构存储与接口适配,统一金额单位与会话管理
- 新增配置、存储、金额转换工具服务 - 按userId隔离本地缓存,替换旧设备级存储 - 统一移动端金额单位为万元,新增转换适配逻辑 - 重构认证与请求逻辑,支持真实后端会话 - 调整搜索、帮助、融资模块的模拟开关与数据适配 - 更新文档说明开发状态与配置规则
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { API_BASE_URL, getSession } from '@/services/api.uts'
|
||||
import { getUserStorage, setUserStorage } from '@/services/storage.uts'
|
||||
import { API_BASE_URL, getSession, requestJson } from '@/services/api.uts'
|
||||
import { activeAssessmentType, loadAssessmentDraft, draftText } from '@/services/assessment.uts'
|
||||
|
||||
export type AccountProfile = { nickname: string, avatar: string, phone: string }
|
||||
@@ -23,7 +24,7 @@ export function getAccountProfile(): AccountProfile {
|
||||
const phone = session == null ? '' : draftText(session, 'phone')
|
||||
let nickname = '融资用户'; let avatar = ''
|
||||
if (phone.length > 0) {
|
||||
const saved = uni.getStorageSync(profileKey(phone))
|
||||
const saved = getUserStorage(profileKey(phone))
|
||||
if (saved != null && typeof saved == 'object') {
|
||||
nickname = draftText(saved as UTSJSONObject, 'nickname'); avatar = draftText(saved as UTSJSONObject, 'avatar')
|
||||
} else {
|
||||
@@ -35,19 +36,9 @@ export function getAccountProfile(): AccountProfile {
|
||||
}
|
||||
|
||||
// 安全接口必须经过服务端认证。未配置服务时不模拟验证或修改成功。
|
||||
function accountRequest(path: string, method: RequestMethod, payload: UTSJSONObject): Promise<UTSJSONObject> {
|
||||
return new Promise<UTSJSONObject>((resolve, reject) => {
|
||||
const session = requireAccount()
|
||||
if (API_BASE_URL.length == 0) { reject(new Error('账户服务暂未开放,请稍后再试')); return }
|
||||
uni.request({ url: API_BASE_URL + path, method, data: payload, header: { Authorization: 'Bearer ' + draftText(session, 'token') }, timeout: 10000,
|
||||
success: (response) => {
|
||||
if (!sameAccount(session)) { reject(new Error('登录状态已变化,请重新进入页面')); return }
|
||||
if (response.statusCode == 401) { reject(new Error('登录已失效,请重新登录')); return }
|
||||
if (response.statusCode < 200 || response.statusCode >= 300) { reject(new Error('操作失败,请核对信息后重试')); return }
|
||||
resolve(response.data == null ? new UTSJSONObject() : response.data as UTSJSONObject)
|
||||
}, fail: () => reject(new Error('网络连接失败,请稍后重试'))
|
||||
})
|
||||
})
|
||||
async function accountRequest(path: string, method: RequestMethod, payload: UTSJSONObject): Promise<UTSJSONObject> {
|
||||
requireAccount()
|
||||
return await requestJson(path, method, payload)
|
||||
}
|
||||
export async function saveAccountProfile(nickname: string, avatar: string): Promise<void> {
|
||||
const session = requireAccount(); const phone = draftText(session, 'phone')
|
||||
@@ -55,7 +46,7 @@ export async function saveAccountProfile(nickname: string, avatar: string): Prom
|
||||
if (name.length < 2 || name.length > 20) throw new Error('昵称请输入 2–20 个字符')
|
||||
if (API_BASE_URL.length > 0) await accountRequest('/account/profile', 'PUT', { nickname: name, avatar })
|
||||
if (!sameAccount(session)) throw new Error('登录状态已变化,请重新进入页面')
|
||||
uni.setStorageSync(profileKey(phone), { nickname: name, avatar })
|
||||
setUserStorage(profileKey(phone), { nickname: name, avatar })
|
||||
}
|
||||
export async function requestSecurityCode(purpose: string, newPhone: string): Promise<void> {
|
||||
if (!['password', 'phone-current', 'phone-new'].includes(purpose)) throw new Error('验证码用途无效')
|
||||
|
||||
Reference in New Issue
Block a user