public static void SendEmail(MailEntity mailEntity) { TxtFileLogger logger = LoggerManager.GetLogger(); try { var mailService = ServiceBroker.FindService <IPP.Oversea.CN.ServiceCommon.ServiceInterfaces.ServiceContracts.ISendMail>(); var mail = new MailBodyV31 { Body = new MailBodyMsg { MailTo = mailEntity.To, CCMailAddress = mailEntity.CC, Subjuect = mailEntity.Subject, MailBody = mailEntity.Body, Status = 0, //0:未发送,1:已经发送 CreateDate = DateTime.Now, Priority = 1 // Normal } }; mail.Header = new MessageHeader(); mail.Header.CompanyCode = ConfigurationManager.AppSettings["CompanyCode"]; DefaultDataContract result = mailService.SendMail2IPP3Internal(mail); if (result.Faults != null && result.Faults.Count > 0) { throw new Exception(result.Faults[0].ErrorDescription); } } catch (Exception ex) { logger.WriteLog("邮件发送失败!\r\n" + ex.ToString()); } }
internal static void DealServiceFault(DefaultDataContract contract) { if (contract != null) { DealServiceFault(contract.Faults); } }
public void LoadAuthData(LoadAuthDataCompletedCallback callback) { DefaultDataContract msg = new DefaultDataContract() { Header = new MessageHeader() { Language = CPApplication.Current.LanguageCode } }; this.m_authService.GetAuthDataAsync(msg, callback); }
public KeystoneAuthDataV41 GetAuthData(DefaultDataContract msg) { CPContext context = CPContext.Current; string loginName = null; string domain = null; string userName = context.GetUserName(out loginName, out domain); string languageCode = msg.Header.Language; AuthApplicationMsg application = new AuthApplicationMsg() { Id = CPConfig.Application.Id, Name = CPConfig.Application.Name, DefaultLanguage = CPConfig.Application.DefaultLanguage, }; List <KS_ApplicationMsg> ks_applications = new List <KS_ApplicationMsg>(); KeystoneApplicationCollection applications = CPConfig.Keystone.Applications; if (applications != null) { foreach (KeystoneApplicationElement app in applications) { ks_applications.Add(new KS_ApplicationMsg() { Id = app.Id, Name = app.Name }); } } KeystoneAuthDataV41 result = new KeystoneAuthDataV41() { Header = msg.Header, Body = new KeystoneAuthDataMsg() { Application = application, KS_Applications = ks_applications, } }; KeystoneAuthUserMsg userInfo; List <RoleAttribute> roleAttributeList; List <Role> roleList; List <AuthFunctionMsg> functionList; AuthFactory.GetInstance().GetAuthData(loginName, domain, out userInfo, out roleAttributeList, out roleList, out functionList); result.Body.AuthUser = userInfo; result.Body.RoleAttributes = roleAttributeList; result.Body.Roles = roleList; result.Body.Functions = functionList; result.Body.MenuData = new KeyStoneBiz().GetMenuItems(loginName, domain, languageCode, functionList); return(result); }
public KeystoneAuthDataV41 GetAuthData(DefaultDataContract msg) { string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "MockDataForKeystoneAuth.xml"); if (!File.Exists(filePath)) { throw new FileNotFoundException(filePath); } KeystoneAuthDataV41 serviceResult = SerializationUtility.LoadFromXml <KeystoneAuthDataV41>(filePath); return(serviceResult); }
public KeystoneAuthDataV41 AutoLogin(DefaultDataContract msg) { HttpContext context = HttpContext.Current; //判断是否是logout后的自动登录,如果是返回数据NULL,并阻止自动登录。 HttpCookie cookie = context.Request.Cookies[m_key_SignOut]; if (cookie != null) { var responseCookie = new HttpCookie(m_key_SignOut); responseCookie.Expires = DateTime.Now.AddDays(-30); context.Response.Cookies.Add(responseCookie); return(new KeystoneAuthDataV41 { Body = null }); } if (CPConfig.Application.AutoLogin && !context.Request.IsAuthenticated) { TryLogin(); } if (context.Request.IsAuthenticated) { if (HttpContext.Current.Session["IsLoginSystem"] == null) { string loginName = null; string domain = null; CPContext cpContext = CPContext.Current; string userName = cpContext.GetUserName(out loginName, out domain); TraceLoginEventLog(loginName); HttpContext.Current.Session["IsLoginSystem"] = true; } KeystoneAuthDataV41 result = new KeystoneAuthDataV41 { Body = GetAuthData(msg).Body }; return(result); } return(new KeystoneAuthDataV41 { Body = null }); }
/// <summary> /// 更新订单 /// </summary> /// <param name="soSysNo"></param> public static void UpdateSO4GroupBuying(int soSysNo) { SimpleTypeDataContract <int> SysNo = new SimpleTypeDataContract <int> { Value = soSysNo, Header = ServiceAdapterHelper.ApplyMessageHeader() }; IMaintainSOV31 service = ServiceBroker.FindService <IMaintainSOV31>(); try { DefaultDataContract msg = service.UpdateSO4GroupBuying(SysNo); ServiceAdapterHelper.DealServiceFault(msg.Faults); } finally { ServiceBroker.DisposeService <IMaintainSOV31>(service); } }
public static void ApplyMessageHeaderByContext(DefaultDataContract contract) { if (contract != null) { if (contract.Header == null) { contract.Header = new MessageHeader(); } contract.Header.CompanyCode = ConfigurationManager.AppSettings["CompanyCode"]; contract.Header.StoreCompanyCode = ConfigurationManager.AppSettings["StoreCompanyCode"]; contract.Header.OperationUser = new OperationUser ( ConfigurationManager.AppSettings["UserDisplayName"], ConfigurationManager.AppSettings["UserLoginName"], ConfigurationManager.AppSettings["StoreSourceDirectoryKey"], ConfigurationManager.AppSettings["CompanyCode"] ); } }
public static void UpdateSO4GroupBuyingV2(int soSysNo, int gourpBuySysNo, int productSysNo) { SOGroupBuyAjustV31 message = new SOGroupBuyAjustV31() { Body = new SOGroupBuyAjustMsg(), Header = ServiceAdapterHelper.ApplyMessageHeader() }; message.Body.SOSysNo = soSysNo; message.Body.GroupBuySysNo = gourpBuySysNo; message.Body.ProductSysNo = productSysNo; IMaintainSOV31 service = ServiceBroker.FindService <IMaintainSOV31>(); try { DefaultDataContract msg = service.UpdateSO4GroupBuyingV2(message); ServiceAdapterHelper.DealServiceFault(msg.Faults); } finally { ServiceBroker.DisposeService <IMaintainSOV31>(service); } }
public void SendMail(MailEntity entity) { ISendMail service = ServiceBroker.FindService <ISendMail>(); MailBodyV31 mail = new MailBodyV31(); mail.Body = new MailBodyMsg { CCMailAddress = entity.CC, CreateDate = DateTime.Now, MailBody = entity.Body, MailFrom = entity.From, MailTo = entity.To, Subjuect = entity.Subject }; mail.Header = Util.CreateServiceHeader(); DefaultDataContract contract = service.SendMail2MailDBInternal(mail); if (contract != null && contract.Faults != null && contract.Faults.Count > 0) { MessageFault fault = contract.Faults[0]; throw new Exception(string.Format("{0}\r\n{1}\r\n{2}", fault.ErrorCode, fault.ErrorDescription, fault.ErrorDetail)); } }
/// <summary> /// 处理sendor portal上传的图片,包括新品创建和图片更新 /// </summary> /// public DefaultDataContract UploadSendorPortalImageList(int ProductRequestSysno, int productGroupSysNo, int comskuSysNo, string comsku, EntityHeader header) { DefaultDataContract returnValue = new DefaultDataContract(); string faults = string.Empty; List <ItemVendorProductRequestFileEntity> imageList = SellerPortalProductDescAndImageDA.GetProductRequestImageList(ProductRequestSysno, "O"); if (imageList.Count <= 0) { return(returnValue); } //取商品图片数 int currentPicNumber = SellerPortalProductDescAndImageDA.GetCommonInfoPicNumber(comskuSysNo) + 1; string photoFolderPathOnServer = ConfigurationManager.AppSettings["PhotoFolderPathOnServer"].Trim(); ProductGroupInfoMediaEntity productgroupinfomediaentity = new ProductGroupInfoMediaEntity(); productgroupinfomediaentity.Header = header; //图片类型 productgroupinfomediaentity.FileType = "I"; foreach (ItemVendorProductRequestFileEntity image in imageList) { //图片路径 productgroupinfomediaentity.FileWebPath = image.Path.ToLower().Contains("http://") ? image.Path : photoFolderPathOnServer + image.Path; try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(productgroupinfomediaentity.FileWebPath)); ((HttpWebResponse)request.GetResponse()).Close(); //文件名 if (currentPicNumber == 1) { productgroupinfomediaentity.FileName = comsku + ".jpg"; } else { productgroupinfomediaentity.FileName = comsku + "-" + currentPicNumber.ToString().PadLeft(2, '0') + ".jpg"; } UploadWebFile(productgroupinfomediaentity, comsku); } catch (BusinessException ex) { faults += image.ImageName + "上传失败,失败原因:" + ex.Message; SellerPortalProductDescAndImageBP.WriteLog("\r\n" + DateTime.Now + image.ImageName + "上传失败,失败原因:" + ex.Message + " 处理失败......"); //如果失败,Count + 1 SellerPortalProductDescAndImageDA.SetProductRequestImageCount(image); continue; } //保证图片编号连续性,待改进为直接取最大编号。 currentPicNumber++; //插入图片关联 //imageBp.InsertCommonInfoImage(productGroupSysNo, comskuSysNo, header); //上传成功更新产品图片状态 image.Status = "F"; SellerPortalProductDescAndImageDA.SetProductRequestImageStatus(image); if (!faults.Equals(string.Empty)) { returnValue.Faults = new MessageFaultCollection(); returnValue.Faults.Add(new MessageFault()); returnValue.Faults[0].ErrorDescription = faults; } } return(returnValue); }
/// <summary> /// Seller Portal处理新产品图片 /// </summary> public static void SellerPortalProductRequestForNewProduct() { WriteLog("\r\n" + DateTime.Now + "------------------- Begin-------------------------"); WriteLog("\r\n" + DateTime.Now + "对Seller新建商品导入job开始运行......"); #region 处理商品描述外链(新品创建) WriteLog("\r\n" + DateTime.Now + "正在处理商品详细信息描述Start......"); List <ItemVendorProductRequestEntity> productRequestDescLongList = SellerPortalProductDescAndImageDA.GetSellerPortalProductRequestDescLongList(); //获取ExInfoStatus为P的,详细信息描述列表 //insert into ProductRequest_ProcessLog,记录原来的详细描述值 //update ProductRequest_Ex表 //update ipp3.dbo.Product //update OverseaContentManagement.dbo.ProductCommonInfo_Ex foreach (ItemVendorProductRequestEntity item in productRequestDescLongList) { string mailbody = string.Empty; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 5, 0))) { WriteLog("\r\n" + DateTime.Now + "正在处理商品详细信息:" + item.SysNo.ToString() + " Start......"); if (string.IsNullOrEmpty(item.ProductDescLong)) { //如果详细信息描述无img Src处理,则把ExInfoStatus修改为"F" SellerPortalProductDescAndImageDA.UpdateSellerPortalProductRequestExInfoStatus(item.SysNo); } else { //string productDescLong = GetProductDescLong(item.ProductDescLong, item.SysNo); string productDescLong = item.ProductDescLong; bool isError = false; List <string> imageSrcList = new List <string>(); List <string> imageUrlList = new List <string>(); if (item.ProcessCount == 0)//处理新商品的描述信息 { //过滤html,js,css代码 productDescLong = RemoveHtmlStr(item.ProductDescLong); //读取Img标签的SRC imageSrcList = GetImageSrc(productDescLong); //读取URL标签中的图片地址 imageUrlList = GetImageUrl(productDescLong); imageSrcList.AddRange(imageUrlList); imageSrcList = imageSrcList.Distinct().ToList(); } else { //获取处理成功的图片信息 SellerPortalProductDescAndImageDA.GetProductRequestImageListLog(item.SysNo, "F").ForEach(p => { productDescLong.Replace(p.ImageUrl, Path.Combine(ProductDescLongImageUrl, p.ImageName)); }); //获取处理失败的图片信息 imageSrcList = SellerPortalProductDescAndImageDA.GetProductRequestImageListLog(item.SysNo, "E").Select(p => { return(p.ImageUrl); }).ToList(); //获取未处理的图片信息 List <string> notBeginList = SellerPortalProductDescAndImageDA.GetProductRequestImageListLog(item.SysNo, "O").Select(p => { return(p.ImageUrl); }).ToList(); imageSrcList.AddRange(notBeginList); } //有需要处理的img图片链接 if (imageSrcList.Count > 0) { #region Process Each ImageScr foreach (string imageSrc in imageSrcList) { if (imageSrc.Equals("")) { continue; } string status = "O"; string memo = "未下载"; string fileName = string.Empty; if (!isError) { WriteLog("\r\n" + DateTime.Now + "正在处理商品详细信息图片:" + imageSrc + "Start......"); if (WhiteList_Check_IsExists(imageSrc)) { int delay = 100; if (!int.TryParse(FriendlyDelay, out delay)) { delay = 100; } Thread.Sleep(delay); } else { int delay = 500; if (!int.TryParse(DefaultDelay, out delay)) { delay = 500; } Thread.Sleep(delay); } try { WriteLog("\r\n" + DateTime.Now + "正在验证图片请求地址的可访问性......"); HttpWebRequest req = HttpWebRequest.Create(imageSrc) as HttpWebRequest; req.Method = "HEAD"; req.Timeout = 5000; //--------------------发布要取消代理----------------------- if (ByProxy == "Y") { proxy = new WebProxy(ByProxyHost, string.IsNullOrEmpty(ByProxyPort) ? 8080 : int.Parse(ByProxyPort)); proxy.Credentials = new NetworkCredential(ByProxyUser, ByProxyPassword); req.Proxy = proxy; } WriteLog("\r\n\t\t" + "请求超时时间:" + req.Timeout.ToString() + "ms"); //--------------------发布要取消代理----------------------- HttpWebResponse res = req.GetResponse() as HttpWebResponse; int statuscode = (int)res.StatusCode; WriteLog("\r\n\t\t" + "请求响应状态:" + statuscode.ToString() + "\t" + "详细描述:" + res.StatusDescription); if (res.StatusCode == HttpStatusCode.OK) { string fileType = ""; switch (res.ContentType) { case "image/jpeg": fileType = ".jpg"; break; case "image/bmp": fileType = ".bmp"; break; case "image/gif": fileType = ".gif"; break; case "image/png": fileType = ".png"; break; } //新文件名 fileName = Guid.NewGuid().ToString() + fileType; WebDownload myWebClient = new WebDownload(); myWebClient.Timeout = req.Timeout; //本地测试需要设置代理 if (ByProxy == "Y") { myWebClient.Proxy = proxy; } Image uploadImage = Image.FromStream(new MemoryStream(myWebClient.DownloadData(imageSrc))); string dFilePath = ImageServicePath; if (!Directory.Exists(dFilePath)) { Directory.CreateDirectory(dFilePath); } uploadImage.Save(dFilePath + fileName); //替换原始文件名称 productDescLong = productDescLong.Replace(imageSrc, ProductDescLongImageUrl + fileName); } else { isError = true; memo = res.StatusDescription; } res.Close(); } catch (Exception ex) { isError = true; WriteLog("\r\n" + DateTime.Now + " 商品详细描述图片获取失败!" + imageSrc + ex.Message + ex.StackTrace); memo = ex.Message; } if (isError) { //ProductRequest_Ex count + 1 SellerPortalProductDescAndImageDA.SetProductRequestExCount(item.SysNo); status = "E"; if (item.ProcessCount >= 5) { mailbody = string.Format(mailbodyTemplate, item.C3Name, item.ProductID, item.ProductName, memo, item.PMName); } fileName = string.Empty; } else { status = "F"; memo = ""; } WriteLog("\r\n" + DateTime.Now + "正在处理商品详细信息图片:" + imageSrc + ".End....."); } SellerPortalProductDescAndImageDA.InsertProductRequestImageProcessLog(imageSrc, fileName, item.SysNo, status, memo); } #endregion Process Each ImageScr } if (!isError) { SellerPortalProductDescAndImageDA.ApproveProductRequest_Ex(item.SysNo, productDescLong); } else if (item.ProcessCount >= 5) { SellerPortalProductDescAndImageDA.SendMailIMGProcFail("(Info)商家商品详细描述信息处理失败[JOB]", mailbody); } } scope.Complete(); WriteLog("\r\n" + DateTime.Now + "正在处理商品详细信息:" + item.SysNo.ToString() + "End......"); } } WriteLog("\r\n" + DateTime.Now + "正在处理商品详细信息描述End......"); #endregion #region 存在未处理的新品图片 List <ItemVendorProductRequestFileEntity> requestImageList = SellerPortalProductDescAndImageDA.GetSellerPortalProductRequestImageList(); if (requestImageList.Count > 0) { foreach (ItemVendorProductRequestFileEntity item in requestImageList) { try { WriteLog("\r\n" + DateTime.Now + "正在处理品商:" + item.CommonSKUNumber.ToString() + "......"); DefaultDataContract rtn = new DefaultDataContract(); ProductDFISImage service = new ProductDFISImage(); EntityHeader header = new EntityHeader(); header.CompanyCode = CompanyCode; header.Language = LanguageCode; header.OriginalGUID = Guid.NewGuid().ToString(); header.OperationUser = new OperationUserEntity(); header.OperationUser.FullName = InUser; header.OperationUser.CompanyCode = "8601"; header.OperationUser.LogUserName = "******"; header.OperationUser.SourceDirectoryKey = "bitkoo"; header.OperationUser.SourceUserName = InUser; header.OperationUser.UniqueUserName = "******"; rtn = service.UploadSendorPortalImageList(item.SysNo, item.GroupSysNo, item.comskuSysNo, item.CommonSKUNumber, header); if (rtn.Faults != null && rtn.Faults.Count > 0) { WriteLog("\r\n" + DateTime.Now + "商品:" + item.CommonSKUNumber.ToString() + " 处理失败......"); WriteLog("\r\n" + rtn.Faults[0].ErrorDescription); } else { WriteLog("\r\n" + DateTime.Now + "商品:" + item.CommonSKUNumber.ToString() + " 处理成功......"); } } catch (Exception ex) { WriteLog("\r\n" + DateTime.Now + "商品:" + item.CommonSKUNumber.ToString() + " 处理失败......"); WriteLog("\r\n" + ex.Message); } } } else { WriteLog("\r\n" + DateTime.Now + " 无商品图片处理......"); } #endregion using (TransactionScope scope = new TransactionScope()) { #region count>5,删除ProductRequest_Files表记录,同时在表ProductRequest_ProcessLog增加log日志 List <ItemVendorProductRequestFileEntity> exceedFiveCountList = SellerPortalProductDescAndImageDA.GetExceedFiveCountList(); if (exceedFiveCountList.Count > 0) { foreach (ItemVendorProductRequestFileEntity li in exceedFiveCountList) { WriteLog("\r\n" + DateTime.Now + "正在处理失败>5的商品:" + li.SysNo.ToString() + "开始......"); SellerPortalProductDescAndImageDA.DeleteSellerPortalProductRequestImageFiles(li.SysNo); ItemVendorProductRequestEntity item = SellerPortalProductDescAndImageDA.GetSellerPortalProductRequestBySysNo(li.ProductRequestSysno); string mailbody = string.Format(mailbodyTemplate, item.C3Name, item.ProductID, item.ProductName, "", item.PMName); SellerPortalProductDescAndImageDA.SendMailIMGProcFail("(Info)商家商品图片信息处理失败[JOB]", mailbody); WriteLog("\r\n" + DateTime.Now + "处理失败>5的商品:" + li.SysNo.ToString() + "成功!......"); } } #endregion #region 查询详细描述图片每个ProductRequestSysno都为"F"的list,然后处理其ExInfoStatus为F List <ProductRequestImage> longDescFStatusList = SellerPortalProductDescAndImageDA.GetSellerPortalProductLongDescFStatusList(); if (longDescFStatusList.Count > 0) { foreach (ProductRequestImage li in longDescFStatusList) { //WriteLog("\r\n" + DateTime.Now + "正在处理商品:" + li.ProductRequestSysno.ToString() + "的FileStatus状态为F......"); SellerPortalProductDescAndImageDA.UpdateSellerPortalProductRequestExInfoStatus(li.ProductRequestSysNo); SellerPortalProductDescAndImageDA.InsertProductDescProductRequest_ProcessLog(li.ProductRequestSysNo); //WriteLog("\r\n" + DateTime.Now + "商品:" + li.ProductRequestSysno.ToString() + "的FileStatus状态成功修改为F......"); } } #endregion #region 查询图片每个ProductRequestSysno都为"F"的list,然后处理其FileStatus为F List <ItemVendorProductRequestFileEntity> imageFilesFStatusList = SellerPortalProductDescAndImageDA.GetSellerPortalImageFFilesFStatusList(); if (imageFilesFStatusList.Count > 0) { foreach (ItemVendorProductRequestFileEntity li in imageFilesFStatusList) { //WriteLog("\r\n" + DateTime.Now + "正在处理商品:" + li.ProductRequestSysno.ToString() + "的FileStatus状态为F......"); SellerPortalProductDescAndImageDA.UpdateSellerPortalProductRequestFileStatus(li.ProductRequestSysno); //WriteLog("\r\n" + DateTime.Now + "商品:" + li.ProductRequestSysno.ToString() + "的FileStatus状态成功修改为F......"); } } #endregion #region 处理三个状态都 BasicInfoStatus = "F",FileStatus = "F",ExInfoStatus = "F",则Status = "F" List <ItemVendorProductRequestFileEntity> threeFStatusList = SellerPortalProductDescAndImageDA.GetSellerPortalThreeFStatusList(); if (threeFStatusList.Count > 0) { foreach (ItemVendorProductRequestFileEntity li in threeFStatusList) { WriteLog("\r\n" + DateTime.Now + "正在处理商品:" + li.ProductRequestSysno.ToString() + "的Status状态为F......"); SellerPortalProductDescAndImageDA.UpdateSellerPortalProductRequestStatus(li.ProductRequestSysno, "F"); //同步SellPortal表状态 SellerPortalProductDescAndImageDA.CallExternalSP(li.ProductRequestSysno); WriteLog("\r\n" + DateTime.Now + "商品:" + li.ProductRequestSysno.ToString() + "的Status状态成功修改为F......"); } } #endregion scope.Complete(); } WriteLog("\r\n" + DateTime.Now + "Job.......END......"); }
public KeystoneAuthDataV41 AutoLogin(DefaultDataContract msg) { return(GetAuthData(null)); }