예제 #1
0
        /// <summary>
        /// 获取分享信息
        /// </summary>
        /// <param name="managerId"></param>
        /// <param name="shareType">分享类型   4=关注</param>
        /// <returns></returns>
        public ShareGetResponse GetShareInfo(Guid managerId, int shareType)
        {
            var response = new ShareGetResponse();

            response.Data = new ShareGet();
            try
            {
                var manager = NbManagerMgr.GetById(managerId);
                if (manager == null)
                {
                    return(ResponseHelper.Create <ShareGetResponse>(MessageCode.MissManager));
                }
                var config = CacheFactory.ManagerDataCache.GetShare(shareType);
                if (config == null || config.Count == 0)
                {
                    return(ResponseHelper.Create <ShareGetResponse>(MessageCode.ActivityNoConfigPrize));
                }
                var record = ShareManagerMgr.GetByManagerId(managerId, shareType);
                if (record != null)
                {
                    DateTime date = DateTime.Now;
                    if (record.UpdateTime.Date != date.Date)
                    {
                        var code = RefreshRecord(record, config[0]);
                        if (code != MessageCode.Success)
                        {
                            return(ResponseHelper.Create <ShareGetResponse>(code));
                        }
                    }
                    if (shareType == 1)//第一种特殊处理
                    {
                        if (record.ShareNumber > 0)
                        {
                            int seconds = 3600 - (date - record.UpdateTime).Seconds;
                            response.Data.NextShareEnd = seconds < 0 ? 0 : seconds;
                        }
                    }
                    response.Data.IsFirstShare = false;
                    response.Data.ShareNumber  = record.ShareNumber;
                    response.Data.IsHaveShare  = config[0].MaxShareNumber > record.ShareNumber;
                }
                else
                {
                    response.Data.IsHaveShare  = true;
                    response.Data.IsFirstShare = true;
                    response.Data.ShareNumber  = 0;
                }
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("获取分享信息", ex);
                response.Code = (int)MessageCode.NbParameterError;
            }
            return(response);
        }
예제 #2
0
 /// <summary>
 /// 刷新每日分享次数
 /// </summary>
 /// <param name="record"></param>
 /// <returns></returns>
 private MessageCode RefreshRecord(ShareManagerEntity record, ConfigShareEntity config)
 {
     if (!config.IsRepetition)
     {
         return(MessageCode.Success);
     }
     record.ShareNumber = 0;
     record.UpdateTime  = DateTime.Now;
     if (ShareManagerMgr.Update(record))
     {
         return(MessageCode.Success);
     }
     return(MessageCode.NbUpdateFail);
 }
예제 #3
0
 /// <summary>
 /// 分享游戏奖励(发放奖励)
 /// </summary>
 /// <param name="record"></param>
 /// <param name="mail"></param>
 /// <returns></returns>
 private MessageCode SavePrize(ShareManagerEntity record, MailBuilder mail)
 {
     using (var transactionManager = new TransactionManager(Dal.ConnectionFactory.Instance.GetDefault()))
     {
         transactionManager.BeginTransaction();
         var messageCode = MessageCode.NbUpdateFail;
         do
         {
             if (record.Idx == 0)
             {
                 if (!ShareManagerMgr.Insert(record, transactionManager.TransactionObject))
                 {
                     break;
                 }
             }
             else
             {
                 if (!ShareManagerMgr.Update(record, transactionManager.TransactionObject))
                 {
                     break;
                 }
             }
             if (!mail.Save(transactionManager.TransactionObject))
             {
                 break;
             }
             messageCode = MessageCode.Success;
         } while (false);
         if (messageCode == MessageCode.Success)
         {
             transactionManager.Commit();
         }
         else
         {
             transactionManager.Rollback();
         }
     }
     return(MessageCode.Success);
 }
예제 #4
0
 /// <summary>
 /// 分享游戏奖励(分类)
 /// </summary>
 /// <param name="managerId"></param>
 /// <param name="shareType"></param>
 /// <returns></returns>
 public MessageCodeResponse DoShare(Guid managerId, int shareType)
 {
     try
     {
         DateTime date    = DateTime.Now;
         var      manager = NbManagerMgr.GetById(managerId);
         if (manager == null)
         {
             return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.MissManager));
         }
         var shareConfig = CacheFactory.ManagerDataCache.GetShare(shareType);
         if (shareConfig.Count <= 0)
         {
             return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.NbParameterError));
         }
         var entity = ShareManagerMgr.GetByManagerId(managerId, shareType);
         if (entity != null && !shareConfig[0].IsRepetition) //不可重复领取
         {
             TaskHandler.Instance.Share(managerId);
             return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.AlreadyShare));
         }
         if (entity != null && entity.ShareNumber >= shareConfig[0].MaxShareNumber)
         {
             return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.MaxShareNumber));
         }
         if (shareType == 1) //第一种特殊处理
         {
             if (entity != null)
             {
                 if (entity.ShareNumber > 0 && (date - entity.UpdateTime).Seconds < 3600)
                 {
                     return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.NowShareNotPrize));
                 }
             }
         }
         int  point   = 0;
         int  coin    = 0;
         bool isFirst = false;
         if (entity == null) //首次分享
         {
             isFirst = true;
             entity  = new ShareManagerEntity(0, managerId, shareType, 1, date, date);
         }
         else
         {
             entity.ShareNumber++;
             entity.UpdateTime = date;
         }
         var itemList    = new Dictionary <int, int>();
         var messageCode = SendPrize(shareConfig, isFirst, ref itemList, ref point, ref coin);
         var mail        = new MailBuilder(managerId, point, coin, itemList, EnumMailType.Share);
         if (messageCode != MessageCode.Success)
         {
             return(ResponseHelper.Create <MessageCodeResponse>(messageCode));
         }
         messageCode = SavePrize(entity, mail);
         return(ResponseHelper.Create <MessageCodeResponse>(messageCode));
     }
     catch (Exception ex)
     {
         SystemlogMgr.Error("分享游戏", ex);
         return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.NbParameterError));
     }
 }