using AllBase; using AllBase.Helper; using AllBase.Model.Result; using CsharpHttpHelper; using NaiBa.Util.Helper; using System; using System.Collections.Generic; using System.Globalization; using System.Threading.Tasks; using Work.Services; using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel; namespace Work.Store.Api; /// 云商品接口,沿用服务端不带版本号的路由。 public sealed class CloudGoodsApi { private readonly ApiTransport _transport; public CloudGoodsApi(ApiTransport transport) => _transport = transport ?? throw new ArgumentNullException(nameof(transport)); public Task> GetGoods(GoodsSearchRequest request) => _transport.GetRequiredAsync>("CloudGoods/SearchGoods", MethodType.Post, request); public string GetGoodsDetail(long goodsId) => _transport.GetRequired("CloudGoods/GetGoodsRawData", MethodType.Post, query: new Dictionary { ["goodsId"] = goodsId.ToString(CultureInfo.InvariantCulture) }); public Task> ReportViolations(List items) => _transport.GetRequiredAsync>("CloudGoods/ReportViolations", MethodType.Post, items, timeoutMilliseconds: 5000); public List GetViolationStatus(List goodsIds) => _transport.GetRequired>("CloudGoods/GetViolationStatus", MethodType.Post, goodsIds, timeoutMilliseconds: 5000); public Task RecordViolationLogs(IReadOnlyList requests) => _transport.SendAsync("CloudGoods/RecordViolationLog", MethodType.Post, requests, timeoutMilliseconds: 5000); public Task> GetViolationReasons() => _transport.GetRequiredAsync>("CloudGoods/GetViolationReasons", MethodType.Get); public Task> GetViolationLogs(GetViolationLogsRequest request) => _transport.GetRequiredAsync>("CloudGoods/GetViolationLogs", MethodType.Post, request, timeoutMilliseconds: 5000); public Task> SearchFavorites(UserFavoritesGoodsSearchRequest request) => _transport.GetRequiredAsync>("CloudGoods/SearchFavorites", MethodType.Post, request); public Task Favorite(string userName, List goodsIds,int groupId) => _transport.SendAsync("CloudGoods/AddFavorite", MethodType.Post, new { UserName = userName, GoodsIds = goodsIds, GroupId= groupId }); public Task RemoveFavorites(string userName, List goodsIds) => _transport.SendAsync("CloudGoods/RemoveFavorites", MethodType.Post, new { UserName = userName, GoodsIds = goodsIds }); /// /// 创建分组 /// /// /// /// public async Task CreateGroup(string userName, string groupName) { return await _transport.SendAsync("CloudGoods/CreateGroup", MethodType.Post, new { UserName = userName, GroupName = groupName }); } public async Task DelGroupAsync(string userName, string groupName) { return await _transport.SendAsync("CloudGoods/DelGroup", MethodType.Post, new { UserName = userName, GroupName = groupName }); } public async Task SetFavoriteGroupAsync(string userName, int groupId, IEnumerable goodsIds) { return await _transport.SendAsync("CloudGoods/SetFavoriteGroup", MethodType.Post, new { UserName = userName, GroupId = groupId, GoodsIds = goodsIds }); } public async Task> GetGroups(string userName) { return await _transport.SendAsync>($"CloudGoods/GetGroups?UserName={userName}", MethodType.Post); } /// 识别上传图片中的文字和品牌 Logo。 public async Task> RecognizeAsync(string urlMd5, byte[] jpeg) { int sleep = 0; if (EnvironmentHelper.IsProduction) { sleep = RandomHelper.GetRandom(600, 1200); } var minimumDuration = Task.Delay(TimeSpan.FromMilliseconds(sleep)); var request = new { UserName = BaseClass.UserName, Md5 = urlMd5, Image = Convert.ToBase64String(jpeg) }; var recognitionTask = _transport.GetRequiredAsync>("CloudGoods/InspectImage", MethodType.Post, request); await Task.WhenAll(minimumDuration, recognitionTask).ConfigureAwait(false); return await recognitionTask.ConfigureAwait(false); } public async Task SaveProductSafety(SaveProductSafetyRequest request) { var ret = await _transport.SendAsync("CloudGoods/SaveProductSafety", MethodType.Post, new { UserName = request.UserName, ProductId = request.ProductId, IsSafe = request.IsSafe }); } }