using CoreCms.Net.Configuration; using CoreCms.Net.IRepository.UnitOfWork; using CoreCms.Net.IServices; using CoreCms.Net.IServices.baifenbingfa; using CoreCms.Net.Model.Entities; using CoreCms.Net.Utility.Helper; using Nest; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CoreCms.Net.Services.baifenbingfa { /// /// /// public class BfbfComAPIService : IBfbfComAPIService { private readonly ICoreCmsUserServices _userServices; private readonly IUnitOfWork _unitOfWork; private readonly ICoreCmsSettingServices _coreCmsSettingServices; public BfbfComAPIService(ICoreCmsUserServices userServices,IUnitOfWork unitOfWork, ICoreCmsSettingServices coreCmsSettingServices) { _userServices = userServices; _unitOfWork = unitOfWork; _coreCmsSettingServices = coreCmsSettingServices; } public async Task> SearchUserData(string s) { var ListData= await _unitOfWork.GetDbClient().Queryable().Where(x => x.isDelete == false).Select(x => new SearchUserData { Id = x.id, name = x.mobile /*+ "|" + x.userName*/ + "|" + x.nickName, }).WithCache(50).ToListAsync(); if (string.IsNullOrEmpty(s)) { return ListData; } return ListData.Where(x => x.name.Contains(s)).ToList(); } public async Task IsDictionary(int UserId) { if (UserId == 0) return false; var user=await _unitOfWork.GetDbClient().Queryable().Includes(x=>x.gradeInfo).Where(x=>x.id== UserId).WithCache(10).SingleAsync(); if (user == null) return false; if(user.gradeInfo==null) return false; var allConfigs = await _coreCmsSettingServices.GetConfigDictionaries(); var kc = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.DictionaryUserGroupKey); if (user.gradeInfo.valueKey == kc) return true; return false; } public async Task> GetGoodsCategory() { return await _unitOfWork.GetDbClient().Queryable().Where(x=>x.isShow==true).WithCache(10).ToTreeAsync(x=>x.children, x=>x.parentId,0); } public decimal CommandCustomizable(int count) { if (count > 9999) return 0; return count * 1; } public List orderedDistributors(List DataList, string latitude, string longitude) { GeoCoordinate inputLocation = new GeoCoordinate(double.Parse(longitude), double.Parse(latitude)); // 输入的经纬度 var sortedDistributors = DataList.OrderBy(d => CalculateDistance(inputLocation, new GeoCoordinate(double.Parse(d.longitude), double.Parse(d.latitude)))) .ToList(); return sortedDistributors; } /// /// 计算经纬达距离 /// /// /// /// private static double CalculateDistance(GeoCoordinate location1, GeoCoordinate location2) { const double earthRadiusKm = 6371; var dLat = ToRadians(location2.Latitude - location1.Latitude); var dLon = ToRadians(location2.Longitude - location1.Longitude); var a = Math.Sin(dLat / 2) * Math.Sin(dLat / 2) + Math.Cos(ToRadians(location1.Latitude)) * Math.Cos(ToRadians(location2.Latitude)) * Math.Sin(dLon / 2) * Math.Sin(dLon / 2); var c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a)); var distance = earthRadiusKm * c; return distance; } private static double ToRadians(double degree) { return degree * Math.PI / 180; } /// /// 获取有效校园代理 /// /// /// public async Task< List> GetDistributorsList(List PIds) { var blist= await _unitOfWork.GetDbClient().Queryable().Where(x=>x.profession=="校园代理"&&x.verifyStatus== (int)GlobalEnumVars.DistributionVerifyStatus.VerifyYes).ToListAsync(); List < DistributorSort > retlist=new List(); foreach (var item in blist) { if (string.IsNullOrEmpty(item.storeCoordinate) || item.storeCoordinate == ",") //没有定位,不加入 continue; var ldinate= item.storeCoordinate.Split(','); retlist.Add( new DistributorSort() { id = item.id, latitude = ldinate[0], longitude = ldinate[1], name = item.schoolName + ":" + item.name }); } return retlist; } public async Task< List< int>> GetOderProductsIDs(string[] OderIds) { var list= await _unitOfWork.GetDbClient().Queryable().Where(x => OderIds.Contains(x.orderId)) .Select(x => new { items = SqlFunc.Subqueryable().Where(it => it.orderId == x.orderId).ToList() }).ToListAsync(); var li=new List(); foreach (var item in list) { li.AddRange(item.items.Select(x=>x.id).ToList()); } return li; } } }