From 694d2cfdb232c82f7b503eda8f33afdae31ca853 Mon Sep 17 00:00:00 2001 From: chfei Date: Sun, 20 Sep 2026 18:14:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=94=A8=E6=88=B7=E9=87=91?= =?UTF-8?q?=E9=A2=9D=E6=95=B0=E6=8D=AE=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/WX/WXUser_N_Controller.cs | 15 +++++- .../Services/Users/UserService.FeeRecord.cs | 53 +++++++++++++++++-- test/WebServiceTest/UserTest.cs | 9 ++++ 3 files changed, 70 insertions(+), 7 deletions(-) diff --git a/KJD_WebService/Controllers/WX/WXUser_N_Controller.cs b/KJD_WebService/Controllers/WX/WXUser_N_Controller.cs index 0b86116..bb5d64d 100644 --- a/KJD_WebService/Controllers/WX/WXUser_N_Controller.cs +++ b/KJD_WebService/Controllers/WX/WXUser_N_Controller.cs @@ -104,10 +104,21 @@ namespace KJD_Web.Controllers } /// - /// 用户结算流水 + /// 获取用户消费统计 /// - private void UserSettleFlows(string userName, string oemId) + /// + /// + public IHttpActionResult GetUserAmountSummary(SignRequestBase request) { + try + { + var data = _userService.GetUserAmountSummary(request.UserName); + return Ok(ApiResult.Success(data)); + } + catch (Exception ex) + { + return Ok(ApiResult.Fail(ex.Message)); + } } } diff --git a/KJD_WebService/Services/Users/UserService.FeeRecord.cs b/KJD_WebService/Services/Users/UserService.FeeRecord.cs index b9bf3fe..e4a374b 100644 --- a/KJD_WebService/Services/Users/UserService.FeeRecord.cs +++ b/KJD_WebService/Services/Users/UserService.FeeRecord.cs @@ -8,6 +8,7 @@ using System.Diagnostics; using System.Linq; using System.Text; using System.Web; +using static FreeSql.Internal.GlobalFilter; namespace KJD_Web.Services.Users { @@ -128,12 +129,12 @@ namespace KJD_Web.Services.Users decimal rebate_amount = 0m; // 正数部分(累计返利) DateTime now = DateTime.Now; - List UserPaymentTypeFiltert = [20, 23, 26, 16, 31, 34]; + List UserPaymentTypeFiltert = [16, 20, 23, 26, 31, 34]; var paymentQuery = tr_freeSql.Select() - .Where(a => userNames.Contains(a.UserName)) - .Where(a => UserPaymentTypeFiltert.Contains(a.Type)) - .Where(a => a.Settlement == 0) - .Where(a => a.IsDeleted == 0); + .Where(a => userNames.Contains(a.UserName)) + .Where(a => UserPaymentTypeFiltert.Contains(a.Type)) + .Where(a => a.Settlement == 0) + .Where(a => a.IsDeleted == 0); //只有OEM结算才限制OEM创建时间。 if (oemAddTime.HasValue) { @@ -240,5 +241,47 @@ namespace KJD_Web.Services.Users return total_fen; } + + + + /// + /// 获取用户金额统计 + /// + /// + + public UserAmountSummary GetUserAmountSummary(string userName) + { + UserAmountSummary summary = new UserAmountSummary(); + var user = GetUserByUserName(userName); + if (user == null) throw new Exception("错误的用户"); + summary.RechargeTotal = (long)Math.Round((user.RechargeAmountTotal ?? 0) * 100m); + summary.Balance = (long)Math.Round((user.Balance ?? 0) * 100m); + List types = new List { 16, 20, 23, 24, 26, 31 }; + + + var data = _freeSql.Select() + .Where(a => types.Contains(a.Type)) + .Where(a => a.UserName == userName) + .ToList(); + decimal sum = data.Sum(r => r.Type == 23 ? -(r.Amount ?? 0) : r.Amount ?? 0); + summary.ConsumeTotal = (long)Math.Round(sum * 100m); + return summary; + } + } + + public class UserAmountSummary + { + /// + /// 充值总额 + /// + public long RechargeTotal { get; set; } + /// + /// 消费总额 + /// + public long ConsumeTotal { get; set; } + /// + /// 剩余余额 + /// + public long Balance { get; set; } } } \ No newline at end of file diff --git a/test/WebServiceTest/UserTest.cs b/test/WebServiceTest/UserTest.cs index cb7c1bd..94aaa4f 100644 --- a/test/WebServiceTest/UserTest.cs +++ b/test/WebServiceTest/UserTest.cs @@ -2,6 +2,7 @@ using Autofac.Integration.WebApi; using KJD_Web; using KJD_Web.Services.Users; +using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Diagnostics; @@ -68,4 +69,12 @@ internal class UserTest Console.WriteLine(count); } + + [Test] + public void GetUserAmountSummate() + { + var userService = _container.Resolve(); + var data = userService.GetUserAmountSummary("15395107196"); + Console.WriteLine(JsonConvert.SerializeObject(data)); + } }