| | |
| | | using CoreCms.Net.IRepository; |
| | | using CoreCms.Net.IRepository.UnitOfWork; |
| | | using CoreCms.Net.IServices; |
| | | using CoreCms.Net.IServices.baifenbingfa; |
| | | using CoreCms.Net.Loging; |
| | | using CoreCms.Net.Model.Entities; |
| | | using CoreCms.Net.Model.ViewModels.Basics; |
| | |
| | | private readonly ICoreCmsGoodsServices _goodsServices; |
| | | private readonly ICoreCmsDistributionOrderDetailsServices _distributionOrderDetailsServices; |
| | | private readonly ICoreCmsSettingServices _settingServices; |
| | | private readonly IBfbfComAPIService _bfbfComAPIService; |
| | | |
| | | |
| | | private readonly IUnitOfWork _unitOfWork; |
| | | public CoreCmsDistributionOrderServices(IUnitOfWork unitOfWork, ICoreCmsDistributionOrderRepository dal, ICoreCmsDistributionServices distributionServices, ICoreCmsUserBalanceServices balanceServices, ICoreCmsOrderServices orderServices, ICoreCmsUserServices userServices, ICoreCmsOrderItemServices orderItemServices, ICoreCmsProductsDistributionServices productsDistributionServices, ICoreCmsProductsServices productsServices, ICoreCmsGoodsServices goodsServices, ICoreCmsDistributionOrderDetailsServices distributionOrderDetailsServices, ICoreCmsSettingServices settingServices) |
| | | public CoreCmsDistributionOrderServices(IBfbfComAPIService bfbfComAPIService, IUnitOfWork unitOfWork, ICoreCmsDistributionOrderRepository dal, ICoreCmsDistributionServices distributionServices, ICoreCmsUserBalanceServices balanceServices, ICoreCmsOrderServices orderServices, ICoreCmsUserServices userServices, ICoreCmsOrderItemServices orderItemServices, ICoreCmsProductsDistributionServices productsDistributionServices, ICoreCmsProductsServices productsServices, ICoreCmsGoodsServices goodsServices, ICoreCmsDistributionOrderDetailsServices distributionOrderDetailsServices, ICoreCmsSettingServices settingServices) |
| | | { |
| | | this._dal = dal; |
| | | _distributionServices = distributionServices; |
| | |
| | | _settingServices = settingServices; |
| | | base.BaseDal = dal; |
| | | _unitOfWork = unitOfWork; |
| | | _bfbfComAPIService = bfbfComAPIService; |
| | | } |
| | | |
| | | |
| | |
| | | if (user is { parentId: > 0 }) |
| | | { |
| | | //获取购物明细 |
| | | var orderItems = await _orderItemServices.QueryListByClauseAsync(p => p.orderId == order.orderId); |
| | | var orderItems = await _unitOfWork.GetDbClient().Queryable<CoreCmsOrderItem>().Where(p => p.orderId == order.orderId).Includes(x => x.productInfo).ToListAsync(); |
| | | //await _orderItemServices.QueryListByClauseAsync(p => p.orderId == order.orderId); |
| | | var goodIds = orderItems.Select(p => p.goodsId).ToList(); |
| | | var productIds = orderItems.Select(p => p.productId).ToList(); |
| | | //获取货品数据 |
| | |
| | | var user = await _userServices.QueryByClauseAsync(p => p.id == userId); |
| | | if (user != null) |
| | | { |
| | | |
| | | var commission = await _distributionServices.GetGradeAndCommission(user.id); |
| | | if (commission.status && commission.data != null) //不是经销商的,不返利。 |
| | | { |
| | |
| | | //直返本级 |
| | | decimal amount = 0; |
| | | var distributionOrderDetails = new List<CoreCmsDistributionOrderDetails>(); |
| | | |
| | | //百分兵法判断订单用户是否是经销商 |
| | | bool OderUserIsDic = await _bfbfComAPIService.IsDictionary(order.userId); |
| | | foreach (var item in orderItems) |
| | | { |
| | | var orderDetails = new CoreCmsDistributionOrderDetails(); |
| | |
| | | //如果去掉优惠需要负了,就为0 |
| | | if (itemAmount < 0) itemAmount = 0; |
| | | |
| | | |
| | | |
| | | mathMoney = level switch |
| | | { |
| | | //一级分销 |
| | |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | mathMoney = level switch |
| | | //百分兵法基数按 |
| | | switch (level) |
| | | { |
| | | 1 when productsDistribution.levelOne > 0 => Math.Round( |
| | | productsDistribution.levelOne * item.nums, 2), |
| | | 2 when productsDistribution.levelTwo > 0 => Math.Round( |
| | | productsDistribution.levelTwo * item.nums, 2), |
| | | 3 when productsDistribution.levelThree > 0 => Math.Round( |
| | | productsDistribution.levelThree * item.nums, 2), |
| | | _ => mathMoney |
| | | }; |
| | | case 1 : |
| | | |
| | | if(OderUserIsDic) |
| | | //是经销商购买 |
| | | mathMoney = item.productInfo.distributionCutMoney; |
| | | else |
| | | //非经销商购买 |
| | | mathMoney= item.productInfo.cutMoney ; |
| | | |
| | | break; |
| | | case 2 when productsDistribution.levelTwo > 0: |
| | | break; |
| | | case 3 when productsDistribution.levelThree>0: |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | //原佣金计算方法 |
| | | //mathMoney = level switch |
| | | //{ |
| | | // 1 when productsDistribution.levelOne > 0 => Math.Round( |
| | | // productsDistribution.levelOne * item.nums, 2), |
| | | // 2 when productsDistribution.levelTwo > 0 => Math.Round( |
| | | // productsDistribution.levelTwo * item.nums, 2), |
| | | // 3 when productsDistribution.levelThree > 0 => Math.Round( |
| | | // productsDistribution.levelThree * item.nums, 2), |
| | | // _ => mathMoney |
| | | //}; |
| | | } |
| | | |
| | | amount += mathMoney; |