package plunder import ( "fmt" "go_dreamfactory/comm" "go_dreamfactory/lego/core" "go_dreamfactory/pb" "go_dreamfactory/sys/configure" "go_dreamfactory/utils" "go.mongodb.org/mongo-driver/bson" ) func (this *apiComp) GetListCheck(session comm.IUserSession, req *pb.PlunderGetListReq) (errdata *pb.ErrorData) { return } // 获取基本信息 func (this *apiComp) GetList(session comm.IUserSession, req *pb.PlunderGetListReq) (errdata *pb.ErrorData) { var ( err error list *pb.DBPlunder land *pb.DBPlunderLand update map[string]interface{} ) if errdata = this.GetListCheck(session, req); errdata != nil { return } update = make(map[string]interface{}) if list, err = this.module.modelPlunder.getPlunderData(session); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Message: err.Error(), } return } if list.Landid == "" { if land, err = this.module.modelLand.createPlunderLandData(list); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Message: err.Error(), } return } list.Landid = land.Id update["landid"] = land.Id } else { var uids []string etime := this.module.modelLand.GetEndTime() // 清理岛数据 if land.Etime > configure.Now().Unix() { land.Etime = etime for _, v := range land.Uinfo { // 重置成员信息 uids = append(uids, v.Uid) } if _, err = this.module.modelPlunder.DB.UpdateMany(core.SqlTable(comm.TablePlunder), bson.M{"uid": bson.M{"$in": uids}}, bson.M{"$set": bson.M{"landid": land.Id}}); err != nil { fmt.Printf("err:%v", err) return } } // 校验是否过期 if list.Etime > configure.Now().Unix() { if land, err = this.module.modelLand.createPlunderLandData(list); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Message: err.Error(), } return } list.Landid = land.Id update["landid"] = land.Id list.Etime = etime update["etime"] = land.Etime } if land, err = this.module.modelLand.getPlunderLandData(list.Landid); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Message: err.Error(), } return } } if len(list.Source) == 0 { list.Source, err = this.module.modelPlunder.refreshGoodsInfo() list.Setout = []int32{} update["setout"] = list.Setout update["source"] = list.Source } // 校验解锁的是否到期 for _, v := range list.Line { if v.Closetime > 0 && v.Closetime < configure.Now().Unix() { v.Closetime = -1 update["line"] = list.Line } } // 每日重置次数 if !utils.IsToday(list.Ctime) { //不是同一天 可以重置数据 list.Ctime = configure.Now().Unix() list.Pvpcount = 0 list.Count = 0 update["pvpcount"] = list.Pvpcount update["count"] = list.Count update["ctime"] = list.Ctime } if len(update) > 0 { this.module.modelPlunder.changePlunderData(session.GetUserId(), update) } session.SendMsg(string(this.module.GetType()), "getlist", &pb.PlunderGetListResp{ List: list, Land: land, }) return }