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);
        }
Example #2
0
        /// <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);
        }