/// <summary> /// 技能升级 /// </summary> /// <param name="mid"></param> /// <param name="cid"></param> /// <returns></returns> public static RootResponse <DTOSkillSetView> UseSkillExp(Guid mid, string cid) { if (string.IsNullOrEmpty(cid) || !FrameUtil.CheckChar22Id(cid)) { return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.SkillInvalidCid)); } //var package = ItemCore.Instance.GetPackage(mid, EnumTransactionType.MixSkillExpCard); //if (package == null) // return ResponseHelper.CreateRoot<DTOSkillSetView>(MessageCode.NbParameterError); //var item = package.GetByItemCode(310110); //if (item == null) // return ResponseHelper.CreateRoot<DTOSkillSetView>(MessageCode.SkillExpNotFind); var bag = SkillCardConvert.GetSkillBagWrap(mid); var onlib = bag.SetList; var dstItem = onlib.Values.FirstOrDefault(i => i.ItemId == cid); if (null == dstItem) { return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.SkillMissCard)); } string rawCode = dstItem.ItemCode; if (dstItem.Cfg.SkillLevel <= 0) { dstItem.Cfg.SkillLevel = 1; } if (dstItem.Cfg.SkillLevel >= SkillCardConfig.SKILLCardMaxCardLevel) { return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.SkillMixOverCardLevel)); } var config = SkillCardConfig.GetSkillUpgrade(dstItem.Cfg.SkillLevel + 1, dstItem.Cfg.SkillClass); if (config == null) { return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.SkillMissConfig)); } var manager = ManagerCore.Instance.GetManager(mid); if (manager == null) { return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.AdMissManager)); } if (manager.Coin < config.Coin) { return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.LackofCoin)); } int newLevel = 1; if (InnerDealMix(dstItem, out newLevel)) { string setSkills = string.Empty; if (dstItem.ItemCode != rawCode)//升级了 { setSkills = bag.SetSkillsTextFromLib(); MemcachedFactory.SolutionClient.Delete(mid); } var errCode = InnerSaveMixNew(manager, mid, bag, config.Coin, setSkills); if (errCode == MessageCode.Success) { var response = GetSkillSetInfo(mid); response.Data.Coin = manager.Coin; return(response); } } return(ResponseHelper.CreateRoot <DTOSkillSetView>(MessageCode.FailUpdate)); }