public MessageCode SaveInvitePrize(NbManagerEntity manager, FriendinvitePrizerecordEntity record, ItemPackageFrame package, DbTransaction trans, int coin, string account) { if (manager != null) { if (!ManagerUtil.SaveManagerData(manager, null, trans)) { return(MessageCode.NbUpdateFailPackage); } } if (coin > 0) { var mess = ManagerCore.Instance.AddCoin(manager, coin, EnumCoinChargeSourceType.FriendInvite, Guid.NewGuid().ToString(), trans); if (mess != MessageCode.Success) { return(mess); } } if (!FriendinvitePrizerecordMgr.Insert(record, trans)) { return(MessageCode.NbUpdateFailPackage); } if (!package.Save(trans)) { return(MessageCode.NbUpdateFailPackage); } package.Shadow.Save(); return(MessageCode.Success); }
/// <summary> /// 领取好友成长奖励 /// </summary> /// <param name="account"></param> /// <param name="managerId"></param> /// <returns></returns> public GrowUpPrizeResponse GrowUpPrize(string account, Guid managerId) { GrowUpPrizeResponse response = new GrowUpPrizeResponse(); response.Data = new GrowUpPrize(); try { var manager = ManagerCore.Instance.GetManager(managerId); if (manager == null) { return(ResponseHelper.Create <GrowUpPrizeResponse>((int)MessageCode.AdMissManager)); } var list = GetFrindInviteList(account); if (list == null) { return(ResponseHelper.Create <GrowUpPrizeResponse>((int)MessageCode.ActiveNotPrize)); } FriendinvitePrizerecordEntity record = new FriendinvitePrizerecordEntity(); int mayPrize = 0; foreach (var item in list) { record.PrizeInfo += item.ByAccount + ","; mayPrize += item.MayPrize; } record.PrizeInfo = record.PrizeInfo.Substring(0, record.PrizeInfo.Length - 1); if (mayPrize <= 0) { return(ResponseHelper.Create <GrowUpPrizeResponse>((int)MessageCode.ActiveNotPrize)); } record.Account = account; record.UpdateTime = DateTime.Now; record.PrizeType = 1; record.PrizeString = mayPrize.ToString(); using (var transactionManager = new TransactionManager(Dal.ConnectionFactory.Instance.GetDefault())) { transactionManager.BeginTransaction(); var messCode = PayCore.Instance.AddBonus(managerId, mayPrize, EnumChargeSourceType.FriendInvite, ShareUtil.CreateSequential().ToString(), transactionManager.TransactionObject); if (messCode != MessageCode.Success) { transactionManager.Rollback(); return(ResponseHelper.Create <GrowUpPrizeResponse>((int)messCode)); } if (!FriendinviteMgr.SavePrize(account, transactionManager.TransactionObject)) { transactionManager.Rollback(); return(ResponseHelper.Create <GrowUpPrizeResponse>((int)MessageCode.NbParameterError)); } if (!FriendinvitePrizerecordMgr.Insert(record, transactionManager.TransactionObject)) { transactionManager.Rollback(); return(ResponseHelper.Create <GrowUpPrizeResponse>((int)MessageCode.NbParameterError)); } transactionManager.Commit(); response.Data.Point = mayPrize; response.Data.SumPoint = PayCore.Instance.GetPoint(managerId);; } } catch (Exception ex) { SystemlogMgr.Error("领取好友邀请奖励", ex); response.Code = (int)MessageCode.NbParameterError; } return(response); }
public PriendInvitePrizeList FriendInvitePrizeList(string account, Guid managerId) { PriendInvitePrizeList response = new PriendInvitePrizeList(); response.ItemList = new List <ItemInfo>(); //获取成功邀请人数 var count = NbManagerextraMgr.GetInviteFriendCount(managerId); response.InviteCount = count; var result = CacheFactory.FriendCache.GetAllPrize(); ConfigFriendinviteprizeEntity[] dic = new ConfigFriendinviteprizeEntity[result.Count]; result.CopyTo(dic); if (dic != null && dic.Length != 0) { response.IsInviteAccomplish = false; //获取领取奖励记录 var record = FriendinvitePrizerecordMgr.InvitePrizeIsGet(account); List <ConfigFriendinviteprizeEntity> list = new List <ConfigFriendinviteprizeEntity>(); //移除领取过的奖励 foreach (var item in record) { if (ConvertHelper.ConvertToInt(item.PrizeInfo) == 0) { continue; } foreach (var item1 in dic) { if (item1.SucceedCount == ConvertHelper.ConvertToInt(item.PrizeInfo)) { continue; } list.Add(item1); } if (list.Count != 0) { dic = list.ToArray(); list = new List <ConfigFriendinviteprizeEntity>(); } } //留下最低挡的奖励 int idx = dic.Min(r => r.SucceedCount); foreach (var item in dic) { if (item.SucceedCount == idx) { list.Add(item); } } response.NextInviteCount = list[0].SucceedCount - count < 0 ? 0 : list[0].SucceedCount - count; response.PrizeId = list[0].SucceedCount; foreach (var item in list) { ItemInfo info = new ItemInfo(); info.Count = item.Count; info.ItemCode = item.ItemCode; info.PrizeType = item.PrizeType; info.IsBinding = item.IsBinding; response.ItemList.Add(info); } } else { response.IsInviteAccomplish = true; } return(response); }