public ActionResult Search(long provinceId, long areaId, int current, int rowCount, string searchPhrase, FormCollection fc) { var user = ResSettings.SettingsInSession.User; //---------------------------------------------------------- var t = APDBDef.ResUser; var c = APDBDef.ResCompany; APSqlOrderPhrase order = null; APSqlWherePhrase where = t.Removed == false; // 取排序 var co = GridOrder.GetSortDef(fc); if (co != null) { switch (co.Id) { case "UserName": order = new APSqlOrderPhrase(t.UserName, co.Order); break; case "RealName": order = new APSqlOrderPhrase(t.RealName, co.Order); break; case "CompanyName": order = new APSqlOrderPhrase(c.CompanyName, co.Order); break; case "RoleName": order = new APSqlOrderPhrase(APDBDef.ResRole.RoleId, co.Order); break; case "Gender": order = new APSqlOrderPhrase(t.GenderPKID, co.Order); break; case "Email": order = new APSqlOrderPhrase(t.Email, co.Order); break; case "RegisterTime": order = new APSqlOrderPhrase(t.RegisterTime, co.Order); break; case "LoginCount": order = new APSqlOrderPhrase(t.LoginCount, co.Order); break; case "Actived": order = new APSqlOrderPhrase(t.Actived, co.Order); break; } } // 默认排序 // if (order == null) order = new APSqlOrderPhrase(t.RegisterTime, APSqlOrderAccording.Desc); // 按用户名或真实姓名过滤 if (searchPhrase != null) { searchPhrase = searchPhrase.Trim(); if (searchPhrase != "") { where &= (t.UserName.Match(searchPhrase) | t.RealName.Match(searchPhrase)); } } if (provinceId > 0) { where &= t.ProvinceId == provinceId; } if (areaId > 0) { where &= t.AreaId == areaId; } // 用户数据范围 if (user.ProvinceId > 0) { where &= t.ProvinceId == user.ProvinceId; } if (user.AreaId > 0) { where &= t.AreaId == user.AreaId; } if (user.CompanyId > 0) { where &= t.CompanyId == user.CompanyId; } int total; var list = APBplDef.ResUserBpl.TolerantSearch(out total, current, rowCount, where, order); //---------------------------------------------------------- if (Request.IsAjaxRequest()) { return(Json( new { rows = from res in list select new { id = res.UserId, res.UserName, res.RealName, res.CompanyName, res.UserType, res.Gender, res.Email, RegisterTime = res.RegisterTime.ToString("yyyy-MM-dd"), res.LoginCount, Actived = res.Actived ? "有效" : "无效" }, current = current, rowCount = rowCount, total = total })); } else { return(View(list)); } }
/// Return a list for admin UI list. /// </summary> /// <param name="total"></param> /// <param name="current"></param> /// <param name="rowCount"></param> /// <param name="where"></param> /// <param name="order"></param> /// <returns></returns> public static List <CroResource> TolerantSearch(out int total, int current, int rowCount, APSqlWherePhrase where, APSqlOrderPhrase order) { var t = APDBDef.CroResource; var u = APDBDef.ResUser; var query = APQuery .select(t.CrosourceId, t.Title, t.CreatedTime, t.StatePKID, t.ThemeId, t.ProvinceId, t.AreaId, t.WinLevelPKID, t.Score, t.DeliveryStatus, t.Author) .from(t, u.JoinInner(t.Creator == u.UserId)) .where (where); //.order_by(t.CrosourceId.Desc) if (order != null) { query.order_by_add(order); } else { query.order_by_add(t.CrosourceId.Desc); } query.primary(t.CrosourceId) .skip((current - 1) * rowCount) .take(rowCount); using (APDBDef db = new APDBDef()) { total = db.ExecuteSizeOfSelect(query); return(db.Query(query, t.TolerantMap).ToList()); } }
/// <summary> /// Return a list for admin UI list. /// </summary> /// <param name="total"></param> /// <param name="current"></param> /// <param name="rowCount"></param> /// <param name="where"></param> /// <param name="order"></param> /// <returns></returns> public static List <ResUser> TolerantSearch(out int total, int current, int rowCount, APSqlWherePhrase where, APSqlOrderPhrase order) { var t = APDBDef.ResUser; var c = APDBDef.ResCompany; //var r = APDBDef.ResRole; //var ur = APDBDef.ResUserRole; var query = APQuery .select(t.UserId, t.UserName, t.RealName, t.GenderPKID, t.Email, t.RegisterTime, t.LoginCount, t.Actived, t.UserTypePKID, t.CompanyId, t.ProvinceId, t.AreaId, c.CompanyName //,r.RoleName ) .from(t, c.JoinLeft(t.CompanyId == c.CompanyId) ) .where (where) .primary(t.UserId) .skip((current - 1) * rowCount) .take(rowCount); if (order != null) { query.order_by(order); } using (APDBDef db = new APDBDef()) { total = db.ExecuteSizeOfSelect(query); return(db.Query(query, reader => { return new ResUser() { UserId = t.UserId.GetValue(reader), UserTypePKID = t.UserTypePKID.GetValue(reader), UserName = t.UserName.GetValue(reader), RealName = t.RealName.GetValue(reader), GenderPKID = t.GenderPKID.GetValue(reader), Email = t.Email.GetValue(reader), RegisterTime = t.RegisterTime.GetValue(reader), LoginCount = t.LoginCount.GetValue(reader), Actived = t.Actived.GetValue(reader), CompanyName = c.CompanyName.GetValue(reader), ProvinceId = t.ProvinceId.GetValue(reader), AreaId = t.AreaId.GetValue(reader) }; }).ToList()); } }
/// <summary> /// Build a APQuery. /// </summary> /// <param name="additionCondition">Addition condition.</param> /// <param name="additionOrders">Addition orders</param> /// <param name="fuzzySearchString">Fuzzy search string.</param> /// <returns>The APQuery.</returns> public virtual APSqlSelectCommand BuildQuery(APSqlWherePhrase additionCondition = null, IEnumerable <APSqlOrderPhrase> additionOrders = null, string fuzzySearchString = null) { List <APSqlSelectPhrase> select = _source.GetPrimeSelectPhrases(); List <APSqlFromPhrase> from = _source.GetPrimeFormPhrases(); List <APSqlWherePhrase> where = _source.GetPrimeWherePhrases(); // Base build. foreach (APRptReferDef refer in _def.Refers) { APRptColumn column = _source.AllColumns[refer.ColumnId]; column.AddToQuerySelectPhrases(select); column.AddToQueryFromPhrases(from); column.AddToQueryWherePhrases(where); } var query = APQuery .select(select) .from(from) .primary(_source.GetPrimaryExpr()); // Order build. List <APSqlOrderPhrase> orderby = new List <APSqlOrderPhrase>(); if (_def.Orders.Count > 0) { foreach (APRptOrderDef order in _def.Orders) { orderby.Add(_source.AllColumns[order.ColumnId].GetQueryOrderByPhrase(order.According)); } } if (additionOrders != null) { foreach (APSqlOrderPhrase order in additionOrders) { orderby.Add(order); } } query.order_by(orderby); // Filter build. if (_def.Condition.Filters.Count > 0) { where.Add(new APRptConditionBuilder(_def.Condition, _source.AllColumns).BuildCondition()); } // Additions condition. if (additionCondition != null) { where.Add(additionCondition); } // Fuzzy search condition. APSqlWherePhrase fuzzyWhere; if (!String.IsNullOrEmpty(fuzzySearchString) && (fuzzyWhere = _source.GetFuzzySearchPhrase(fuzzySearchString)) != null) { where.Add(fuzzyWhere); } query.where (where); return(query); }
/// <summary> /// Return a list for admin UI list. /// </summary> /// <param name="total"></param> /// <param name="current"></param> /// <param name="rowCount"></param> /// <param name="where"></param> /// <param name="order"></param> /// <returns></returns> public static List <CroResource> TolerantSearch(out int total, int current, int rowCount, APSqlWherePhrase where, APSqlOrderPhrase order) { var t = APDBDef.CroResource; var u = APDBDef.ResUser; var query = APQuery .select(t.CrosourceId, t.Title, u.RealName.As("Author") //TODO:t.MediumTypePKID , t.CreatedTime, t.StatePKID) .from(t, u.JoinInner(t.Creator == u.UserId)) .where (where) .primary(t.CrosourceId) .skip((current - 1) * rowCount) .take(rowCount); if (order != null) { query.order_by(order); } using (APDBDef db = new APDBDef()) { total = db.ExecuteSizeOfSelect(query); return(db.Query(query, t.TolerantMap).ToList()); } }
public ActionResult Search(long activeId, long themeId, long provinceId, long areaId, long deliveryStatus, // long stateId, long maxScore, long minScore, long isPass, int current, int rowCount, string searchPhrase, FormCollection fc) { var user = ResSettings.SettingsInSession.User; //---------------------------------------------------------- var t = APDBDef.CroResource; var u = APDBDef.ResUser; APSqlOrderPhrase order = null; APSqlWherePhrase where = t.StatePKID != 10359 & t.ActiveId == ThisApp.CurrentActiveId; //TODO 只取2018 // 取排序 var co = GridOrder.GetSortDef(fc); if (co != null) { switch (co.Id) { case "Title": order = new APSqlOrderPhrase(t.Title, co.Order); break; case "Author": order = new APSqlOrderPhrase(u.RealName, co.Order); break; case "CreatedTime": order = new APSqlOrderPhrase(t.CreatedTime, co.Order); break; // case "State": order = new APSqlOrderPhrase(t.StatePKID, co.Order); break; case "Score": order = new APSqlOrderPhrase(t.Score, co.Order); break; case "WinLevel": order = new APSqlOrderPhrase(t.WinLevelPKID, co.Order); break; } } // 按作品标题,内容,作者等过滤 if (searchPhrase != null) { searchPhrase = searchPhrase.Trim(); if (searchPhrase != "") { where &= t.Title.Match(searchPhrase) | t.Author.Match(searchPhrase) | t.Description.Match(searchPhrase) | t.AuthorCompany.Match(searchPhrase); } } // 按照主题过滤 if (themeId > 0) { where &= t.ThemeId == themeId; } // 用户数据范围或搜索 if (user.ProvinceId > 0 || provinceId > 0) { where &= t.ProvinceId == (provinceId > 0 ? provinceId : user.ProvinceId); } if (user.AreaId > 0 || areaId > 0) { where &= t.AreaId == (areaId > 0 ? areaId : user.AreaId); } if (maxScore > 0) { where &= t.Score <= maxScore; } if (minScore > 0) { where &= t.Score >= minScore; } // 按项目数据过滤 if (activeId > 0) { where &= t.ActiveId == activeId; } // 按照报送状态过滤 if (deliveryStatus > -1) { where &= t.DeliveryStatus == deliveryStatus; } //if (stateId > 0) // where &= t.StatePKID == stateId; if (isPass > 0) { APDBDef.EvalResultTableDef er = APDBDef.EvalResult; var subQuery = APQuery.select(er.ResourceId).from(er).where (er.EvalType == EvalGroupHelper.FirstTrial); where &= t.CrosourceId.In(subQuery); } int total; var list = APBplDef.CroResourceBpl.TolerantSearch(out total, current, rowCount, where, order); if (Request.IsAjaxRequest()) { return(Json( new { rows = from cro in list select new { id = cro.CrosourceId, cro.Title, cro.Author, CreatedTime = cro.CreatedTime.ToString("yyyy-MM-dd"), cro.Province, cro.Area, //cro.State, cro.StatePKID, cro.Score, cro.WinLevel, cro.WinLevelPKID, cro.DeliveryStatusName, cro.DeliveryStatus, cro.Theme }, current = current, rowCount = rowCount, total = total })); } else { return(View(list)); } }