diff --git a/api/go/handler/user_handler.go b/api/go/handler/user_handler.go index 617e680a..d6327039 100644 --- a/api/go/handler/user_handler.go +++ b/api/go/handler/user_handler.go @@ -218,10 +218,9 @@ func (h *UserHandler) Logout(c *gin.Context) { // Session 获取/验证会话 func (h *UserHandler) Session(c *gin.Context) { - sessionId := c.GetHeader(types.SessionName) - session := h.App.ChatSession.Get(sessionId) - if session.ClientIP == c.ClientIP() { - resp.SUCCESS(c, session) + user, err := utils.GetLoginUser(c, h.db) + if err == nil { + resp.SUCCESS(c, user) } else { resp.NotAuth(c) } diff --git a/web/src/action/session.js b/web/src/action/session.js index 9f499e4d..ea1314c2 100644 --- a/web/src/action/session.js +++ b/web/src/action/session.js @@ -3,7 +3,7 @@ import {httpGet} from "@/utils/http"; export function checkSession() { return new Promise((resolve, reject) => { httpGet('/api/user/session').then(res => { - resolve(res) + resolve(res.data) }).catch(err => { reject(err) }) diff --git a/web/src/main.js b/web/src/main.js index 8b3165d5..f6962bd8 100644 --- a/web/src/main.js +++ b/web/src/main.js @@ -4,11 +4,25 @@ import "element-plus/dist/index.css" import 'vant/lib/index.css'; import App from './App.vue' import {createPinia} from "pinia"; -import {Cell, Image, List, NavBar, Notify, Search, Tabbar, TabbarItem, TextEllipsis} from "vant"; +import { + Cell, + ConfigProvider, + Image, + List, + NavBar, + Notify, + Picker, + Popup, + Search, + Tabbar, + TabbarItem, + TextEllipsis +} from "vant"; import router from "@/router"; const app = createApp(App) app.use(createPinia()) +app.use(ConfigProvider); app.use(Tabbar); app.use(TabbarItem); app.use(NavBar); @@ -17,6 +31,8 @@ app.use(Cell) app.use(Image) app.use(TextEllipsis) app.use(Notify) +app.use(Picker) +app.use(Popup) app.use(List); app.use(router).use(ElementPlus).mount('#app') diff --git a/web/src/views/ChatPlus.vue b/web/src/views/ChatPlus.vue index bb727b53..36ea3bd1 100644 --- a/web/src/views/ChatPlus.vue +++ b/web/src/views/ChatPlus.vue @@ -697,13 +697,13 @@ const searchChat = function () { chatList.value = allChats.value return } - const roles = []; + const items = []; for (let i = 0; i < allChats.value.length; i++) { if (allChats.value[i].title.toLowerCase().indexOf(chatName.value.toLowerCase()) !== -1) { - roles.push(allChats.value[i]); + items.push(allChats.value[i]); } } - chatList.value = roles; + chatList.value = items; } const updateUser = function (data) { diff --git a/web/src/views/mobile/Chat.vue b/web/src/views/mobile/Chat.vue index 3c8e89ef..3dd3ddff 100644 --- a/web/src/views/mobile/Chat.vue +++ b/web/src/views/mobile/Chat.vue @@ -1,6 +1,10 @@ @@ -39,6 +62,8 @@ import {ref} from "vue"; import {httpGet} from "@/utils/http"; import {getLoginUser} from "@/utils/storage"; import {showFailToast} from "vant"; +import {checkSession} from "@/action/session"; +import router from "@/router"; const title = ref("会话列表") const chatName = ref("") @@ -49,6 +74,49 @@ const finished = ref(false) const error = ref(false) const user = getLoginUser() +const showPicker = ref(false) +const columns = ref([ + [{text: 'GPT-3.5', value: 1}, + {text: 'GPT-4', value: 2}, + ], + [{text: 'xxxx', value: 3}, + {text: 'yyy', value: 4},] +]) + +checkSession().then(() => { + // 加载角色列表 + httpGet(`/api/role/list?user_id=${user.id}`).then((res) => { + if (res.data) { + const items = res.data + const roles = [] + for (let i = 0; i < items.length; i++) { + // console.log(items[i]) + roles.push({text: items[i].name, value: items[i].id, icon: items[i].icon}) + } + columns.value[0] = roles + } + }).catch(() => { + showFailToast("加载聊天角色失败") + }) + + // 加载系统配置 + httpGet('/api/admin/config/get?key=system').then(res => { + if (res.data) { + const items = res.data.models + const models = [] + for (let i = 0; i < items.length; i++) { + console.log(items[i]) + models.push({text: items[i].toUpperCase(), value: items[i]}) + } + columns.value[1] = models + } + }).catch(() => { + showFailToast("加载系统配置失败") + }) +}).catch(() => { + router.push("/login") +}) + const onLoad = () => { httpGet("/api/chat/list?user_id=" + user.id).then((res) => { if (res.data) { @@ -68,13 +136,17 @@ const search = () => { chats.value = allChats.value return } - const roles = []; + const items = []; for (let i = 0; i < allChats.value.length; i++) { if (allChats.value[i].title.toLowerCase().indexOf(chatName.value.toLowerCase()) !== -1) { - roles.push(allChats.value[i]); + items.push(allChats.value[i]); } } - chats.value = roles; + chats.value = items; +} + +const newChat = (value) => { + console.log(value) } @@ -83,8 +155,6 @@ const search = () => { .chat-mobile { .content { - padding: 0 10px; - .van-cell__value { .chat-list-item { display flex @@ -101,5 +171,19 @@ const search = () => { } } } + + .van-picker-column { + .picker-option { + display flex + width 100% + padding 0 10px + + .van-image { + width 20px; + height 20px; + margin-right 5px + } + } + } } \ No newline at end of file diff --git a/web/src/views/mobile/Home.vue b/web/src/views/mobile/Home.vue index 03e3b6a2..40cfede8 100644 --- a/web/src/views/mobile/Home.vue +++ b/web/src/views/mobile/Home.vue @@ -1,20 +1,24 @@ \ No newline at end of file