From 6f54b8a63f20b8ff2c646d51285ebb97de3fa16d Mon Sep 17 00:00:00 2001 From: chfei Date: Thu, 12 Nov 2026 14:39:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20OEM=20=E7=BB=93=E7=AE=97?= =?UTF-8?q?=20=E5=BF=AB=E9=80=92=E6=B5=81=E6=B0=B4=20=E9=80=80=E6=AC=BE?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E4=B9=9F=E6=9C=89OEM=5FAmount=20=E4=B8=80=20?= =?UTF-8?q?=E4=B8=80=E5=AF=B9=E5=BA=94=20=E7=9B=B4=E6=8E=A5=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E9=87=91=E9=A2=9D=E4=B9=8B=E5=92=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WX/WXShopRevenueStatisticsController.cs | 6 +- .../Services/Users/UserService.FeeRecord.cs | 70 +++++-------------- KJD_WebService/Services/Users/UserService.cs | 4 +- Store.Contracts/User/Enums/PaymentTypes.cs | 12 +++- .../Services/VirtualLogisticsService.cs | 4 +- 5 files changed, 34 insertions(+), 62 deletions(-) diff --git a/KJD_WebService/Controllers/WX/WXShopRevenueStatisticsController.cs b/KJD_WebService/Controllers/WX/WXShopRevenueStatisticsController.cs index 6305634..26fd34d 100644 --- a/KJD_WebService/Controllers/WX/WXShopRevenueStatisticsController.cs +++ b/KJD_WebService/Controllers/WX/WXShopRevenueStatisticsController.cs @@ -88,6 +88,10 @@ namespace KJD_Web.Controllers.WX ret = _statsService.GetShopOrderDetails(request.StartDate, request.EndDate, request.OrderType, "", request.ShopIds); return Ok(ApiResult.Success(ret)); } + catch (ArgumentException ex) + { + return Ok(ApiResult.Fail(ex.Message, ResultCode.ServerError)); + } catch (Exception ex) { return Ok(ApiResult.Fail("查询失败", ResultCode.ServerError)); @@ -197,7 +201,7 @@ namespace KJD_Web.Controllers.WX foreach (var item in ret) { - item.ShopId= dict[item.ShopId]; + item.ShopId = dict[item.ShopId]; } return Ok(ApiResult.Success(ret)); diff --git a/KJD_WebService/Services/Users/UserService.FeeRecord.cs b/KJD_WebService/Services/Users/UserService.FeeRecord.cs index 239b0a8..a95c3ac 100644 --- a/KJD_WebService/Services/Users/UserService.FeeRecord.cs +++ b/KJD_WebService/Services/Users/UserService.FeeRecord.cs @@ -2,6 +2,7 @@ using MySqlX.XDevAPI; using Newtonsoft.Json; using Store.Contracts.User.Entitys; +using Store.Contracts.User.Enums; using System; using System.Collections.Generic; using System.Data.Common; @@ -40,7 +41,7 @@ namespace KJD_Web.Services.Users // 获取OEM下面的所有用户 var users = GetOEMUsers(oem.OemId, true); - + if (users.Count == 0) {//todo @@ -127,11 +128,12 @@ namespace KJD_Web.Services.Users decimal total_amount = 0m; // 总金额(元) decimal rebate_amount = 0m; // 正数部分(累计返利) DateTime now = DateTime.Now; - - List UserPaymentTypeFiltert = [16, 20, 23, 26, 31, 34, 55]; + int[] positiveTypes = [16, 20, 26, 31, 35, 39, 55]; + int[] negativeTypes = [34, 23, 38, 32, 36, 40]; + var paymentTypes = positiveTypes.Concat(negativeTypes).ToArray(); var paymentQuery = tr_freeSql.Select() .Where(a => userNames.Contains(a.UserName)) - .Where(a => UserPaymentTypeFiltert.Contains(a.Type)) + .Where(a => paymentTypes.Contains(a.Type)) .Where(a => a.Settlement == 0) .Where(a => a.IsDeleted == 0); //只有OEM结算才限制OEM创建时间。 @@ -139,58 +141,18 @@ namespace KJD_Web.Services.Users { paymentQuery = paymentQuery.Where(a => a.CreateTime > oemAddTime.Value); } - paymentQuery.OrderBy(a => a.Id); - var userPayments = paymentQuery.ToList(); + var userPayments = paymentQuery.OrderBy(a => a.Id).ToList(); if (userPayments.Count > 0) { - Debug.WriteLine(userPayments.Where(a => a.Type == 20).Sum(a => a.OemAmount)); - ///原始流水ID。 - List ids = userPayments.Select(a => a.Id).ToList(); - - var userPaymentUnique = userPayments.GroupBy(a => //去重 - new + var ids = userPayments.Select(a => a.Id).ToList(); + var userPaymentAmount = userPayments + .GroupBy(a => new { a.Type, a.OrderId }) + .Select(group => group.First()) + .Sum(a => { - a.Type, - a.OrderId - }).Select(a => a.First()).ToList(); - - //经过计算过滤后的列表 - List userPaymentCalculated = new List(); - - foreach (var item in userPaymentUnique) - { - if (item.Type == 20) - { - //item.OemAmount = item.Amount - 2.2m; - item.OemAmount = item.OemAmount; - } - else if (item.Type == 26) - { - //item.OemAmount = item.Amount - 2.5m; - item.OemAmount = item.OemAmount; - } - if (item.Type == 23) - { - var temp = userPaymentCalculated.FirstOrDefault(a => a.Type == 20 && a.OrderId == item.OrderId); - if (temp != null) - { - userPaymentCalculated.Remove(temp);//23 移除 20 - } - continue; - } - else if (item.Type == 34) - { - item.OemAmount = item.OemAmount * -1; - } - userPaymentCalculated.Add(item); - } - decimal userPaymentAmount = userPaymentCalculated.Sum(x => x.OemAmount ?? 0);//累计返利 - //StringBuilder sb = new StringBuilder(); - //sb.AppendLine("id,order_id,type,amount,oem_amount,time"); - //foreach (var item in userPayments) - //{ - // sb.AppendLine($"{item.Id},{item.OrderId},{item.Type},{item.Amount},{item.OemAmount},{item.CreateTime}"); - //} + var amount = Math.Abs(a.OemAmount ?? 0m); + return positiveTypes.Contains(a.Type) ? amount : -amount; + }); total_amount += userPaymentAmount; rebate_amount += userPaymentAmount; @@ -460,4 +422,4 @@ namespace KJD_Web.Services.Users /// public long Balance { get; set; } } -} \ No newline at end of file +} diff --git a/KJD_WebService/Services/Users/UserService.cs b/KJD_WebService/Services/Users/UserService.cs index d8c8349..785c795 100644 --- a/KJD_WebService/Services/Users/UserService.cs +++ b/KJD_WebService/Services/Users/UserService.cs @@ -477,7 +477,7 @@ namespace KJD_Web.Services.Users if (user == null) return false; // 消费金额必须大于 0 if (user.Balance <= 0) return false; - if (type != UserPaymentTypes.同步单号) return false; + if (type != UserPaymentTypes.同步物流) return false; consumeAmount = (user.SyncLogisticsPerOrder ?? 0m) + consumeAmount; return user.Balance >= consumeAmount; } @@ -499,7 +499,7 @@ namespace KJD_Web.Services.Users { throw new Exception("用户不存在"); } - if (type != UserPaymentTypes.同步单号) throw new Exception("不支持的类型"); + if (type != UserPaymentTypes.同步物流) throw new Exception("不支持的类型"); var payItem = new UserPaymentRecordEntity { Type = (int)type, diff --git a/Store.Contracts/User/Enums/PaymentTypes.cs b/Store.Contracts/User/Enums/PaymentTypes.cs index 91a8784..33bc326 100644 --- a/Store.Contracts/User/Enums/PaymentTypes.cs +++ b/Store.Contracts/User/Enums/PaymentTypes.cs @@ -19,12 +19,18 @@ public enum UserPaymentTypes //运费退款扣除 = 7, 礼物单支出 = 16, 中转仓扣费支出 = 20, - 中转仓作废返还收入 = 23, + 中转仓作废收入 = 23, 中转仓超重支出 = 24, 退货包裹扣费支出 = 26, - 中转仓快递超重费用 = 28, 支付宝在线充值 = 30, 云仓退货支出 = 31, 礼物单退费 = 34, - 同步单号 = 55, + 额外订单创建 = 35, + 额外订单作废 = 36, + 额外订单超重支出 = 37, + 退货包裹作废返还 = 38, + 同步物流 = 55, + 额外包裹退货拦截花费 = 39, + 额外包裹退货拦截花费退款 = 40, + 额外包裹退货拦截超重花费 = 41, } diff --git a/Store.SyncLogistics/Services/VirtualLogisticsService.cs b/Store.SyncLogistics/Services/VirtualLogisticsService.cs index 3255f99..a23509e 100644 --- a/Store.SyncLogistics/Services/VirtualLogisticsService.cs +++ b/Store.SyncLogistics/Services/VirtualLogisticsService.cs @@ -82,7 +82,7 @@ public class VirtualLogisticsService : ITransientDependency } var user = _userService.GetUserByUserName(userName); if (user == null) throw new Exception("错误的账号"); - if (_userService.CanAfford(userName, Contracts.User.Enums.UserPaymentTypes.同步单号, FIXEDFEES) == false) + if (_userService.CanAfford(userName, Contracts.User.Enums.UserPaymentTypes.同步物流, FIXEDFEES) == false) { throw new Exception("余额不足"); } @@ -181,7 +181,7 @@ public class VirtualLogisticsService : ITransientDependency throw new Exception("记录同步单失败"); } //todo 更新UserBlance - _userService.UserPayment(user.UserName, orderId, type: Contracts.User.Enums.UserPaymentTypes.同步单号); + _userService.UserPayment(user.UserName, orderId, type: Contracts.User.Enums.UserPaymentTypes.同步物流); return yhSyncs; }