public async Task <RpcResult <VoidRsp> > AddAPaperCountAsync(AddAPaperReq req, int timeOut = 3000)
        {
            AmpMessage message = AmpMessage.CreateRequestMessage(20001, 5);

            message.FriendlyServiceName = "QPaperInnerService.AddAPaperCount";
            message.Data = req.ToByteArray();
            var response = await base.CallInvoker.AsyncCall(message, timeOut);

            if (response == null)
            {
                throw new RpcException("error,response is null !");
            }
            var result = new RpcResult <VoidRsp>();

            if (response.Code != 0)
            {
                result.Code = response.Code;
            }
            else if (response.Data == null)
            {
                result.Code = ErrorCodes.CODE_INTERNAL_ERROR;
            }
            else
            {
                result.Data = VoidRsp.Parser.ParseFrom(response.Data);
            }

            return(result);
        }
        //同步方法
        public RpcResult <VoidRsp> AddAPaperCount(AddAPaperReq req)
        {
            AmpMessage message = AmpMessage.CreateRequestMessage(20001, 5);

            message.FriendlyServiceName = "QPaperService.AddAPaperCount";


            message.Data = req.ToByteArray();
            var response = base.CallInvoker.BlockingCall(message);

            if (response == null)
            {
                throw new RpcException("error,response is null !");
            }
            var result = new RpcResult <VoidRsp>();

            if (response.Code != 0)
            {
                result.Code = response.Code;
            }

            if (response.Data == null)
            {
                result.Data = new VoidRsp();
            }
            else
            {
                result.Data = VoidRsp.Parser.ParseFrom(response.Data);
            }

            return(result);
        }
        //调用委托
        private async Task <AmpMessage> ProcessAddAPaperCountAsync(AmpMessage req)
        {
            AddAPaperReq request = null;

            if (req.Data == null)
            {
                request = new AddAPaperReq();
            }
            else
            {
                request = AddAPaperReq.Parser.ParseFrom(req.Data);
            }

            req.FriendlyServiceName = "QPaperInnerService.AddAPaperCount";

            var result = await AddAPaperCountAsync(request);

            var response = AmpMessage.CreateResponseMessage(req.ServiceId, req.MessageId);

            response.FriendlyServiceName = "QPaperInnerService.AddAPaperCount";
            response.Code = result.Code;
            if (result.Data != null)
            {
                response.Data = result.Data.ToByteArray();
            }
            return(response);
        }
        public override async Task <RpcResult <VoidRsp> > AddAPaperCountAsync(AddAPaperReq request)
        {
            var res = new RpcResult <VoidRsp>();

            res.Data = new VoidRsp();

            await this._qpaperRepo.UpdateAPaperCountAsync(request.QpaperId, request.Count);

            return(res);
        }
Esempio n. 5
0
        /// <summary>
        /// 保存答卷信息
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public override async Task <RpcResult <SaveAPaperRsp> > SaveAPaperAsync(SaveAPaperReq req)
        {
            var res = new RpcResult <SaveAPaperRsp>();

            res.Data = new SaveAPaperRsp();

            if (req.Answers.Count == 0)
            {
                res.Code = ErrorCodes.PARAMS_VALIDATION_FAIL;
                res.Data.ReturnMessage = "答案不能为空";
                return(res);
            }
            var          qpaperService = _proxy.GetClient <QPaperInnerServiceClient>();
            GetQPaperReq getQPRep      = new GetQPaperReq();

            getQPRep.XRequestId = req.XRequestId;
            getQPRep.Identity   = req.Identity;
            getQPRep.ClientIp   = req.ClientIp;
            getQPRep.CheckRole  = false;
            getQPRep.QpaperId   = req.QpaperId;

            var getQPRes = await qpaperService.GetQPaperAsync(getQPRep);

            if (getQPRes.Code != 0)
            {
                res.Code = getQPRes.Code;
                if (getQPRes.Data != null)
                {
                    res.Data.ReturnMessage = getQPRes.Data.ReturnMessage;
                }

                return(res);
            }
            if (getQPRes.Data == null)
            {
                res.Code = ErrorCodes.DATA_NOT_FOUND;
                res.Data.ReturnMessage = "问卷不存在";
                return(res);
            }

            using (TransScope scope = this._apaperRepo.BeginTransScope())
            {
                var apaper = new APaper();
                apaper.CreateTime    = DateTime.Now;
                apaper.QpaperId      = req.QpaperId;
                apaper.QpaperSubject = getQPRes.Data.Subject;
                apaper.QpaperUserId  = getQPRes.Data.CreateUserId;
                apaper.Remark        = req.Remark;
                apaper.UserId        = string.IsNullOrEmpty(req.UserId) ? req.Identity : req.UserId;

                bool hasA = await this._apaperRepo.CheckAPaperAsync(apaper.QpaperId, apaper.UserId);

                if (hasA)
                {
                    res.Code = ErrorCodes.BIZ_RULE_FAIL;
                    res.Data.ReturnMessage = "该用户已经回答过该问卷了";
                    return(res);
                }

                var newId = await this._apaperRepo.InsertAsync(apaper);

                if (newId < 0)
                {
                    res.Code = ErrorCodes.INTERNAL_ERROR;
                    res.Data.ReturnMessage = "新增问卷失败,请稍后重试";
                    return(res);
                }
                var apaperId = (int)newId;

                var alist = new List <Answer>();
                foreach (var a in req.Answers)
                {
                    var answer = new Answer();
                    answer.AnswerId         = Guid.NewGuid().ToString("N");
                    answer.ApaperId         = apaperId;
                    answer.ObjectiveAnswer  = a.ObjectiveAnswer;
                    answer.SubjectiveAnswer = a.SubjectiveAnswer;
                    answer.QuestionId       = a.QuestionId;

                    alist.Add(answer);
                }
                await this._apaperRepo.AddAnswers(alist);

                res.Data.ApaperId = apaperId;

                scope.Complete();// 提交事务
            }


            // 异步执行不管是否成功
            var addReq = new AddAPaperReq();

            addReq.ClientIp   = req.ClientIp;
            addReq.Identity   = req.Identity;
            addReq.XRequestId = req.XRequestId;
            addReq.QpaperId   = req.QpaperId;
            addReq.Count      = 1;
#pragma warning disable CS4014 // 由于此调用不会等待,因此在调用完成前将继续执行当前方法
            qpaperService.AddAPaperCountAsync(addReq);
#pragma warning restore CS4014 // 由于此调用不会等待,因此在调用完成前将继续执行当前方法

            return(res);
        }
 //抽象方法
 public abstract Task <RpcResult <VoidRsp> > AddAPaperCountAsync(AddAPaperReq req);