public override bool TakeAction() { int saleNum = 0; if (ops == 1) { var package = UserCrystalPackage.Get(Uid); UserCrystalInfo userCrystal = package.CrystalPackage.Find(m => m.UserCrystalID.Equals(userCrystalID)); if (userCrystal != null) { totalPrice = (new ConfigCacheSet <CrystalInfo>().FindKey(userCrystal.CrystalID) ?? new CrystalInfo()).Price; ContextUser.GameCoin = MathUtils.Addition(ContextUser.GameCoin, totalPrice, int.MaxValue); //ContextUser.Update(); UserLogHelper.AppenCtystalLog(ContextUser.UserID, 4, userCrystal.CrystalID, totalPrice, 0, null, userCrystal.CrystalLv, userCrystal.CurrExprience); package.RemoveCrystal(userCrystal); } else { CrystalHelper.SellGrayCrystal(ContextUser, userCrystalID, out saleNum); } } else if (ops == 2) { CrystalHelper.SellGrayCrystal(ContextUser, null, out saleNum); } else { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().ServerBusy; return(false); } return(true); }
public override bool TakeAction() { UserHelper.GetUserLightOpen(ContextUser.UserID); DailyRestrainSet dailyRestrainSet = new ShareCacheStruct <DailyRestrainSet>().FindKey(RestrainType.MianFeiLieMing); UserDailyRestrain userRestrain = new GameDataCacheSet <UserDailyRestrain>().FindKey(ContextUser.UserID); if (dailyRestrainSet != null && userRestrain != null) { if (DateTime.Now.Date == userRestrain.RefreshDate.Date) { freeNum = VipHelper.GetVipUseNum(ContextUser.VipLv, RestrainType.MianFeiLieMing); freeNum = MathUtils.Subtraction(freeNum, userRestrain.Funtion2, 0); } else { freeNum = VipHelper.GetVipUseNum(ContextUser.VipLv, RestrainType.MianFeiLieMing); } } userLightArray = new GameDataCacheSet <UserLight>().FindAll(ContextUser.UserID); userLightArray.QuickSort((x, y) => { if (x == null && y == null) { return(0); } if (x != null && y == null) { return(1); } if (x == null) { return(-1); } return(x.HuntingID.CompareTo(y.HuntingID)); }); bool allowSale; bool allowTake; grayCrystalArray = CrystalHelper.GetNotSaleCrystalNum(ContextUser, out allowSale, out allowTake); grayCrystalArray.QuickSort((x, y) => { if (x == null && y == null) { return(0); } if (x != null && y == null) { return(1); } if (x == null) { return(-1); } return(x.CreateDate.CompareTo(y.CreateDate)); }); isSale = allowSale ? 1 : 2; issTelegrams = allowTake ? 1 : 2; return(true); }
internal static void SetParameter(CrystalHelper crystalHelper, ISearchExpression se) { if (se == null) { return; } LogicalExpression le = se as LogicalExpression; if (le != null) { SetParameter(crystalHelper, le.LeftHandSide); SetParameter(crystalHelper, le.RightHandSide); } else { SimpleExpression cse = se as SimpleExpression; string simpleParamName = "@" + cse.FullPropertyName; string complexParamName = "@" + cse.FullPropertyName + cse.Operator.ToString(); switch (cse.Operator) { case SimpleOperator.Any: case SimpleOperator.EqProperty: case SimpleOperator.IsNotNull: case SimpleOperator.IsNull: case SimpleOperator.NotEq: case SimpleOperator.NotEqProperty: case SimpleOperator.Sql: throw new ArgumentException(cse.Operator + " is not supported in procedure!"); case SimpleOperator.Ge: case SimpleOperator.Gt: case SimpleOperator.Le: case SimpleOperator.Lt: crystalHelper.SetParameter(complexParamName, cse.Values); break; case SimpleOperator.Eq: case SimpleOperator.GInG: case SimpleOperator.InG: case SimpleOperator.Like: crystalHelper.SetParameter(simpleParamName, cse.Values); break; } } }
/// <summary> /// 生成报表 /// </summary> /// <param name="reportInfoName"></param> /// <param name="dateStart"></param> /// <param name="dateEnd"></param> /// <returns></returns> public static byte[] GenerateReport(string reportInfoName, DateTime dateStart, DateTime dateEnd) { CrystalHelper crystalHelper = new CrystalHelper(); ReportInfo reportInfo = ADInfoBll.Instance.GetReportInfo(reportInfoName); if (reportInfo == null) { throw new ArgumentException("不存在名为" + reportInfoName + "的ReportInfo!"); } ReportDocument reportDocument = ReportHelper.CreateReportDocument(reportInfo.ReportDocument); crystalHelper.ReportSource = reportDocument; System.Data.DataSet templateDataSet = ReportHelper.CreateDataset(reportInfo.DatasetName); IList <ISearchManager> sms = new List <ISearchManager>(); IList <ReportDataInfo> reportDataInfos = ADInfoBll.Instance.GetReportDataInfo(reportInfo.Name); foreach (ReportDataInfo reportDataInfo in reportDataInfos) { if (string.IsNullOrEmpty(reportDataInfo.SearchManagerClassName)) { throw new ArgumentException("ReportDataInfo of " + reportDataInfo.Name + " 's SearchManagerClassName must not be null!"); } ISearchManager sm = ServiceProvider.GetService <IManagerFactory>().GenerateSearchManager(reportDataInfo.SearchManagerClassName, reportDataInfo.SearchManagerClassParams); sm.EnablePage = false; sms.Add(sm); } ISearchExpression se = SearchExpression.And(SearchExpression.Ge("日期", dateStart), SearchExpression.Le("日期", dateEnd)); for (int i = 0; i < reportDataInfos.Count; ++i) { System.Collections.IEnumerable dataList = sms[i].GetData(se, null); string s = reportDataInfos[i].DatasetTableName; if (!templateDataSet.Tables.Contains(s)) { throw new ArgumentException("报表DataSet中未包含名为" + s + "的DataTable!"); } System.Data.DataTable dt = templateDataSet.Tables[s]; dt.Rows.Clear(); GenerateReportData.Generate(dt, dataList, reportDataInfos[i].GridName); } // Set Parameter SetParameter(crystalHelper, se); crystalHelper.DataSource = templateDataSet; string fileName = System.IO.Path.GetTempFileName(); crystalHelper.Export(fileName, CrystalExportFormat.PortableDocFormat); System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read); byte[] fileData = new byte[fs.Length]; using (System.IO.BinaryReader sr = new System.IO.BinaryReader(fs)) { sr.Read(fileData, 0, fileData.Length); } fs.Close(); System.IO.File.Delete(fileName); return(fileData); }
public override bool TakeAction() { UserHelper.GetUserLightOpen(ContextUser.UserID); short opType = 0; int huntingID2 = 0; if (huntingID < 1005) { huntingID2 = MathUtils.Addition(huntingID, 1, int.MaxValue); } else { huntingID2 = 1001; //huntingID; } UserHelper.ChechDailyRestrain(ContextUser.UserID); if (!CrystalHelper.CheckAllowCrystall(ContextUser)) { ErrorCode = 1000; ErrorInfo = LanguageManager.GetLang().St1305_FateBackpackFull; return(false); } else { if (!CrystalHelper.CheckAllowCrystall(ContextUser)) { ErrorCode = errorNum; ErrorInfo = LanguageManager.GetLang().St1305_FateBackpackFull; return(false); } } ProbabilityInfo probabilityInfo = null; if (ops == 1) { #region opType = 1; UserDailyRestrain userRestrain = new PersonalCacheStruct <UserDailyRestrain>().FindKey(ContextUser.UserID); probabilityInfo = new ShareCacheStruct <ProbabilityInfo>().FindKey(huntingID); //当前猎命人物的概率 if (probabilityInfo == null) { return(false); } ProbabilityInfo probability1 = new ShareCacheStruct <ProbabilityInfo>().FindKey(huntingID2); if (userRestrain != null && userRestrain.Funtion2 >= VipHelper.GetVipUseNum(ContextUser.VipLv, RestrainType.MianFeiLieMing) && DateTime.Now.Date == userRestrain.RefreshDate.Date) { if (probabilityInfo.Price > ContextUser.GameCoin) { ErrorCode = errorNum; ErrorInfo = LanguageManager.GetLang().St_GameCoinNotEnough; return(false); } } //暑期第三弹 if (huntingID2 == 1001 && !NoviceHelper.IsGianCrystalPack(ContextUser)) { ErrorCode = errorNum; ErrorInfo = LanguageManager.GetLang().St1305_BeiBaoBackpackFull; return(false); } var lightCacheSet = new PersonalCacheStruct <UserLight>(); if (huntingID != 1001) { UserLight userLight1 = lightCacheSet.FindKey(ContextUser.UserID, huntingID); if (userLight1.IsLight == 2) { ErrorCode = LanguageManager.GetLang().ErrorCode; return(false); } if (userLight1.IsLight == 1) { userLight1.IsLight = 2; //userLight1.Update(); } } UserLight userLight = new PersonalCacheStruct <UserLight>().FindKey(ContextUser.UserID, huntingID2); if (RandomUtils.IsHit(probability1.Light)) { ErrorCode = ErrorCode; ErrorInfo = probability1.HuntingName; if (userLight != null) { userLight.IsLight = 1; //userLight.Update(); } else { userLight = new UserLight() { UserID = ContextUser.UserID, HuntingID = huntingID2, IsLight = 1 }; lightCacheSet.Add(userLight); } } if (userRestrain != null) { if (userRestrain.Funtion2 >= VipHelper.GetVipUseNum(ContextUser.VipLv, RestrainType.MianFeiLieMing) && DateTime.Now.Date == userRestrain.RefreshDate.Date) { ContextUser.GameCoin = MathUtils.Subtraction(ContextUser.GameCoin, probabilityInfo.Price, 0); //ContextUser.Update(); } else { userRestrain.Funtion2 = MathUtils.Addition(userRestrain.Funtion2, 1, int.MaxValue); //userRestrain.Update(); } } else { ContextUser.GameCoin = MathUtils.Subtraction(ContextUser.GameCoin, probabilityInfo.Price, 0); //ContextUser.Update(); } lightArray = new PersonalCacheStruct <UserLight>().FindAll(ContextUser.UserID); #endregion } else if (ops == 2) { #region opType = 2; if (ContextUser.VipLv < 5) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St_VipNotEnough; return(false); } probabilityInfo = new ShareCacheStruct <ProbabilityInfo>().FindKey(huntingID); //当前猎命人物的概率 if (probabilityInfo == null) { return(false); } if (ContextUser.GoldNum < probabilityInfo.Price) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough; return(false); } UserLight uLightInfo = new PersonalCacheStruct <UserLight>().FindKey(ContextUser.UserID, probabilityInfo.GoldHunting); if (uLightInfo != null && uLightInfo.IsLight == 1) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1305_HuntingIDLight; return(false); } else if (uLightInfo != null && (uLightInfo.IsLight == 2 || uLightInfo.IsLight == 0)) { uLightInfo.IsLight = 1; } else { uLightInfo = new UserLight() { UserID = ContextUser.UserID, HuntingID = probabilityInfo.GoldHunting, IsLight = 1 }; new PersonalCacheStruct <UserLight>().Add(uLightInfo); } ContextUser.UseGold = MathUtils.Addition(ContextUser.UseGold, probabilityInfo.Price, int.MaxValue); lightArray = new PersonalCacheStruct <UserLight>().FindAll(ContextUser.UserID); #endregion } //每种品质的概率 double[] probabilityArray2 = { (double)probabilityInfo.Gray, (double)probabilityInfo.Green, (double)probabilityInfo.Blue, (double)probabilityInfo.Purple, (double)probabilityInfo.Yellow, (double)probabilityInfo.Red }; int index2 = RandomUtils.GetHitIndex(probabilityArray2); CrystalQualityType qualityType = (CrystalQualityType)Enum.Parse(typeof(CrystalQualityType), (index2 + 1).ToString()); List <CrystalInfo> crystalArray2 = new ShareCacheStruct <CrystalInfo>().FindAll(u => u.CrystalQuality == qualityType && u.DemandLv <= ContextUser.UserLv); if (crystalArray2.Count > 0) { int randomNum = RandomUtils.GetRandom(0, crystalArray2.Count); crystal = new ShareCacheStruct <CrystalInfo>().FindKey(crystalArray2[randomNum].CrystalID); if (crystal != null && crystal.CrystalQuality == CrystalQualityType.Gray) { //wuzf修改 8-15 灰色放在临时背包不存DB CrystalHelper.AppendGrayCrystal(ContextUser, crystal.CrystalID); } else if (crystal != null) { var package = UserCrystalPackage.Get(Uid); UserCrystalInfo userCrystal = new UserCrystalInfo() { UserCrystalID = Guid.NewGuid().ToString(), CrystalID = crystal.CrystalID, CrystalLv = 1, CurrExprience = 0, GeneralID = 0, IsSale = 1, CreateDate = DateTime.Now }; package.SaveCrystal(userCrystal); UserLogHelper.AppenCtystalLog(ContextUser.UserID, opType, crystal.CrystalID, probabilityInfo.Price, probabilityInfo.Price, null, 1, 0); //高品质聊天通知); if (crystal.CrystalQuality >= CrystalQualityType.Yellow) { var cacheChat = new TjxChatService(); string content = string.Format(LanguageManager.GetLang().St1305_HighQualityNotice, ContextUser.NickName, CrystalHelper.GetQualityName(crystal.CrystalQuality), crystal.CrystalName ); cacheChat.SystemSend(ChatType.World, content); } } } //日常任务-猎命 TaskHelper.TriggerDailyTask(Uid, 4009); return(true); }