//调用委托 private async Task <AmpMessage> ProcessSaveAPaperAsync(AmpMessage req) { SaveAPaperReq request = null; if (req.Data == null) { request = new SaveAPaperReq(); } else { request = SaveAPaperReq.Parser.ParseFrom(req.Data); } req.FriendlyServiceName = "APaperInnerService.SaveAPaper"; var result = await SaveAPaperAsync(request); var response = AmpMessage.CreateResponseMessage(req.ServiceId, req.MessageId); response.FriendlyServiceName = "APaperInnerService.SaveAPaper"; response.Code = result.Code; if (result.Data != null) { response.Data = result.Data.ToByteArray(); } return(response); }
public async Task <RpcResult <SaveAPaperRsp> > SaveAPaperAsync(SaveAPaperReq req, int timeOut = 3000) { AmpMessage message = AmpMessage.CreateRequestMessage(20002, 1); message.FriendlyServiceName = "APaperService.SaveAPaper"; 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 <SaveAPaperRsp>(); if (response.Code != 0) { result.Code = response.Code; } if (response.Data == null) { result.Data = new SaveAPaperRsp(); } else { result.Data = SaveAPaperRsp.Parser.ParseFrom(response.Data); } return(result); }
//同步方法 public RpcResult <SaveAPaperRsp> SaveAPaper(SaveAPaperReq req) { AmpMessage message = AmpMessage.CreateRequestMessage(20002, 1); message.FriendlyServiceName = "APaperService.SaveAPaper"; message.Data = req.ToByteArray(); var response = base.CallInvoker.BlockingCall(message); if (response == null) { throw new RpcException("error,response is null !"); } var result = new RpcResult <SaveAPaperRsp>(); if (response.Code != 0) { result.Code = response.Code; } if (response.Data == null) { result.Data = new SaveAPaperRsp(); } else { result.Data = SaveAPaperRsp.Parser.ParseFrom(response.Data); } return(result); }
//抽象方法 public abstract Task <RpcResult <SaveAPaperRsp> > SaveAPaperAsync(SaveAPaperReq req);
/// <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 override Task <RpcResult <SaveAPaperRsp> > SaveAPaperAsync(SaveAPaperReq request) { var client = _proxy.GetClient <APaperInnerServiceClient>(); return(client.SaveAPaperAsync(request)); }