/// <summary> /// 调用广告 /// </summary> /// <param name="categoryID"></param> /// <param name="target"></param> /// <returns></returns> public string ShowAdvert(int categoryID, string target, ADPosition position) { AdvertCollection ads = SearchAdverts(categoryID, target, position, null, null); Random rnd = new Random(); if (ads.Count > 0) { ADCategory category = GetCategory(categoryID); switch (category.ShowType) { case ADShowType.Random: //int i = 0 ; //if (ads.Length > 1) //{ // i = new Random().Next(ads.Length); //} case ADShowType.Order: return(ads[rnd.Next(0, 100000) % ads.Count].Code); case ADShowType.List: return(BuildAdvertList(ads)); } } return(""); }
/// <summary> /// 获取贴内广告 /// </summary> /// <param name="target">目标</param> /// <param name="postion">位置</param> /// <param name="postIndex">楼层</param> /// <returns></returns> public string GetInPostAD(string target, ADPosition postion, int Floor, bool isLastFloor) { //int showBginId; //int showTime; //string key = "pad_" + target + postion; //string keyshowTimes = "pad_st_" + target + postion; AdvertCollection ads = SearchAdverts(ADCategory.InPostAd.ID, target, postion, Floor, isLastFloor); Random rnd = new Random(); if (ads.Count > 0) { //if ( !PageCacheUtil.TryGetValue<int>(key, out showBginId)) //{ // showBginId = rnd.Next(0, 100000) % ads.Count; // PageCacheUtil.Set(key, showBginId); //} //if (!PageCacheUtil.TryGetValue<int>(keyshowTimes, out showTime)) //{ // showTime = 0; //} ads.Sort(); Advert ad = ads[0]; ad.showTimes++; return(ad.Code); } return(""); }
public AdvertCollection GetAdverts(int categoryID, ADPosition position, int pageSize, int pegeNumber, out int totalCount) { if (pageSize <= 0) { pageSize = Consts.DefaultPageSize; } if (pegeNumber <= 0) { pegeNumber = 1; } return(AdvertDao.Instance.GetAdverts(categoryID, position, pageSize, pegeNumber, out totalCount)); }
protected int GetCount(int categoryID, string position) { int c = 0; ADPosition pos = StringUtil.TryParse <ADPosition>(position, ADPosition.None); foreach (Advert ad in AllAdverts) { if (ad.CategoryID == categoryID) { if (ad.Position == pos) { c++; } } } return(c); }
/// <summary> /// 根据类型编号、目标,返回 符合条件的广告列表 /// </summary> /// <param name="categoryID"></param> /// <param name="target"></param> /// <returns></returns> private AdvertCollection SearchAdverts(int categoryID, string target, ADPosition position, int?Floor, bool?isLastFloor) { if (AllSettings.Current.AdvertSettings.EnableAdverts == false) { return(new AdvertCollection()); } if (!ADCategory.SystemADCategoryes.ContainsKey(categoryID)) { return(new AdvertCollection()); } AdvertCollection ads = ADCategory.SystemADCategoryes.GetValue(categoryID).AdvertList.Limited; AdvertCollection adResults; string cacheKey = string.Concat(categoryID, ",", target, position, Floor, isLastFloor); if (PageCacheUtil.TryGetValue <AdvertCollection>(cacheKey, out adResults) == false) { adResults = new AdvertCollection(); foreach (Advert ad in ads) { if (ad.Targets.Contains(",all,") || ad.Targets.IndexOf(string.Concat(",", target, ","), StringComparison.OrdinalIgnoreCase) > -1) //投放目标选择 { if (position == ADPosition.None || ad.Position == position) //投放位置选中(左边还是右边还是上边) { if (Floor == null || //忽略 ad.Floor.IndexOf(",-1,") > -1 || //全部楼层 ad.Floor.IndexOf("," + Floor + ",") > -1 || //匹配特定楼层 (ad.Floor.IndexOf(",-2,") > -1 && (isLastFloor != null && isLastFloor.Value)) //最后一楼 ) { adResults.Add(ad); } } } } PageCacheUtil.Set(cacheKey, adResults); } return(adResults); }
public override Advert SaveAdvert( int id, int index, int categoryID, ADPosition position, ADType adType, bool available, string title , string href, string text, int fontsize, string color, string src , int width, int height, DateTime beginDate, DateTime endDate, string code, string targets, string floor) { using (SqlQuery query = new SqlQuery()) { query.CommandText = "bx_SaveAdvert"; query.CommandType = CommandType.StoredProcedure; query.CreateParameter<int>("@ADID", id, SqlDbType.Int); query.CreateParameter<int>("@CategoryID", categoryID, SqlDbType.Int); query.CreateParameter<byte>("@Position", (byte)position, SqlDbType.TinyInt); query.CreateParameter<byte>("@AdType", (byte)adType, SqlDbType.TinyInt); query.CreateParameter<bool>("@Available", available, SqlDbType.Bit); query.CreateParameter<string>("@Title", title, SqlDbType.NVarChar, 50); query.CreateParameter<string>("@Href", href, SqlDbType.NVarChar, 500); query.CreateParameter<string>("@Text", text, SqlDbType.NVarChar, 200); query.CreateParameter<int>("@FontSize", fontsize, SqlDbType.Int); query.CreateParameter<string>("@Color", color, SqlDbType.VarChar, 50); query.CreateParameter<string>("@Src", src, SqlDbType.NVarChar, 500); query.CreateParameter<int>("@Height", height, SqlDbType.Int); query.CreateParameter<int>("@Width", width, SqlDbType.Int); query.CreateParameter<DateTime>("@BeginDate", beginDate, SqlDbType.DateTime); query.CreateParameter<DateTime>("@EndDate", endDate, SqlDbType.DateTime); query.CreateParameter<string>("@Code", code, SqlDbType.NText); query.CreateParameter<string>("@Targets", targets, SqlDbType.NText); query.CreateParameter<int>("@Index", index, SqlDbType.Int); query.CreateParameter<string>("@Floor", floor, SqlDbType.VarChar, 1000); using (XSqlDataReader reader = query.ExecuteReader()) { if (reader.Read()) { return new Advert(reader); } } } return null; }
public override Advert SaveAdvert( int id, int index, int categoryID, ADPosition position, ADType adType, bool available, string title , string href, string text, int fontsize, string color, string src , int width, int height, DateTime beginDate, DateTime endDate, string code, string targets, string floor) { using (SqlQuery query = new SqlQuery()) { query.CommandText = "bx_SaveAdvert"; query.CommandType = CommandType.StoredProcedure; query.CreateParameter <int>("@ADID", id, SqlDbType.Int); query.CreateParameter <int>("@CategoryID", categoryID, SqlDbType.Int); query.CreateParameter <byte>("@Position", (byte)position, SqlDbType.TinyInt); query.CreateParameter <byte>("@AdType", (byte)adType, SqlDbType.TinyInt); query.CreateParameter <bool>("@Available", available, SqlDbType.Bit); query.CreateParameter <string>("@Title", title, SqlDbType.NVarChar, 50); query.CreateParameter <string>("@Href", href, SqlDbType.NVarChar, 500); query.CreateParameter <string>("@Text", text, SqlDbType.NVarChar, 200); query.CreateParameter <int>("@FontSize", fontsize, SqlDbType.Int); query.CreateParameter <string>("@Color", color, SqlDbType.VarChar, 50); query.CreateParameter <string>("@Src", src, SqlDbType.NVarChar, 500); query.CreateParameter <int>("@Height", height, SqlDbType.Int); query.CreateParameter <int>("@Width", width, SqlDbType.Int); query.CreateParameter <DateTime>("@BeginDate", beginDate, SqlDbType.DateTime); query.CreateParameter <DateTime>("@EndDate", endDate, SqlDbType.DateTime); query.CreateParameter <string>("@Code", code, SqlDbType.NText); query.CreateParameter <string>("@Targets", targets, SqlDbType.NText); query.CreateParameter <int>("@Index", index, SqlDbType.Int); query.CreateParameter <string>("@Floor", floor, SqlDbType.VarChar, 1000); using (XSqlDataReader reader = query.ExecuteReader()) { if (reader.Read()) { return(new Advert(reader)); } } } return(null); }
public override AdvertCollection GetAdverts(int categoryID, ADPosition adPosition, int pageSize, int pageNumber, out int totalCount) { totalCount = 0; using (SqlQuery query = new SqlQuery()) { query.Pager.TableName = "bx_Adverts"; query.Pager.SortField = "ADID"; query.Pager.PageNumber = pageNumber; query.Pager.PageSize = pageSize; query.Pager.PageSize = Consts.DefaultPageSize; query.Pager.SelectCount = true; query.Pager.ResultFields = "*"; if (categoryID != 0) { query.Pager.Condition = "CategoryID = @CategoryID"; query.CreateParameter <int>("@CategoryID", categoryID, SqlDbType.Int); } if (adPosition != ADPosition.None) { query.Pager.Condition += " AND [Position] = @Position"; query.CreateParameter <byte>("@Position", (byte)adPosition, SqlDbType.TinyInt); } using (XSqlDataReader reader = query.ExecuteReader()) { AdvertCollection ads = new AdvertCollection(reader); if (reader.NextResult()) { while (reader.Read()) { totalCount = reader.Get <int>(0); } } return(ads); } } }
public abstract AdvertCollection GetAdverts(int categoryID, ADPosition adPosition, int pageSize, int pageNumber, out int totalCount);
public abstract Advert SaveAdvert( int id, int index, int categoryID, ADPosition position, ADType adType, bool available, string title , string href, string text, int fontsize, string color, string src , int width, int height, DateTime beginDate, DateTime endDate, string code, string targets, string floor);
public override AdvertCollection GetAdverts(int categoryID, ADPosition adPosition, int pageSize, int pageNumber, out int totalCount) { totalCount = 0; using (SqlQuery query = new SqlQuery()) { query.Pager.TableName = "bx_Adverts"; query.Pager.SortField = "ADID"; query.Pager.PageNumber = pageNumber; query.Pager.PageSize = pageSize; query.Pager.PageSize = Consts.DefaultPageSize; query.Pager.SelectCount = true; query.Pager.ResultFields = "*"; if (categoryID != 0) { query.Pager.Condition = "CategoryID = @CategoryID"; query.CreateParameter<int>("@CategoryID", categoryID, SqlDbType.Int); } if (adPosition != ADPosition.None) { query.Pager.Condition += " AND [Position] = @Position"; query.CreateParameter<byte>("@Position", (byte)adPosition, SqlDbType.TinyInt); } using (XSqlDataReader reader = query.ExecuteReader()) { AdvertCollection ads = new AdvertCollection(reader); if (reader.NextResult()) { while (reader.Read()) totalCount = reader.Get<int>(0); } return ads; } } }
/// <summary> /// 修改或者添加广告 /// </summary> /// <param name="adid"></param> /// <param name="categoryID"></param> /// <param name="position"></param> /// <param name="adType"></param> /// <param name="available"></param> /// <param name="title"></param> /// <param name="href"></param> /// <param name="text"></param> /// <param name="fontsize"></param> /// <param name="color"></param> /// <param name="src"></param> /// <param name="width"></param> /// <param name="height"></param> /// <param name="beginDate"></param> /// <param name="endDate"></param> /// <param name="code"></param> /// <param name="targets"></param> /// <returns></returns> public Advert SaveAdvert( int operatorUserID , int adid , int index , int categoryID , ADPosition position , ADType adType , bool available , string title , string href , string text , int fontsize , string color , string src , int width , int height , DateTime beginDate , DateTime endDate , string code , string targets , string floor ) { if (!CanManageAdvert(operatorUserID)) { ThrowError(new NoPermissionManageAdvertError()); return(null); } if (string.IsNullOrEmpty(title)) { title = GetTitle(); } switch (adType) { case ADType.Code: if (string.IsNullOrEmpty(code)) { ThrowError(new EmptyAdvertCodeError("code")); } break; case ADType.Image: if (string.IsNullOrEmpty(src)) { ThrowError(new EmptyAdvertResourceError("src")); } if (string.IsNullOrEmpty(href)) { ThrowError(new EmptyAdvertHrefError("href")); } break; case ADType.Flash: if (string.IsNullOrEmpty(src)) { ThrowError(new EmptyAdvertResourceError("src")); } if (width == 0) { ThrowError(new EmptyAdvertWidthError("width")); } if (height == 0) { ThrowError(new EmptyAdvertHeightError("height")); } break; case ADType.Text: if (string.IsNullOrEmpty(text)) { ThrowError(new EmptyAdvertTextError("text")); } if (string.IsNullOrEmpty(href)) { ThrowError(new EmptyAdvertHrefError("href")); } break; } if (string.IsNullOrEmpty(targets)) { targets = ",all,"; } else if (!string.IsNullOrEmpty(targets.Trim(','))) { targets = string.Format(",{0},", targets.Trim(',')); //前后逗号补充 } if (!string.IsNullOrEmpty(floor) && !string.IsNullOrEmpty(floor.Trim(','))) { floor = string.Format(",{0},", floor.Trim(',')); } if (categoryID == ADCategory.InPostAd.ID && string.IsNullOrEmpty(floor)) { ThrowError(new CustomError("floor", "请选择广告显示的楼层")); } if (HasUnCatchedError) { return(null); } Advert ad = AdvertDao.Instance.SaveAdvert( adid , index , categoryID , position , adType , available , title , href , text , fontsize , color , src , width , height , beginDate , endDate , code , targets , floor ); if (ADCategory.SystemADCategoryes.ContainsKey(categoryID)) { ADCategory.SystemADCategoryes.GetValue(categoryID).ClearCache(); } return(ad); }
/// <summary> /// 是否存在某类广告 /// </summary> /// <param name="categoryID"></param> /// <param name="target"></param> /// <param name="position"></param> /// <returns></returns> public bool HasAdvert(int categoryID, string target, ADPosition position) { return(SearchAdverts(categoryID, target, position, null, null).Count > 0); }
/// <summary> /// 是否有贴内广告 /// </summary> /// <param name="target"></param> /// <param name="postion"></param> /// <param name="floor"></param> /// <returns></returns> public bool HasInPostAD(string target, ADPosition postion, int floor, bool isLastFloor) { return(SearchAdverts(ADCategory.InPostAd.ID, target, postion, floor, isLastFloor).Count > 0); }