From cc170291673472d3cda8d7ea77f6bd3a3b5dbb83 Mon Sep 17 00:00:00 2001
From: username@email.com <yzy2002yzy@163.com>
Date: 星期一, 09 九月 2024 14:06:09 +0800
Subject: [PATCH] 增加了一些统计修改

---
 CoreCms.Net.Services/Order/CoreCmsOrderServices.cs |  155 ++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 144 insertions(+), 11 deletions(-)

diff --git a/CoreCms.Net.Services/Order/CoreCmsOrderServices.cs b/CoreCms.Net.Services/Order/CoreCmsOrderServices.cs
index 6f44512..0ee675d 100644
--- a/CoreCms.Net.Services/Order/CoreCmsOrderServices.cs
+++ b/CoreCms.Net.Services/Order/CoreCmsOrderServices.cs
@@ -81,6 +81,8 @@
         private readonly IRedisOperationRepository _redisOperationRepository;
         private readonly ICoreCmsUserWeChatInfoServices _userWeChatInfoServices;
         private readonly WeChat.Service.HttpClients.IWeChatApiHttpClientFactory _weChatApiHttpClientFactory;
+        private readonly ICoreCmsPlanOrderServices _planOrderServices;
+     
 
         private IUnitOfWork _unitOfWork;
 
@@ -108,7 +110,8 @@
             , ICoreCmsPaymentsServices paymentsServices
             , ICoreCmsBillRefundServices billRefundServices
             , ICoreCmsBillLadingServices billLadingServices
-            , ICoreCmsBillReshipServices billReshipServices, ICoreCmsMessageCenterServices messageCenterServices, ICoreCmsGoodsCommentServices goodsCommentServices, ISysTaskLogServices taskLogServices, ICoreCmsPromotionRecordServices promotionRecordServices, IRedisOperationRepository redisOperationRepository, ICoreCmsUserWeChatInfoServices userWeChatInfoServices, IWeChatApiHttpClientFactory weChatApiHttpClientFactory, IUnitOfWork unitOfWork)
+            , ICoreCmsBillReshipServices billReshipServices, ICoreCmsMessageCenterServices messageCenterServices, ICoreCmsGoodsCommentServices goodsCommentServices, ISysTaskLogServices taskLogServices, ICoreCmsPromotionRecordServices promotionRecordServices, IRedisOperationRepository redisOperationRepository, ICoreCmsUserWeChatInfoServices userWeChatInfoServices, IWeChatApiHttpClientFactory weChatApiHttpClientFactory, IUnitOfWork unitOfWork
+            , ICoreCmsPlanOrderServices planOrderServices)
         {
             this._dal = dal;
             base.BaseDal = dal;
@@ -145,6 +148,7 @@
             _userWeChatInfoServices = userWeChatInfoServices;
             _weChatApiHttpClientFactory = weChatApiHttpClientFactory;
             _unitOfWork = unitOfWork;
+            _planOrderServices = planOrderServices;
         }
 
         #region 鏌ヨ鍥㈣喘绉掓潃涓嬪崟鏁伴噺锛堣幏鍙栬揣鍝佺殑绉掓潃鍥㈣喘鏁版嵁锛�
@@ -226,8 +230,9 @@
         /// <param name="requireOrder">寰俊鑷畾涔夌粍浠讹紙鏄惁闇�瑕佹帹鍗曪紝1:闇�瑕侊紝0:涓嶉渶瑕侊級</param>
         /// <param name="requiredFundType">寰俊鑷畾涔夌粍浠讹紙requireOrder = 1鏃剁敓鏁堬紝0锛岄潪浜岀骇鍟嗘埛鍙疯鍗曪紝1锛屼簩绾у晢鎴峰彿璁㈠崟锛�2锛屼袱绉嶆柟寮忕殕鍙紙鍚庣画鍙細瀛樺湪1锛�)</param>
         /// <param name="traceId">寰俊鑷畾涔夌粍浠讹紙璺熻釜ID锛屾湁鏁堟湡鍗佸垎閽燂紝浼氬奖鍝嶄富鎾綊鍥犮�佸垎浜憳褰掑洜绛夛紝闇�鍒涘缓璁㈠崟鍓嶈皟鐢紝璋冪敤鐢熸垚璁㈠崟 api 鏃堕渶浼犲叆璇ュ弬鏁�)</param>
+        /// <param name="planorderId">璁″垝璁㈠崟id</param>
         /// <returns></returns>
