package smithy import ( "go_dreamfactory/comm" "go_dreamfactory/pb" "google.golang.org/protobuf/proto" ) //参数校验 func (this *apiComp) AtlasActivateCheck(session comm.IUserSession, req *pb.SmithyAtlasActivateReq) (code pb.ErrorCode) { if req.Id == "" { code = pb.ErrorCode_ReqParameterError } return } // 获取铁匠铺图鉴信息 func (this *apiComp) AtlasActivate(session comm.IUserSession, req *pb.SmithyAtlasActivateReq) (code pb.ErrorCode, data proto.Message) { var ( addScore int32 // 更新图鉴增加的积分 ) code = this.AtlasActivateCheck(session, req) if code != pb.ErrorCode_Success { return // 参数校验失败直接返回 } atlas, err := this.module.modelAtlas.getSmithyAtlasList(session.GetUserId()) if err != nil { code = pb.ErrorCode_DBError return } conf := this.module.configure.GetSmithyAtlasConf(req.Id) if conf == nil { code = pb.ErrorCode_SmithyNoFoundAtlas return } 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 { code = pb.ErrorCode_SmithyNoActivateAtlas 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 { code = pb.ErrorCode_SmithyNoFoundAtlas return } session.SendMsg(string(this.module.GetType()), "atlasactivate", &pb.SmithyAtlasActivateResp{Data: atlas}) return }