104 lines
2.7 KiB
Go
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
|
|
}
|