fix(withdraw): resolve remote 404 route, db reason column patch and avatar tmp path fallback

这个提交包含在:
xcbyy
2026-10-13 09:33:29 +08:00
父节点 1fb0cc4273
当前提交 35a5a6670c
共有 8 个文件被更改,包括 2648 次插入 和 64 次删除

查看文件

@@ -1863,6 +1863,96 @@ app.post('/api/posts/:id/apply', async (req: Request, res: Response) => {
}
});
// 7.8 陪玩收藏管理接口 (收藏/取消收藏/列表/状态探测)
app.get('/api/favorites', async (req: Request, res: Response) => {
try {
const userId = Number(req.query.userId || 1001);
const list = await repo.getFavorites(userId);
res.json({
code: 20000,
data: list,
message: '获取收藏列表成功'
});
} catch (err: any) {
res.status(500).json({ code: 50000, message: err.message });
}
});
app.get('/api/favorites/check', async (req: Request, res: Response) => {
try {
const userId = Number(req.query.userId || 1001);
const expertId = Number(req.query.expertId);
const isFav = await repo.isFavorite(userId, expertId);
res.json({
code: 20000,
data: { isFavorite: isFav }
});
} catch (err: any) {
res.status(500).json({ code: 50000, message: err.message });
}
});
app.post('/api/favorites', async (req: Request, res: Response) => {
try {
const { userId, expertId } = req.body;
if (!expertId) {
return res.status(400).json({ code: 40000, message: 'expertId 不能为空' });
}
const result = await repo.addFavorite(Number(userId || 1001), Number(expertId));
res.json({
code: 20000,
data: result,
message: result.message
});
} catch (err: any) {
res.status(500).json({ code: 50000, message: err.message });
}
});
app.delete('/api/favorites/:expertId', async (req: Request, res: Response) => {
try {
const userId = Number(req.query.userId || 1001);
const expertId = Number(req.params.expertId);
const result = await repo.removeFavorite(userId, expertId);
res.json({
code: 20000,
data: result,
message: result.message
});
} catch (err: any) {
res.status(500).json({ code: 50000, message: err.message });
}
});
// 7.9 分销团队与返佣订单流水接口
app.get('/api/distribution/team', async (req: Request, res: Response) => {
try {
const userId = Number(req.query.userId || 1001);
const teamData = await repo.getDistributionTeam(userId);
res.json({
code: 20000,
data: teamData,
message: '获取团队列表成功'
});
} catch (err: any) {
res.status(500).json({ code: 50000, message: err.message });
}
});
app.get('/api/distribution/records', async (req: Request, res: Response) => {
try {
const userId = Number(req.query.userId || 1001);
const records = await repo.getDistributionRecords(userId);
res.json({
code: 20000,
data: records,
message: '获取返佣明细成功'
});
} catch (err: any) {
res.status(500).json({ code: 50000, message: err.message });
}
});
// 8. 启动服务器并初始化数据库
async function bootstrap() {
try {