public async Task <IActionResult> UploadHealthReport([FromBody] CreateOrUpdateHealthReportRequestDto request) { var healthBiz = new HealthBiz(); if (string.IsNullOrEmpty(request.UserGuid)) { return(Failed(ErrorCode.Empty, "请指定检验报告所属会员")); } var userBiz = new UserBiz(); var userModel = await userBiz.GetAsync(request.UserGuid); if (userModel is null || !userModel.Enable) { return(Failed(ErrorCode.Empty, "指定会员不存在")); } if (string.IsNullOrEmpty(request.Suggestion) && request.Suggestion.Length > 1000) { return(Failed(ErrorCode.Empty, "报告建议超过最大长度限制")); } if (request.Attachments is null || request.Attachments.Count <= 0) { return(Failed(ErrorCode.Empty, "请上传报告附件")); } if (await healthBiz.CheckReportName(request.ReportName)) { return(Failed(ErrorCode.Empty, $"报告名称“{request.ReportName}”已存在")); } var model = new ConsumerHealthReportModel() { ReportGuid = Guid.NewGuid().ToString("N"), ReportName = request.ReportName, UserGuid = request.UserGuid, Suggestion = request.Suggestion, LastUpdatedBy = UserID, CreatedBy = UserID }; (List <ConsumerHealthReportDetailModel> detailModels, string errorMsg) = FilterReportAttachments(request.Attachments, model.ReportGuid); if (detailModels is null && !string.IsNullOrEmpty(errorMsg)) { return(Failed(ErrorCode.Empty, errorMsg)); } var result = await healthBiz.CreateHealthReport(model, detailModels.ToList()); return(result ? Success() : Failed(ErrorCode.DataBaseError, "上传检验报告失败")); }
/// <summary> /// 上传检验报告 /// </summary> /// <param name="model"></param> /// <returns></returns> public async Task <bool> CreateHealthReport(ConsumerHealthReportModel model, List <ConsumerHealthReportDetailModel> detailModels) { return(await MySqlHelper.TransactionAsync(async (conn, tran) => { await conn.InsertAsync <string, ConsumerHealthReportModel>(model); detailModels.InsertBatch(); return true; })); }
/// <summary> /// 编辑检验报告 /// </summary> /// <param name="model"></param> /// <returns></returns> public async Task <bool> UpdateHealthReport(ConsumerHealthReportModel model, List <ConsumerHealthReportDetailModel> detailModels) { var reportGuids = new string[] { model.ReportGuid }; return(await MySqlHelper.TransactionAsync(async (conn, tran) => { await conn.UpdateAsync(model); await conn.DeleteListAsync <ConsumerHealthReportDetailModel>("where report_guid in @reportGuids", new { reportGuids }); detailModels.InsertBatch(conn); return true; })); }