From 626943b5ba84ce44bc19f4c3b8e8e94638bec733 Mon Sep 17 00:00:00 2001 From: username@email.com <yzy2002yzy@163.com> Date: 星期一, 09 九月 2024 14:15:59 +0800 Subject: [PATCH] 查单 --- CoreCms.Net.Services/Order/CoreCmsOrderServices.cs | 390 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 374 insertions(+), 16 deletions(-) diff --git a/CoreCms.Net.Services/Order/CoreCmsOrderServices.cs b/CoreCms.Net.Services/Order/CoreCmsOrderServices.cs index 0ee675d..af659b2 100644 --- a/CoreCms.Net.Services/Order/CoreCmsOrderServices.cs +++ b/CoreCms.Net.Services/Order/CoreCmsOrderServices.cs @@ -31,6 +31,7 @@ using CoreCms.Net.Utility.Extensions; using CoreCms.Net.Utility.Helper; using CoreCms.Net.WeChat.Service.HttpClients; +using Essensoft.Paylink.Alipay.Domain; using Microsoft.AspNetCore.Http; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -38,6 +39,7 @@ using SKIT.FlurlHttpClient.Wechat.Api.Models; using SqlSugar; using Yitter.IdGenerator; +using static SKIT.FlurlHttpClient.Wechat.Api.Models.CgibinUserInfoBatchGetRequest.Types; using static SKIT.FlurlHttpClient.Wechat.Api.Models.ChannelsECLeagueHeadSupplierOrderGetResponse.Types.CommssionOrder.Types.OrderDetail.Types; @@ -492,6 +494,13 @@ }; await _orderLogServices.InsertAsync(orderLog); + + //鎷嗗崟 + var jms = await Chaidan(order.orderId); + var orderchai = await _dal.QueryByClauseAsync(p => p.orderId == order.orderId); + orderchai.Orderitems = await _orderItemServices.QueryListByClauseAsync(p => p.orderId == order.orderId); + + //濡傛灉鏄棬搴楄嚜鎻愶紝搴旇鑷姩璺宠繃鍙戣揣锛岀敓鎴愭彁璐у崟淇℃伅锛屼娇鐢ㄦ彁璐у崟鏍搁攢銆� if (order.receiptType == (int)GlobalEnumVars.OrderReceiptType.SelfDelivery) { @@ -502,17 +511,17 @@ if (storeOrderAutomaticDelivery == 1) { //璁㈠崟鑷姩鍙戣揣 - await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.OrderAutomaticDelivery, JsonConvert.SerializeObject(order)); + await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.OrderAutomaticDelivery, JsonConvert.SerializeObject(orderchai)); } } //鐢ㄦ埛鍗囩骇澶勭悊 - await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.UserUpGrade, JsonConvert.SerializeObject(order)); + await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.UserUpGrade, JsonConvert.SerializeObject(orderchai)); //鍙戦�佹敮浠樻垚鍔熶俊鎭�,澧炲姞鍙戦�佸唴瀹� - 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 _messageCenterServices.SendMessage(order.userId, GlobalEnumVars.PlatformMessageTypes.OrderPayed.ToString(), JObject.FromObject(orderchai)); + await _messageCenterServices.SendMessage(order.userId, GlobalEnumVars.PlatformMessageTypes.SellerOrderNotice.ToString(), JObject.FromObject(orderchai)); //鏄撹仈浜戞墦鍗版満鎵撳嵃 - await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.OrderPrint, JsonConvert.SerializeObject(order)); + await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.OrderPrint, JsonConvert.SerializeObject(orderchai)); } else { @@ -587,6 +596,12 @@ }; await _orderLogServices.InsertAsync(orderLog); + + //鎷嗗崟 + var jms = await Chaidan(order.orderId); + var orderchai = await _dal.QueryByClauseAsync(p => p.orderId == order.orderId); + orderchai.Orderitems = await _orderItemServices.QueryListByClauseAsync(p => p.orderId == order.orderId); + //濡傛灉鏄棬搴楄嚜鎻愶紝搴旇鑷姩璺宠繃鍙戣揣锛岀敓鎴愭彁璐у崟淇℃伅锛屼娇鐢ㄦ彁璐у崟鏍搁攢銆� if (order.receiptType == (int)GlobalEnumVars.OrderReceiptType.SelfDelivery) { @@ -597,17 +612,20 @@ if (storeOrderAutomaticDelivery == 1) { //璁㈠崟鑷姩鍙戣揣 - await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.OrderAutomaticDelivery, JsonConvert.SerializeObject(order)); + await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.OrderAutomaticDelivery, JsonConvert.SerializeObject(orderchai)); } } + //缁撲剑澶勭悊 + await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.OrderAgentOrDistribution, JsonConvert.SerializeObject(orderchai)); + //鐢ㄦ埛鍗囩骇澶勭悊 - // await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.UserUpGrade, JsonConvert.SerializeObject(order)); + await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.UserUpGrade, JsonConvert.SerializeObject(orderchai)); //鍙戦�佹敮浠樻垚鍔熶俊鎭�,澧炲姞鍙戦�佸唴瀹� - 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 _messageCenterServices.SendMessage(order.userId, GlobalEnumVars.PlatformMessageTypes.OrderPayed.ToString(), JObject.FromObject(orderchai)); + await _messageCenterServices.SendMessage(order.userId, GlobalEnumVars.PlatformMessageTypes.SellerOrderNotice.ToString(), JObject.FromObject(orderchai)); //鏄撹仈浜戞墦鍗版満鎵撳嵃 - await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.OrderPrint, JsonConvert.SerializeObject(order)); + await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.OrderPrint, JsonConvert.SerializeObject(orderchai)); } else @@ -1628,6 +1646,13 @@ await _invoiceServices.InsertAsync(taxInfo); } + //鎷嗗崟 + var jms = await Chaidan(order.orderId); + var orderchai = await _dal.QueryByClauseAsync(p => p.orderId == order.orderId); + orderchai.Orderitems = await _orderItemServices.QueryListByClauseAsync(p => p.orderId == order.orderId); + + + //濡傛灉鏄棬搴楄嚜鎻愶紝搴旇鑷姩璺宠繃鍙戣揣锛岀敓鎴愭彁璐у崟淇℃伅锛屼娇鐢ㄦ彁璐у崟鏍搁攢銆� if (order.receiptType == (int)GlobalEnumVars.OrderReceiptType.SelfDelivery) { @@ -1638,7 +1663,7 @@ if (storeOrderAutomaticDelivery == 1) { //璁㈠崟鑷姩鍙戣揣 - await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.OrderAutomaticDelivery, JsonConvert.SerializeObject(order)); + await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.OrderAutomaticDelivery, JsonConvert.SerializeObject(orderchai)); } } @@ -1651,16 +1676,16 @@ //} //缁撲剑澶勭悊 - await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.OrderAgentOrDistribution, JsonConvert.SerializeObject(order)); + await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.OrderAgentOrDistribution, JsonConvert.SerializeObject(orderchai)); //鏄撹仈浜戞墦鍗版満鎵撳嵃 - await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.OrderPrint, JsonConvert.SerializeObject(order)); + await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.OrderPrint, JsonConvert.SerializeObject(orderchai)); //鍙戦�佹敮浠樻垚鍔熶俊鎭�,澧炲姞鍙戦�佸唴瀹� - 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 _messageCenterServices.SendMessage(order.userId, GlobalEnumVars.PlatformMessageTypes.OrderPayed.ToString(), JObject.FromObject(orderchai)); + await _messageCenterServices.SendMessage(order.userId, GlobalEnumVars.PlatformMessageTypes.SellerOrderNotice.ToString(), JObject.FromObject(orderchai)); //鐢ㄦ埛鍗囩骇澶勭悊 - await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.UserUpGrade, JsonConvert.SerializeObject(order)); + await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.UserUpGrade, JsonConvert.SerializeObject(orderchai)); } } @@ -2709,5 +2734,338 @@ } #endregion + + + #region 璁㈠崟鎷嗗崟 + + /// <summary> + /// 璁㈠崟鎷嗗崟(鏍规嵁鍟嗗搧鎵�灞炲璁㈠崟杩涜鎷嗗崟) + /// </summary> + /// <param name="orderId">璁㈠崟缂栧彿</param> + /// <returns></returns> + public async Task<WebApiCallBack> Chaidan(string orderId) + { + var jm = new WebApiCallBack() { msg = "璁㈠崟鎷嗗崟澶辫触" }; + + //鑾峰彇璁㈠崟 + var order = await _dal.QueryByClauseAsync(p => p.orderId == orderId); + if (order == null) + { + return jm; + } + //鏌ヨ璁㈠崟鏄庣粏 + //璁㈠崟璇︽儏(瀛愯揣鍝佹暟鎹�) + var orderItems = await _orderItemServices.QueryListByClauseAsync(p => p.orderId == order.orderId); + var goodsids = orderItems.Select(x => x.goodsId).ToArray(); + //鏌ヨ璁㈠崟鍖呭惈鐨勮揣鍝� + var coreCmsGoods = await _goodsServices.QueryListByClauseAsync(p => goodsids.Contains(p.id)); + coreCmsGoods = coreCmsGoods.OrderBy(x => x.publisherId).ToList(); + //鍒ゆ柇璁㈠崟鏄惁灞炰簬澶氫釜渚涘簲鍟嗭紝濡傛灉灞炰簬澶氫釜渚涘簲鍟嗭紝鍒欐媶鍗曞彂璐� + int publisherIdcount = 1 ; + int publisherId = coreCmsGoods[0].publisherId.HasValue? coreCmsGoods[0].publisherId.Value : 0; + + for (int i = 1; i < coreCmsGoods.Count; i++) + { + int publisherIdnow = coreCmsGoods[i].publisherId.HasValue ? coreCmsGoods[i].publisherId.Value : 0; + + if ( publisherId == publisherIdnow) + { + continue; + }else + { + publisherIdcount += 1; + } + } + + + if (publisherIdcount <= 1) + { + //淇敼璁㈠崟鐨勮揣鏉冧汉 + if (coreCmsGoods[0].publisherId.HasValue) + { + order.publisherId = coreCmsGoods[0].publisherId; + await _dal.UpdateAsync(order); + } + jm.status = true; + jm.msg = "璁㈠崟涓嶉渶瑕佹媶鍗�"; + return jm; + } + + foreach (var orderItem in orderItems) + { + var coreCmsGoods1 = coreCmsGoods.Where(x => x.id == orderItem.goodsId).FirstOrDefault(); + if (coreCmsGoods1 != null) + { + orderItem.publisherId = coreCmsGoods1.publisherId; + } + } + orderItems = orderItems.OrderBy(x => x.publisherId).ToList() ; + //璁㈠崟鍟嗗搧鎬讳环 + var amount = orderItems.Sum(x => x.amount); + //寮�濮嬫媶鍗� + int orderItemscount = 1; + while(orderItemscount < orderItems.Count) + { + if (orderItems[orderItemscount].publisherId != orderItems[orderItemscount - 1].publisherId) + { + //褰撳墠渚涘簲鍟嗙殑鎵�鏈夊晢鍝� + var coreCmsOrderItems = orderItems.Where(x=>x.publisherId == orderItems[orderItemscount].publisherId).ToList(); + var coreCmsamount = coreCmsOrderItems.Sum(x => x.amount); + //褰撳墠渚涘簲鍟嗘墍鍗犲晢鍝佷环鏍兼瘮鍊� + var bizhi = coreCmsamount / amount; + + //鐢熸垚鏂扮殑璁㈠崟 + var coreCmsOrder = new CoreCmsOrder(); + coreCmsOrder.orderId = CommonHelper.GetSerialNumberType((int)GlobalEnumVars.SerialNumberType.璁㈠崟缂栧彿); + if (order.goodsAmount > 0) + { + coreCmsOrder.goodsAmount = Math.Round(order.goodsAmount * bizhi,2); + order.goodsAmount = order.goodsAmount - coreCmsOrder.goodsAmount; + } + else + { + coreCmsOrder.goodsAmount = 0; + } + + if (order.payedAmount > 0) + { + coreCmsOrder.payedAmount = Math.Round(order.payedAmount * bizhi, 2); + order.payedAmount = order.payedAmount - coreCmsOrder.payedAmount; + } + else + { + coreCmsOrder.payedAmount = 0; + } + + if (order.orderAmount > 0) + { + coreCmsOrder.orderAmount = Math.Round(order.orderAmount * bizhi, 2); + order.orderAmount = order.orderAmount - coreCmsOrder.orderAmount; + } + else + { + coreCmsOrder.orderAmount = 0; + } + + coreCmsOrder.payStatus = order.payStatus; + coreCmsOrder.shipStatus = order.shipStatus; + coreCmsOrder.status = order.status; + coreCmsOrder.orderType = order.orderType; + coreCmsOrder.receiptType = order.receiptType; + coreCmsOrder.paymentCode = order.paymentCode; + coreCmsOrder.paymentTime = order.paymentTime; + coreCmsOrder.logisticsId = order.logisticsId; + coreCmsOrder.logisticsName = order.logisticsName; + + if (order.costFreight > 0) + { + coreCmsOrder.costFreight = Math.Round(order.costFreight * bizhi, 2); + order.costFreight = order.costFreight - coreCmsOrder.costFreight; + } + else + { + coreCmsOrder.costFreight = 0; + } + + coreCmsOrder.userId = order.userId; + coreCmsOrder.sellerId = order.sellerId; + coreCmsOrder.confirmStatus = order.confirmStatus; + coreCmsOrder.confirmTime = order.confirmTime; + coreCmsOrder.storeId = order.storeId; + coreCmsOrder.shipAreaId = order.shipAreaId; + coreCmsOrder.shipAddress = order.shipAddress; + coreCmsOrder.shipCoordinate = order.shipCoordinate; + coreCmsOrder.shipName = order.shipName; + coreCmsOrder.shipMobile = order.shipMobile; + + coreCmsOrder.weight = coreCmsOrderItems.Sum(x=>x.weight); + order.weight = order.weight - coreCmsOrder.weight; + + coreCmsOrder.taxType = order.taxType; + coreCmsOrder.taxCode = order.taxCode; + coreCmsOrder.taxTitle = order.taxTitle; + + if (order.point > 0) + { + coreCmsOrder.point = Convert.ToInt32(order.point * bizhi); + order.point = order.point - coreCmsOrder.point; + } + else + { + coreCmsOrder.point = 0; + } + + if (order.pointMoney > 0) + { + coreCmsOrder.pointMoney = Math.Round(order.pointMoney * bizhi, 2); + order.pointMoney = order.pointMoney - coreCmsOrder.pointMoney; + } + else + { + coreCmsOrder.pointMoney = 0; + } + + if (order.orderDiscountAmount > 0) + { + coreCmsOrder.orderDiscountAmount = Math.Round(order.orderDiscountAmount * bizhi, 2); + order.orderDiscountAmount = order.orderDiscountAmount - coreCmsOrder.orderDiscountAmount; + } + else + { + coreCmsOrder.orderDiscountAmount = 0; + } + + + if (order.goodsDiscountAmount > 0) + { + coreCmsOrder.goodsDiscountAmount = Math.Round(order.goodsDiscountAmount * bizhi, 2); + order.goodsDiscountAmount = order.goodsDiscountAmount - coreCmsOrder.goodsDiscountAmount; + } + else + { + coreCmsOrder.goodsDiscountAmount = 0; + } + + if (order.couponDiscountAmount > 0) + { + coreCmsOrder.couponDiscountAmount = Math.Round(order.couponDiscountAmount * bizhi, 2); + order.couponDiscountAmount = order.couponDiscountAmount - coreCmsOrder.couponDiscountAmount; + } + else + { + coreCmsOrder.couponDiscountAmount = 0; + } + + coreCmsOrder.coupon = order.coupon; + coreCmsOrder.promotionList = order.promotionList; + coreCmsOrder.memo = order.memo; + coreCmsOrder.ip = order.ip; + coreCmsOrder.mark = order.mark; + coreCmsOrder.source = order.source; + coreCmsOrder.scene = order.scene; + coreCmsOrder.isComment = order.isComment; + coreCmsOrder.isdel = order.isdel; + coreCmsOrder.objectId = order.objectId; + coreCmsOrder.createTime = order.createTime; + coreCmsOrder.updateTime = order.updateTime; + coreCmsOrder.planorderId = order.planorderId; + coreCmsOrder.publisherId = order.publisherId; + coreCmsOrder.oldOderId = order.oldOderId; + + + var res = await _dal.InsertAsync(coreCmsOrder); + + //淇敼璁㈠崟鐨勬墍鏈夋槑缁� + foreach (var coreCmsOrderItem in coreCmsOrderItems) + { + coreCmsOrderItem.orderId = coreCmsOrder.orderId; + var sss = await _orderItemServices.UpdateAsync(coreCmsOrderItem); + } + + coreCmsOrder.Orderitems = coreCmsOrderItems; + + + + //鐢熸垚鏀粯淇℃伅 + + //鍒涘缓鏀粯鍗� + var billPayments = new CoreCmsBillPayments(); + billPayments.paymentId = CommonHelper.GetSerialNumberType((int)GlobalEnumVars.SerialNumberType.鏀粯鍗曠紪鍙�); + billPayments.sourceId = coreCmsOrder.orderId; + billPayments.money = coreCmsOrder.orderAmount; + billPayments.userId = coreCmsOrder.userId; + billPayments.type = coreCmsOrder.orderType; + billPayments.status = (int)GlobalEnumVars.BillPaymentsStatus.Payed; + billPayments.paymentCode = coreCmsOrder.paymentCode; + 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); + + //鍚勭澶勭悊 + //濡傛灉鏄棬搴楄嚜鎻愶紝搴旇鑷姩璺宠繃鍙戣揣锛岀敓鎴愭彁璐у崟淇℃伅锛屼娇鐢ㄦ彁璐у崟鏍搁攢銆� + if (coreCmsOrder.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(coreCmsOrder)); + } + } + + + + //缁撲剑澶勭悊 + await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.OrderAgentOrDistribution, JsonConvert.SerializeObject(coreCmsOrder)); + //鏄撹仈浜戞墦鍗版満鎵撳嵃 + await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.OrderPrint, JsonConvert.SerializeObject(coreCmsOrder)); + + //鍙戦�佹敮浠樻垚鍔熶俊鎭�,澧炲姞鍙戦�佸唴瀹� + await _messageCenterServices.SendMessage(order.userId, GlobalEnumVars.PlatformMessageTypes.OrderPayed.ToString(), JObject.FromObject(coreCmsOrder)); + await _messageCenterServices.SendMessage(order.userId, GlobalEnumVars.PlatformMessageTypes.SellerOrderNotice.ToString(), JObject.FromObject(coreCmsOrder)); + + //鐢ㄦ埛鍗囩骇澶勭悊 + await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.UserUpGrade, JsonConvert.SerializeObject(coreCmsOrder)); + + + //璺宠浆鍒颁笅涓�涓鍗� + orderItemscount += coreCmsOrderItems.Count; + } + else + { + orderItemscount += 1; + } + } + + //淇敼璁㈠崟鐨勮揣鏉冧汉 + if (coreCmsGoods[0].publisherId.HasValue) + { + order.publisherId = coreCmsGoods[0].publisherId; + + } + var ssssss = await _dal.UpdateAsync(order); + + jm.status = true; + jm.msg = "璁㈠崟鎷嗗崟鎴愬姛"; + + + + + + + + + + + + + + + + + //璁㈠崟璁板綍 + var orderLog = new CoreCmsOrderLog + { + orderId = order.orderId, + userId = order.userId, + type = (int)GlobalEnumVars.OrderLogTypes.LOG_TYPE_PAY, + msg = jm.msg, + data = JsonConvert.SerializeObject(jm), + createTime = DateTime.Now + }; + await _orderLogServices.InsertAsync(orderLog); + + return jm; + } + #endregion + } } -- Gitblit v1.9.1