package user import ( "fmt" "go_dreamfactory/lego/core" "go_dreamfactory/modules" "go_dreamfactory/pb" "time" uuid "github.com/satori/go.uuid" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/mongo/options" ) const ( //Redis DB_UserTable core.SqlTable = "user" //用户表 ) type ModelUser struct { modules.Model_Comp } func (this *ModelUser) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { err = this.Model_Comp.Init(service, module, comp, options) this.TableName = "user" return } func (this *ModelUser) User_FindByAccount(sid int32, account string) (*pb.DB_UserData, error) { filter := bson.M{ "sid": sid, "binduid": account, } sr := this.DB.FindOne(DB_UserTable, filter) var nd *pb.DB_UserData err := sr.Decode(&nd) return nd, err } func (this *ModelUser) User_FindById(id string) (*pb.DB_UserData, error) { filter := bson.M{ "userid": id, } sr := this.DB.FindOne(DB_UserTable, filter) user := &pb.DB_UserData{} err := sr.Decode(user) return user, err } func (this *ModelUser) User_Create(user *pb.DB_UserData) (err error) { _id := primitive.NewObjectID().Hex() user.Id = _id user.Uid = fmt.Sprintf("%d_%s", user.Sid, _id) user.Uuid = uuid.NewV4().String() user.Ctime = time.Now().Unix() _, err = this.DB.InsertOne(DB_UserTable, user) return err } //更新用户数据到DB func (this *ModelUser) User_Update(data *pb.DB_UserData) (err error) { err = this.DB.FindOneAndUpdate( DB_UserTable, bson.M{"uid": data.Uid}, bson.M{"$set": bson.M{ "name": data.Name, }}, options.FindOneAndUpdate().SetUpsert(true), ).Err() return err }