Merge branch 'dev' of http://git.legu.cc/liwei_3d/go_dreamfactory into dev
This commit is contained in:
commit
24d71fee78
@ -645,7 +645,7 @@ type (
|
|||||||
}
|
}
|
||||||
//战斗记录模块
|
//战斗记录模块
|
||||||
IBattleRecord interface {
|
IBattleRecord interface {
|
||||||
WrietBattleRecord(uid string, report *pb.BattleReport)
|
WrietBattleRecord(uid string, report *pb.BattleReport, expire int64)
|
||||||
}
|
}
|
||||||
IDragon interface {
|
IDragon interface {
|
||||||
//获取玩家坐骑列表
|
//获取玩家坐骑列表
|
||||||
|
@ -9,6 +9,7 @@ import (
|
|||||||
|
|
||||||
"go.mongodb.org/mongo-driver/bson"
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
"go.mongodb.org/mongo-driver/mongo"
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
|
mgooptions "go.mongodb.org/mongo-driver/mongo/options"
|
||||||
"go.mongodb.org/mongo-driver/x/bsonx"
|
"go.mongodb.org/mongo-driver/x/bsonx"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -25,6 +26,11 @@ func (this *modelComp) Init(service core.IService, module core.IModule, comp cor
|
|||||||
this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{
|
this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{
|
||||||
Keys: bsonx.Doc{{Key: "uid", Value: bsonx.Int32(1)}},
|
Keys: bsonx.Doc{{Key: "uid", Value: bsonx.Int32(1)}},
|
||||||
})
|
})
|
||||||
|
indexModel := mongo.IndexModel{
|
||||||
|
Keys: bson.M{"expireAt": 1}, // 设置TTL索引列"expire_date"
|
||||||
|
Options: mgooptions.Index().SetExpireAfterSeconds(0), // 设置过期时间(单位:秒)
|
||||||
|
}
|
||||||
|
_, err = this.DB.CreateIndex(core.SqlTable(this.TableName), indexModel) //设置 验证码过期时间索引
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ func (this *BattleRecord) Start() (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//写入战斗记录
|
//写入战斗记录
|
||||||
func (this *BattleRecord) WrietBattleRecord(uid string, report *pb.BattleReport) {
|
func (this *BattleRecord) WrietBattleRecord(uid string, report *pb.BattleReport, expire int64) {
|
||||||
var (
|
var (
|
||||||
result *pb.DBBattlePlayRecord
|
result *pb.DBBattlePlayRecord
|
||||||
model *recordModel
|
model *recordModel
|
||||||
@ -64,6 +64,7 @@ func (this *BattleRecord) WrietBattleRecord(uid string, report *pb.BattleReport)
|
|||||||
result = &pb.DBBattlePlayRecord{
|
result = &pb.DBBattlePlayRecord{
|
||||||
Id: report.Info.Id,
|
Id: report.Info.Id,
|
||||||
Record: data,
|
Record: data,
|
||||||
|
ExpireAt: expire,
|
||||||
}
|
}
|
||||||
if model, err = this.model.getrecordModel(uid); err != nil {
|
if model, err = this.model.getrecordModel(uid); err != nil {
|
||||||
this.Errorln(err)
|
this.Errorln(err)
|
||||||
|
@ -7,6 +7,7 @@ import (
|
|||||||
"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"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 参数校验
|
// 参数校验
|
||||||
@ -184,7 +185,7 @@ func (this *apiComp) ChallengeFinish(session comm.IUserSession, req *pb.GuildGve
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//写入战斗记录
|
//写入战斗记录
|
||||||
go this.module.battlerecord.WrietBattleRecord(session.GetUserId(), req.Report)
|
go this.module.battlerecord.WrietBattleRecord(session.GetUserId(), req.Report, time.Now().Add(time.Hour*24*8).Unix())
|
||||||
session.SendMsg(string(this.module.GetType()), "challengefinish", &pb.GuildGveChallengeFinishResp{
|
session.SendMsg(string(this.module.GetType()), "challengefinish", &pb.GuildGveChallengeFinishResp{
|
||||||
Guildid: req.Guildid,
|
Guildid: req.Guildid,
|
||||||
Boosid: req.Boosid,
|
Boosid: req.Boosid,
|
||||||
|
59
modules/robot/modulerobot_chat.go
Normal file
59
modules/robot/modulerobot_chat.go
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
package robot
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"go_dreamfactory/comm"
|
||||||
|
"go_dreamfactory/pb"
|
||||||
|
cfg "go_dreamfactory/sys/configure/structs"
|
||||||
|
|
||||||
|
"google.golang.org/protobuf/proto"
|
||||||
|
)
|
||||||
|
|
||||||
|
//用户模块 机器人
|
||||||
|
type ModuleRobot_Chat struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *ModuleRobot_Chat) Init() (err error) {
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//接收到消息
|
||||||
|
func (this *ModuleRobot_Chat) Receive(robot IRobot, stype string, message proto.Message) (err error) {
|
||||||
|
switch stype {
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//机器人执行流
|
||||||
|
func (this *ModuleRobot_Chat) DoPipeline(robot IRobot) (err error) {
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//做任务
|
||||||
|
func (this *ModuleRobot_Chat) DoTask(robot IRobot, taskconf *cfg.GameWorldTaskData, condconf *cfg.GameBuriedCondiData) (err error) {
|
||||||
|
var (
|
||||||
|
errdata *pb.ErrorData
|
||||||
|
)
|
||||||
|
switch comm.TaskType(condconf.Type) {
|
||||||
|
case comm.Rtype62:
|
||||||
|
var (
|
||||||
|
usermodule *ModuleRobot_User
|
||||||
|
)
|
||||||
|
usermodule = robot.GetModule(comm.ModuleUser).(*ModuleRobot_User)
|
||||||
|
if _, errdata = robot.SendMessage("chat", "send", &pb.ChatSendReq{
|
||||||
|
Avatar: usermodule.user.Avatar,
|
||||||
|
Uname: usermodule.user.Name,
|
||||||
|
Ulv: usermodule.user.Lv,
|
||||||
|
Channel: pb.ChatChannel_World,
|
||||||
|
Ctype: pb.ChatType_Text,
|
||||||
|
Content: fmt.Sprintf("你好!我是%s", robot.Account()),
|
||||||
|
}); errdata != nil {
|
||||||
|
err = errors.New(fmt.Sprintf("code:%d message:%s", errdata.Code, errdata.Message))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
74
modules/robot/modulerobot_shop.go
Normal file
74
modules/robot/modulerobot_shop.go
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
package robot
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"go_dreamfactory/comm"
|
||||||
|
"go_dreamfactory/pb"
|
||||||
|
cfg "go_dreamfactory/sys/configure/structs"
|
||||||
|
|
||||||
|
"google.golang.org/protobuf/proto"
|
||||||
|
)
|
||||||
|
|
||||||
|
//用户模块 机器人
|
||||||
|
type ModuleRobot_Shop struct {
|
||||||
|
goods map[pb.ShopType][]*pb.ShopItem
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *ModuleRobot_Shop) Init() (err error) {
|
||||||
|
this.goods = make(map[pb.ShopType][]*pb.ShopItem)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//接收到消息
|
||||||
|
func (this *ModuleRobot_Shop) Receive(robot IRobot, stype string, message proto.Message) (err error) {
|
||||||
|
switch stype {
|
||||||
|
case "getlist":
|
||||||
|
resp := message.(*pb.ShopGetListResp)
|
||||||
|
this.goods[resp.SType] = resp.Goods
|
||||||
|
break
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//机器人执行流
|
||||||
|
func (this *ModuleRobot_Shop) DoPipeline(robot IRobot) (err error) {
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//做任务
|
||||||
|
func (this *ModuleRobot_Shop) DoTask(robot IRobot, taskconf *cfg.GameWorldTaskData, condconf *cfg.GameBuriedCondiData) (err error) {
|
||||||
|
var (
|
||||||
|
errdata *pb.ErrorData
|
||||||
|
)
|
||||||
|
switch comm.TaskType(condconf.Type) {
|
||||||
|
case comm.Rtype104:
|
||||||
|
var (
|
||||||
|
usermodule *ModuleRobot_User
|
||||||
|
)
|
||||||
|
usermodule = robot.GetModule(comm.ModuleUser).(*ModuleRobot_User)
|
||||||
|
if _, errdata = robot.SendMessage("shop", "getlist", &pb.ShopGetListReq{
|
||||||
|
SType: pb.ShopType_DiamondShop,
|
||||||
|
}); errdata != nil {
|
||||||
|
err = errors.New(fmt.Sprintf("code:%d message:%s", errdata.Code, errdata.Message))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, v := range this.goods[pb.ShopType_DiamondShop] {
|
||||||
|
if v.LeftBuyNum > 0 && usermodule.user.Diamond >= int64(v.Consume[0].N) {
|
||||||
|
if _, errdata = robot.SendMessage("shop", "buy", &pb.ShopBuyReq{
|
||||||
|
ShopType: pb.ShopType_DiamondShop,
|
||||||
|
Gid: v.Gid,
|
||||||
|
BuyNum: 1,
|
||||||
|
}); errdata != nil {
|
||||||
|
err = errors.New(fmt.Sprintf("code:%d message:%s", errdata.Code, errdata.Message))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
@ -140,6 +140,10 @@ locp:
|
|||||||
module = comm.ModuleViking
|
module = comm.ModuleViking
|
||||||
case comm.Rtype199:
|
case comm.Rtype199:
|
||||||
module = comm.ModuleHero
|
module = comm.ModuleHero
|
||||||
|
case comm.Rtype62:
|
||||||
|
module = comm.ModuleChat
|
||||||
|
case comm.Rtype104:
|
||||||
|
module = comm.ModuleShop
|
||||||
default:
|
default:
|
||||||
log.Error("[Robot DoTask]", log.Field{Key: "ctype", Value: cconf.Type}, log.Field{Key: "conld", Value: cconf.Id}, log.Field{Key: "err", Value: "Not Achieved !"})
|
log.Error("[Robot DoTask]", log.Field{Key: "ctype", Value: cconf.Type}, log.Field{Key: "conld", Value: cconf.Id}, log.Field{Key: "err", Value: "Not Achieved !"})
|
||||||
break locp
|
break locp
|
||||||
|
@ -54,6 +54,8 @@ func (this *Robot) Init(addr string, client IClient) (err error) {
|
|||||||
this.modules[comm.ModuleArena] = new(ModuleRobot_Arena)
|
this.modules[comm.ModuleArena] = new(ModuleRobot_Arena)
|
||||||
this.modules[comm.ModulePagoda] = new(ModuleRobot_Pagoda)
|
this.modules[comm.ModulePagoda] = new(ModuleRobot_Pagoda)
|
||||||
this.modules[comm.ModuleViking] = new(ModuleRobot_Viking)
|
this.modules[comm.ModuleViking] = new(ModuleRobot_Viking)
|
||||||
|
this.modules[comm.ModuleChat] = new(ModuleRobot_Chat)
|
||||||
|
this.modules[comm.ModuleShop] = new(ModuleRobot_Shop)
|
||||||
|
|
||||||
for _, v := range this.modules {
|
for _, v := range this.modules {
|
||||||
v.Init()
|
v.Init()
|
||||||
|
@ -27,7 +27,8 @@ type DBBattlePlayRecord struct {
|
|||||||
unknownFields protoimpl.UnknownFields
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` //唯一ID
|
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` //唯一ID
|
||||||
Record []byte `protobuf:"bytes,5,opt,name=record,proto3" json:"record"` //BattleReport 的序列化数据
|
ExpireAt int64 `protobuf:"varint,2,opt,name=expireAt,proto3" json:"expireAt" bson:"expireAt"` //过期时间
|
||||||
|
Record []byte `protobuf:"bytes,3,opt,name=record,proto3" json:"record"` //BattleReport 的序列化数据
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *DBBattlePlayRecord) Reset() {
|
func (x *DBBattlePlayRecord) Reset() {
|
||||||
@ -69,6 +70,13 @@ func (x *DBBattlePlayRecord) GetId() string {
|
|||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *DBBattlePlayRecord) GetExpireAt() int64 {
|
||||||
|
if x != nil {
|
||||||
|
return x.ExpireAt
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
func (x *DBBattlePlayRecord) GetRecord() []byte {
|
func (x *DBBattlePlayRecord) GetRecord() []byte {
|
||||||
if x != nil {
|
if x != nil {
|
||||||
return x.Record
|
return x.Record
|
||||||
@ -81,12 +89,13 @@ var File_battlerecord_battlerecord_db_proto protoreflect.FileDescriptor
|
|||||||
var file_battlerecord_battlerecord_db_proto_rawDesc = []byte{
|
var file_battlerecord_battlerecord_db_proto_rawDesc = []byte{
|
||||||
0x0a, 0x22, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2f, 0x62,
|
0x0a, 0x22, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2f, 0x62,
|
||||||
0x61, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x64, 0x62, 0x2e, 0x70,
|
0x61, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x64, 0x62, 0x2e, 0x70,
|
||||||
0x72, 0x6f, 0x74, 0x6f, 0x22, 0x3c, 0x0a, 0x12, 0x44, 0x42, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65,
|
0x72, 0x6f, 0x74, 0x6f, 0x22, 0x58, 0x0a, 0x12, 0x44, 0x42, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65,
|
||||||
0x50, 0x6c, 0x61, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
|
0x50, 0x6c, 0x61, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
|
||||||
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65,
|
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78,
|
||||||
0x63, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x72, 0x65, 0x63, 0x6f,
|
0x70, 0x69, 0x72, 0x65, 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x65, 0x78,
|
||||||
0x72, 0x64, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
|
0x70, 0x69, 0x72, 0x65, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64,
|
||||||
0x6f, 0x33,
|
0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, 0x06,
|
||||||
|
0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
Loading…
Reference in New Issue
Block a user