From a2e0dae65a02835b3c8aaf62e7197d7f707107f9 Mon Sep 17 00:00:00 2001 From: junleea <354425203@qq.com> Date: Tue, 20 May 2025 14:17:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0mongodb=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0=E7=94=A8=E6=88=B7=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E7=9A=84=E4=B8=8A=E4=BC=A0=E5=8F=8A=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dao/db.go | 33 ++++++++++++++++++++++ dao/user.go | 51 ++++++++++++++++++++++++++++++++++ go.mod | 8 ++++++ go.sum | 36 ++++++++++++++++++++++++ handler/user.go | 34 +++++++++++++++++++++++ proto/conf.go | 2 ++ proto/{user_req.go => user.go} | 15 ++++++++++ service/userService.go | 39 ++++++++++++++++++++++++++ 8 files changed, 218 insertions(+) rename proto/{user_req.go => user.go} (84%) diff --git a/dao/db.go b/dao/db.go index 46e8e97..9141633 100644 --- a/dao/db.go +++ b/dao/db.go @@ -2,7 +2,10 @@ package dao import ( "StuAcaWorksAI/proto" + "context" "fmt" + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" "gorm.io/driver/mysql" "gorm.io/driver/postgres" "gorm.io/gorm" @@ -139,3 +142,33 @@ func Close() { } sqlDB.Close() } + +// 定义 MongoDB 客户端和集合 +var mongoClient *mongo.Client + +//var collection *mongo.Collection + +func InitMongoDB() { + // 设置 MongoDB 客户端选项 + clientOptions := options.Client().ApplyURI(proto.Config.MONGO_URI) + // 连接到 MongoDB + var err error + mongoClient, err = mongo.Connect(context.TODO(), clientOptions) + if err != nil { + log.Fatal(err) + } + // 检查连接 + err = mongoClient.Ping(context.TODO(), nil) + if err != nil { + log.Fatal(err) + } + log.Println("Connected to MongoDB!") +} + +func CloseMongoDB() { + // 关闭 MongoDB 客户端 + if err := mongoClient.Disconnect(context.TODO()); err != nil { + log.Println("Error disconnecting from MongoDB:", err) + } + log.Println("Disconnected from MongoDB!") +} diff --git a/dao/user.go b/dao/user.go index 1b3054a..6629b43 100644 --- a/dao/user.go +++ b/dao/user.go @@ -2,7 +2,9 @@ package dao import ( "StuAcaWorksAI/proto" + "context" "fmt" + "go.mongodb.org/mongo-driver/bson" "gorm.io/gorm" ) @@ -281,3 +283,52 @@ func UpdateThirdPartyUserInfoByThirdPartyID(thirdPartyID, thirdPartyPlatform, th } return nil } + +/***************************************mongodb*****************************************/ +const UserUIConfigCollection = "user_ui_config" + +// 用户对前端的配置信息 +func CreateUserUIConfigInfo(config proto.UserUIConfigInfo) (string, error) { + collection := mongoClient.Database(proto.Config.MONGO_DATABASE).Collection(UserUIConfigCollection) + res, err := collection.InsertOne(context.TODO(), config) + if err != nil { + fmt.Println("Error inserting document:", err) + return "", err + } + fmt.Println("Inserted a single document:", res.InsertedID) + return res.InsertedID.(string), nil +} + +func GetUserUIConfigInfo(userID int) (proto.UserUIConfigInfo, error) { + collection := mongoClient.Database(proto.Config.MONGO_DATABASE).Collection(UserUIConfigCollection) + var config proto.UserUIConfigInfo + err := collection.FindOne(context.TODO(), bson.M{"user_id": userID}).Decode(&config) + if err != nil { + fmt.Println("Error finding document:", err) + return config, err + } + return config, nil +} + +func UpdateUserUIConfigInfo(userID int, config proto.UserUIConfigInfo) error { + collection := mongoClient.Database(proto.Config.MONGO_DATABASE).Collection(UserUIConfigCollection) + filter := bson.M{"user_id": userID} + update := bson.M{"$set": config} + _, err := collection.UpdateOne(context.TODO(), filter, update) + if err != nil { + fmt.Println("Error updating document:", err) + return err + } + return nil +} + +func DeleteUserUIConfigInfo(userID int) error { + collection := mongoClient.Database(proto.Config.MONGO_DATABASE).Collection(UserUIConfigCollection) + filter := bson.M{"user_id": userID} + _, err := collection.DeleteOne(context.TODO(), filter) + if err != nil { + fmt.Println("Error deleting document:", err) + return err + } + return nil +} diff --git a/go.mod b/go.mod index 8db5d04..b2b723a 100644 --- a/go.mod +++ b/go.mod @@ -15,6 +15,7 @@ require ( github.com/openai/openai-go v0.1.0-beta.10 github.com/robfig/cron/v3 v3.0.1 github.com/volcengine/volcengine-go-sdk v1.0.187 + go.mongodb.org/mongo-driver v1.17.3 gorm.io/driver/mysql v1.5.7 gorm.io/driver/postgres v1.5.11 gorm.io/gorm v1.25.12 @@ -36,6 +37,7 @@ require ( github.com/go-playground/validator/v10 v10.20.0 // indirect github.com/go-sql-driver/mysql v1.7.0 // indirect github.com/goccy/go-json v0.10.2 // indirect + github.com/golang/snappy v0.0.4 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect @@ -45,6 +47,7 @@ require ( github.com/jinzhu/now v1.1.5 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/compress v1.17.0 // indirect github.com/klauspost/cpuid/v2 v2.2.7 // indirect github.com/leodido/go-urn v1.4.0 // indirect github.com/magiconair/properties v1.8.7 // indirect @@ -52,6 +55,7 @@ require ( github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/montanaflynn/stats v0.7.1 // indirect github.com/pelletier/go-toml/v2 v2.2.2 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect @@ -70,6 +74,10 @@ require ( github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.2.12 // indirect github.com/volcengine/volc-sdk-golang v1.0.23 // indirect + github.com/xdg-go/pbkdf2 v1.0.0 // indirect + github.com/xdg-go/scram v1.1.2 // indirect + github.com/xdg-go/stringprep v1.0.4 // indirect + github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.9.0 // indirect golang.org/x/arch v0.8.0 // indirect diff --git a/go.sum b/go.sum index 8806908..178c189 100644 --- a/go.sum +++ b/go.sum @@ -62,6 +62,8 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -95,6 +97,8 @@ github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGw github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/klauspost/compress v1.17.0 h1:Rnbp4K9EjcDuVuHtd0dgA4qNuv9yKDYKK1ulpJwgrqM= +github.com/klauspost/compress v1.17.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= @@ -119,6 +123,8 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/montanaflynn/stats v0.7.1 h1:etflOAAHORrCC44V+aR6Ftzort912ZU+YLiSTuV8eaE= +github.com/montanaflynn/stats v0.7.1/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/ollama/ollama v0.6.2 h1:IMUxPByUqXY4fvt/5Rsm6zuffN1X+7jEWIjkqo4arK4= @@ -189,6 +195,17 @@ github.com/volcengine/volc-sdk-golang v1.0.23 h1:anOslb2Qp6ywnsbyq9jqR0ljuO63kg9 github.com/volcengine/volc-sdk-golang v1.0.23/go.mod h1:AfG/PZRUkHJ9inETvbjNifTDgut25Wbkm2QoYBTbvyU= github.com/volcengine/volcengine-go-sdk v1.0.187 h1:YpZjydoyHDA/ofnF6mYCelbOoo9pJsBEiQOOSJzGSOY= github.com/volcengine/volcengine-go-sdk v1.0.187/go.mod h1:gfEDc1s7SYaGoY+WH2dRrS3qiuDJMkwqyfXWCa7+7oA= +github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= +github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= +github.com/xdg-go/scram v1.1.2 h1:FHX5I5B4i4hKRVRBCFRxq1iQRej7WO3hhBuJf+UUySY= +github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4= +github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8= +github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM= +github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 h1:ilQV1hzziu+LLM3zUTJ0trRztfwgjqKnBWNtSRkbmwM= +github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78/go.mod h1:aL8wCCfTfSfmXjznFBSZNN13rSJjlIOI1fUNAtF7rmI= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +go.mongodb.org/mongo-driver v1.17.3 h1:TQyXhnsWfWtgAhMtOgtYHMTkZIfBTpMTsMnd9ZBeHxQ= +go.mongodb.org/mongo-driver v1.17.3/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= @@ -197,6 +214,7 @@ golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUu golang.org/x/arch v0.8.0 h1:3wRIsP3pM4yUptoR96otTUOXI367OS0+c9eeRi9doIc= golang.org/x/arch v0.8.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -205,32 +223,50 @@ golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa/go.mod h1:BHOTPb3L19zxehTsLo golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= diff --git a/handler/user.go b/handler/user.go index 368779b..ce18c3b 100644 --- a/handler/user.go +++ b/handler/user.go @@ -36,6 +36,9 @@ func SetUpUserGroup(router *gin.Engine) { userGroup.POST("/statistic", GetUserStatistic) userGroup.POST("/third_party_login_list", GetThirdPartyLoginList) //获取绑定的第三方登录账号 userGroup.DELETE("/delete_third_party_login", DeleteThirdPartyLogin) //删除绑定的第三方登录账号 + //前端用户ui配置 + userGroup.GET("/get_user_ui_config", GetUserUIConfig) //获取用户ui配置 + userGroup.POST("/set_user_ui_config", SetUserUIConfig) //设置用户ui配置 } type RLReq struct { @@ -718,3 +721,34 @@ func handleRegisterCode(c *gin.Context) { } c.JSON(http.StatusOK, resp) } + +func GetUserUIConfig(c *gin.Context) { + id, _ := c.Get("user_id") + userId := id.(int) + var resp proto.GenerateResp + resp.Code = proto.SuccessCode + resp.Message = "success" + resp.Data = service.GetUserUIConfigInfo(userId) + c.JSON(http.StatusOK, resp) +} + +func SetUserUIConfig(c *gin.Context) { + id, _ := c.Get("user_id") + userId := id.(int) + var req proto.UserUIConfigInfo + var resp proto.GenerateResp + if err := c.ShouldBind(&req); err == nil { + err2 := service.SetUserUIConfigInfo(userId, req) + if err2 != nil { + resp.Code = proto.OperationFailed + resp.Message = "设置失败!请检查是否属于或者已被删除" + } else { + resp.Code = proto.SuccessCode + resp.Message = "success" + } + } else { + resp.Code = proto.ParameterError + resp.Message = "error:" + err.Error() + } + c.JSON(http.StatusOK, resp) +} diff --git a/proto/conf.go b/proto/conf.go index cbc7196..79aeb05 100644 --- a/proto/conf.go +++ b/proto/conf.go @@ -68,6 +68,8 @@ type ConfigStruct struct { DB int `json:"db"` // 0: mysql, 1: pg MYSQL_DSN string `json:"mysql_dsn"` PG_DSN string `json:"pg_dsn"` + MONGO_URI string `json:"mongo_uri"` + MONGO_DATABASE string `json:"mongo_database"` SlowQueryThreshold int `json:"slow_query_threshold"` // 慢查询阈值,单位ms REDIS_ADDR string `json:"redis_addr"` TOKEN_USE_REDIS bool `json:"token_use_redis"` diff --git a/proto/user_req.go b/proto/user.go similarity index 84% rename from proto/user_req.go rename to proto/user.go index 2a39b8b..a6cbead 100644 --- a/proto/user_req.go +++ b/proto/user.go @@ -122,3 +122,18 @@ type ResponseOAuth struct { type DeleteThirdPartyLoginReq struct { ID int `json:"id" form:"id"` //用户第三方登录信息表ID } + +// 用户对前端交互的配置信息结构,mongodb +type UserUIConfigInfo struct { + UserID int `json:"user_id" form:"user_id"` // 用户ID + Theme string `json:"theme" form:"theme"` // 主题 + Language string `json:"language" form:"language"` // 语言 + FontSize int `json:"font_size" form:"font_size"` // 字体大小 + GenAIFunction UserUIFunctionConfigInfo `json:"gen_ai_function" form:"gen_ai_function"` // 生成AI功能配置 + KBaseFunction UserUIFunctionConfigInfo `json:"k_base_function" form:"k_base_function"` // 知识库功能配置 +} + +type UserUIFunctionConfigInfo struct { + ModelID int `json:"model_id" form:"model_id"` // 模型ID,选择的模型 + SessionID int `json:"session_id" form:"session_id"` // 会话ID,上一次的会话 +} diff --git a/service/userService.go b/service/userService.go index 1dbc9a3..0584327 100644 --- a/service/userService.go +++ b/service/userService.go @@ -8,6 +8,7 @@ import ( "errors" "fmt" "github.com/golang-jwt/jwt" + "log" "regexp" "strconv" "time" @@ -457,3 +458,41 @@ func GetUserInfoByToken(token string) (dao.User, error) { } return user, nil } + +// 获取用户前端配置信息 +func GetUserUIConfigInfo(userID int) proto.UserUIConfigInfo { + userConfig, err := dao.GetUserUIConfigInfo(userID) + if err != nil { + log.Println("GetUserUIConfigInfo error:", err) + return proto.UserUIConfigInfo{} + } + return userConfig +} + +// 设置用户前端配置信息 +func SetUserUIConfigInfo(userID int, config proto.UserUIConfigInfo) error { + //先查询是否有该用户的配置信息 + userConfig, err := dao.GetUserUIConfigInfo(userID) + if err != nil { + log.Println("SetUserUIConfigInfo error:", err) + return err + } + if userConfig.UserID == 0 { + //没有则插入 + id, err2 := dao.CreateUserUIConfigInfo(config) + if err2 != nil { + log.Println("InsertUserUIConfigInfo error:", err) + return err + } else { + log.Println("InsertUserUIConfigInfo success, id:", id, "config:", config) + } + } else { + //有则更新 + err3 := dao.UpdateUserUIConfigInfo(userID, config) + if err3 != nil { + log.Println("UpdateUserUIConfigInfo error:", err) + return err + } + } + return nil +}