-        public async Task<WebApiCallBack> ToAdd(int userId, int orderType, string cartIds, int receiptType, int ushipId, int storeId, string ladingName, string ladingMobile, string memo, int point, string couponCode, int source, int scene, int taxType, string taxName, string taxCode, int objectId, int teamId, int requireOrder, int requiredFundType, string traceId)
+        public async Task<WebApiCallBack> ToAdd(int userId, int orderType, string cartIds, int receiptType, int ushipId, int storeId, string ladingName, string ladingMobile, string memo, int point, string couponCode, int source, int scene, int taxType, string taxName, string taxCode, int objectId, int teamId, int requireOrder, int requiredFundType, string traceId, string planorderId)
         {
             var jm = new WebApiCallBack() { methodDescription = "鍒涘缓璁㈠崟" };
             try
@@ -283,6 +288,7 @@
                 order.confirmStatus = (int)GlobalEnumVars.OrderConfirmStatus.ReceiptNotConfirmed;
                 order.createTime = DateTime.Now;
                 order.scene = scene;
+                order.planorderId = planorderId;
 
                 //涓婇潰淇濆瓨濂借鍗曡〃锛屼笅闈繚瀛樿鍗曠殑鍏朵粬淇℃伅
                 if (orderItems == null)
@@ -510,7 +516,105 @@
                 }
                 else
                 {
-                    await _messageCenterServices.SendMessage(order.userId, GlobalEnumVars.PlatformMessageTypes.CreateOrder.ToString(), JObject.FromObject(order));
+                    if (!string.IsNullOrEmpty(planorderId))
+                    {
+                        //鏌ヨ璁″垝璁㈠崟
+                      var planOrder = await _planOrderServices.QueryByIdAsync(planorderId);
+                        //涓婇潰淇濆瓨濂借鍗曡〃锛屼笅闈繚瀛樿鍗曠殑鍏朵粬淇℃伅
+                        if (planOrder == null || planOrder.isdelete == true)
+                        {
+                            _unitOfWork.RollbackTran();
+                            jm.msg = "璁″垝璁㈠崟鑾峰彇澶辫触";
+                            return jm;
+                        }
+                        //if (planOrder.status != 2)
+                        //{
+                        //    _unitOfWork.RollbackTran();
+                        //    jm.msg = "璁″垝璁㈠崟娌℃湁閿佸崟";
+                        //    return jm;
+                        //}
+
+                        if ((planOrder.keYongAmount - planOrder.huaFeiAmount - order.orderAmount)<0)
+                        {
+                            _unitOfWork.RollbackTran();
+                            jm.msg = "璁″垝璁㈠崟鍙敤浣欓涓嶈冻";
+                            return jm;
+                        }
+                        planOrder.huaFeiAmount = planOrder.huaFeiAmount + order.orderAmount;
+                        //淇敼璁″垝璁㈠崟鐨勫凡鑺辫垂閲戦
+                       var crr  = await _planOrderServices.UpdateAsync(planOrder);
+
+
+
+                        //鍒涘缓鏀粯鍗�
+                        var billPayments = new CoreCmsBillPayments();
+                        billPayments.paymentId = CommonHelper.GetSerialNumberType((int)GlobalEnumVars.SerialNumberType.鏀粯鍗曠紪鍙�);
+                        billPayments.sourceId = order.orderId;
+                        billPayments.money = order.orderAmount;
+                        billPayments.userId = userId;
+                        billPayments.type = order.orderType;
+                        billPayments.status = (int)GlobalEnumVars.BillPaymentsStatus.Payed;
+                        billPayments.paymentCode = GlobalEnumVars.PaymentsTypes.planorderpay.ToString();
+                        billPayments.ip = _httpContextAccessor.HttpContext?.Connection.RemoteIpAddress != null ? _httpContextAccessor.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString() : "127.0.0.1";
+                        billPayments.payedMsg = "璁″垝璁㈠崟鐩存帴鏀粯鎴愬姛";
+                        billPayments.parameters = "";
+                        billPayments.createTime = DateTime.Now;
+                        billPayments.updateTime = DateTime.Now;
+
+
+                        await _billPaymentsServices.InsertAsync(billPayments);
+
+                        //璋冩暣鐩存帴鏀粯鎴愬姛
+                        await _dal.UpdateAsync(p => new CoreCmsOrder()
+                        {
+                            payedAmount = order.orderAmount,
+                            paymentTime = DateTime.Now,
+                            updateTime = DateTime.Now,
+                            paymentCode = GlobalEnumVars.PaymentsTypes.planorderpay.ToString(),
+                            payStatus = (int)GlobalEnumVars.OrderPayStatus.Yes,
+                            orderAmount = order.orderAmount
+                        }, p => p.orderId == order.orderId);
+
+                        //璁板綍璁㈠崟鏃ュ織
+                        orderLog = new CoreCmsOrderLog
+                        {
+                            userId = userId,
+                            orderId = order.orderId,
+                            type = (int)GlobalEnumVars.OrderLogTypes.LOG_TYPE_PAY,
+                            msg = "璁″垝璁㈠崟鐩存帴鏀粯鎴愬姛",
+                            data = JsonConvert.SerializeObject(order),
+                            createTime = DateTime.Now
+                        };
+                        await _orderLogServices.InsertAsync(orderLog);
+
+                        //濡傛灉鏄棬搴楄嚜鎻愶紝搴旇鑷姩璺宠繃鍙戣揣锛岀敓鎴愭彁璐у崟淇℃伅锛屼娇鐢ㄦ彁璐у崟鏍搁攢銆�
+                        if (order.receiptType == (int)GlobalEnumVars.OrderReceiptType.SelfDelivery)
+                        {
+                            var allConfigs = await _settingServices.GetConfigDictionaries();
+                            var storeOrderAutomaticDelivery = CommonHelper
+                                .GetConfigDictionary(allConfigs, SystemSettingConstVars.StoreOrderAutomaticDelivery)
+                                .ObjectToInt(1);
+                            if (storeOrderAutomaticDelivery == 1)
+                            {
+                                //璁㈠崟鑷姩鍙戣揣
+                                await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.OrderAutomaticDelivery, JsonConvert.SerializeObject(order));
+                            }
+                        }
+
+                        //鐢ㄦ埛鍗囩骇澶勭悊
+                       // await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.UserUpGrade, JsonConvert.SerializeObject(order));
+                        //鍙戦�佹敮浠樻垚鍔熶俊鎭�,澧炲姞鍙戦�佸唴瀹�
+                        await _messageCenterServices.SendMessage(order.userId, GlobalEnumVars.PlatformMessageTypes.OrderPayed.ToString(), JObject.FromObject(order));
+                        await _messageCenterServices.SendMessage(order.userId, GlobalEnumVars.PlatformMessageTypes.SellerOrderNotice.ToString(), JObject.FromObject(order));
+                        //鏄撹仈浜戞墦鍗版満鎵撳嵃
+                        await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.OrderPrint, JsonConvert.SerializeObject(order));
+
+                    }
+                    else
+                    {
+                        await _messageCenterServices.SendMessage(order.userId, GlobalEnumVars.PlatformMessageTypes.CreateOrder.ToString(), JObject.FromObject(order));
+                    }
+                      
                 }
 
                 _unitOfWork.CommitTran();
