diff --git a/comm/const.go b/comm/const.go index 09364f8ce..a8ac4a08b 100644 --- a/comm/const.go +++ b/comm/const.go @@ -77,3 +77,8 @@ const ( CardTypeSkill int32 = 4 //技能升级卡 CardTypeMonster int32 = 5 //怪物卡 ) + +const ( + ResGold = "gold" //金币 + ResExp = "exp" //经验 +) diff --git a/modules/hero/hero_test.go b/modules/hero/hero_test.go index b2d04a6fc..730fc0d2a 100644 --- a/modules/hero/hero_test.go +++ b/modules/hero/hero_test.go @@ -61,6 +61,7 @@ func TestMain(m *testing.M) { go func() { lego.Run(service, //运行模块 module, + // ) }() time.Sleep(time.Second * 2) @@ -88,3 +89,12 @@ func TestHeroList(t *testing.T) { heroes, err := module.modelHero.getHeroList("u1") fmt.Printf("%v %v", heroes, err) } + +func TestModify(t *testing.T) { + data := map[string]interface{}{ + "lv": 2, + "exp": 1000, + } + err := module.modelHero.modifyHero("u1", "62b534bebf4745d4117acabe", data) + fmt.Printf("%v ", err) +} diff --git a/modules/hero/model_hero.go b/modules/hero/model_hero.go index 718fc6446..47932713b 100644 --- a/modules/hero/model_hero.go +++ b/modules/hero/model_hero.go @@ -40,7 +40,8 @@ func (this *ModelHero) initHero(uid string, heroCfgId int32) *pb.DBHero { Star: heroCfg.Star, //初始星级 Lv: 1, //初始等级 NormalSkill: []*pb.SkillData{}, //初始技能 - + IsOverlying: true, //是否允许叠加, + Block: false, //未锁定 Skins: []int32{}, EquipID: make([]string, 6), //初始装备 AddProperty: make(map[int32]int32), @@ -91,9 +92,9 @@ func (this *ModelHero) consumeOneHeroCard(uid, heroId string) error { return this.moduleHero.modelHero.DelListlds(uid, heroId) } -func (this *Hero) ModifyHero(heroId *pb.DBHero) (*pb.DBHero, pb.ErrorCode) { - - return nil, pb.ErrorCode_HeroNoExist +//更新英雄数据 +func (this *ModelHero) modifyHero(uid, heroId string, data map[string]interface{}) error { + return this.moduleHero.modelHero.ChangeList(uid, heroId, data) } //获取玩家的英雄列表 diff --git a/modules/hero/module.go b/modules/hero/module.go index 7e3a09a86..b407d0c53 100644 --- a/modules/hero/module.go +++ b/modules/hero/module.go @@ -105,17 +105,13 @@ func (this *Hero) QueryHeroAmount(uId string, heroCfgId int32) (amount uint32) { return amount } -func (this *Hero) QueryCardAmount(uId string, cardId int32) (amount uint32) { - return 0 -} - // 给指定英雄加经验 -func (this *Hero) AddCardExp(uid string, cardid string, exp int32) (code pb.ErrorCode) { +func (this *Hero) AddCardExp(uid string, heroId string, exp int32) (code pb.ErrorCode) { var ( curExp int32 curLv int32 ) - _hero, err := this.GetHero(uid, cardid) // 获取英雄信息 + _hero, err := this.GetHero(uid, heroId) // 获取英雄信息 if err != 0 { code = pb.ErrorCode_HeroNoExist return @@ -152,10 +148,16 @@ func (this *Hero) AddCardExp(uid string, cardid string, exp int32) (code pb.Erro } } } - _hero.Lv = curLv - _hero.Exp = curExp + // _hero.Lv = curLv + // _hero.Exp = curExp + update := map[string]interface{}{ + "lv": curLv, + "exp": curExp, + } - this.ModifyHero(_hero) // 修改英雄数据 + if err := this.modelHero.modifyHero(uid, heroId, update); err != nil { + code = pb.ErrorCode_DBError + } // 修改英雄数据 } else { code = pb.ErrorCode_HeroNoExist return diff --git a/modules/user/model_user.go b/modules/user/model_user.go index b1aed8e7c..87969a2cc 100644 --- a/modules/user/model_user.go +++ b/modules/user/model_user.go @@ -3,6 +3,7 @@ package user import ( "fmt" "go_dreamfactory/lego/core" + "go_dreamfactory/lego/sys/log" "go_dreamfactory/modules" "go_dreamfactory/pb" "time" @@ -22,7 +23,7 @@ type ModelUser struct { func (this *ModelUser) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { err = this.MCompModel.Init(service, module, comp, options) - this.TableName = "user" + this.TableName = string(TableUser) return } @@ -46,3 +47,18 @@ func (this *ModelUser) User_Create(user *pb.DB_UserData) (err error) { _, err = this.DB.InsertOne(TableUser, user) return err } + +//获取用户 +func (this *ModelUser) getUser(uid string) *pb.DB_UserData { + dbUser := &pb.DB_UserData{} + if err := this.Get(uid, dbUser); err != nil { + log.Errorf("getUser err:%v", err) + return nil + } + return dbUser +} + +//设置属性 +func (this *ModelUser) updateUserAttr(uid string, data map[string]interface{}) error { + return this.Change(uid, data) +} diff --git a/modules/user/module.go b/modules/user/module.go index 1933d7cb5..0aa16c2cc 100644 --- a/modules/user/module.go +++ b/modules/user/module.go @@ -42,10 +42,31 @@ func (this *User) GetHeroList(uid string) []*pb.DBHero { return nil } +//查询用户属性值 例如 金币 经验 func (this *User) QueryAttributeValue(uid string, attr string) (value int32) { + user := this.modelUser.getUser(uid) + switch attr { + case comm.ResGold: + return user.Gold + case comm.ResExp: + return user.Exp + + } return } +//用户资源 func (this *User) AddAttributeValue(uid string, attr string, add int32) (code pb.ErrorCode) { + update := make(map[string]interface{}) + switch attr { + case comm.ResGold: + update[comm.ResGold] = add + case comm.ResExp: + update[comm.ResExp] = add + } + + if err := this.modelUser.updateUserAttr(uid, update); err != nil { + code = pb.ErrorCode_DBError + } return } diff --git a/pb/hero_db.pb.go b/pb/hero_db.pb.go index b9a195ef3..5cbe3062f 100644 --- a/pb/hero_db.pb.go +++ b/pb/hero_db.pb.go @@ -103,6 +103,7 @@ type DBHero struct { SameCount int32 `protobuf:"varint,21,opt,name=sameCount,proto3" json:"sameCount" bson:"sameCount"` // 卡片叠加数量 SuiteId int32 `protobuf:"varint,22,opt,name=suiteId,proto3" json:"suiteId" bson:"suiteId"` // 套装Id SuiteExtId int32 `protobuf:"varint,23,opt,name=suiteExtId,proto3" json:"suiteExtId"` // go_tags(`bson:"suiteExtId"`) 扩展套装Id + IsOverlying bool `protobuf:"varint,24,opt,name=isOverlying,proto3" json:"isOverlying"` // go_tags(`bson:"isOverlying"`) 是否允许叠加 默认true } func (x *DBHero) Reset() { @@ -298,6 +299,13 @@ func (x *DBHero) GetSuiteExtId() int32 { return 0 } +func (x *DBHero) GetIsOverlying() bool { + if x != nil { + return x.IsOverlying + } + return false +} + var File_hero_hero_db_proto protoreflect.FileDescriptor var file_hero_hero_db_proto_rawDesc = []byte{ @@ -306,7 +314,7 @@ var file_hero_hero_db_proto_rawDesc = []byte{ 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x76, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x76, 0x22, 0x90, 0x07, 0x0a, 0x06, 0x44, 0x42, + 0x52, 0x07, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x76, 0x22, 0xb2, 0x07, 0x0a, 0x06, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x44, @@ -352,19 +360,21 @@ var file_hero_hero_db_proto_rawDesc = []byte{ 0x69, 0x74, 0x65, 0x49, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x75, 0x69, 0x74, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x69, 0x74, 0x65, 0x45, 0x78, 0x74, 0x49, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x75, 0x69, 0x74, 0x65, 0x45, - 0x78, 0x74, 0x49, 0x64, 0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x06, 0x5a, 0x04, - 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x78, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x6c, 0x79, + 0x69, 0x6e, 0x67, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x4f, 0x76, 0x65, + 0x72, 0x6c, 0x79, 0x69, 0x6e, 0x67, 0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x06, + 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pb/proto/hero/hero_db.proto b/pb/proto/hero/hero_db.proto index 8f9234603..abe4da37c 100644 --- a/pb/proto/hero/hero_db.proto +++ b/pb/proto/hero/hero_db.proto @@ -34,4 +34,5 @@ message DBHero { int32 sameCount = 21; // @go_tags(`bson:"sameCount"`) 卡片叠加数量 int32 suiteId = 22; //@go_tags(`bson:"suiteId"`) 套装Id int32 suiteExtId = 23; // go_tags(`bson:"suiteExtId"`) 扩展套装Id + bool isOverlying = 24; // go_tags(`bson:"isOverlying"`) 是否允许叠加 默认true } \ No newline at end of file diff --git a/test/module_test.go b/test/module_test.go new file mode 100644 index 000000000..a6bea40cf --- /dev/null +++ b/test/module_test.go @@ -0,0 +1,2 @@ +package test +