///// <summary> ///// 奖励配置 ///// </summary> ///// <param name="user"></param> //public static UserTakePrize GetUserTake(TreasureInfo prize, string userID) //{ // UserTakePrize userPrize = new UserTakePrize(); // userPrize.CreateDate = DateTime.Now; // userPrize.ID = Guid.NewGuid().ToString(); // userPrize.UserID = Convert.ToInt32(userID); // userPrize.MailContent = LanguageManager.GetLang().St12004_YouWheelOfFortune.Substring(0, 9); // userPrize.IsTasked = false; // userPrize.TaskDate = MathUtils.SqlMinDate; // userPrize.ItemPackage = string.Empty; // userPrize.SparePackage = string.Empty; // userPrize.CrystalPackage = string.Empty; // userPrize.OpUserID = 10000; // switch (prize.Type) // { // case RewardType.GameGoin: // userPrize.GameCoin = (int)prize.Num; // userPrize.MailContent += string.Format(LanguageManager.GetLang().St_GameCoin, userPrize.GameCoin) + ","; // break; // case RewardType.Obtion: // userPrize.ObtainNum = (int)prize.Num; // userPrize.MailContent += string.Format(LanguageManager.GetLang().St_ObtionNum, userPrize.ObtainNum) + ","; // break; // case RewardType.ExpNum: // userPrize.ExpNum = (int)prize.Num; // userPrize.MailContent += string.Format(LanguageManager.GetLang().St_ExpNum, userPrize.ExpNum) + ","; // break; // case RewardType.EnergyNum: // userPrize.EnergyNum = (int)prize.Num; // userPrize.MailContent += string.Format(LanguageManager.GetLang().St_EnergyNum, userPrize.EnergyNum) + ","; // break; // case RewardType.Experience: // break; // case RewardType.Gold: // userPrize.Gold = (int)prize.Num; // userPrize.MailContent += string.Format(LanguageManager.GetLang().St_GiftGoldNum, userPrize.Gold) + ","; // break; // case RewardType.Item: // ItemBaseInfo itemInfo = new ConfigCacheSet<ItemBaseInfo>().FindKey(prize.ItemID); // if (itemInfo != null) // { // userPrize.ItemPackage = string.Format("{0}={1}={2}", prize.ItemID, prize.ItemLv, (int)prize.Num); // userPrize.MailContent += string.Format("{0}*{1}", itemInfo.ItemName, (int)prize.Num) + ","; // } // break; // case RewardType.CrystalId: // CrystalInfo crystal = new ConfigCacheSet<CrystalInfo>().FindKey(prize.ItemID); // if (crystal != null) // { // userPrize.CrystalPackage = string.Format("{0}={1}={2}", prize.ItemID, prize.ItemLv, (int)prize.Num); // userPrize.MailContent += string.Format("{0}*{1}", crystal.CrystalName, (int)prize.Num) + ","; // } // break; // case RewardType.Spare: // SparePartInfo spare = new ConfigCacheSet<SparePartInfo>().FindKey(prize.ItemID); // if (spare != null) // { // userPrize.SparePackage = string.Format("{0}={1}={2}", prize.ItemID, prize.ItemLv, (int)prize.Num); // userPrize.MailContent += string.Format("{0}*{1}", spare.Name, (int)prize.Num) + ","; // } // break; // case RewardType.Enchant: // EnchantInfo enchantInfo = new ConfigCacheSet<EnchantInfo>().FindKey(prize.ItemID); // if (enchantInfo != null) // { // userPrize.EnchantPackage = string.Format("{0}={1}={2}", prize.ItemID, prize.ItemLv, (int)prize.Num); // userPrize.MailContent += string.Format("{0}*{1}", enchantInfo.EnchantName, (int)prize.Num) + ","; // } // break; // default: // break; // } // userPrize.MailContent = userPrize.MailContent.TrimEnd(','); // return userPrize; //} /// <summary> /// 充值返还 /// </summary> /// <param name="userID"></param> /// <param name="goldNum"></param> /// <returns></returns> public static void ReturnRatioGold(string userID, int goldNum) { UserDial userDial = new GameDataCacheSet <UserDial>().FindKey(userID); if (userDial != null && userDial.ReturnRatio > 0) { int giftGold = MathUtils.RoundCustom(goldNum * userDial.ReturnRatio); var cachePrize = new ShareCacheStruct <UserTakePrize>(); UserTakePrize userPrize = new UserTakePrize(); userPrize.CreateDate = DateTime.Now; userPrize.ID = Guid.NewGuid().ToString(); userPrize.UserID = Convert.ToInt32(userID); userPrize.MailContent = string.Format(LanguageManager.GetLang().St12004_RechargeReturnGoldNum, GetTransformData(userDial.ReturnRatio), giftGold); userPrize.IsTasked = false; userPrize.TaskDate = MathUtils.SqlMinDate; userPrize.ItemPackage = string.Empty; userPrize.SparePackage = string.Empty; userPrize.CrystalPackage = string.Empty; userPrize.EnchantPackage = string.Empty; userPrize.OpUserID = 10000; userPrize.GameCoin = 0; userPrize.ObtainNum = 0; userPrize.ExpNum = 0; userPrize.EnergyNum = 0; userPrize.Gold = giftGold; userDial.ReturnRatio = 0; cachePrize.Add(userPrize); } }
/// <summary> ///vip活动礼包 /// </summary> public static void GetVipFestival(string userID) { FestivalInfo info = GetInfo(FestivalType.VIPFestival); if (info != null && info.FestivalExtend != null) { var cacheSet = new PersonalCacheStruct <FestivalRestrain>(); FestivalRestrain fRest = cacheSet.FindKey(userID, info.FestivalID); if (fRest == null || fRest.RefreashDate < info.StartDate || (fRest.RestrainNum < info.RestrainNum && fRest.RefreashDate >= info.StartDate && fRest.RefreashDate <= info.EndDate)) { CacheList <PrizeInfo> prizeList = PrizeHelper.GetPrizeInfo(info.Reward); foreach (PrizeInfo prize in prizeList) { UserTakePrize userTask = PrizeHelper.GetUserTake(prize, userID, info); new ShareCacheStruct <UserTakePrize>().Add(userTask); } if (fRest == null) { fRest = new FestivalRestrain(); fRest.FestivalID = info.FestivalID; fRest.RefreashDate = DateTime.Now; fRest.RestrainNum = 1; fRest.UserID = userID; cacheSet.Add(fRest); } else { fRest.RestrainNum = MathUtils.Addition(fRest.RestrainNum, 1); fRest.RefreashDate = DateTime.Now; } } } }
private bool doProcessPrize(UserTakePrize userPrize) { Base.BaseLog log = new Base.BaseLog(); if (userPrize == null) { return(false); } string userID = userPrize.UserID.ToString(); var gameUser = new PersonalCacheStruct <GameUser>().FindKey(userID); if (gameUser == null) { return(false); } log.SaveDebugLog(string.Format("玩家{0}领取奖励{1}:{2}", userID, userPrize.ID, userPrize.MailContent)); userPrize.IsTasked = true; userPrize.TaskDate = DateTime.Now; //userPrize.Update(); gameUser.ObtainNum = MathUtils.Addition(gameUser.ObtainNum, userPrize.ObtainNum); gameUser.EnergyNum = MathUtils.Addition(gameUser.EnergyNum, userPrize.EnergyNum.ToShort()); gameUser.GameCoin = MathUtils.Addition(gameUser.GameCoin, userPrize.GameCoin); gameUser.GiftGold = MathUtils.Addition(gameUser.GiftGold, userPrize.Gold); gameUser.ExpNum = MathUtils.Addition(gameUser.ExpNum, userPrize.ExpNum); if (gameUser.UserExtend == null) { gameUser.UserExtend = new GameUserExtend(); } gameUser.UserExtend.GainBlessing = MathUtils.Addition(gameUser.UserExtend.GainBlessing, userPrize.GainBlessing); if (userPrize.VipLv > 0) { var vipLv = new ShareCacheStruct <VipLvInfo>().FindKey(userPrize.VipLv.ToShort()) ?? new VipLvInfo(); gameUser.ExtGold = vipLv.PayGold; } //gameUser.Update(); PutItemPackage(userPrize.ItemPackage.Split(','), userID); PutCrystal(userPrize.CrystalPackage.Split(','), userID); PutSparePackage(userPrize.SparePackage.Split(','), userID); if (!string.IsNullOrEmpty(userPrize.EnchantPackage)) { PutEnchant(userPrize.EnchantPackage.Split(','), userID); } var chatService = new TjxChatService(); chatService.SystemSendWhisper(gameUser, string.Format("{0}", userPrize.MailContent)); return(true); }
/// <summary> /// 累计消费活动奖励(晶石,金币,精力) /// </summary> private static void FestivalConsumeCount(FestivalInfo info, string userID) { UserConsume consume = new PersonalCacheStruct <UserConsume>().FindKey(userID); if (consume == null) { return; } var cacheSet = new PersonalCacheStruct <FestivalRestrain>(); FestivalRestrain fRest = cacheSet.FindKey(userID, info.FestivalID); if (fRest != null && fRest.RestrainNum >= 1 && fRest.RefreashDate == info.StartDate) { return; } if ((info.FestivalType == FestivalType.SparConsumption && consume.GoldDate >= info.StartDate && consume.GoldNum >= info.RestrainNum) || (info.FestivalType == FestivalType.GameCoin && consume.CoinDate >= info.StartDate && consume.GameCoin >= info.RestrainNum) || (info.FestivalType == FestivalType.Energy && consume.EnergyDate >= info.StartDate && consume.EnergyNum >= info.RestrainNum)) { CacheList <PrizeInfo> prizeList = PrizeHelper.GetPrizeInfo(info.Reward); foreach (PrizeInfo prize in prizeList) { UserTakePrize userTask = PrizeHelper.GetUserTake(prize, userID, info); new ShareCacheStruct <UserTakePrize>().Add(userTask); } if (fRest == null) { fRest = new FestivalRestrain(); fRest.FestivalID = info.FestivalID; fRest.RefreashDate = info.StartDate; fRest.RestrainNum = 1; fRest.UserID = userID; cacheSet.Add(fRest); } else { fRest.RefreashDate = info.StartDate; fRest.RestrainNum = 1; //fRest.Update(); } } }
/// <summary> /// 累计充值活动 /// </summary> public static void FestivalPayCount(FestivalInfo info, GameUser user) { UserRecharge recharge = new PersonalCacheStruct <UserRecharge>().FindKey(user.UserID); if (recharge == null) { return; } var cacheSet = new PersonalCacheStruct <FestivalRestrain>(); FestivalRestrain fRest = cacheSet.FindKey(user.UserID, info.FestivalID); if (fRest != null && fRest.RestrainNum >= 1 && fRest.RefreashDate == info.StartDate) { return; } if (recharge.FestivalDate >= info.StartDate && recharge.FestivalCount >= info.RestrainNum) { CacheList <PrizeInfo> prizeList = PrizeHelper.GetPrizeInfo(info.Reward); foreach (PrizeInfo prize in prizeList) { UserTakePrize userTask = PrizeHelper.GetUserTake(prize, user.UserID, info); new ShareCacheStruct <UserTakePrize>().Add(userTask); } if (fRest == null) { fRest = new FestivalRestrain(); fRest.FestivalID = info.FestivalID; fRest.RefreashDate = info.StartDate; fRest.RestrainNum = 1; fRest.UserID = user.UserID; cacheSet.Add(fRest); } else { fRest.RefreashDate = info.StartDate; fRest.RestrainNum = 1; } } }
private void AddUserItem(string userID, int itemID, int itemNum) { if (itemID > 0 && itemNum > 0) { UserTakePrize userPrizeLog = new UserTakePrize { ID = Guid.NewGuid().ToString(), UserID = userID.ToInt(), ItemPackage = string.Format("{0}={1}={2}", itemID, 1, itemNum), MailContent = string.Format("GM发送物品"), IsTasked = false, TaskDate = MathUtils.SqlMinDate, OpUserID = 10000, CreateDate = DateTime.Now }; var sender = DataSyncManager.GetDataSender(); sender.Send(userPrizeLog); } else { throw new Exception("无此物品"); } }
/// <summary> /// 获得奖励物品 /// </summary> /// <param name="userID"></param> /// <param name="gamecoin"></param> /// <param name="item"></param> /// <param name="content"></param> public static void GainNewCardPackage(string userID, int gamecoin, string item, string content) { UserTakePrize userPrize = new UserTakePrize(); userPrize.ID = Guid.NewGuid().ToString(); userPrize.UserID = Convert.ToInt32(userID); userPrize.ObtainNum = 0; userPrize.EnergyNum = 0; userPrize.GameCoin = gamecoin; userPrize.Gold = 0; userPrize.ExpNum = 0; userPrize.VipLv = 0; userPrize.GainBlessing = 0; userPrize.ItemPackage = item; userPrize.SparePackage = string.Empty; userPrize.CrystalPackage = string.Empty; userPrize.EnchantPackage = string.Empty; userPrize.MailContent = content; userPrize.IsTasked = false; userPrize.TaskDate = MathUtils.SqlMinDate; userPrize.OpUserID = 10000; userPrize.CreateDate = DateTime.Now; new ShareCacheStruct <UserTakePrize>().Add(userPrize); }
public static UserTakePrize GetUserTake(PrizeInfo prize, string userID, FestivalInfo info) { UserTakePrize userPrize = new UserTakePrize(); userPrize.CreateDate = DateTime.Now; userPrize.ID = Guid.NewGuid().ToString(); userPrize.UserID = Convert.ToInt32(userID); userPrize.MailContent = info.FestivalExtend.KeyWord; userPrize.IsTasked = false; userPrize.TaskDate = MathUtils.SqlMinDate; userPrize.ItemPackage = string.Empty; userPrize.SparePackage = string.Empty; userPrize.CrystalPackage = string.Empty; userPrize.EnchantPackage = string.Empty; userPrize.OpUserID = 10000; switch (prize.Type) { case RewardType.GameGoin: userPrize.GameCoin = prize.Num; userPrize.MailContent += string.Format(LanguageManager.GetLang().St_GameCoin, prize.Num); break; case RewardType.Obtion: userPrize.ObtainNum = prize.Num; userPrize.MailContent += string.Format(LanguageManager.GetLang().St_ObtionNum, prize.Num); break; case RewardType.ExpNum: userPrize.ExpNum = prize.Num; userPrize.MailContent += string.Format(LanguageManager.GetLang().St_ExpNum, prize.Num); break; case RewardType.EnergyNum: userPrize.EnergyNum = prize.Num; userPrize.MailContent += string.Format(LanguageManager.GetLang().St_EnergyNum, prize.Num); break; case RewardType.Experience: break; case RewardType.Gold: userPrize.Gold = prize.Num; userPrize.MailContent += string.Format(LanguageManager.GetLang().St_GiftGoldNum, prize.Num); break; case RewardType.Item: userPrize.ItemPackage = string.Format("{0}={1}={2}", prize.ItemID, prize.UserLv, prize.Num); ItemBaseInfo itemInfo = new ShareCacheStruct <ItemBaseInfo>().FindKey(prize.ItemID); if (itemInfo != null) { userPrize.MailContent += string.Format("{0}*{1}", itemInfo.ItemName, prize.Num); } break; case RewardType.CrystalType: //List<CrystalInfo> crystalArray2 = new ShareCacheStruct<CrystalInfo>().FindAll(CrystalInfo.Index_CrystalQuality, prize.CrystalType); //userPrize.CrystalPackage = string.Format("{0}={1}={2}", itemID, prize.UserLv, itemNum); break; case RewardType.CrystalId: userPrize.CrystalPackage = string.Format("{0}={1}={2}", prize.ItemID, prize.UserLv, prize.Num); CrystalInfo crystal = new ShareCacheStruct <CrystalInfo>().FindKey(prize.ItemID); if (crystal != null) { userPrize.MailContent += string.Format("{0}*{1}", crystal.CrystalName, prize.Num); } break; case RewardType.Spare: userPrize.SparePackage = string.Format("{0}={1}={2}", prize.ItemID, prize.Num, prize.Num); SparePartInfo spare = new ShareCacheStruct <SparePartInfo>().FindKey(prize.ItemID); if (spare != null) { userPrize.MailContent += string.Format("{0}*{1}", spare.Name, prize.Num); } break; case RewardType.Enchant: userPrize.EnchantPackage = string.Format("{0}={1}={2}", prize.ItemID, prize.UserLv, prize.Num); EnchantInfo enchantInfo = new ShareCacheStruct <EnchantInfo>().FindKey(prize.ItemID); if (enchantInfo != null) { userPrize.MailContent += string.Format("{0}*{1}", enchantInfo.EnchantName, prize.Num); } break; default: break; } return(userPrize); }
public override void Process(JsonParameter[] paramList) { JsonParameterList parameters = JsonParameter.Convert(paramList); string op = parameters["op"]; string[] UserList = Convert.ToString(parameters["UserID"]).Split(new char[] { ',' }); string itemPackage = Convert.ToString(parameters["Item"]); string crystalList = Convert.ToString(parameters["Crystal"]); string sparePackage = Convert.ToString(parameters["SparePackage"]); string enchantPackage = Convert.ToString(parameters["EnchantPackage"]); int obtainNum = 0; if (parameters["ObtainNum"].Length > 0) { obtainNum = Convert.ToInt32(parameters["ObtainNum"]); } short energyNum = 0; if (parameters["EnergyNum"].Length > 0) { energyNum = Convert.ToInt16(parameters["EnergyNum"]); } int gameCoin = 0; if (parameters["GameCoin"].Length > 0) { gameCoin = Convert.ToInt32(parameters["GameCoin"]); } int gold = 0; if (parameters["Gold"].Length > 0) { gold = Convert.ToInt32(parameters["Gold"]); } int expNum = 0; if (parameters["ExpNum"].Length > 0) { expNum = Convert.ToInt32(parameters["ExpNum"]); } int vipLv = 0; if (parameters["VipLv"].Length > 0) { vipLv = Convert.ToInt32(parameters["VipLv"]); } int gainBlessing = 0; if (parameters["GainBlessing"].Length > 0) { gainBlessing = Convert.ToInt32(parameters["GainBlessing"]); } int honourNum = 0; if (parameters["HonourNum"].Length > 0) { honourNum = Convert.ToInt32(parameters["HonourNum"]); } string mailContent = Convert.ToString(parameters["MailContent"]); int opUserID = Convert.ToInt32(parameters["OpUserID"]); //var cacheSetUserItem = new GameDataCacheSet<UserItemPackage>(); var cacheSetItemInfo = new ShareCacheStruct <ItemBaseInfo>(); var itemArray = itemPackage.Split(','); foreach (string str in UserList) { try { int userID = str.Trim().ToInt(); var user = new GameDataCacheSet <GameUser>().FindKey(str); if (user != null) { user.GiftGold = MathUtils.Addition(user.GiftGold, gold); user.ObtainNum = MathUtils.Addition(user.ObtainNum, obtainNum); user.EnergyNum = MathUtils.Addition(user.EnergyNum, energyNum); user.GameCoin = MathUtils.Addition(user.GameCoin, gameCoin); user.ExpNum = MathUtils.Addition(user.ExpNum, expNum); user.HonourNum = MathUtils.Addition(user.HonourNum, honourNum); } foreach (var item in itemArray) { if (item.Split('=').Length == 2) { var itemInfo = cacheSetItemInfo.FindKey(item.Split('=')[0]); if (itemInfo != null) { UserItemHelper.AddUserItem(str, item.Split('=')[0].ToInt(), item.Split('=')[1].ToInt()); } } } Guid newGuid = Guid.NewGuid(); UserTakePrize userPrizeLog = new UserTakePrize { ID = newGuid.ToString(), UserID = userID, ObtainNum = obtainNum, EnergyNum = energyNum, GameCoin = gameCoin, Gold = gold, ExpNum = expNum, VipLv = vipLv, GainBlessing = gainBlessing, ItemPackage = itemPackage, CrystalPackage = crystalList, SparePackage = sparePackage, EnchantPackage = enchantPackage, MailContent = mailContent, IsTasked = false, TaskDate = MathUtils.SqlMinDate, OpUserID = opUserID, CreateDate = DateTime.Now, HonourNum = honourNum, Items = itemPackage, }; var cacheSet = new ShareCacheStruct <UserTakePrize>(); cacheSet.Add(userPrizeLog); cacheSet.Update(); PutCrystal(crystalList.Split(','), str); // 发送系统信件 UserMail userMail = new UserMail(newGuid); userMail.UserId = userID; userMail.MailType = (int)MailType.System; userMail.Title = LanguageManager.GetLang().St_SystemMailTitle; userMail.Content = mailContent; userMail.SendDate = DateTime.Now; TjxMailService mailService = new TjxMailService(user); mailService.Send(userMail); } catch (Exception ex) { new BaseLog().SaveLog(ex); } } }
/// <summary> /// 获得奖励 /// </summary> /// <param name="userID"></param> /// <param name="prize"></param> /// <param name="content"></param> /// <returns></returns> public static UserTakePrize GetUserTake(string userID, PrizeInfo prize, string content) { GameUser user = new PersonalCacheStruct <GameUser>().FindKey(userID); if (user == null) { return(null); } UserTakePrize userPrize = new UserTakePrize(); userPrize.CreateDate = DateTime.Now; userPrize.ID = Guid.NewGuid().ToString(); userPrize.UserID = Convert.ToInt32(userID); userPrize.MailContent = content; userPrize.IsTasked = false; userPrize.TaskDate = MathUtils.SqlMinDate; userPrize.ItemPackage = string.Empty; userPrize.SparePackage = string.Empty; userPrize.CrystalPackage = string.Empty; userPrize.EnchantPackage = string.Empty; userPrize.OpUserID = 10000; string prizeContent = string.Empty; switch (prize.Type) { case RewardType.GameGoin: userPrize.GameCoin = prize.Num; prizeContent = string.Format(LanguageManager.GetLang().St_GameCoin, prize.Num); break; case RewardType.Obtion: userPrize.ObtainNum = prize.Num; prizeContent = string.Format(LanguageManager.GetLang().St_ObtionNum, prize.Num); break; case RewardType.ExpNum: userPrize.ExpNum = prize.Num; prizeContent = string.Format(LanguageManager.GetLang().St_ExpNum, prize.Num); break; case RewardType.EnergyNum: userPrize.EnergyNum = prize.Num; prizeContent = string.Format(LanguageManager.GetLang().St_EnergyNum, prize.Num); break; case RewardType.Experience: break; case RewardType.Gold: userPrize.Gold = prize.Num; prizeContent = string.Format(LanguageManager.GetLang().St_GiftGoldNum, prize.Num); break; case RewardType.Item: userPrize.ItemPackage = string.Format("{0}={1}={2}", prize.ItemID, prize.UserLv, prize.Num); ItemBaseInfo itemInfo = new ShareCacheStruct <ItemBaseInfo>().FindKey(prize.ItemID); if (itemInfo != null) { prizeContent = string.Format("{0}*{1}", itemInfo.ItemName, prize.Num); } break; case RewardType.CrystalId: userPrize.CrystalPackage = string.Format("{0}={1}={2}", prize.ItemID, prize.UserLv, prize.Num); CrystalInfo crystal = new ShareCacheStruct <CrystalInfo>().FindKey(prize.ItemID); if (crystal != null) { prizeContent = string.Format("{0}*{1}", crystal.CrystalName, prize.Num); } break; case RewardType.Spare: userPrize.SparePackage = string.Format("{0}={1}={2}", prize.ItemID, prize.UserLv, prize.Num); SparePartInfo spare = new ShareCacheStruct <SparePartInfo>().FindKey(prize.ItemID); if (spare != null) { prizeContent = string.Format("{0}*{1}", spare.Name, prize.Num); } break; case RewardType.Enchant: userPrize.EnchantPackage = string.Format("{0}={1}={2}", prize.ItemID, prize.UserLv, prize.Num); EnchantInfo enchantInfo = new ShareCacheStruct <EnchantInfo>().FindKey(prize.ItemID); if (enchantInfo != null) { prizeContent = string.Format("{0}*{1}", enchantInfo.EnchantName, prize.Num); } break; default: break; } if (!string.IsNullOrEmpty(prizeContent)) { userPrize.MailContent = string.Format(content, user.NickName, prizeContent); } return(userPrize); }