package smithy import ( "go_dreamfactory/comm" "go_dreamfactory/pb" ) // 参数校验 func (this *apiComp) AtlasActivateCheck(session comm.IUserSession, req *pb.SmithyAtlasActivateReq) (errdata *pb.ErrorData) { return } // 获取铁匠铺图鉴信息 func (this *apiComp) AtlasActivate(session comm.IUserSession, req *pb.SmithyAtlasActivateReq) (errdata *pb.ErrorData) { var ( addScore int32 // 更新图鉴增加的积分 tasks []*pb.BuriedParam update map[string]interface{} ) update = make(map[string]interface{}, 0) if errdata = this.AtlasActivateCheck(session, req); errdata != nil { return // 参数校验失败直接返回 } atlas, err := this.module.modelAtlas.getSmithyAtlasList(session.GetUserId()) if err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } if req.Id == "" { // 一键激活 for _, v := range atlas.Atlas { if !v.Activate { v.Activate = true addScore = v.Data1.Score } if v.Data2 != nil { addScore = v.Data2.Score - v.Data1.Score if addScore < 0 { // 异常校验 防止配置修改导致分数减少 addScore = 0 } v.Data1 = v.Data2 v.Data2 = nil } atlas.Score += addScore } update["atlas"] = atlas.Atlas for _, v := range atlas.Collect { if !v.Activate { // 激活 v.Activate = true atlas.Score += v.Score } } } else { conf, err := this.module.configure.GetSmithyAtlasConf(req.Id) if err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_SmithyNoFoundAtlas, Title: pb.ErrorCode_SmithyNoFoundAtlas.ToString(), } return } if conf.TypeId == 1 { if v, ok := atlas.Atlas[req.Id]; ok { if !v.Activate { // 激活 v.Activate = true addScore = v.Data1.Score } else { //更新操作 if v.Data2 != nil { addScore = v.Data2.Score - v.Data1.Score if addScore < 0 { // 异常校验 防止配置修改导致分数减少 addScore = 0 } v.Data1 = v.Data2 v.Data2 = nil } else { errdata = &pb.ErrorData{ Code: pb.ErrorCode_SmithyNoActivateAtlas, Title: pb.ErrorCode_SmithyNoActivateAtlas.ToString(), } return } } update["atlas"] = atlas.Atlas atlas.Score += addScore update["score"] = atlas.Score } else { errdata = &pb.ErrorData{ Code: pb.ErrorCode_SmithyNoFoundAtlas, Title: pb.ErrorCode_SmithyNoFoundAtlas.ToString(), } return } } else if conf.TypeId == 2 { if v, ok := atlas.Collect[req.Id]; ok { if !v.Activate { // 激活 v.Activate = true atlas.Score += v.Score } } else { errdata = &pb.ErrorData{ Code: pb.ErrorCode_SmithyNoFoundAtlas, Title: pb.ErrorCode_SmithyNoFoundAtlas.ToString(), } return } } } update["score"] = atlas.Score update["collect"] = atlas.Collect this.module.modelAtlas.modifySmithyAtlasList(session.GetUserId(), update) tasks = append(tasks, comm.GetBuriedParam(comm.Rtype165, 1)) tasks = append(tasks, comm.GetBuriedParam(comm.Rtype166, int32(len(atlas.Collect)))) tasks = append(tasks, comm.GetBuriedParam(comm.Rtype167, atlas.Score)) session.SendMsg(string(this.module.GetType()), "atlasactivate", &pb.SmithyAtlasActivateResp{Data: atlas}) go this.module.AsynHandleSession(session.Clone(), func(session comm.IUserSession) { this.module.ModuleBuried.TriggerBuried(session, tasks...) }) return }