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