Merge branch 'meixiongfeng' of http://git.legu.cc/liwei_3d/go_dreamfactory into dev

This commit is contained in:
meixiongfeng 2022-12-21 16:49:20 +08:00
commit 648bbf0d94
10 changed files with 93 additions and 35 deletions

View File

@ -290,6 +290,8 @@ type (
AddVipData(session IUserSession, oldVip, newVip int32) AddVipData(session IUserSession, oldVip, newVip int32)
// 查询所有特权 key 对应comm.PrivilegeType1类型 // 查询所有特权 key 对应comm.PrivilegeType1类型
CheckAllPrivilege(session IUserSession) map[int32]*pb.PrivilegeList CheckAllPrivilege(session IUserSession) map[int32]*pb.PrivilegeList
// 通过特权类型获取特权对应的增加数量
GetCountByPrivilegeId(uid string, pId int32) (count int32)
} }
//武馆 //武馆
IMartialhall interface { IMartialhall interface {

View File

@ -70,15 +70,11 @@ func (this *Gourmet) Reddot(session comm.IUserSession, rid ...comm.ReddotType) (
} }
func (this *Gourmet) CheckPoint20(uid string) bool { func (this *Gourmet) CheckPoint20(uid string) bool {
cfgCom := this.configure.GetGlobalConf() // 获取总的下单时长
if cfgCom == nil {
return false
}
_gourmet, err := this.modelGourmet.getGourmetList(uid) _gourmet, err := this.modelGourmet.getGourmetList(uid)
if err != nil { if err != nil {
return false return false
} }
if cfgCom.Gourmet < _gourmet.OrderCostTime { // 大于总时长是不允许的 if _gourmet.OrderCostTime > 0 {
return false return false
} }
return true return true

View File

@ -88,8 +88,8 @@ func (this *apiComp) Buy(session comm.IUserSession, req *pb.HuntingBuyReq) (code
list.RecoveryTime = 0 list.RecoveryTime = 0
} }
addCount += req.Count addCount += req.Count
if amount+addCount > conf.VikingNum { if amount+addCount > conf.HuntingNum {
code = pb.ErrorCode_VikingBuyMaxCount code = pb.ErrorCode_HuntingBuyMaxCount
return return
} }
mapData["recoveryTime"] = list.RecoveryTime mapData["recoveryTime"] = list.RecoveryTime

View File

@ -44,10 +44,7 @@ func (this *apiComp) Challenge(session comm.IUserSession, req *pb.HuntingChallen
code = pb.ErrorCode_HuntingNoChallengeCount code = pb.ErrorCode_HuntingNoChallengeCount
return return
} }
// if hunting.ChallengeCount > this.module.configure.GetGlobalConf().HuntingNum+hunting.BuyCount {
// code = pb.ErrorCode_HuntingMaxChallengeCount
// return
// }
cfgData := this.module.configure.GetHuntingBossConfigData(req.BossType, req.Difficulty) cfgData := this.module.configure.GetHuntingBossConfigData(req.BossType, req.Difficulty)
if cfgData == nil { if cfgData == nil {
code = pb.ErrorCode_ConfigNoFound code = pb.ErrorCode_ConfigNoFound

View File

@ -2,11 +2,14 @@ package hunting
import ( import (
"go_dreamfactory/comm" "go_dreamfactory/comm"
"go_dreamfactory/lego/sys/mgo"
"go_dreamfactory/pb" "go_dreamfactory/pb"
"go_dreamfactory/sys/configure" "go_dreamfactory/sys/configure"
cfg "go_dreamfactory/sys/configure/structs" cfg "go_dreamfactory/sys/configure/structs"
"go_dreamfactory/utils" "go_dreamfactory/utils"
"strconv"
"go.mongodb.org/mongo-driver/bson/primitive"
"google.golang.org/protobuf/proto" "google.golang.org/protobuf/proto"
) )
@ -28,7 +31,38 @@ func (this *apiComp) GetList(session comm.IUserSession, req *pb.HuntingGetListRe
} }
list, err := this.module.modelHunting.getHuntingList(session.GetUserId()) list, err := this.module.modelHunting.getHuntingList(session.GetUserId())
if err != nil { if mgo.MongodbNil == err {
result := &pb.DBHunting{
Id: primitive.NewObjectID().Hex(),
Uid: session.GetUserId(),
Boss: make(map[int32]int32),
BossTime: make(map[string]int32),
}
_cfg := this.module.configure.GetHuntingBossTypeConfigData()
for k := range _cfg {
result.Boss[k] = 0
str := strconv.Itoa(int(k)) + "_1"
result.BossTime[str] = 0
}
this.module.modelHunting.Add(session.GetUserId(), result)
conf := this.module.configure.GetGlobalConf()
if conf == nil {
code = pb.ErrorCode_ConfigNoFound
return
}
iCont := conf.EnchantbossInitial
atn := conf.EnchantbossCos
if iCont > 0 {
this.module.DispenseRes(session, []*cfg.Gameatn{&cfg.Gameatn{
A: atn.A,
T: atn.T,
N: iCont,
}}, true)
}
} else if err != nil {
code = pb.ErrorCode_DBError code = pb.ErrorCode_DBError
return return
} }

View File

@ -6,9 +6,7 @@ import (
"go_dreamfactory/lego/sys/mgo" "go_dreamfactory/lego/sys/mgo"
"go_dreamfactory/modules" "go_dreamfactory/modules"
"go_dreamfactory/pb" "go_dreamfactory/pb"
"strconv"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/x/bsonx" "go.mongodb.org/mongo-driver/x/bsonx"
) )
@ -35,27 +33,11 @@ func (this *modelHunting) modifyHuntingDataByObjId(uid string, data map[string]i
// 获取列表信息 // 获取列表信息
func (this *modelHunting) getHuntingList(uid string) (result *pb.DBHunting, err error) { func (this *modelHunting) getHuntingList(uid string) (result *pb.DBHunting, err error) {
result = &pb.DBHunting{ result = &pb.DBHunting{}
Id: primitive.NewObjectID().Hex(),
Uid: uid,
Boss: make(map[int32]int32),
BossTime: make(map[string]int32),
}
if err = this.Get(uid, result); err != nil && mgo.MongodbNil != err { if err = this.Get(uid, result); err != nil && mgo.MongodbNil != err {
return return
} }
if mgo.MongodbNil == err {
if len(result.Boss) == 0 {
_cfg := this.module.configure.GetHuntingBossTypeConfigData()
for k := range _cfg {
result.Boss[k] = 0
str := strconv.Itoa(int(k)) + "_1"
result.BossTime[str] = 0
}
}
this.Add(uid, result)
}
err = nil err = nil
return result, err return result, err
} }

View File

@ -3,8 +3,11 @@ package privilege
import ( import (
"fmt" "fmt"
"go_dreamfactory/lego/core" "go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/modules" "go_dreamfactory/modules"
"go_dreamfactory/sys/configure"
cfg "go_dreamfactory/sys/configure/structs" cfg "go_dreamfactory/sys/configure/structs"
"sync"
) )
const ( const (
@ -15,7 +18,9 @@ const (
///背包配置管理组件 ///背包配置管理组件
type configureComp struct { type configureComp struct {
modules.MCompConfigure modules.MCompConfigure
module *Privilege module *Privilege
hlock sync.RWMutex
_privilegeMap map[int32]map[int32]int32
} }
//组件初始化接口 //组件初始化接口
@ -24,6 +29,25 @@ func (this *configureComp) Init(service core.IService, module core.IModule, comp
this.module = module.(*Privilege) this.module = module.(*Privilege)
this.LoadConfigure(game_privilegecard, cfg.NewGamePrivilegeCard) this.LoadConfigure(game_privilegecard, cfg.NewGamePrivilegeCard)
this.LoadConfigure(game_privilege, cfg.NewGamePrivilege) this.LoadConfigure(game_privilege, cfg.NewGamePrivilege)
this._privilegeMap = make(map[int32]map[int32]int32, 0)
configure.RegisterConfigure(game_privilege, cfg.NewGamePrivilege, func() {
if v, err := this.GetConfigure(game_privilege); err == nil {
if configure, ok := v.(*cfg.GamePrivilege); ok {
this.hlock.Lock()
defer this.hlock.Unlock()
for k, v := range configure.GetDataMap() {
if v1, ok := this._privilegeMap[v.PrivilegeType]; ok {
v1[k] = v.PrivilegeParameter
} else {
this._privilegeMap[v.PrivilegeType] = make(map[int32]int32)
}
}
return
}
}
log.Errorf("get game_pagoda conf err:%v", err)
return
})
return return
} }
@ -59,3 +83,11 @@ func (this *configureComp) GetPrivilegeData(id int32) (result *cfg.GamePrivilege
this.module.Errorf("GetPrivilegeData err, id:%d", id) this.module.Errorf("GetPrivilegeData err, id:%d", id)
return nil return nil
} }
func (this *configureComp) GetPrivilegeByType(iType int32) (result map[int32]int32) {
result = make(map[int32]int32)
if v, ok := this._privilegeMap[iType]; ok {
result = v
}
return result
}

View File

@ -401,3 +401,18 @@ func (this *Privilege) SendDailyPrivilegeMail(session comm.IUserSession, cId []i
this.mail.SendMailByCid(session, comm.VipDaily, res) this.mail.SendMailByCid(session, comm.VipDaily, res)
} }
} }
func (this *Privilege) GetCountByPrivilegeId(uid string, pId int32) (count int32) {
vip, err := this.modelVip.getVipList(uid)
if err != nil {
return
}
if v, ok := vip.Privilege[pId]; ok {
data := this.configure.GetPrivilegeByType(pId)
for _, v1 := range v.PrivilegeID {
if c, ok1 := data[v1]; ok1 {
count += c
}
}
}
return
}

