feat(ai-service): 替换 anonymous 为随机访客唯一标识 getUserId()
- 新增 getUserId() 函数,已登录返回 memberId,未登录生成并持久化 guest_* 唯一ID - 替换全部 10 处 'anonymous' 硬编码为 getUserId()
This commit is contained in:
@@ -26,6 +26,29 @@ try {
|
||||
console.warn('读取会话ID失败:', e);
|
||||
}
|
||||
|
||||
const GUEST_ID_KEY = 'ai_guest_user_id';
|
||||
|
||||
/**
|
||||
* 获取用户ID:已登录返回 memberId,未登录生成访客唯一标识并持久化
|
||||
*/
|
||||
function getUserId() {
|
||||
const memberId = store.state.memberInfo?.id;
|
||||
if (memberId) return memberId;
|
||||
|
||||
let guestId;
|
||||
try {
|
||||
guestId = uni.getStorageSync(GUEST_ID_KEY);
|
||||
} catch (e) { /* ignore */ }
|
||||
|
||||
if (!guestId) {
|
||||
guestId = 'guest_' + Date.now() + '_' + Math.random().toString(36).slice(2, 10);
|
||||
try {
|
||||
uni.setStorageSync(GUEST_ID_KEY, guestId);
|
||||
} catch (e) { /* ignore */ }
|
||||
}
|
||||
return guestId;
|
||||
}
|
||||
|
||||
// #ifdef MP-WEIXIN
|
||||
// ================================
|
||||
// WebSocket 长连接管理(微信小程序)
|
||||
@@ -75,7 +98,7 @@ function ensureWebSocketConnected() {
|
||||
// 获取认证参数(独立函数,不使用 this)
|
||||
var _uniacid = uni.getStorageSync('uniacid') || Config.uniacid;
|
||||
var _token = store.state.token || 'test_token';
|
||||
var _userId = store.state.memberInfo?.id || 'anonymous';
|
||||
var _userId = getUserId();
|
||||
|
||||
wsSocketTask.onOpen(function() {
|
||||
wsConnected = true;
|
||||
@@ -217,12 +240,12 @@ export default {
|
||||
const params = {
|
||||
url: '/api/kefu/chat',
|
||||
data: {
|
||||
user_id: store.state.memberInfo?.id || 'anonymous',
|
||||
user_id: getUserId(),
|
||||
stream: false,
|
||||
inputs: {},
|
||||
query: message,
|
||||
response_mode: 'blocking', // 强制 blocking
|
||||
user: store.state.memberInfo?.id || 'anonymous',
|
||||
user: getUserId(),
|
||||
conversation_id: this.getConversationId() || '',
|
||||
...getDomainParams()
|
||||
},
|
||||
@@ -283,7 +306,7 @@ export default {
|
||||
action: 'chat',
|
||||
uniacid: this.getUniacid(),
|
||||
query: message,
|
||||
user_id: store.state.memberInfo?.id || 'anonymous',
|
||||
user_id: getUserId(),
|
||||
conversation_id: this.getConversationId() || '',
|
||||
...getDomainParams()
|
||||
})
|
||||
@@ -310,7 +333,7 @@ export default {
|
||||
inputs: {},
|
||||
query: message,
|
||||
response_mode: 'streaming',
|
||||
user_id: store.state.memberInfo?.id || 'anonymous',
|
||||
user_id: getUserId(),
|
||||
conversation_id: this.getConversationId() || '',
|
||||
...getDomainParams()
|
||||
})
|
||||
@@ -462,8 +485,8 @@ export default {
|
||||
data: {
|
||||
uniacid: this.getUniacid(),
|
||||
token: store.state.token || 'test_token',
|
||||
user_id: store.state.memberInfo?.id || 'anonymous',
|
||||
member_id: store.state.memberInfo?.id || 'anonymous',
|
||||
user_id: getUserId(),
|
||||
member_id: getUserId(),
|
||||
...getDomainParams()
|
||||
},
|
||||
header: {
|
||||
@@ -533,10 +556,10 @@ export default {
|
||||
const requestData = {
|
||||
uniacid: params.uniacid || this.getUniacid(),
|
||||
conversation_id: params.conversation_id,
|
||||
user_id: params.user_id || store.state.memberInfo?.id || 'anonymous',
|
||||
user_id: params.user_id || getUserId(),
|
||||
limit: params.limit || 20,
|
||||
offset: params.offset || 0,
|
||||
member_id: params.member_id || store.state.memberInfo?.id || 'anonymous',
|
||||
member_id: params.member_id || getUserId(),
|
||||
token: params.token || '',
|
||||
...getDomainParams()
|
||||
};
|
||||
@@ -579,8 +602,8 @@ export default {
|
||||
}
|
||||
const paramsObj = {
|
||||
uniacid: this.getUniacid(),
|
||||
user_id: store.state.memberInfo?.id || 'anonymous',
|
||||
member_id: store.state.memberInfo?.id || 'anonymous',
|
||||
user_id: getUserId(),
|
||||
member_id: getUserId(),
|
||||
token: store.state.token || 'test_token',
|
||||
query: message,
|
||||
conversation_id: conversationId || '',
|
||||
|
||||
Reference in New Issue
Block a user