@@ -563,6 +667,7 @@
                 order.shipAddress = userShipInfo.street + " " + userShipInfo.address;
                 order.shipName = userShipInfo.name;
                 order.shipMobile = userShipInfo.mobile;
+                order.shipCoordinate = userShipInfo.latitude + "," + userShipInfo.longitude;
 
                 var ship = await _shipServices.GetShip(userShipInfo.areaId);
                 if (ship != null)
@@ -706,7 +811,10 @@
                     weight = Math.Round(item.weight * item.nums, 2),
                     sendNums = 0,
                     addon = item.products.spesDesc,
-                    createTime = DateTime.Now
+                    createTime = DateTime.Now,
+                     CustomizableMoney= item.CustomizableMoney,
+                    IsCustomizable = item.isCustomizable,
+
                 };
                 if (item.products.promotionList.Count > 0)
                 {
@@ -801,12 +909,31 @@
             order.aftersalesItem = await _billAftersalesServices.QueryListByClauseAsync(p => p.orderId == order.orderId);
             //鍙戣揣鍗�
             order.delivery = await _billDeliveryServices.QueryListByClauseAsync(p => p.orderId == order.orderId);
+
             if (order.delivery != null && order.delivery.Any())
             {
                 foreach (var item in order.delivery)
                 {
-                    var outFirstAsync = await _logisticsServices.QueryByClauseAsync(p => p.logiCode == item.logiCode);
-                    item.logiName = outFirstAsync != null ? outFirstAsync.logiName : item.logiCode;
+                    if (item.logiCode == "Distributor")
+                    {
+                        //鏄緵搴斿晢閫佽揣
+                     var ds=   await  _unitOfWork.GetDbClient().Queryable<CoreCmsDistribution>().Where(x => x.id == item.sendDistributionID).FirstAsync();
+                        if(ds==null)
+                        {
+                            item.logiName = "缁忛攢鍟嗛厤閫侊紝浣嗘槸缁忛攢鍟嗗凡缁忛��鍑烘垨鑰呬笉瀛樺湪";
+                        }
+                        else
+                        {
+                            item.logiName = $"缁忛攢鍟嗛厤閫侊紙{ds.schoolName}--{ds.name}锛�";
+                        }
+                        item.distributionAcceptStr = item.sendDistributionAccept?.GetDescription() ?? "缁忛攢鍟嗘湭纭鎺ュ彈閰嶉��";
+
+                    }
+                    else
+                    {
+                        var outFirstAsync = await _logisticsServices.QueryByClauseAsync(p => p.logiCode == item.logiCode);
+                        item.logiName = outFirstAsync != null ? outFirstAsync.logiName : item.logiCode;
+                    }
                 }
             }
             //鑾峰彇鎻愯揣闂ㄥ簵
@@ -1780,6 +1907,7 @@
                 shipMobile = orderInfo[0].shipMobile,
                 logisticsId = orderInfo[0].logisticsId,
                 logisticsName = orderInfo[0].logisticsName,
+                Coordinate= orderInfo[0].shipCoordinate,
                 items = new List<CoreCmsOrderItem>(),
                 orders = orderInfo  //鎶婅鍗曚俊鎭啑浣欎笂鍘�
             };
