liaoxujun@qq.com
2024-04-10 05d32271f646149609d8b42016e11cf95d8d5a84
CoreCms.Net.Services/Distribution/CoreCmsDistributionOrderServices.cs
@@ -17,6 +17,7 @@
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;
@@ -45,10 +46,11 @@
        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;
@@ -63,6 +65,7 @@
            _settingServices = settingServices;
            base.BaseDal = dal;
            _unitOfWork = unitOfWork;
            _bfbfComAPIService = bfbfComAPIService;
        }
@@ -101,7 +104,8 @@
            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();
                //获取货品数据
@@ -142,6 +146,7 @@
            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) //不是经销商的,不返利。
                {
@@ -149,7 +154,8 @@
                    //直返本级
                    decimal amount = 0;
                    var distributionOrderDetails = new List<CoreCmsDistributionOrderDetails>();
                    //百分兵法判断订单用户是否是经销商
                    bool OderUserIsDic = await _bfbfComAPIService.IsDictionary(order.userId);
                    foreach (var item in orderItems)
                    {
                        var orderDetails = new CoreCmsDistributionOrderDetails();
@@ -197,6 +203,8 @@
                            //如果去掉优惠需要负了,就为0
                            if (itemAmount < 0) itemAmount = 0;
                            mathMoney = level switch
                            {
                                //一级分销
@@ -230,17 +238,37 @@
                            {
                                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;