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)); + } }