From 6a733de556958ae6c37588e6532ed599eee527ee Mon Sep 17 00:00:00 2001 From: RockYang Date: Mon, 26 Jun 2023 16:39:00 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20vue-mobile=20=3D>=20=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E4=BC=9A=E8=AF=9D=E8=81=8A=E5=A4=A9=E9=A1=B5=E9=9D=A2=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=B8=BB=E9=A2=98=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/go/handler/admin/admin_handler.go | 21 +- api/go/handler/chat_handler.go | 16 +- api/go/handler/user_handler.go | 8 +- web/src/components/mobile/ChatPrompt.vue | 81 ++++-- web/src/components/mobile/ChatReply.vue | 137 +++++----- web/src/main.js | 2 + web/src/store/system.js | 11 + web/src/views/ChatPlus.vue | 23 +- web/src/views/mobile/ChatList.vue | 50 ++-- web/src/views/mobile/ChatSession.vue | 322 ++++++++++++++--------- web/src/views/mobile/Home.vue | 4 +- 11 files changed, 417 insertions(+), 258 deletions(-) create mode 100644 web/src/store/system.js diff --git a/api/go/handler/admin/admin_handler.go b/api/go/handler/admin/admin_handler.go index 9155b4f1..a822b01e 100644 --- a/api/go/handler/admin/admin_handler.go +++ b/api/go/handler/admin/admin_handler.go @@ -8,6 +8,7 @@ import ( "chatplus/store/model" "chatplus/utils" "chatplus/utils/resp" + "strings" "github.com/gin-contrib/sessions" @@ -88,7 +89,7 @@ func (h *ManagerHandler) Migrate(c *gin.Context) { continue } - for k, _ := range m { + for k := range m { roleKeys = append(roleKeys, k) } u.ChatRoles = utils.JsonEncode(roleKeys) @@ -101,8 +102,10 @@ func (h *ManagerHandler) Migrate(c *gin.Context) { var roles []model.ChatRole h.db.Find(&roles) for _, r := range roles { - r.Icon = "/" + r.Icon - h.db.Updates(&r) + if !strings.HasPrefix(r.Icon, "/") { + r.Icon = "/" + r.Icon + h.db.Updates(&r) + } } break case "history": @@ -114,6 +117,18 @@ func (h *ManagerHandler) Migrate(c *gin.Context) { h.db.Updates(&r) } break + + case "avatar": + // 更新用户的头像地址 + var users []model.User + h.db.Find(&users) + for _, u := range users { + if !strings.HasPrefix(u.Avatar, "/") { + u.Avatar = "/" + u.Avatar + h.db.Updates(&u) + } + } + break } resp.SUCCESS(c, "SUCCESS") diff --git a/api/go/handler/chat_handler.go b/api/go/handler/chat_handler.go index 46723110..9130a007 100644 --- a/api/go/handler/chat_handler.go +++ b/api/go/handler/chat_handler.go @@ -52,9 +52,19 @@ func (h *ChatHandler) ChatHandle(c *gin.Context) { session := h.App.ChatSession.Get(sessionId) if session.SessionId == "" { - logger.Info("用户未登录") - c.Abort() - return + user, err := utils.GetLoginUser(c, h.db) + if err != nil { + logger.Info("用户未登录") + c.Abort() + return + } + session = types.ChatSession{ + SessionId: sessionId, + ClientIP: c.ClientIP(), + Username: user.Username, + UserId: user.Id, + } + h.App.ChatSession.Put(sessionId, session) } // use old chat data override the chat model and role ID diff --git a/api/go/handler/user_handler.go b/api/go/handler/user_handler.go index d6327039..02a182d3 100644 --- a/api/go/handler/user_handler.go +++ b/api/go/handler/user_handler.go @@ -220,7 +220,13 @@ func (h *UserHandler) Logout(c *gin.Context) { func (h *UserHandler) Session(c *gin.Context) { user, err := utils.GetLoginUser(c, h.db) if err == nil { - resp.SUCCESS(c, user) + var userVo vo.User + err := utils.CopyObject(user, &userVo) + if err != nil { + resp.ERROR(c) + } + userVo.Id = user.Id + resp.SUCCESS(c, userVo) } else { resp.NotAuth(c) } diff --git a/web/src/components/mobile/ChatPrompt.vue b/web/src/components/mobile/ChatPrompt.vue index f41814f2..23b5c4d5 100644 --- a/web/src/components/mobile/ChatPrompt.vue +++ b/web/src/components/mobile/ChatPrompt.vue @@ -1,46 +1,57 @@ - \ No newline at end of file diff --git a/web/src/components/mobile/ChatReply.vue b/web/src/components/mobile/ChatReply.vue index dd5ee081..8b33fb33 100644 --- a/web/src/components/mobile/ChatReply.vue +++ b/web/src/components/mobile/ChatReply.vue @@ -1,74 +1,66 @@ - \ No newline at end of file diff --git a/web/src/main.js b/web/src/main.js index 3388c472..37681649 100644 --- a/web/src/main.js +++ b/web/src/main.js @@ -22,6 +22,7 @@ import { Picker, Popup, Search, + ShareSheet, Sticky, SwipeCell, Tabbar, @@ -54,6 +55,7 @@ app.use(DropdownItem); app.use(Sticky); app.use(SwipeCell); app.use(Dialog); +app.use(ShareSheet); app.use(router).use(ElementPlus).mount('#app') diff --git a/web/src/store/system.js b/web/src/store/system.js new file mode 100644 index 00000000..794e4851 --- /dev/null +++ b/web/src/store/system.js @@ -0,0 +1,11 @@ +import Storage from "good-storage"; + +const MOBILE_THEME = "MOBILE_THEME" + +export function getMobileTheme() { + return Storage.get(MOBILE_THEME) ? Storage.get(MOBILE_THEME) : 'light' +} + +export function setMobileTheme(theme) { + Storage.set(MOBILE_THEME, theme) +} \ No newline at end of file diff --git a/web/src/views/ChatPlus.vue b/web/src/views/ChatPlus.vue index ddbccc36..a3a5015b 100644 --- a/web/src/views/ChatPlus.vue +++ b/web/src/views/ChatPlus.vue @@ -40,10 +40,10 @@
-