using Infrastructure.Attribute;
using Microsoft.AspNetCore.Http;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Infrastructure;
using ARW.Model;
using ARW.Repository;
using ARW.Repository.Business.LogisticsManage.DeliveryRules;
using ARW.Service.Business.IBusinessService.LogisticsManage.DeliveryRules;
using ARW.Model.Dto.Business.LogisticsManage.DeliveryRules;
using ARW.Model.Models.Business.LogisticsManage.DeliveryRules;
using ARW.Model.Vo.Business.LogisticsManage.DeliveryRules;
using Newtonsoft.Json;
using Senparc.Weixin.WxOpen.AdvancedAPIs.Tcb;
using System.Text.RegularExpressions;
using ARW.Model.Models.Business.LogisticsManage.Deliverys;
using ARW.Repository.Business.LogisticsManage.Deliverys;
using ARW.Model.Dto.Business.LogisticsManage.Deliverys;
using ARW.Model.Models.Business.ShopManager.Shops;
using ARW.Model.Vo.Business.LogisticsManage.Deliverys;
using ARW.Model.Models.Business.Custom.Regions;
using ARW.Repository.Business.Custom.Regions;
using ARW.Model.Vo.Business.Custom.Regions;
using Org.BouncyCastle.Crypto.Prng;
namespace ARW.Service.Business.BusinessService.LogisticsManage.DeliveryRules
{
///
/// 配送模板区域及运费接口实现类
///
/// @author 黎文豪
/// @date 2023-06-16
///
[AppService(ServiceType = typeof(IDeliveryRuleService), ServiceLifetime = LifeTime.Transient)]
public class DeliveryRuleServiceImpl : BaseService, IDeliveryRuleService
{
private readonly DeliveryRuleRepository _DeliveryRuleRepository;
private readonly DeliveryRepository _DeliveryRepository;
private readonly RegionRepository _RegionRepository;
public DeliveryRuleServiceImpl(DeliveryRuleRepository DeliveryRuleRepository, DeliveryRepository deliveryRepository, RegionRepository regionRepository)
{
this._DeliveryRuleRepository = DeliveryRuleRepository;
_DeliveryRepository = deliveryRepository;
_RegionRepository = regionRepository;
}
#region 业务逻辑代码
///
/// 通过配送模板guid获取配送模板所关联的配送模板区域及运费列表
///
public async Task> GetDeliveryRuleList(long deliveryGuid)
{
var query = _DeliveryRuleRepository
.Queryable()
.Where(s => s.DeliveryGuid == deliveryGuid)
.OrderBy(s => s.Create_time, OrderByType.Asc)
.Select(s => new DeliveryRuleVo
{
DeliveryRuleId = s.DeliveryRuleId,
DeliveryGuid = s.DeliveryGuid,
DeliveryRuleRegionName = s.DeliveryRuleRegion,
DeliveryRuleRegion = new List(),
DeliveryRuleRegionText = s.DeliveryRuleRegionText,
DeliveryRuleFirst = s.DeliveryRuleFirst,
DeliveryRuleFirstFee = s.DeliveryRuleFirstFee,
DeliveryRuleAdditional = s.DeliveryRuleAdditional,
DeliveryRuleAdditionalFee = s.DeliveryRuleAdditionalFee,
});
var list = await query.ToListAsync();
//foreach (var item in list)
//{
// List DeliveryRuleRegionIds = item.DeliveryRuleRegionName.Split(',').Select(int.Parse).ToList();
// var regionList = new List();
// foreach (var id in DeliveryRuleRegionIds)
// {
// var region = await _RegionRepository.GetFirstAsync(s => s.RegionId == id);
// if (region == null) throw new CustomException($"找不到Id:{id}的省市区数据");
// var data = new SecondRegionVo
// {
// Id = region.RegionId,
// Label = region.RegionName,
// Pid = region.RegionPid,
// Code = region.RegionCode
// };
// regionList.Add(data);
// }
// item.DeliveryRuleRegion = regionList;
//}
return list;
}
///
/// 通过配送模板guid获取配送模板所关联的配送模板区域及运费guid
///
/// 配送模板guid
///
public async Task> GetDeliveryRuleGuidListByDeliveryGuid(long deliveryGuid)
{
var list = await _DeliveryRuleRepository.GetListAsync(f => f.DeliveryGuid == deliveryGuid);
//return list;
return list.Select(x => x.DeliveryRuleGuid).ToList();
}
///
/// 通过配送模板guid获取配送模板所关联的配送模板区域及运费名称
///
/// 配送模板guid
///
public async Task GetDeliveryRuleNameByDeliveryGuid(long deliveryGuid)
{
var list = await _DeliveryRuleRepository
.Queryable()
.LeftJoin((s, c) => s.DeliveryRuleGuid == c.DeliveryRuleGuid)
.Where((s, c) => s.DeliveryGuid == deliveryGuid)
.Select()
.ToListAsync();
var res = list.Select(x => x.DeliveryRuleRegionText).ToArray();
return res;
//return string.Join(',', list.Select(x => x.DeliveryRuleName));
}
///
/// 新增配送模板配送模板区域及运费
///
/// 配送模板区域及运费列表
public async Task InsertDeliveryRuleAsync(List deliveryRuleList)
{
await _DeliveryRuleRepository.InsertRangeAsync(deliveryRuleList);
}
///
/// 更新配送模板配送模板区域及运费
///
/// 配送模板区域及运费列表
/// 配送模板guid
///
public async Task UpdateDeliveryRuleAsync(List deliveryRuleList, long deliveryGuid)
{
await _DeliveryRuleRepository.DeleteAsync(s => s.DeliveryGuid == deliveryGuid);
await _DeliveryRuleRepository.InsertRangeAsync(deliveryRuleList);
}
#endregion
}
}