AssetManager.UniApp/unpackage/dist/dev/mp-weixin/utils/api.js
niannian zheng 48c8231dd7 refactor(ui): 更新界面文本和配置以优化用户体验
更新微信小程序appid和相关配置
统一修改界面中的专业术语为更易懂的表述
优化资产管理和交易记录的显示文本
添加多货币支持和新的港股投资组合
2026-02-25 14:31:46 +08:00

282 lines
8.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";
const common_vendor = require("../common/vendor.js");
const BASE_URL = "https://api.assetmanager.com";
const TIMEOUT = 1e4;
const request = (url, method = "GET", data = {}, headers = {}) => {
const token = common_vendor.index.getStorageSync("token");
return new Promise((resolve, reject) => {
common_vendor.index.request({
url: BASE_URL + url,
method,
data,
header: {
"Content-Type": "application/json",
"Authorization": token ? `Bearer ${token}` : "",
...headers
},
timeout: TIMEOUT,
success: (res) => {
if (res.statusCode === 200) {
resolve(res.data);
} else if (res.statusCode === 401) {
common_vendor.index.removeStorageSync("token");
common_vendor.index.removeStorageSync("userInfo");
common_vendor.index.__f__("log", "at utils/api.js:40", "登录已过期,请重新登录");
reject(new Error("登录已过期"));
} else {
reject(new Error(`请求失败: ${res.statusCode}`));
}
},
fail: (err) => {
common_vendor.index.__f__("log", "at utils/api.js:48", "API请求失败使用模拟数据:", err);
resolve(getMockData(url));
}
});
});
};
const get = (url, params = {}, headers = {}) => {
const queryString = Object.keys(params).map((key) => `${key}=${encodeURIComponent(params[key])}`).join("&");
const fullUrl = queryString ? `${url}?${queryString}` : url;
return request(fullUrl, "GET", {}, headers);
};
const post = (url, data = {}, headers = {}) => {
return request(url, "POST", data, headers);
};
const put = (url, data = {}, headers = {}) => {
return request(url, "PUT", data, headers);
};
const del = (url, params = {}, headers = {}) => {
const queryString = Object.keys(params).map((key) => `${key}=${encodeURIComponent(params[key])}`).join("&");
const fullUrl = queryString ? `${url}?${queryString}` : url;
return request(fullUrl, "DELETE", {}, headers);
};
const getMockData = (url, method, data) => {
return new Promise((resolve) => {
setTimeout(() => {
if (url.includes("/assets")) {
resolve({
code: 200,
data: {
totalValue: 12845924e-1,
currency: "CNY",
todayProfit: 12482,
todayProfitCurrency: "CNY",
totalReturnRate: 24.82
},
message: "success"
});
}
if (url.includes("/holdings")) {
resolve({
code: 200,
data: [
{
id: "hfea-001",
name: "美股全天候杠杆",
tags: "HFEA · 季度调仓",
status: "监控中",
statusType: "green",
iconChar: "H",
iconBgClass: "bg-green-100",
iconTextClass: "text-green-700",
value: 156240,
currency: "USD",
returnRate: 42.82,
returnType: "positive"
},
{
id: "ma-002",
name: "纳指双均线趋势",
tags: "趋势跟踪 · 日线",
status: "等待信号",
statusType: "gray",
iconChar: "T",
iconBgClass: "bg-blue-100",
iconTextClass: "text-blue-700",
value: 412500,
currency: "USD",
returnRate: -1.79,
returnType: "negative"
},
{
id: "hk-003",
name: "港股价值投资",
tags: "价值投资 · 蓝筹",
status: "持有中",
statusType: "green",
iconChar: "H",
iconBgClass: "bg-green-100",
iconTextClass: "text-green-700",
value: 896e3,
currency: "HKD",
returnRate: 12.56,
returnType: "positive"
}
],
message: "success"
});
}
if (url.includes("/strategies")) {
resolve({
code: 200,
data: [
{
id: "hfea",
iconChar: "H",
title: "HFEA 风险平价逻辑",
tag: "高风险 · 高预期收益",
desc: "针对杠杆ETF平衡的对冲策略核心逻辑为 TMF (3x长债) 与 UPRO (3x标普) 的季度平衡。",
bgClass: "bg-emerald-900",
tagClass: "text-emerald-700",
tags: ["季调", "止损机制"],
btnText: "配置参数",
btnClass: "btn-primary"
},
{
id: "ma",
iconChar: "T",
title: "双均线趋势跟随",
tag: "中风险 · 低回撤要求",
desc: "利用快线EMA10上穿慢线EMA60捕捉强势波段金叉买入死叉离场。",
bgClass: "bg-blue-600",
tagClass: "text-blue-700",
tags: ["日线", "左侧止盈"],
btnText: "预览模型",
btnClass: "btn-secondary"
},
{
id: "chandelier",
iconChar: "S",
title: "吊灯止损策略",
tag: "风险控制 · 辅助",
desc: "基于 ATR 波动率计算的动态止损线,锁住利润,防止回撤过大。",
bgClass: "bg-orange-500",
tagClass: "text-orange-700",
tags: ["ATR", "动态止盈"],
btnText: "配置参数",
btnClass: "btn-secondary"
}
],
message: "success"
});
}
if (url.includes("/user/info")) {
resolve({
code: 200,
data: {
userName: "首席策略员 0x42",
memberLevel: "全球实验室 Pro",
runningDays: 412
},
message: "success"
});
}
if (url.includes("/user/stats")) {
resolve({
code: 200,
data: {
signalsCaptured: 1248,
winRate: 58.4
},
message: "success"
});
}
if (url.includes("/app/info")) {
resolve({
code: 200,
data: {
version: "v2.4.0",
currentDate: (/* @__PURE__ */ new Date()).toISOString().split("T")[0]
},
message: "success"
});
}
if (url.includes("/api/auth/wechat/login")) {
resolve({
code: 200,
data: {
token: "mock-wechat-token-123456",
userInfo: {
id: "user-001",
openid: "mock-openid-123456",
nickname: "微信用户",
avatar: "https://via.placeholder.com/100",
memberLevel: "全球实验室 Pro",
runningDays: 412
}
},
message: "success"
});
}
if (url.includes("/api/auth/wechat/bind")) {
resolve({
code: 200,
data: {
token: "mock-wechat-token-789012",
userInfo: {
id: "user-001",
openid: "mock-openid-123456",
email: "user@example.com",
nickname: "微信用户",
avatar: "https://via.placeholder.com/100",
memberLevel: "全球实验室 Pro",
runningDays: 412
}
},
message: "success"
});
}
resolve({
code: 200,
data: null,
message: "success"
});
}, 500);
});
};
const api = {
// 资产相关API
assets: {
// 获取总资产数据
getAssetData: () => get("/assets"),
// 获取持仓组合数据
getHoldings: () => get("/holdings")
},
// 策略相关API
strategies: {
// 获取策略列表
getStrategies: () => get("/strategies"),
// 获取单个策略详情
getStrategyDetail: (id) => get(`/strategies/${id}`),
// 创建新策略
createStrategy: (data) => post("/strategies", data),
// 更新策略
updateStrategy: (id, data) => put(`/strategies/${id}`, data),
// 删除策略
deleteStrategy: (id) => del(`/strategies/${id}`)
},
// 用户相关API
user: {
// 获取用户信息
getUserInfo: () => get("/user/info"),
// 获取用户统计数据
getUserStats: () => get("/user/stats"),
// 更新用户信息
updateUserInfo: (data) => put("/user/info", data)
},
// 认证相关API
auth: {
// 微信登录
wechatLogin: (code) => post("/api/auth/wechat/login", { code }),
// 微信绑定
wechatBind: (data) => post("/api/auth/wechat/bind", data)
},
// 应用相关API
app: {
// 获取应用信息
getAppInfo: () => get("/app/info")
}
};
exports.api = api;
//# sourceMappingURL=../../.sourcemap/mp-weixin/utils/api.js.map