public System.Data.DataTable QueryTopItem(QueryFilter.MKT.TopItemFilter filter, out int totalCount) { PagingInfoEntity pagingEntity = new PagingInfoEntity(); pagingEntity.SortField = filter.PageInfo.SortBy; pagingEntity.MaximumRows = filter.PageInfo.PageSize; pagingEntity.StartRowIndex = filter.PageInfo.PageIndex * filter.PageInfo.PageSize; var cmd = DataCommandManager.CreateCustomDataCommandFromConfig("TopItemList_Query"); cmd.SetParameterValue("@FrontPageSize", filter.FrontPageSize); cmd.SetParameterValue("@CategoryType", filter.PageType); using (var sqlBuilder = new DynamicQuerySqlBuilder(cmd.CommandText, cmd, pagingEntity, "OrderPriority ASC,CreateTime DESC")) { sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "A.[Status]", DbType.String, "@Status", QueryConditionOperatorType.Equal, 1); sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "A.[ProductType]", DbType.String, "@ProductType", QueryConditionOperatorType.Equal, 0); sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "C.C1SysNo", DbType.String, "@C1SysNo", QueryConditionOperatorType.Equal, filter.C1SysNo); if (filter.PageType.HasValue) { PageTypePresentationType pType = PageTypeUtil.ResolvePresentationType(ModuleType.TopItem, filter.PageType.Value.ToString()); if (pType == PageTypePresentationType.Category2) { sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "C.C2SysNo", DbType.String, "@C2SysNo", QueryConditionOperatorType.Equal, filter.RefSysNo); } else if (pType == PageTypePresentationType.Category3) { sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "C.C3SysNo", DbType.String, "@C3SysNo", QueryConditionOperatorType.Equal, filter.RefSysNo); } } sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "A.[ProductID]", DbType.String, "@ProductID", QueryConditionOperatorType.Equal, filter.ProductID); cmd.CommandText = sqlBuilder.BuildQuerySql(); DataTable dt = cmd.ExecuteDataTable(); totalCount = Convert.ToInt32(cmd.GetParameterValue("@TotalCount")); return(dt); } }
public DataTable Query(ProductRecommendQueryFilter filter, out int totalCount) { PagingInfoEntity pagingEntity = new PagingInfoEntity(); pagingEntity.SortField = filter.PagingInfo.SortBy; pagingEntity.MaximumRows = filter.PagingInfo.PageSize; pagingEntity.StartRowIndex = filter.PagingInfo.PageIndex * filter.PagingInfo.PageSize; var cmd = DataCommandManager.CreateCustomDataCommandFromConfig("ProductRecommend_Query"); using (var sqlBuilder = new DynamicQuerySqlBuilder(cmd.CommandText, cmd, pagingEntity, "result.[SysNo] DESC")) { //商品ID sqlBuilder.ConditionConstructor.AddCondition( QueryConditionRelationType.AND, "IC.ProductID", DbType.String, "@ProductID", QueryConditionOperatorType.Equal, filter.ProductID); //商品系统编号 sqlBuilder.ConditionConstructor.AddCondition( QueryConditionRelationType.AND, "IC.SysNo", DbType.Int32, "@SysNo", QueryConditionOperatorType.Equal, filter.ProductSysNo); if (filter.ProductStatus.HasValue) { sqlBuilder.ConditionConstructor.AddCondition( QueryConditionRelationType.AND, "IC.Status", DbType.Int32, "@ProductStatus", QueryConditionOperatorType.Equal, filter.ProductStatus.Value); } //状态 sqlBuilder.ConditionConstructor.AddCondition( QueryConditionRelationType.AND, "A.Status", DbType.AnsiStringFixedLength, "@AStatus", QueryConditionOperatorType.Equal, filter.Status); #region PageType,PageID,PositionID相关 //位置编号 sqlBuilder.ConditionConstructor.AddCondition( QueryConditionRelationType.AND, "B.PositionID", DbType.Int32, "@PositionID", QueryConditionOperatorType.Equal, filter.PositionID); if (filter.PageType.HasValue) { //页面类型 sqlBuilder.ConditionConstructor.AddCondition( QueryConditionRelationType.AND, "B.PageType", DbType.Int32, "@PageType", QueryConditionOperatorType.Equal, filter.PageType); PageTypePresentationType pType = PageTypeUtil.ResolvePresentationType(ModuleType.ProductRecommend, filter.PageType.Value.ToString()); if (pType == PageTypePresentationType.Merchant && filter.PageID == 1) { //特殊商家 sqlBuilder.ConditionConstructor.AddCondition( QueryConditionRelationType.AND, "V.VendorType", DbType.Int32, "@VendorType", QueryConditionOperatorType.Equal, 0); } else if (pType == PageTypePresentationType.Category1) { sqlBuilder.ConditionConstructor.AddCondition( QueryConditionRelationType.AND, "C3.[C1Sysno]", DbType.Int32, "@C1Sysno", QueryConditionOperatorType.Equal, filter.PageID); } else if (pType == PageTypePresentationType.Category2) { sqlBuilder.ConditionConstructor.AddCondition( QueryConditionRelationType.AND, "C3.[C2Sysno]", DbType.Int32, "@C2Sysno", QueryConditionOperatorType.Equal, filter.PageID); } else if (pType == PageTypePresentationType.Category3) { sqlBuilder.ConditionConstructor.AddCondition( QueryConditionRelationType.AND, "C3.[C3SysNo]", DbType.Int32, "@C3Sysno", QueryConditionOperatorType.Equal, filter.PageID); } else { sqlBuilder.ConditionConstructor.AddCondition( QueryConditionRelationType.AND, "B.PageID", DbType.Int32, "@PageID", QueryConditionOperatorType.Equal, filter.PageID); } } #endregion sqlBuilder.ConditionConstructor.AddCondition( QueryConditionRelationType.AND, "A.BeginDate", DbType.DateTime, "@BeginDateFrom", QueryConditionOperatorType.MoreThanOrEqual, filter.BeginDateFrom); sqlBuilder.ConditionConstructor.AddCondition( QueryConditionRelationType.AND, "A.BeginDate", DbType.DateTime, "@BeginDateTo", QueryConditionOperatorType.LessThan, filter.BeginDateTo); sqlBuilder.ConditionConstructor.AddCondition( QueryConditionRelationType.AND, "A.EndDate", DbType.DateTime, "@EndDateFrom", QueryConditionOperatorType.MoreThanOrEqual, filter.EndDateFrom); sqlBuilder.ConditionConstructor.AddCondition( QueryConditionRelationType.AND, "A.EndDate", DbType.DateTime, "@EndDateTo", QueryConditionOperatorType.LessThan, filter.EndDateTo); sqlBuilder.ConditionConstructor.AddCondition( QueryConditionRelationType.AND, "B.Status", DbType.String, "@BStatus", QueryConditionOperatorType.Equal, "A"); //TODO:添加渠道过滤条件 cmd.CommandText = sqlBuilder.BuildQuerySql(); var ds = cmd.ExecuteDataSet(); //转换DataTable的枚举列 EnumColumnList enumConfig = new EnumColumnList(); enumConfig.Add("Status", typeof(ADStatus)); enumConfig.Add("ProductStatus", typeof(ProductStatus)); cmd.ConvertEnumColumn(ds.Tables[0], enumConfig); totalCount = Convert.ToInt32(cmd.GetParameterValue("@TotalCount")); return(ds.Tables[0]); } }
/// <summary> /// 根据页面类型(PageTypeID),获取Page List /// </summary> /// <param name="companyCode"></param> /// <param name="channelID"></param> /// <param name="moduleType"></param> /// <param name="pageTypeID"></param> /// <returns></returns> public virtual PageResult GetPage(string companyCode, string channelID, ModuleType moduleType, string pageTypeID) { PageResult result = new PageResult(); result.PresentationType = PageTypeUtil.ResolvePresentationType(moduleType, pageTypeID); switch (result.PresentationType) { case PageTypePresentationType.NoneSubPages: result.PageList = GetNoneSubPages(companyCode, channelID, moduleType, pageTypeID); break; case PageTypePresentationType.OtherSales: //其他促销页面 result.PageList = ObjectFactory <ISaleAdvTemplateQueryDA> .Instance.GetActiveCodeNames(companyCode, channelID); break; case PageTypePresentationType.Merchant: //商家页面 //读商家列表 var vendorList = ObjectFactory <IPOBizInteract> .Instance.GetVendorNameListByVendorType(VendorType.VendorPortal, companyCode); if (vendorList != null) { result.PageList = new List <WebPage>(); result.PageList.Add(new WebPage { ID = 1, PageName = "泰隆优选" }); foreach (var kv in vendorList) { result.PageList.Add(new WebPage { ID = kv.Key, PageName = kv.Value }); } } break; case PageTypePresentationType.AppleZone: //Apple专区 result.PageList = GetApplePage(companyCode, channelID, PageTypePresentationType.AppleZone); break; case PageTypePresentationType.Brand: //品牌 //TODO:读品牌列表 result.PageList = GetWebPageFromBrandList((b) => b.Status == ValidStatus.Active && b.BrandStoreType > 0); break; case PageTypePresentationType.BrandExclusive: //品牌专卖 //TODO:读品牌列表 result.PageList = GetWebPageFromBrandList((b) => b.Status == ValidStatus.Active); break; case PageTypePresentationType.Flagship: //品牌旗舰店 //TODO:读品牌旗舰店列表 //result.PageList = GetWebPageFromBrandList((b) => b.BrandStoreType == BrandStoreType.FlagshipStore && b.Status == ValidStatus.Active); result.PageList = GetStoresList((b) => b.BrandStoreType == BrandStoreType.FlagshipStore, companyCode); break; case PageTypePresentationType.Stores: //专卖店 result.PageList = GetStoresList((b) => b.Status == BizEntity.IM.ManufacturerStatus.Active, companyCode); break; } return(result); }
private void btnSave_Click(object sender, RoutedEventArgs e) { if (!ValidationManager.Validate(this)) { return; } DefaultKeywordsInfo item = EntityConvertorExtensions.ConvertVM <DefaultKeywordsVM, DefaultKeywordsInfo>(VM, (v, t) => { t.Keywords = new BizEntity.LanguageContent(ConstValue.BizLanguageCode, v.Keywords); }); item.CompanyCode = Newegg.Oversea.Silverlight.ControlPanel.Core.CPApplication.Current.CompanyCode; //从控件取页面类型相关的值 item.PageType = this.ucPageType.PageType; var pType = PageTypeUtil.ResolvePresentationType(ModuleType.DefaultKeywords, this.ucPageType.PageType.ToString()); if (item.PageType == 0) { item.PageID = this.ucPageType.PageID ?? 0; } else { item.PageID = this.ucPageType.PageID ?? -1; } item.Extend = this.ucPageType.IsExtendValid; if (item.PageType == null) { CPApplication.Current.CurrentPage.Context.Window.Alert("页面类型不能为空!", MessageType.Error); return; } if (item.BeginDate == null || item.EndDate == null) { CPApplication.Current.CurrentPage.Context.Window.Alert("开始时间和结束时间不能为空!", MessageType.Error); return; } if (item.BeginDate != null && item.EndDate != null) { if (item.EndDate.Value.CompareTo(item.BeginDate) <= 0) { CPApplication.Current.CurrentPage.Context.Window.Alert("结束时间不能小于开始时间!", MessageType.Error); return; } } if (isAdd) { facade.AddDefaultKeywords(item, (obj, args) => { if (args.FaultsHandle()) { return; } CloseDialog(DialogResultType.OK); CPApplication.Current.CurrentPage.Context.Window.Alert(ResKeywords.Information_CreateSuccessful, MessageType.Information); }); } else { item.SysNo = SysNo; facade.EditDefaultKeywords(item, (obj, args) => { if (args.FaultsHandle()) { return; } CloseDialog(DialogResultType.OK); CPApplication.Current.CurrentPage.Context.Window.Alert(ResKeywords.Information_UpdateSuccessful, MessageType.Information); }); } }
private void Validate(ProductRecommendInfo entity) { //大于等于100的PageType是首页Domain馆,对应的PageID应置为0 if (entity.Location.PageType >= 100) { entity.Location.PageID = 0; } //如果PageID为空,则置为0 if (!entity.Location.PageID.HasValue) { entity.Location.PageID = 0; } if (entity.BeginDate == DateTime.MinValue) { entity.BeginDate = null; } if (entity.EndDate == DateTime.MinValue) { entity.EndDate = null; } //验证商品状态必须为show ProductInfo product = ExternalDomainBroker.GetProductInfo(entity.ProductID); if (product == null) { //throw new BizException("商品不存在。"); throw new BizException(ResouceManager.GetMessageString("MKT.ProductRecommend", "ProductRecommend_ProductNotExists")); } if (product.ProductStatus != ProductStatus.Active) { //throw new BizException("商品状态必须为上架状态。"); throw new BizException(ResouceManager.GetMessageString("MKT.ProductRecommend", "ProductRecommend_ProductStatusNotValid")); } ////验证商品必须有库存OnlineQty>0 //var inventory = ExternalDomainBroker.GetProductTotalInventoryInfo(entity.ProductSysNo); //if (inventory.OnlineQty <= 0) //{ // throw new BizException("商品库存不足。"); //} //如果是首页新品推荐,验证商品FirstOnlineTime不能大于1天 bool isNewRecommend = PageTypeUtil.IsProductRecommendHomePageNewPosition(entity.Location.PageType, entity.Location.PageID, entity.Location.PositionID); if (isNewRecommend) { if (!product.FirstOnSaleDate.HasValue || product.FirstOnSaleDate.Value < DateTime.Parse(DateTime.Now.AddDays(-1).ToLongDateString() + " 00:00:01")) { //throw new BizException("请选择上架时间小于1天的商品进行维护。"); throw new BizException(ResouceManager.GetMessageString("MKT.ProductRecommend", "ProductRecommend_ProductOnlineTimeInvalid")); } } //8.PageType=4,当类型是专卖店时判断description是否有重复的 var presentationType = PageTypeUtil.ResolvePresentationType(ModuleType.ProductRecommend, entity.Location.PageType.ToString()); //如果是专卖店,判断description是否有重复的 if (presentationType == PageTypePresentationType.Brand) { if (product.ProductBasicInfo.ProductBrandInfo.SysNo != entity.Location.PageID) { //throw new BizException("该产品不属于所选专卖店。"); throw new BizException(ResouceManager.GetMessageString("MKT.ProductRecommend", "ProductRecommend_ProductBrandInvalid")); } if (_recommendDA.ExitsSameDescription(entity.Location) > 0) { // throw new BizException("已存在相同的模块名称。"); throw new BizException(ResouceManager.GetMessageString("MKT.ProductRecommend", "ProductRecommend_ExistsSameModuleName")); } } //如果是品牌专属或类别专属 else if (presentationType == PageTypePresentationType.BrandExclusive) { if (product.ProductBasicInfo.ProductBrandInfo.SysNo != entity.Location.PageID) { //throw new BizException("该产品不属于所选专卖店。"); throw new BizException(ResouceManager.GetMessageString("MKT.ProductRecommend", "ProductRecommend_ProductBrandInvalid")); } } else if (presentationType == PageTypePresentationType.Merchant) { if (product.Merchant.MerchantID != entity.Location.PageID) { //throw new BizException("该产品不属于所选商家。"); throw new BizException(ResouceManager.GetMessageString("MKT.ProductRecommend", "ProductRecommend_ProductMerchantInvalid")); } } else if (presentationType == PageTypePresentationType.Category3) { //-1表示默认类别,即不指定任何分类 if (entity.Location.PageID.Value != -1) { var ecC3 = ObjectFactory <ECCategoryProcessor> .Instance.Load(entity.Location.PageID.Value); if (ecC3 == null || !ecC3.C3SysNo.HasValue) { //throw new BizException("请选择产品三级分类!"); throw new BizException(ResouceManager.GetMessageString("MKT.ProductRecommend", "ProductRecommend_Category3NotNull")); } if (product.ProductBasicInfo.ProductCategoryInfo.SysNo != ecC3.C3SysNo) { //throw new BizException("该产品不属于所选分类。"); throw new BizException(ResouceManager.GetMessageString("MKT.ProductRecommend", "ProductRecommend_ProductCategoryInvalid")); } } } if (CheckExists(entity)) { //throw new BizException("已经存在同一位置同一时期的商品,请更换后重试。"); throw new BizException(ResouceManager.GetMessageString("MKT.ProductRecommend", "ProductRecommend_ExistsSameProductRecommend")); } }