From c163cfe234d49322a7a1deaa3d8fd17c568af98e Mon Sep 17 00:00:00 2001 From: eson <9673575+githubcontent@user.noreply.gitee.com> Date: Fri, 22 Sep 2023 12:09:41 +0800 Subject: [PATCH] info --- server/info/internal/logic/infologic.go | 44 ++++++++++++++++++++ server/info/internal/logic/infologic_test.go | 10 +---- 2 files changed, 46 insertions(+), 8 deletions(-) diff --git a/server/info/internal/logic/infologic.go b/server/info/internal/logic/infologic.go index 41bc7a91..b77e0bed 100644 --- a/server/info/internal/logic/infologic.go +++ b/server/info/internal/logic/infologic.go @@ -6,6 +6,7 @@ import ( "fusenapi/utils/auth" "fusenapi/utils/basic" "fusenapi/utils/check" + "log" "strings" "context" @@ -82,6 +83,26 @@ func (mquery *ModuleQuery) EncodeEmpty() map[string]any { return qstr } +func QueryDefault(conn *gorm.DB, module string, moduleQuery string, tname string) map[string]any { + + qname := strings.Split(moduleQuery, ".") + queryAsName := qname[len(qname)-1] + sqlstr := fmt.Sprintf( + "select JSON_EXTRACT(metadata,'$.%s') as %s from %s where module = '%s' and user_id = 0 and guest_id = 0 order by ctime DESC limit 1", + moduleQuery, // logo_selected + queryAsName, // logo_selected + tname, // fs_user_info + module, // profile + ) + raw := conn.Raw(sqlstr) + var info map[string]any + err := raw.Scan(&info).Error + if err == gorm.ErrRecordNotFound { + logx.Error(err) + } + return info +} + func (l *InfoLogic) Info(req *types.UserInfoRequest, userinfo *auth.UserInfo) (resp *basic.Response) { // 返回值必须调用Set重新返回, resp可以空指针调用 resp.SetStatus(basic.CodeOK, data) // userinfo 传入值时, 一定不为null @@ -178,6 +199,29 @@ func (l *InfoLogic) Info(req *types.UserInfoRequest, userinfo *auth.UserInfo) (r } } + // 隐含白板用户逻辑 + if v, ok := metadict["userinfo.profile"]; ok { + + if v == nil { + info := QueryDefault(l.svcCtx.MysqlConn, "profile", "logo_selected", "fs_user_info") + log.Println(info) + metadict["userinfo.profile"] = info + // log.Println(metadict) + } else { + profileDict := v.(map[string]any) + if _, ok := profileDict["logo_selected"]; !ok { + info := QueryDefault(l.svcCtx.MysqlConn, "profile", "logo_selected", "fs_user_info") + profileDict["logo_selected"] = info["logo_selected"] + } + } + + } else if v, ok := metadict["userinfo.profile.logo_selected"]; ok { + if v == nil { + info := QueryDefault(l.svcCtx.MysqlConn, "profile", "logo_selected", "fs_user_info") + metadict["userinfo.profile.logo_selected"] = info + } + } + return resp.SetStatus(basic.CodeOK, metadict) } diff --git a/server/info/internal/logic/infologic_test.go b/server/info/internal/logic/infologic_test.go index c6b32168..ec0e1d05 100644 --- a/server/info/internal/logic/infologic_test.go +++ b/server/info/internal/logic/infologic_test.go @@ -115,9 +115,7 @@ func TestMain(t *testing.T) { if v, ok := metadict["userinfo.profile"]; ok { if v == nil { - info := QueryDefault(conn, "profile", "logo_selected", "fs_user_info") - log.Println(info) metadict["userinfo.profile"] = info // log.Println(metadict) } else { @@ -126,19 +124,15 @@ func TestMain(t *testing.T) { info := QueryDefault(conn, "profile", "logo_selected", "fs_user_info") profileDict["logo_selected"] = info["logo_selected"] } - } } else if v, ok := metadict["userinfo.profile.logo_selected"]; ok { if v == nil { - + info := QueryDefault(conn, "profile", "logo_selected", "fs_user_info") + metadict["userinfo.profile.logo_selected"] = info } } - log.Println(metadict) - - return - } func QueryDefault(conn *gorm.DB, module string, moduleQuery string, tname string) map[string]any {