package smithy import ( "go_dreamfactory/comm" "go_dreamfactory/pb" ) //参数校验 func (this *apiComp) AtlasActivateCheck(session comm.IUserSession, req *pb.SmithyAtlasActivateReq) (errdata *pb.ErrorData) { if req.Id == "" { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, Title: pb.ErrorCode_ReqParameterError.ToString(), } } return } // 获取铁匠铺图鉴信息 func (this *apiComp) AtlasActivate(session comm.IUserSession, req *pb.SmithyAtlasActivateReq) (errdata *pb.ErrorData) { var ( addScore int32 // 更新图鉴增加的积分 szTask []*pb.BuriedParam ) 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 } 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 := make(map[string]interface{}, 0) update["atlas"] = atlas.Atlas atlas.Score += addScore update["score"] = atlas.Score this.module.modelAtlas.modifySmithyAtlasList(session.GetUserId(), update) } 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 update := make(map[string]interface{}, 0) update["collect"] = atlas.Collect atlas.Score += v.Score update["score"] = atlas.Score this.module.modelAtlas.modifySmithyAtlasList(session.GetUserId(), update) } } else { errdata = &pb.ErrorData{ Code: pb.ErrorCode_SmithyNoFoundAtlas, Title: pb.ErrorCode_SmithyNoFoundAtlas.ToString(), } return } } szTask = append(szTask, comm.GetBuriedParam(comm.Rtype165, 1)) szTask = append(szTask, comm.GetBuriedParam(comm.Rtype166, int32(len(atlas.Collect)))) szTask = append(szTask, comm.GetBuriedParam(comm.Rtype167, atlas.Score)) this.module.ModuleBuried.TriggerBuried(session.GetUserId(), szTask...) session.SendMsg(string(this.module.GetType()), "atlasactivate", &pb.SmithyAtlasActivateResp{Data: atlas}) return }