feat: 前台匿名浏览、登录引导、客服入口与返水增强

前台:
- 未登录可浏览首页/赛事/赔率,下注等操作弹出登录引导(去登录/继续浏览)
- 顶部新增客服入口与 iframe 弹窗
- 登录页支持暂不登录返回浏览

API:
- 首页/赛事/冠军盘接口改为公开访问,支持 X-Locale 头
- JWT 守卫支持可选认证

返水:
- 注单新增 is_cashbacked 字段,发放时自动标记
- 预览展示玩家余额,明确平台直发不从代理扣款
- 后台注单列表与玩家历史展示回水状态

其他:
- 串关禁止同场重复选号(SAME_MATCH)
- 补充结算资金流分析文档

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-11 09:36:44 +08:00
parent 785fa4416d
commit 844727c82e
35 changed files with 1007 additions and 49 deletions

View File

@@ -8,12 +8,28 @@ export const useAuthStore = defineStore('auth', () => {
JSON.parse(localStorage.getItem('user') || 'null'),
);
const loginPromptVisible = ref(false);
const loginReturnTo = ref('');
function showLoginPrompt(returnTo?: string) {
loginReturnTo.value = returnTo || '';
loginPromptVisible.value = true;
}
function hideLoginPrompt() {
loginPromptVisible.value = false;
}
async function login(username: string, password: string) {
const { data } = await api.post('/player/auth/login', { username, password });
token.value = data.data.token;
user.value = data.data.user;
localStorage.setItem('token', token.value);
localStorage.setItem('user', JSON.stringify(user.value));
const returnTo = loginReturnTo.value;
loginReturnTo.value = '';
loginPromptVisible.value = false;
return returnTo;
}
function logout() {
@@ -23,5 +39,9 @@ export const useAuthStore = defineStore('auth', () => {
localStorage.removeItem('user');
}
return { token, user, login, logout };
return {
token, user, login, logout,
loginPromptVisible, loginReturnTo,
showLoginPrompt, hideLoginPrompt,
};
});