public static void RefreshApplicationCache() { #region 启动刷新系统配置 try { SysConfigService.Get<Common.Config.Sections.Api>(false); SysConfigService.Get<Common.Config.Sections.IMGStore>(false); SysConfigService.Get<Common.Config.Sections.IM>(false); SysConfigService.Get<Common.Config.Sections.Agora>(false); SysConfigService.Get<Common.Config.Sections.Pay>(false); SysConfigService.Get<Common.Config.Sections.Mongodb>(false); #region 清除缓存 new SysAccessAccountService().ClearAccountCache(); #endregion } catch (Exception E) { LogHelper.WriteError(E); } #endregion }
public UploadController() { if (config == null) { //文件存储配置 config = SysConfigService.Get <XuHos.Common.Config.Sections.IMGStore>(); } }
private void btnSave_Click(object sender, EventArgs e) { var sysConfigService = new SysConfigService(); var entity = sysConfigService.Get(); entity.IP = txtIP.Text.Trim(); entity.ScanPortName = txtScanPortName.Text.Trim(); entity.Port = txtPort.Text.Trim(); entity.PrintType = (PrintType)cmbPrintType.SelectedValue; entity.DomainName = txtDomainName.Text.Trim(); sysConfigService.Save(entity); this.Close(); }
public static void RegisterApplicationConfig() { //获取Redis缓存配置,首次不从缓存中获取 var redisConfig = SysConfigService.Get <Redis>(false); //注册Redis处理程序,并指定默认Db Manager.Register( (dbNum) => HealthCloud.Common.Cache.Redis.RedisCacheManage.Create(redisConfig, dbNum), int.Parse(redisConfig.DBNum)); var imgConfig = SysConfigService.Get <IMGStore>(false); #region 注册图片配置 ImageBaseDto.UrlPrefix = imgConfig.UrlPrefix; #endregion #region 注册消息队列配置 var mqConfig = SysConfigService.Get <MQ>(false); HealthCloud.Common.EventBus.Configuration.RegisterConfig(mqConfig); #endregion HealthCloud.MicroService.ServiceSelfRegistration.Register(new MicroService.ServiceRegisterConfig() { SERVICE_REGISTRY_PORT = System.Configuration.ConfigurationManager.AppSettings["SERVICE_REGISTRY_PORT"], SERVICE_80_CHECK_HTTP = System.Configuration.ConfigurationManager.AppSettings["SERVICE_80_CHECK_HTTP"], SERVICE_80_CHECK_INTERVAL = System.Configuration.ConfigurationManager.AppSettings["SERVICE_80_CHECK_INTERVAL"], SERVICE_80_CHECK_TIMEOUT = System.Configuration.ConfigurationManager.AppSettings["SERVICE_80_CHECK_TIMEOUT"], SERVICE_ADDRESS = System.Configuration.ConfigurationManager.AppSettings["SERVICE_ADDRESS"], SERVICE_NAME = System.Configuration.ConfigurationManager.AppSettings["SERVICE_NAME"], SERVICE_PORT = System.Configuration.ConfigurationManager.AppSettings["SERVICE_PORT"], SERVICE_REGION = System.Configuration.ConfigurationManager.AppSettings["SERVICE_REGION"], SERVICE_REGISTRY_ADDRESS = System.Configuration.ConfigurationManager.AppSettings["SERVICE_REGISTRY_ADDRESS"], SERVICE_SELF_REGISTER = System.Configuration.ConfigurationManager.AppSettings["SERVICE_SELF_REGISTER"], SERVICE_TAGS = System.Configuration.ConfigurationManager.AppSettings["SERVICE_TAGS"], }); }
private void Init() { var sysConfigService = new SysConfigService(); var entity = sysConfigService.Get(); txtIP.Text = entity.IP; txtPort.Text = entity.Port; txtDomainName.Text = entity.DomainName; //PrintType var enumArray = Enum.GetValues(typeof(PrintType)); List <KeyValuePair <int, string> > statusList = new List <KeyValuePair <int, string> >(); foreach (var enumItem in enumArray) { statusList.Add(new KeyValuePair <int, string>((int)enumItem, enumItem.ToString())); } cmbPrintType.DataSource = statusList; cmbPrintType.DisplayMember = "Value"; cmbPrintType.ValueMember = "Key"; cmbPrintType.SelectedValue = (int)entity.PrintType; txtScanPortName.Text = entity.ScanPortName; }
public DTO.Common.ApiResult Index(string OrderNo, string SellerID = "", EnumPaySignType SignType = EnumPaySignType.App, string ReturnUrl = "") { //设置默认收款人 if (string.IsNullOrEmpty(SellerID)) { var Config = SysConfigService.Get <XuHos.Common.Config.Sections.Pay>(); SellerID = Config.AliPayDefaultSellerId; } var orderService = new OrderService(CurrentOperatorUserID); var orderEntity = orderService.GetOrder(OrderNo); if (orderService.SetTradeLog(OrderNo, EnumPayType.AliPay, EnumTradeState.WAIT_BUYER_PAY, "", orderEntity.TotalFee, SellerID)) { var bll = BLL.Platform.Cashier.CashierFactoryService.Create(EnumPayType.AliPay, CurrentOperatorUserID); return(bll.GetPaySign(OrderNo, SellerID, orderEntity.TotalFee, SignType, ReturnUrl).ToApiResultForObject()); } else { return(EnumApiStatus.BizError.ToApiResultForApiStatus()); } }
async Task <int> GetWavTotalSecond(string FileMD5) { #region 获取文件长度 SysFileIndexService fileService = new SysFileIndexService(CurrentOperatorUserID); var index = fileService.Single <XuHos.Entity.SysFileIndex>(a => a.MD5 == FileMD5); if (index != null) { //文件存储配置 var config = SysConfigService.Get <XuHos.Common.Config.Sections.IMGStore>(); using (var filestream = await XuHos.Common.Storage.Manager.Instance.OpenFile("Audios", index.FileUrl)) { return(Convert.ToInt32(XuHos.Common.Utility.AudioHelper.TotalSeconds(filestream))); } } else { return(0); } #endregion }
public bool Handle(Dto.EventBus.ChannelStateChangedEvent evt) { try { var apiConfig = SysConfigService.Get <VideoRecorder>(); if (evt.State == EnumRoomState.InMedicalTreatment && !string.IsNullOrEmpty(evt.ChannelID)) { var response = WebAPIHelper.HttpGet($"{apiConfig.VideoRecorderApiUrl.TrimEnd('/')}/api/StartRecord?ChannelID={evt.ChannelID}", ""); var result = 0; if (int.TryParse(response, out result)) { if (result > 0) { return(false); } else { return(false); } } else { return(false); } } } catch (Exception ex) { LogHelper.DefaultLogger.Error(ex.Message, ex); return(false); } return(true); }
public static void RegisterApplicationConfig() { //序列号生成器 XuHos.Common.Utility.SeqIDHelper.RegisterSeqWorker(0, 0); #region 设置Redius缓存服务器设置 //获取Redis缓存配置,首次不从缓存中获取 var redisConfig = SysConfigService.Get<Common.Config.Sections.Redis>(false); //注册Redis处理程序,并指定默认Db XuHos.Common.Cache.Manager.Register((dbNum) => XuHos.Common.Cache.Redis.StackExchangeImplement.RedisCacheManage.Create(redisConfig, dbNum), 0); #endregion #region 注册支付相关配置 //获取Redis缓存配置,首次不从缓存中获取 var payConfig = SysConfigService.Get<Common.Config.Sections.Pay>(); XuHos.Common.Pay.Configuration.Register(payConfig); var wxPayAppIdList = payConfig.WXPaySellerIds.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); var kmPayAppIdList = payConfig.KMPaySellerIds.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); var aliPayAppIdList = payConfig.AliPaySellerIds.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); foreach (var appId in wxPayAppIdList) { XuHos.Common.Pay.Configuration.Register(SysConfigService.Get<Common.Config.Sections.Pay.WXPay>(true, (string)("[" + appId + "]")), (string)appId); } foreach (var appId in kmPayAppIdList) { XuHos.Common.Pay.Configuration.Register(SysConfigService.Get<Common.Config.Sections.Pay.KMPay>(true, (string)("[" + appId + "]")), (string)appId); } foreach (var appId in aliPayAppIdList) { XuHos.Common.Pay.Configuration.Register(SysConfigService.Get<Common.Config.Sections.Pay.AliPay>(true, (string)("[" + appId + "]")), (string)appId); } #endregion #region 注册图片配置 var imgConfig = SysConfigService.Get<XuHos.Common.Config.Sections.IMGStore>(); XuHos.DTO.Common.ImageBaseDTO.UrlPrefix = imgConfig.UrlPrefix; #endregion #region 注册消息队列配置 var mqConfig = SysConfigService.Get<XuHos.Common.Config.Sections.MQ>(); XuHos.EventBus.Configuration.RegisterConfig(mqConfig.HostName, int.Parse(mqConfig.Port), mqConfig.UserName, mqConfig.Password, mqConfig.VirtualHost); #endregion #region 注册 Mongodb 配置 var mongodbConfig = SysConfigService.Get<Common.Config.Sections.Mongodb>(); XuHos.DAL.Mongodb.MongoDbHelper.RegisterConfig(mongodbConfig.ConnectionString, mongodbConfig.CollectionName); #endregion #region 注册云通信和配置配置 var imConfig = SysConfigService.Get<Common.Config.Sections.IM>(); //var agoraConfig = SysConfigService.Get<Common.Config.Sections.Agora>(); XuHos.Integration.QQCloudy.Configuration.RegisterConfig(imConfig); XuHos.Integration.WechatApp.Configuration.RegisterConfig(imConfig); #endregion #region 注册Api出站入站日志(使用Mongodb记录日志) XuHos.Common.Log.Configuration.Register(new XuHos.DAL.Mongodb.MongodbApiTrackLogAppender()); #endregion //XuHos.Integration.ShortMessage.SMSHelper.RegisterYunZX(SysConfigService.Get<Common.Config.Sections.SMSYunZX>()); //XuHos.Integration.ShortMessage.SMSHelper.RegisterYunPian(SysConfigService.Get<Common.Config.Sections.SMSYunPian>()); }
public IfImageMsg() { //文件存储配置 storeConfig = SysConfigService.Get <IMGStore>(); }
public IHttpActionResult ReturnUrl() { var payConfig = SysConfigService.Get <XuHos.Common.Config.Sections.Pay>(); try { var Request = System.Web.HttpContext.Current.Request; var sPara = GetRequestGet(); if (sPara.Count > 0)//判断是否有带返回参数 { string seller_id = Request.QueryString["seller_id"]; //商户订单号 string out_trade_no = Request.QueryString["out_trade_no"]; //支付宝交易号 string trade_no = Request.QueryString["trade_no"]; //交易状态 string trade_status = Request.QueryString["trade_status"]; //总金额 string total_fee = Request["total_fee"]; //通知编号 string notify_id = Request.QueryString["notify_id"]; //签名 string sign = Request.QueryString["sign"]; var alipay = new WebPay(seller_id); //验证成功 if ((trade_status == "TRADE_FINISHED" || trade_status == "TRADE_SUCCESS")) { if (alipay.VerifySign(sPara, notify_id, sign)) { XuHos.BLL.OrderService service = new OrderService(CurrentOperatorUserID); var order = service.GetOrder(out_trade_no); if (order != null) { if (order.TotalFee == decimal.Parse(total_fee)) { if (service.PayCompleted(out_trade_no, trade_no, XuHos.Common.Enum.EnumPayType.AliPay, seller_id)) { return(Redirect($"{payConfig.ReturnUrlPrefix}/Trade/Order/PaySuccessfully?OrderNo={out_trade_no}")); } else { return(Redirect($"{payConfig.ReturnUrlPrefix}/Trade/Order/Error?message=系统错误,更新订单状态失败")); } } else { return(Redirect($"{payConfig.ReturnUrlPrefix}/Trade/Order/Error?message=参数非法,参数“totalFee”或 “seller_id”不正确")); } } else { return(Redirect($"{payConfig.ReturnUrlPrefix}/Trade/Order/Error?message=参数非法,订单不存在")); } } else { return(Redirect($"{payConfig.ReturnUrlPrefix}/Trade/Order/PaySuccessfully?OrderNo={out_trade_no}")); } } } return(Redirect($"{payConfig.ReturnUrlPrefix}/Trade/Order/Error?message=参数非法,不是合法的支付请求")); } catch (Exception E) { return(Redirect($"{payConfig.ReturnUrlPrefix}/Trade/Order/Error?message={E.Message}")); } }
/// <summary> /// 新增成员 /// 日期:2017年4月15日 /// </summary> /// <param name="userMemberEntity"></param> /// <returns></returns> public ApiResult InsertMemberInfo(BLL.User.DTOs.Request.RequestUserMemberDTO request) { ApiResult result = new ApiResult(); string memberid = string.Empty; #region 身份证号码格式校验 if (!string.IsNullOrEmpty(request.IDNumber) && request.IDType == EnumUserCardType.IDCard) { string birthday, sex; var res = ToolHelper.GetBirthdaySexFromIdCard(request.IDNumber, out birthday, out sex); //身份证号码正确 if (res) { request.Birthday = birthday; request.Gender = sex == "0" ? EnumUserGender.Male : EnumUserGender.Female; } else { result.Status = EnumApiStatus.BizUserMemberRejectInsertUpdateIDNumberFormatError; result.Msg = result.Status.GetEnumDescript(); return(result); } } #endregion using (DBEntities db = new DBEntities()) { using (db.BeginTransaction()) { db.Configuration.AutoDetectChangesEnabled = true; bool isAdd = false; UserMember userMemberEntity = null; if (!string.IsNullOrEmpty(request.IDNumber)) { userMemberEntity = (from q in db.UserMembers where q.IDNumber == request.IDNumber && q.MemberName == request.MemberName && q.IsDeleted == false orderby q.ModifyTime descending, q.CreateTime descending, q.MemberID select q).FirstOrDefault(); } if (userMemberEntity == null) { isAdd = true; #region 可选参数(默认值) if (request.Birthday == null) { request.Birthday = ""; } if (request.Mobile == null) { request.Mobile = ""; } if (request.IDNumber == null) { request.IDNumber = ""; } if (request.Nationality == null) { request.Nationality = ""; } if (request.Province == null) { request.Province = ""; } if (request.ProvinceRegionID == null) { request.ProvinceRegionID = ""; } if (request.City == null) { request.City = ""; } if (request.CityRegionID == null) { request.CityRegionID = ""; } if (request.District == null) { request.District = ""; } if (request.DistrictRegionID == null) { request.DistrictRegionID = ""; } if (request.Town == null) { request.Town = ""; } if (request.TownRegionID == null) { request.TownRegionID = ""; } if (request.Village == null) { request.Village = ""; } if (request.VillageRegionID == null) { request.VillageRegionID = ""; } if (request.Address == null) { request.Address = ""; } if (request.Email == null) { request.Email = ""; } if (request.PostCode == null) { request.PostCode = ""; } if (request.IsDefault == null || !request.IsDefault.HasValue) { request.IsDefault = false; } #endregion userMemberEntity = request.Map <RequestUserMemberDTO, Entity.UserMember>(); userMemberEntity.MemberID = Guid.NewGuid().ToString("N"); userMemberEntity.CreateTime = DateTime.Now; userMemberEntity.CreateUserID = request.UserID; } //默认成员 var defaultMemberEntity = GetDefaultMemberInfo(request.UserID).Map <ResponseUserMemberDTO, Entity.UserMember>(); memberid = userMemberEntity.MemberID; //默认成员不存在 if (defaultMemberEntity == null) { //当前成员为默认 userMemberEntity.IsDefault = true; } if (request.Relation == EnumUserRelation.MySelf) { var userEntity = db.Users.Where(a => a.UserID == request.UserID).FirstOrDefault(); userEntity.UserCNName = request.MemberName; userEntity.UserENName = request.MemberName; var mySelfMember = (from m in db.UserMembers where m.UserID == request.UserID && m.Relation == EnumUserRelation.MySelf && m.IsDeleted == false && m.IsDeleted == false select m).FirstOrDefault(); //如果默认成员已经存在则更新默认成员 if (mySelfMember != null) { //兼容bat 服务站,新增自己关系是,要是原来的自己关系信息不完整(身份证号为空),则覆盖 //身份证不为空,且操作机构不为网络医院 var webapiConfig = SysConfigService.Get <XuHos.Common.Config.Sections.Api>(); if (string.IsNullOrEmpty(mySelfMember.IDNumber) && request.OrgID != webapiConfig.OrgID) { mySelfMember.Gender = request.Gender; mySelfMember.Marriage = request.Marriage; mySelfMember.MemberName = request.MemberName; #region 可选参数(有值才修改) if (request.Birthday != null) { mySelfMember.Birthday = request.Birthday; } if (request.Mobile != null) { mySelfMember.Mobile = request.Mobile; } if (request.IDNumber != null) { mySelfMember.IDNumber = request.IDNumber; } if (request.Nationality != null) { mySelfMember.Nationality = request.Nationality; } if (request.Province != null) { mySelfMember.Province = request.Province; } if (request.ProvinceRegionID != null) { mySelfMember.ProvinceRegionID = request.ProvinceRegionID; } if (request.City != null) { mySelfMember.City = request.City; } if (request.CityRegionID != null) { mySelfMember.CityRegionID = request.CityRegionID; } if (request.District != null) { mySelfMember.District = request.District; } if (request.DistrictRegionID != null) { mySelfMember.DistrictRegionID = request.DistrictRegionID; } if (request.Town != null) { mySelfMember.Town = request.Town; } if (request.TownRegionID != null) { mySelfMember.TownRegionID = request.TownRegionID; } if (request.Village != null) { mySelfMember.Village = request.Village; } if (request.VillageRegionID != null) { mySelfMember.VillageRegionID = request.VillageRegionID; } if (request.Address != null) { mySelfMember.Address = request.Address; } if (request.Email != null) { mySelfMember.Email = request.Email; } if (request.PostCode != null) { mySelfMember.PostCode = request.PostCode; } #endregion memberid = mySelfMember.MemberID; db.Update(mySelfMember); } else { result.Status = EnumApiStatus.BizUserMemberRejectUpdateMySelfExists; result.Msg = result.Status.GetEnumDescript(); return(result); } } } if (isAdd) { db.UserMembers.Add(userMemberEntity); } //db.Update(userEntity); var count = db.SaveChanges(); db.Commit(); if (count > 0) { var userMemberCacheKey = new XuHos.Common.Cache.Keys.EntityCacheKey <ResponseUserMemberDTO>(XuHos.Common.Cache.Keys.StringCacheKeyType.User_Member, userMemberEntity.MemberID); userMemberCacheKey.RemoveCache(); var User_CacheKey = new XuHos.Common.Cache.Keys.EntityCacheKey <ResponseUserDTO>(XuHos.Common.Cache.Keys.StringCacheKeyType.User, request.UserID); User_CacheKey.RemoveCache(); result.Status = EnumApiStatus.BizOK; } else { result.Status = EnumApiStatus.BizError; } } //设置默认 if (request.IsDefault.HasValue && request.IsDefault.Value) { SetDefaultMember(memberid, request.UserID); } result.Data = memberid; result.Msg = result.Status.GetEnumDescript(); return(result); } }
/// <summary> /// 上传文件 /// 日期:2016年9月28日 /// </summary> /// <param name="FileType">文件类型</param> /// <param name="Directory">文件保存路径</param> /// <param name="PreMD5">预处理Md5哈希值</param> /// <returns></returns> public async Task <ApiResult> Upload( string FileType = "images", string Directory = null, string PreMD5 = "", string AccessKey = "", string Name = "") { // 检查是否是 multipart/form-data if (!Request.Content.IsMimeMultipartContent("form-data")) { return(EnumApiStatus.BizError.ToApiResultForApiStatus("UnsupportedMediaType")); } try { //文件存储配置 var config = SysConfigService.Get <XuHos.Common.Config.Sections.IMGStore>(); SysFileIndex fileIndex = null; //通过缓存来判断文件是否已经上传了 XuHos.Common.Cache.Keys.EntityCacheKey <SysFileIndex> CacheKey; //预处理文件Hash,客户端进行哈希值计算 if (PreMD5 != "") { CacheKey = new XuHos.Common.Cache.Keys.EntityCacheKey <SysFileIndex>(StringCacheKeyType.SysFileIndex, PreMD5); //缓存中获取文件索引 fileIndex = CacheKey.FromCache(); } //文件已经存在,则使用妙传(不需要保存直接返回之前已经上传的问题) if (fileIndex != null) { //返回上传结果 return(new ResponseUploadFileDTO { UrlPrefix = config.UrlPrefix, FileName = string.IsNullOrEmpty(Name) ? string.Format("{0}/{1}", FileType, fileIndex.FileUrl) : Name, MD5 = fileIndex.MD5, FileSize = fileIndex.FileSize, FileSeq = fileIndex.MD5, AccessKey = fileIndex.AccessKey }.ToApiResultForObject()); } else { var httpPostFile = HttpContext.Current.Request.Files[0]; var FileStream = httpPostFile.InputStream; var RequestFileName = httpPostFile.FileName; FileStream.Seek(0, SeekOrigin.Begin); var FileMD5 = XuHos.Common.Utility.HashHelper.ComputeMD5(FileStream); //扩展名 var FileUrl = FileMD5 + Path.GetExtension(RequestFileName); var FileSize = FileStream.Length; //通过缓存来判断文件是否已经上传了 CacheKey = new XuHos.Common.Cache.Keys.EntityCacheKey <SysFileIndex>(StringCacheKeyType.SysFileIndex, FileMD5); //缓存中获取文件索引 fileIndex = CacheKey.FromCache(); //文件已经存在 if (fileIndex != null) { //返回上传结果 return(new ResponseUploadFileDTO { UrlPrefix = config.UrlPrefix, FileName = string.IsNullOrEmpty(Name) ? string.Format("{0}/{1}", fileIndex.FileType, fileIndex.FileUrl) : Name, MD5 = fileIndex.MD5, FileSize = fileIndex.FileSize, FileSeq = fileIndex.MD5, AccessKey = fileIndex.AccessKey }.ToApiResultForObject()); } //文件不存在的才保存到服务器 else { await XuHos.Common.Storage.Manager.Instance.WriteFile(FileType, FileUrl, FileStream); SysFileIndexService fileService = new SysFileIndexService(CurrentOperatorUserID); fileIndex = new SysFileIndex() { MD5 = FileMD5, FileType = FileType, FileUrl = FileUrl, FileSize = FileSize, Remark = string.IsNullOrEmpty(Name) ? FileUrl : Name, AccessKey = AccessKey }; var result = new ResponseUploadFileDTO { UrlPrefix = config.UrlPrefix, FileName = string.IsNullOrEmpty(Name) ? string.Format("{0}/{1}", FileType, FileUrl) : Name, MD5 = FileMD5, FileSize = FileSize, FileSeq = fileIndex.MD5, AccessKey = fileIndex.AccessKey }; var SaveFlag = false; //文件不存在 if (!fileService.Exists(a => a.MD5 == FileMD5)) { try { //添加记录 SaveFlag = fileService.Insert(fileIndex); } //主键冲突异常 catch (ConstraintException ex) { SaveFlag = true; } } else { fileService.Update(fileIndex); SaveFlag = true; } //保存成功 if (SaveFlag) { //设置缓存 fileIndex.ToCache(CacheKey, TimeSpan.FromHours(2)); return(result.ToApiResultForObject()); } else { return(EnumApiStatus.BizError.ToApiResultForApiStatus()); } } } } catch (Exception ex) { string msg = ex.Message; if (ex.InnerException != null) { msg += System.Environment.NewLine + ex.InnerException.Message; if (ex.InnerException.InnerException != null) { msg += System.Environment.NewLine + ex.InnerException.InnerException.Message; } } LogHelper.WriteError(ex); return(EnumApiStatus.BizError.ToApiResultForApiStatus("上传失败,错误:" + msg)); } }
public async Task <ApiResult> UploadDCM(string Md5 = "", string AccessKey = "") { var res = await Upload("dcm", "", PreMD5 : Md5, AccessKey : AccessKey); if (res.Status != 0) { return(res); } var data = res.Data as ResponseUploadFileDTO; var result = data.Map <ResponseUploadFileDTO, DcmDTO>(); #region //获取文件路径 string filePath = ""; //缓存中获取文件索引 var CacheKey = new XuHos.Common.Cache.Keys.EntityCacheKey <SysFileIndex>(StringCacheKeyType.SysFileIndex, result.MD5); SysFileIndex fileIndex = CacheKey.FromCache(); if (fileIndex != null) { filePath = fileIndex.FileUrl; } else { //从数据库中获取文件索引 var file = new SysFileIndexService(CurrentOperatorUserID).Single <SysFileIndex>(a => a.MD5 == result.MD5); if (file == null) { filePath = file.FileUrl; } } if (string.IsNullOrEmpty(filePath)) { return(EnumApiStatus.BizError.ToApiResultForApiStatus()); } #endregion #region//解析DCM文件参数 var config = SysConfigService.Get <IMGStore>(); var fileFullPath = Path.Combine(config.DirectorRootPath, filePath); Dictionary <string, string> tags = DCMHelper.TagRead(fileFullPath); string caseId = null; //病例号 string studyId = null; //检查号 string stuUid = null; if (tags != null) { tags.TryGetValue("0010,0020", out caseId); tags.TryGetValue("0008,0050", out studyId); tags.TryGetValue("0020,000d", out stuUid); } result.CaseID = caseId != null?caseId.Trim() : ""; result.StudyID = studyId != null?studyId.Trim() : ""; result.StuUID = stuUid != null?stuUid.TrimEnd('\0').Trim() : ""; #endregion return(result.ToApiResultForObject()); }
public async Task <ApiResult> UploadImageByBase64([FromBody] BLL.Sys.DTOs.Request.RequestUploadImageByBase64DTO request) { byte[] byteData = Convert.FromBase64String(request.Content.Replace("data:image/png;base64", "")); var FileType = "Images"; try { //文件存储配置 var config = SysConfigService.Get <XuHos.Common.Config.Sections.IMGStore>(); SysFileIndex fileIndex = null; var FileStream = new System.IO.MemoryStream(byteData); var FileMD5 = XuHos.Common.Utility.HashHelper.ComputeMD5(FileStream); //通过缓存来判断文件是否已经上传了 var CacheKey = new XuHos.Common.Cache.Keys.EntityCacheKey <SysFileIndex>(StringCacheKeyType.SysFileIndex, FileMD5); //缓存中获取文件索引 fileIndex = CacheKey.FromCache(); //文件已经存在 if (fileIndex != null) { //返回上传结果 return(new ResponseUploadFileDTO { UrlPrefix = config.UrlPrefix, FileName = string.Format("{0}/{1}", fileIndex.FileType, fileIndex.FileUrl), MD5 = fileIndex.MD5, FileSize = fileIndex.FileSize, FileSeq = request.FileSeq }.ToApiResultForObject()); } //文件不存在的才保存到服务器 else { SysFileIndexService fileService = new SysFileIndexService(CurrentOperatorUserID); //文件不存在 if (fileService.Exists(a => a.MD5 == FileMD5)) { fileIndex = fileService.Single <SysFileIndex>(a => a.MD5 == FileMD5); if (fileIndex != null) { //设置缓存 fileIndex.ToCache(CacheKey, TimeSpan.FromHours(2)); var result = new ResponseUploadFileDTO { UrlPrefix = config.UrlPrefix, FileName = string.Format("{0}/{1}", fileIndex.FileType, fileIndex.FileUrl), MD5 = fileIndex.MD5, FileSize = fileIndex.FileSize, FileSeq = request.FileSeq }; return(result.ToApiResultForObject()); } else { return(EnumApiStatus.BizError.ToApiResultForApiStatus()); } } else { //文件名 var FileUrl = Guid.NewGuid().ToString("N") + ".jpg"; var FileSize = FileStream.Length; await XuHos.Common.Storage.Manager.Instance.WriteFile(FileType, FileUrl, FileStream); fileIndex = new SysFileIndex() { MD5 = FileMD5, FileType = FileType, FileUrl = FileUrl, FileSize = FileSize, Remark = "", AccessKey = string.IsNullOrEmpty(request.AccessKey) ? "" : request.AccessKey }; var result = new ResponseUploadFileDTO { UrlPrefix = config.UrlPrefix, FileName = string.Format("{0}/{1}", FileType, FileUrl), MD5 = FileMD5, FileSize = FileSize, FileSeq = request.FileSeq, AccessKey = request.AccessKey }; var SaveFlag = false; //文件不存在 if (!fileService.Exists(a => a.MD5 == FileMD5)) { try { //添加记录 SaveFlag = fileService.Insert(fileIndex); } //主键冲突异常 catch (ConstraintException ex) { SaveFlag = true; } } else { SaveFlag = true; } //保存成功 if (SaveFlag) { //设置缓存 fileIndex.ToCache(CacheKey, TimeSpan.FromHours(2)); return(result.ToApiResultForObject()); } else { return(EnumApiStatus.BizError.ToApiResultForApiStatus()); } } } } catch (Exception ex) { string msg = ex.Message; if (ex.InnerException != null) { msg += System.Environment.NewLine + ex.InnerException.Message; if (ex.InnerException.InnerException != null) { msg += System.Environment.NewLine + ex.InnerException.InnerException.Message; } } LogHelper.WriteError(ex); return(EnumApiStatus.BizError.ToApiResultForApiStatus("上传失败,错误:" + msg)); } }