public ResultNormal submit(SubmitPraize submitPraize)
        {
            ResultNormal result = new ResultNormal();

            try
            {
                if (string.IsNullOrEmpty(submitPraize.userId))
                {
                    submitPraize.userId = this.getUserId();
                }
                else
                {
                    if (submitPraize.userId != this.getUserId())
                    {
                        throw new CCException("身份不明确,请登录后再尝试");
                    }
                }
                result.ResultId = _praizeServices.handlePraize(submitPraize);

                //创建通知消息
                asyncCreateMessage(submitPraize, result.ResultId);
                // Console.WriteLine("controller return");
            }
            catch (Exception ex)
            {
                result.ErrorMsg = ex.Message;
            }
            return(result);
        }
Пример #2
0
        public long handlePraize(SubmitPraize submitPraize)
        {
            if (string.IsNullOrEmpty(submitPraize.userId))
            {
                throw new Exception("非法操作!");
            }
            if (string.IsNullOrEmpty(submitPraize.bookCode))
            {
                throw new Exception("没有书编号,无法操作!");
            }

            long resultId = 0;

            switch (submitPraize.praizeTarget)
            {
            case PraizeTarget.Resource:
                resultId = this.handlePraize_Res(submitPraize);
                break;

            case PraizeTarget.Comment:
                resultId = handPraize_Comment(submitPraize);
                break;

            case PraizeTarget.CommentReply:
                resultId = handPraize_CommentReply(submitPraize);
                break;
            }

            return(resultId);
        }
Пример #3
0
        /// <summary>
        /// 处理点赞,新增,取消,切换
        /// </summary>
        /// <param name="submitPraize"></param>
        /// <returns></returns>
        private long handlePraize_Res(SubmitPraize submitPraize)
        {
            long            resultId    = 0;
            DbResult <bool> transResult = null;

            /*!!可能的漏洞
             * 没有对更新的赞和取消的赞做原始赞检查
             */
            if (submitPraize.praizeDirection == OperationDirection.plus)
            {
                if (_praizeRepository.HasPraized_Res(submitPraize.refCode, submitPraize.userId).Result > 0)
                {
                    return(0);
                }
            }
            EPraize_Res praize = new EPraize_Res
            {
                praizeDate = DateTime.Now,
                PraizeType = submitPraize.praizeType,
                ResCode    = submitPraize.refCode,
                userId     = submitPraize.userId,
                bookCode   = submitPraize.parentRefCode,
            };

            switch (submitPraize.praizeDirection)
            {
            case OperationDirection.plus:
                transResult = _praizeRepository.Db.Ado.UseTran(() =>
                {
                    resultId = _praizeRepository.Add_Sync(praize);
                    _praizeRepository.UpdateResPraizedNum(submitPraize.refCode, submitPraize.praizeType, OperationDirection.plus);
                });
                break;

            case OperationDirection.minus:
                transResult = _praizeRepository.Db.Ado.UseTran(() =>
                {
                    _praizeRepository.DeletePraized_Res(submitPraize.refCode, submitPraize.userId);
                    _praizeRepository.UpdateResPraizedNum(submitPraize.refCode, submitPraize.praizeType, OperationDirection.minus);
                });
                break;

            case OperationDirection.update:
                transResult = _praizeRepository.Db.Ado.UseTran(() =>
                {
                    _praizeRepository.UpdatePraized_Res(submitPraize.praizeType, submitPraize.refCode, submitPraize.userId);
                    _praizeRepository.UpdateResPraizedNum(submitPraize.refCode, submitPraize.praizeType, OperationDirection.update);
                });
                break;
            }
            if (transResult != null && !transResult.IsSuccess)
            {
                throw new Exception(transResult.ErrorMessage);
            }
            return(resultId);
        }
 private void asyncCreateMessage(SubmitPraize submitPraize, long praizeId)
 {
     Task.Run(() =>
     {
         try
         {
             _messageServices.CreateNotification_Praize(new MsgSubmitPraize
             {
                 SubmitPraize = submitPraize,
                 PraizeId     = praizeId,
             });
         }
         catch (Exception msgEx)
         {
             NLogUtil.cc_ErrorTxt("【点赞通知】错误:" + msgEx.Message);
         }
     });
 }
Пример #5
0
        private long handPraize_Comment(SubmitPraize submitPraize)
        {
            DbResult <bool> transResult = null;
            long            resultId    = 0;

            if (submitPraize.praizeDirection == OperationDirection.plus)
            {
                if (_praizeRepository.HasPraized_Comment_Res(Convert.ToInt64(submitPraize.refCode), submitPraize.userId).Result > 0)
                {
                    return(0);
                }

                EPraize_Comment praize = new EPraize_Comment
                {
                    praizeDate = DateTime.Now,
                    PraizeType = PraizeType.good,
                    commentId  = Convert.ToInt64(submitPraize.refCode),
                    userId     = submitPraize.userId,
                    RefCode    = submitPraize.parentRefCode,
                    bookCode   = submitPraize.bookCode,
                };

                transResult = _praizeRepository.Db.Ado.UseTran(() =>
                {
                    resultId = _praizeRepository.AddPraize_Comment(praize);

                    _praizeRepository.UpdateCommentPraized_GoodNum(Convert.ToInt64(submitPraize.refCode), OperationDirection.plus);
                });
            }
            else
            {
                transResult = _praizeRepository.Db.Ado.UseTran(() =>
                {
                    _praizeRepository.DeletePraized_Comment_Res(Convert.ToInt64(submitPraize.refCode), submitPraize.userId);

                    _praizeRepository.UpdateCommentPraized_GoodNum(Convert.ToInt64(submitPraize.refCode), OperationDirection.minus);
                });
            }
            if (transResult != null && !transResult.IsSuccess)
            {
                throw new Exception(transResult.ErrorMessage);
            }
            return(resultId);
        }