go_dreamfactory/modules/moonlv/model_moonlv.go
2023-11-15 15:41:51 +08:00

104 lines
2.7 KiB
Go

package moonlv
import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/x/bsonx"
)
type modelMoonlv struct {
modules.MCompModel
module *Moonlv
}
func (this *modelMoonlv) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
this.TableName = string(comm.TableMoonlv)
err = this.MCompModel.Init(service, module, comp, options)
this.module = module.(*Moonlv)
// uid 创建索引
this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{
Keys: bsonx.Doc{{Key: "uid", Value: bsonx.Int32(1)}},
})
return
}
func (this *modelMoonlv) getMoonlvList(uid string) (result *pb.DBMoonLv, err error) {
result = &pb.DBMoonLv{}
if err = this.Get(uid, result); err != nil {
if mongo.ErrNoDocuments == err {
result.Id = primitive.NewObjectID().Hex()
result.Uid = uid
result.Lv = 1 // 默认1级
result.Reward = make(map[int32]bool)
var szTaskid []int32
if lvConf, err := this.module.configure.GetMoonLvConf(1); err == nil {
if conf, err := this.module.configure.GetMoonLvTaskConf(lvConf.TaskGroupId); err == nil {
for _, v := range conf {
szTaskid = append(szTaskid, v.TaskId) // 获取任务id
}
}
}
if data, err := this.module.ModuleBuried.CheckCondition(uid, szTaskid...); err == nil {
for _, v := range data {
tmp := &pb.MoonTask{
TaskId: v.Conid,
Received: 0,
Cond: v,
}
if v.State == pb.BuriedItemFinishState_buried_finish {
tmp.Received = 1
}
result.Tasks = append(result.Tasks, tmp)
}
}
this.Add(uid, result)
err = nil
}
return
}
return
}
func (this *modelMoonlv) modifyMoonlvList(uid string, data map[string]interface{}) error {
return this.Change(uid, data)
}
// func (this *modelMoonlv) getTaskRecord(uid string) (*pb.DBTujianTask, error) {
// tt := &pb.DBTujianTask{Uid: uid}
// if err := this.Get(uid, tt); err != nil {
// return tt, err
// }
// return tt, nil
// }
func (this *modelMoonlv) updateTaskRecord(uid string, taskId int32, dt *pb.DBMoonLv) error {
update := make(map[string]interface{})
for _, v := range dt.Tasks {
if v.TaskId == taskId {
if v.Received == 1 {
v.Received = 2
} else if v.Received == 2 {
return comm.NewCustomError(pb.ErrorCode_SmithyTaskReceived)
} else {
return comm.NewCustomError(pb.ErrorCode_SmithyTaskNoFinished)
}
break
}
}
update["tasks"] = dt.Tasks
if len(update) > 0 {
if err := this.Change(uid, update); err != nil {
return err
}
}
return nil
}