/// <summary> /// 自动的执行任务 /// </summary> /// <remarks> /// Interval 单位为毫秒 /// Begin 从 2019-1-1 0:0:0 开始计时执行 /// </remarks> public override void Run() { try { var stopwatch = new Stopwatch(); stopwatch.Start(); //Logger.Info("开始问答分配悬赏金"); var num = new FaqsAnswerBiz().FaqsAllotFeeAsync().Result; stopwatch.Stop(); if (num >= 0) { Logger.Info($"问答分配悬赏金完成,共处理条 {num} 数据。耗时:{stopwatch.ElapsedMilliseconds / 1000}秒"); } } catch (Exception ex) { Logger.Info($"问答自动分配悬赏金报错,Error:{ex.Message} "); } }
public async Task <IActionResult> ReplyFaqsQuestionAsync([FromBody] ReplyFaqsQuestionRequestDto request) { var questionBiz = new FaqsQuestionBiz(); var question = await new FaqsQuestionBiz().GetModelAsync(request.QuestionGuid); if (question == null) { return(Failed(ErrorCode.Empty, "参数错误")); } var isExistAnswer = await questionBiz.GetIsAnswerExist(question.QuestionGuid, UserID); if (isExistAnswer) { return(Failed(ErrorCode.DataBaseError, "该问题已回答过,不能二次回答!")); } var model = new FaqsAnswerModel { CreatedBy = UserID, Enable = true, Content = request.Content, AnswerGuid = Guid.NewGuid().ToString("N"), LastUpdatedBy = UserID, ReceiveType = question.RewardType, MainAnswer = false, OrgGuid = string.Empty, QuestionGuid = request.QuestionGuid, UserGuid = UserID, RewardIntergral = 0 }; FaqsAnswerBiz faqsAnswerBiz = new FaqsAnswerBiz(); lock (lockObject) { question.AnswerNum = (faqsAnswerBiz.GetTotalByQuestionIdAsync(question.QuestionGuid).Result + 1); var result = faqsAnswerBiz.InsertAsync(model, question).Result; return(Success()); } }
public async Task <IActionResult> GetFaqsQuestionInfoAsync([FromQuery] GetFaqsQuestionInfoRequestDto request) { var question = await new FaqsQuestionBiz().GetModelAsync(request.QuestionGuid); if (question == null) { return(Failed(ErrorCode.Empty, "参数错误")); } var hot = await new HotBiz().GetModelAsync(request.QuestionGuid); var user = await new UserBiz().GetModelAsync(question.UserGuid); FaqsAnswerBiz faqsAnswerBiz = new FaqsAnswerBiz(); var attachmentGuidList = JsonConvert.DeserializeObject <string[]>(question.AttachmentGuidList ?? "[]"); var accessorys = await new AccessoryExBiz().GetModelsAsync(attachmentGuidList); var userPortrait = await new AccessoryBiz().GetAsync(user.PortraitGuid); var resopnse = new GetFaqsQuestionInfoResponseDto { QuestionGuid = question.QuestionGuid, AnswerNum = question.AnswerNum, Content = question.Content, CreationDate = question.CreationDate, Enable = question.Enable, Status = question.Status, VisitCount = hot?.VisitCount ?? 0, RewardIntergral = question.RewardType.Equals(FaqsQuestionModel.RewardTypeEnum.Money.ToString()) ? (decimal)question.RewardIntergral / 100 : question.RewardIntergral, RewardType = question.RewardType, UserGuid = question.UserGuid, UserName = user?.UserName, AttachedPictures = accessorys.Select(a => new GetFaqsQuestionInfoResponseDto.Attachment { Guid = a.AccessoryGuid, Url = $"{a.BasePath}{a.RelativePath}" }).ToArray(), Portrait = $"{userPortrait?.BasePath}{userPortrait?.RelativePath}" }; return(Success(resopnse)); }
public async Task <IActionResult> SetBestAnswerAsync(string answerGuid) { var biz = new FaqsAnswerBiz(); var model = await biz.GetModelAsync(answerGuid); if (!(model?.Enable ?? false)) { return(Failed(ErrorCode.Empty, "该回答不存在")); } var questionModel = await new FaqsQuestionBiz().GetModelAsync(model.QuestionGuid); if (!string.Equals(questionModel.Status, FaqsQuestionModel.QuestionStatusEnum.Solving.ToString(), StringComparison.OrdinalIgnoreCase)) { return(Failed(ErrorCode.UserData, "当前问题状态不是[未解决],不能设置最佳回答")); } model.LastUpdatedBy = UserID; model.LastUpdatedDate = DateTime.Now; model.MainAnswer = true; model.RewardIntergral = questionModel.RewardIntergral; questionModel.Status = FaqsQuestionModel.QuestionStatusEnum.Solved.ToString(); questionModel.LastUpdatedBy = UserID; questionModel.LastUpdatedDate = DateTime.Now; var result = false; if (questionModel.RewardType.Equals(FaqsQuestionModel.RewardTypeEnum.Intergral.ToString())) { model.ReceiveType = FaqsQuestionModel.RewardTypeEnum.Intergral.ToString(); var scoreModel = new ScoreModel { ScoreGuid = Guid.NewGuid().ToString("N"), UserGuid = model.UserGuid, UserTypeGuid = GD.Common.EnumDefine.UserType.Doctor.ToString(), Variation = questionModel.RewardIntergral, Reason = "回答被设为最佳", PlatformType = GD.Common.EnumDefine.PlatformType.CloudDoctor.ToString(), CreatedBy = UserID, LastUpdatedBy = UserID, OrgGuid = string.Empty }; result = await biz.SetBestAnswerAsync(model, scoreModel, questionModel); } else if (questionModel.RewardType.Equals(FaqsQuestionModel.RewardTypeEnum.Money.ToString())) { model.ReceiveType = FaqsQuestionModel.RewardTypeEnum.Money.ToString(); var balanceModel = await new DoctorBalanceBiz().GetModelsById(model.UserGuid); var isNewBalanceModel = false; if (balanceModel == null) { isNewBalanceModel = true; balanceModel = new DoctorBalanceModel { BalanceGuid = model.UserGuid, TotalEarnings = 0, AccBalance = 0, TotalWithdraw = 0, Status = DoctorBalanceModel.DoctorBalanceStatusEnum.Normal.ToString(), CreatedBy = UserID, LastUpdatedBy = UserID, OrgGuid = string.Empty }; } var newEaringsDetailModel = new DoctorEaringsDetailModel { DetailGuid = Guid.NewGuid().ToString("N"), AnswerGuid = model.AnswerGuid, DoctorGuid = model.UserGuid, FeeFrom = DoctorEaringsDetailModel.FeeFromTypeEnum.Answer.ToString(), ReceivedFee = questionModel.RewardIntergral, OrgGuid = string.Empty, CreatedBy = UserID, LastUpdatedBy = UserID, Remark = string.Empty }; balanceModel.TotalEarnings += newEaringsDetailModel.ReceivedFee; balanceModel.AccBalance += newEaringsDetailModel.ReceivedFee; result = await biz.SetBestAnswerAllotMoneyAsync(model, newEaringsDetailModel, balanceModel, questionModel, isNewBalanceModel); } return(result ? Success() : Failed(ErrorCode.DataBaseError, "网络错误,设置最佳回答失败")); }