예제 #1
0
        /// <summary>
        /// 用户评论 帖子 文章  触发 加分 及通知  动作
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="coinSourceEnum"></param>
        public void AddScoreOnComment_BBS_Article(long userId, long mainId, ScoreBeloneMainEnumType scoreBeloneMainEnumType, CoinSourceEnum coinSourceEnum)
        {
            try
            {
                int            score           = 0;
                string         publishTypeName = string.Empty;
                NoticeTypeEnum noticeTypeEnum  = NoticeTypeEnum.None;
                if (coinSourceEnum == CoinSourceEnum.UserComment_BBS)
                {
                    publishTypeName = "帖子";
                    score           = ConfigHelper.AppSettings("commentQuestion").ToInt32();
                    noticeTypeEnum  = NoticeTypeEnum.OnPublishBBS;
                }
                else
                {
                    publishTypeName = "文章";
                    score           = ConfigHelper.AppSettings("commentArticle").ToInt32();
                    noticeTypeEnum  = NoticeTypeEnum.OnPublishArticle;
                }

                int coinSource1 = CoinSourceEnum.UserComment_BBS.GetHashCode();
                int coinSource2 = CoinSourceEnum.UserComment_Article.GetHashCode();
                //bool canAdd = true;
                //判断 今日是否达到 上限

                var start = DateTime.Now.Date;
                var end   = DateTime.Now;

                var count__ = _amazonBBSDBContext.ScoreCoinLog.Count(a => a.UserID == userId && a.CoinType == 1 && (a.CoinSource == coinSource2 || a.CoinSource == coinSource1) && a.CoinTime >= start && a.CoinTime <= end);

                if (count__ < ConfigHelper.AppSettings("DayInAddScoreCount").ToInt32())
                {
                    if (AddScoreOrCoin(userId, 1, score, coinSourceEnum, true, scoreBeloneMainEnumType, mainId))
                    {
                        //站内信通知
                        NoticeBLL.Instance.OnComment_BBS_Article_AddScore_Notice_Commenter(userId, DateTime.Now, publishTypeName, score.ToString(), noticeTypeEnum);
                    }
                }
            }
            catch (Exception e)
            {
            }
        }
예제 #2
0
        /// <summary>
        /// 给用户添加积分-并记录流水
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="feeType"></param>
        /// <param name="fee"></param>
        /// <returns></returns>
        public bool AddScoreOrCoin(long userId, int feeType, int fee, CoinSourceEnum coinSourceEnum, bool needSave = false, ScoreBeloneMainEnumType scoreBeloneMainEnumType = ScoreBeloneMainEnumType.None, long mainId = 0)
        {
            DbContextTransaction tran = null;

            if (needSave)
            {
                tran = _amazonBBSDBContext.Database.BeginTransaction();
            }
            //作者增加积分
            var authorExt = _amazonBBSDBContext.UserExt.FirstOrDefault(a => a.UserID == userId);

            if (feeType == 1)
            {
                authorExt.TotalScore += fee;
            }
            else
            {
                authorExt.TotalCoin += fee;
            }
            //添加记录
            var model = _amazonBBSDBContext.ScoreCoinLog.Add(new ScoreCoinLog()
            {
                UserID     = userId,
                Coin       = fee,
                CoinSource = coinSourceEnum.GetHashCode(),
                CoinTime   = DateTime.Now,
                CoinType   = feeType,
                CreateUser = userId.ToString(),
                UserName   = _amazonBBSDBContext.UserBase.FirstOrDefault(a => a.UserID == userId)?.UserName
            });

            //关联积分对象
            if (mainId > 0 && scoreBeloneMainEnumType != ScoreBeloneMainEnumType.None)
            {
                if (needSave)
                {
                    _amazonBBSDBContext.SaveChanges();
                }
                _amazonBBSDBContext.ScoreBeloneItem.Add(new ScoreBeloneItem
                {
                    CreateTime     = DateTime.Now,
                    MainId         = mainId,
                    MainType       = scoreBeloneMainEnumType.GetHashCode(),
                    ScoreCoinLogId = model.ScoreCoinLogId,
                    UserID         = userId
                });
            }

            if (needSave)
            {
                _amazonBBSDBContext.SaveChanges();
                tran.Commit();
            }
            return(true);
        }