From 557c2711a3e103ebc3d0492344eca9730d5e92b2 Mon Sep 17 00:00:00 2001
From: 移动系统liao <liaoxujun@qq.com>
Date: 星期一, 17 二月 2025 10:47:47 +0800
Subject: [PATCH] 增加司机配送单超时处理任务,防止一直不停手机定位信息,

---
 CoreCms.Net.Services/Distribution/CoreCmsDistributionOrderServices.cs |   92 ++++++++++++++++++++++++++++++++++-----------
 1 files changed, 69 insertions(+), 23 deletions(-)

diff --git a/CoreCms.Net.Services/Distribution/CoreCmsDistributionOrderServices.cs b/CoreCms.Net.Services/Distribution/CoreCmsDistributionOrderServices.cs
index fedf49c..62d428f 100644
--- a/CoreCms.Net.Services/Distribution/CoreCmsDistributionOrderServices.cs
+++ b/CoreCms.Net.Services/Distribution/CoreCmsDistributionOrderServices.cs
@@ -1,10 +1,10 @@
 /***********************************************************************
- *            Project: CoreCms
- *        ProjectName: 鏍稿績鍐呭绠$悊绯荤粺                                
- *                Web: https://www.corecms.net                      
- *             Author: 澶х伆鐏�                                          
- *              Email: jianweie@163.com                                
- *         CreateTime: 2021/1/31 21:45:10
+ *            Project: baifenBinfa
+ *        ProjectName: 鐧惧垎鍏垫硶绠$悊绯荤粺                               
+ *                Web: http://chuanyin.com                     
+ *             Author:                                        
+ *              Email:                               
+ *         CreateTime: 202403/02   
  *        Description: 鏆傛棤
  ***********************************************************************/
 
@@ -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;
@@ -30,7 +31,7 @@
 namespace CoreCms.Net.Services
 {
     /// <summary>
-    /// 鍒嗛攢鍟嗚鍗曡褰曡〃 鎺ュ彛瀹炵幇
+    /// 缁忛攢鍟嗚鍗曡褰曡〃 鎺ュ彛瀹炵幇
     /// </summary>
     public class CoreCmsDistributionOrderServices : BaseServices<CoreCmsDistributionOrder>, ICoreCmsDistributionOrderServices
     {
@@ -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,14 +146,16 @@
             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) //涓嶆槸鍒嗛攢鍟嗙殑锛屼笉杩斿埄銆�
+                if (commission.status && commission.data != null) //涓嶆槸缁忛攢鍟嗙殑锛屼笉杩斿埄銆�
                 {
                     var ommissionDto = commission.data as DistributionDto;
                     //鐩磋繑鏈骇
                     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,21 +238,41 @@
                             {
                                 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;
-                        orderDetails.amount = mathMoney;
+                        amount += mathMoney*item.nums;
+                        orderDetails.amount = mathMoney * item.nums;
                         distributionOrderDetails.Add(orderDetails);
 
                     }
@@ -364,6 +392,24 @@
         }
 
 
+
+        /// <summary>
+        /// 缁忛攢涓婇厤閫佽垂缁撶畻涓撶敤
+        /// </summary>
+        /// <param name="list"></param>
+        /// <returns></returns>
+        private async IAsyncEnumerable<WebApiCallBack> ChangeForEachForDistributionDelivery(List<CoreCmsDistributionOrder> list)
+        {
+            foreach (var item in list)
+            {
+                //閽辨尓鍒颁細鍛樹綑棰濋噷闈�
+                var result = await _balanceServices.Change(item.userId, (int)GlobalEnumVars.UserBalanceSourceTypes.DistributionDelivery,
+                    item.amount, item.orderId);
+
+                yield return result;
+            }
+        }
+
         #endregion
 
         #region 浣滃簾璁㈠崟

--
Gitblit v1.9.1