View File

@ -69,7 +69,7 @@ func (this *apiComp) Buy(session comm.IUserSession, req *pb.VikingBuyReq) (code
if list.RecoveryTime+int64(conf.VikingExpeditionRecoveryTime*60) <= configure.Now().Unix() { if list.RecoveryTime+int64(conf.VikingExpeditionRecoveryTime*60) <= configure.Now().Unix() {
curCount++ curCount++
list.RecoveryTime += int64(conf.VikingExpeditionRecoveryTime * 60) list.RecoveryTime += int64(conf.VikingExpeditionRecoveryTime * 60)
if curCount >= conf.HuntingNum { if curCount >= conf.VikingNum {
list.RecoveryTime = 0 list.RecoveryTime = 0
break break
} }

View File

@ -63,7 +63,7 @@ func (this *apiComp) GetList(session comm.IUserSession, req *pb.VikingGetListReq
if list.RecoveryTime+int64(conf.VikingExpeditionRecoveryTime*60) <= configure.Now().Unix() { if list.RecoveryTime+int64(conf.VikingExpeditionRecoveryTime*60) <= configure.Now().Unix() {
curCount++ curCount++
list.RecoveryTime += int64(conf.VikingExpeditionRecoveryTime * 60) list.RecoveryTime += int64(conf.VikingExpeditionRecoveryTime * 60)
if curCount >= conf.HuntingNum { if curCount >= conf.VikingNum {
list.RecoveryTime = 0 list.RecoveryTime = 0
break break
} }