public BatchSearchResult GetSongInfos(BatchSearchRequest searchRequest) { var result = new BatchSearchResult { ResultCode = ResultCode.Successful }; if (searchRequest.SearchRequestItems.Count > Common.Constants.MaxRequestForOneBatch) { result.ResultCode = ResultCode.Failed; result.ExtraMessage = $"Too many request items, maxinum {Common.Constants.MaxRequestForOneBatch}."; } else if (searchRequest.SearchRequestItems?.Any() ?? false) { foreach (var item in searchRequest.SearchRequestItems) { var batchItem = new BatchSearchResultItem { ResultCode = ResultCode.Successful, SearchRequestItem = item }; try { logger.LogDebug("{Method} start for {item}", nameof(GetSongInfos), item); var searchStr = GetSearchQueryStr(item); if (!string.IsNullOrWhiteSpace(searchStr)) { var query = Parser.Parse(searchStr); var songs = LucenePool.SearchSongs(musicConfiguration.IndexPath, query, 10); batchItem.SongInfos = songs; logger.LogDebug("{Method} ended for {item}, find {count} results.", nameof(GetSongInfos), item, songs.Length); } else { batchItem.ResultCode = ResultCode.Failed; batchItem.ExtraMessage = "No valid info to generate search query"; logger.LogWarning("{Method} ended for no valid search information", nameof(GetSongInfos)); } } catch (Exception ex) { batchItem.ResultCode = ResultCode.Exception; batchItem.ExtraMessage = "Error occur"; logger.LogError(ex, "GetSongInfo Error Occur"); } result.SearchResults.Add(batchItem); } } return(result); }
/// <summary> /// 批量创建云图数据的进度查询 /// </summary> /// <param name="queryParam">查询参数</param> /// <returns>进度查询 结果</returns> public BatchSearchResult SearchBatchProgress(BatchSearchParam queryParam) { string getUrl = "https://yuntuapi.amap.com/datamanage/batch/importstatus?{0}"; string paras = queryParam.GenerateParam(); getUrl = string.Format(getUrl, paras); string queryResult = WebRequestHelper.HttpGet(getUrl); if (!string.IsNullOrWhiteSpace(queryResult)) { queryResult = queryResult.Replace("[]", "\"\""); } BatchSearchResult resultObj = JsonConvert.DeserializeObject <BatchSearchResult>(queryResult); return(resultObj); }