/// <summary> /// 构建ef查询条件 /// </summary> /// <param name="query"></param> /// <returns></returns> private Expression <Func <TravelInfo, bool> > BuildQuery(TravelInfoQuery query) { var oLamadaExtention = new LamadaExtention <TravelInfo>(); if (query.ProId != null) { oLamadaExtention.GetExpression(nameof(TravelInfo.ProId), query.ProId, ExpressionTypeEnum.Equal); } if (!string.IsNullOrWhiteSpace(query.PlaceOfDeparture)) { oLamadaExtention.GetExpression(nameof(TravelInfo.PlaceOfDeparture), query.PlaceOfDeparture, ExpressionTypeEnum.Equal); } if (!string.IsNullOrWhiteSpace(query.City)) { oLamadaExtention.GetExpression(nameof(TravelInfo.City), query.City, ExpressionTypeEnum.Equal); } if (!string.IsNullOrWhiteSpace(query.Country)) { oLamadaExtention.GetExpression(nameof(TravelInfo.Country), query.Country, ExpressionTypeEnum.Equal); } if (query.EndTime != null) { oLamadaExtention.GetExpression(nameof(TravelInfo.EndTime), query.EndTime, ExpressionTypeEnum.LessThanOrEqual); } if (query.StartTime != null) { oLamadaExtention.GetExpression(nameof(TravelInfo.StartTime), query.StartTime, ExpressionTypeEnum.GreaterThanOrEqual); } if (!string.IsNullOrWhiteSpace(query.ProDestination)) { oLamadaExtention.GetExpression(nameof(TravelInfo.ProDestination), query.ProDestination, ExpressionTypeEnum.Equal); } if (!string.IsNullOrWhiteSpace(query.ProTitle)) { oLamadaExtention.GetExpression(nameof(TravelInfo.ProTitle), query.ProTitle, ExpressionTypeEnum.Equal); } return(oLamadaExtention.GetLambda()); }
public async Task <IActionResult> GetTravelInfoListByFrontierAsync(string frontier, int pageSize = 10, int pageIndex = 1) { try { if (string.IsNullOrWhiteSpace(frontier)) { _result.status = (int)HttpStatusCode.BadRequest; _result.msg = "frontier is not null"; _result.resultData = null; return(BadRequest(_result)); } var url = _configurationManager.GetSection(ConfigEnum.MediaUrl.ToString()); var query = new TravelInfoQuery(); if (frontier == "0") { query.Country = "中国"; } else if (frontier == "1") { query.Country = "!中国"; } else { _result.status = (int)HttpStatusCode.BadRequest; _result.msg = "faild"; _result.resultData = null; return(BadRequest(_result)); } var res = await _travelInfoService.GetTravelInfoListAsync(query); res.ToList().ForEach(x => x.Cover = $"{url}/{x.ProId}/{x.Cover}"); _result.status = (int)HttpStatusCode.OK; _result.msg = "success"; _result.resultData = res; return(Ok(_result)); } catch (Exception ex) { _log.Error("GetTravelInfoListByFrontierAsync method error:" + ex); _result.status = (int)HttpStatusCode.InternalServerError; _result.msg = "fail"; _result.resultData = null; return(StatusCode(_result.status, _result)); } }
/// <summary> /// 根据ID查找产品详细信息 /// </summary> /// <param name="query"></param> /// <returns></returns> public async Task <TravelInfo> GetTravelInfoAsync(TravelInfoQuery query) { try { string sql = "SELECT * FROM TravelInfo WHERE 1=1"; if (query.ProId != null) { sql += " AND proId = @ProId"; } var info = MapperManager.SetMapper <TravelInfo, TravelInfoQuery>(query); return(await _mysqlRespository.QueryInfoAsync(sql, info)); } catch (Exception ex) { _log.Error("GetTravelInfoAsync method error:" + ex); throw; } }
/// <summary> /// 根据条件查询产品列表 /// </summary> /// <param name="query"></param> /// <returns></returns> public async Task <IEnumerable <TravelInfo> > GetTravelInfoListAsync(TravelInfoQuery query) { try { string sql = "SELECT * FROM TravelInfo WHERE 1=1"; #region 条件 if (query.ProId != null) { sql += " AND proId = @ProId"; } if (!string.IsNullOrWhiteSpace(query.ProType)) { query.ProType = SqlHandler.ReplaceSQLChar(query.ProType); query.ProType = $"%{query.ProType}%"; sql += " AND proType LIKE @ProType"; } if (!string.IsNullOrWhiteSpace(query.Country )) { if (query.Country.StartsWith("!")) { query.Country = query.Country.TrimStart('!'); sql += " AND country <> @Country"; } else { sql += " AND country = @Country"; } } if (!string.IsNullOrWhiteSpace(query.City )) { sql += " AND city = @City"; } if (!string.IsNullOrWhiteSpace(query.Area )) { sql += " AND area = @Area"; } if (query.StartTime != null) { sql += " AND startTime >= @StartTime"; } if (query.Month?.Length > 0) { sql += " AND month IN @Month"; } if (query.EndTime != null) { sql += " AND endTime <= @EndTime"; } if (query.ProDays?.Length > 0) { if (query.ProDays.Length > 1) { sql += " AND proDays IN @ProDays"; } else { sql += " AND proDays = @ProDays"; } } if (query.Them?.Length > 0) { for (var i = 0; i < query.Them.Length; i++) { if (i == 0) { sql += " AND them LIKE '%" + query.Them[i] + "%'"; } else { sql += " OR them LIKE '%" + query.Them[i] + "%'"; } } } if (!string.IsNullOrWhiteSpace(query.Sort)) { query.Sort = SqlHandler.ReplaceSQLChar(query.Sort); sql += $" ORDER BY {query.Sort}"; if (!string.IsNullOrWhiteSpace(query.Order)) { query.Order = SqlHandler.ReplaceSQLChar(query.Order); sql += $" {query.Order}"; } } #endregion if (query.PageIndex != 0 && query.PageSize != 0) { query.PageIndex = (query.PageIndex - 1) * query.PageSize; sql += $" LIMIT {query.PageIndex},{query.PageSize}"; } return(await _mysqlRespository.QueryListAsync <TravelInfo, TravelInfoQuery>(sql, query)); } catch (Exception ex) { _log.Error("GetTravelInfoListAsync method error:" + ex); throw; } }
public async Task <IActionResult> GetTravelInfoListByFilterAsync(TravelConditionQuery conditionQuery) { var travelQuery = new TravelInfoQuery(); try { if (conditionQuery == null) { _result.status = (int)HttpStatusCode.BadRequest; _result.msg = "conditionQuery is not null"; _result.resultData = null; return(BadRequest(_result)); } var url = _configurationManager.GetSection(ConfigEnum.MediaUrl.ToString()); if (conditionQuery.dateList?.Length > 0) { travelQuery.ProDays = conditionQuery.dateList; } if (conditionQuery.travelTimeList?.Length > 0) { travelQuery.Month = conditionQuery.travelTimeList; } if (conditionQuery.specialList?.Length > 0) { travelQuery.Them = conditionQuery.specialList; } if (!string.IsNullOrWhiteSpace(conditionQuery.orderFiled)) { //除了价格从低到高是正序,其他条件都是倒序 if (conditionQuery.orderFiled == ConditionEnum.priceDown.ToString()) { travelQuery.Order = "asc"; travelQuery.Sort = "proPrice"; } else if (conditionQuery.orderFiled == ConditionEnum.priceUp.ToString()) { travelQuery.Order = "desc"; travelQuery.Sort = "proPrice"; } else { travelQuery.Order = "desc"; travelQuery.Sort = conditionQuery.orderFiled; } } travelQuery.PageIndex = conditionQuery.PageIndex; travelQuery.PageSize = conditionQuery.PageSize; var res = await _travelInfoService.GetTravelInfoListAsync(travelQuery); res.ToList().ForEach(x => x.Cover = $"{url}/{x.ProId}/{x.Cover}"); _result.status = (int)HttpStatusCode.OK; _result.msg = "success"; _result.resultData = res.ToList(); return(Ok(_result)); } catch (Exception ex) { _log.Error("GetTravelInfoListByFilterAsync method error:" + ex); _result.status = (int)HttpStatusCode.InternalServerError; _result.msg = "fail"; _result.resultData = null; return(StatusCode(_result.status, _result)); } }