@@ -1851,7 +1979,12 @@
             //鏄惁鏈夎鍛�
             if (string.IsNullOrEmpty(jm.msg))
             {
-                jm.msg = "璇锋敞鎰忥紒鍚堝苟鍙戣揣璁㈠崟涓瓨鍦細" + jm.msg + "銆傜‘瀹氬彂璐у悧锛�";
+                //澶氬湴鍧�澶氱敤鎴风姝� 鍚堝苟鍙戣揣 20240605
+
+                jm.msg = jm.msg + "銆備笉鍙悎骞跺彂璐�";
+                jm.status = false;
+                return jm;
+               // jm.msg = "璇锋敞鎰忥紒鍚堝苟鍙戣揣璁㈠崟涓瓨鍦細" + jm.msg + "銆傜‘瀹氬彂璐у悧锛�";
             }
             jm.status = true;
             jm.data = newOrder;
@@ -2018,10 +2151,10 @@
         /// <param name="deliveryCompanyId">绗笁鏂瑰鎺ョ墿娴佺紪鐮�</param>
         /// <returns></returns>
         public async Task<WebApiCallBack> BatchShip(string[] ids, string logiCode, string logiNo,
-            Dictionary<int, int> items, string shipName, string shipMobile, string shipAddress, string memo, int storeId = 0, int shipAreaId = 0, string deliveryCompanyId = "")
+            Dictionary<int, int> items, string shipName, string shipMobile, string shipAddress, string memo, int storeId = 0, int shipAreaId = 0, string deliveryCompanyId = "", int? sendDistributionID = null)
         {
 
-            var result = await _billDeliveryServices.BatchShip(ids, logiCode, logiNo, items, storeId, shipName, shipMobile, shipAreaId, shipAddress, memo, deliveryCompanyId);
+            var result = await _billDeliveryServices.BatchShip(ids, logiCode, logiNo, items, storeId, shipName, shipMobile, shipAreaId, shipAddress, memo, deliveryCompanyId,sendDistributionID);
             return result;
 
         }
@@ -2045,9 +2178,9 @@
         /// <param name="deliveryCompanyId">绗笁鏂瑰鎺ョ墿娴佺紪鐮�</param>
         /// <returns></returns>
         public async Task<WebApiCallBack> Ship(string orderId, string logiCode, string logiNo,
-            Dictionary<int, int> items, string shipName, string shipMobile, string shipAddress, string memo, int storeId = 0, int shipAreaId = 0, string deliveryCompanyId = "")
+            Dictionary<int, int> items, string shipName, string shipMobile, string shipAddress, string memo, int storeId = 0, int shipAreaId = 0, string deliveryCompanyId = "", int? sendDistributionID = null)
         {
-            var result = await _billDeliveryServices.Ship(orderId, logiCode, logiNo, items, storeId, shipName, shipMobile, shipAreaId, shipAddress, memo, deliveryCompanyId);
+            var result = await _billDeliveryServices.Ship(orderId, logiCode, logiNo, items, storeId, shipName, shipMobile, shipAreaId, shipAddress, memo, deliveryCompanyId,sendDistributionID);
             return result;
 
         }

--
Gitblit v1.9.1