diff --git a/KJD_WebService/Services/Users/UserService.cs b/KJD_WebService/Services/Users/UserService.cs index a033482..33e5f37 100644 --- a/KJD_WebService/Services/Users/UserService.cs +++ b/KJD_WebService/Services/Users/UserService.cs @@ -48,7 +48,25 @@ namespace KJD_Web.Services.Users public UserEntity GetUserByUserName(string userName) { if (string.IsNullOrEmpty(userName)) return null; - return _freeSql.Select().Where(a => a.UserName == userName).First(); + var user = _freeSql.Select().Where(a => a.UserName == userName).First(); + if (user != null) + { + if (user.IsMainUser == false) + { + var mainUser = _freeSql.Select() + .Where(a => a.UserName == user.ParentUserName) + .First(); + if (mainUser != null) + { + user.OemId = mainUser.OemId; + user.PostagePerOrder = mainUser.PostagePerOrder; + user.RefundPostagePerOrder = mainUser.RefundPostagePerOrder; + user.GiftOemAmountPerOrder = mainUser.GiftOemAmountPerOrder; + user.SyncLogisticsPerOrder = mainUser.SyncLogisticsPerOrder; + } + } + } + return user; } /// /// 获取用户包含子账户 @@ -374,6 +392,23 @@ namespace KJD_Web.Services.Users work.Commit(); } + /// + /// 是否可以消费 + /// + /// + /// + /// + /// + public bool CanAfford(string userName, UserPaymentTypes type, decimal consumeAmount) + { + var user = GetUserByUserName(userName); + if (user == null) return false; + // 消费金额必须大于 0 + if (user.Balance <= 0) return false; + if (type != UserPaymentTypes.同步单号) return false; + consumeAmount = (user.SyncLogisticsPerOrder ?? 0m) + consumeAmount; + return user.Balance >= consumeAmount; + } /// /// 用户消费付款记录 @@ -394,17 +429,6 @@ namespace KJD_Web.Services.Users { throw new Exception("用户不存在"); } - if (user.IsMainUser == false) - { - var mainUser = _freeSql.Select() - .Where(a => a.UserName == user.ParentUserName) - .First(); - if (mainUser == null) - { - throw new Exception("错误的账户"); - } - user.SyncLogisticsPerOrder = mainUser.SyncLogisticsPerOrder; - } if (type != UserPaymentTypes.同步单号) throw new Exception("不支持的类型"); var payItem = new UserPaymentRecordEntity { diff --git a/Store.Contracts/User/Interfaces/IUserService.cs b/Store.Contracts/User/Interfaces/IUserService.cs index dc7860c..836f098 100644 --- a/Store.Contracts/User/Interfaces/IUserService.cs +++ b/Store.Contracts/User/Interfaces/IUserService.cs @@ -11,6 +11,7 @@ namespace Store.Contracts.User.Interfaces; public interface IUserService { + bool CanAfford(string userName, UserPaymentTypes type, decimal consumeAmount); OEMEntity GetOEMByOemId(string oemId, bool isCache = true); OEMEntity GetOEMByUserName(string userName, bool isCache = true); List GetOEMUsers(string oemId, bool includeSu = true); diff --git a/Store.SyncLogistics/Services/VirtualLogisticsService.cs b/Store.SyncLogistics/Services/VirtualLogisticsService.cs index bccf593..1c3196d 100644 --- a/Store.SyncLogistics/Services/VirtualLogisticsService.cs +++ b/Store.SyncLogistics/Services/VirtualLogisticsService.cs @@ -81,10 +81,15 @@ 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) + { + throw new Exception("余额不足"); + } + //中间订单 var middleOrder = _freeSql.Select() - .Where(a => a.OrderSn == orderId) - .First(); + .Where(a => a.OrderSn == orderId) + .First(); if (middleOrder == null) throw new Exception("错误的订单号"); //middleOrder.TrackingNumber = "YT0709726946568"; var w_order = _freeSql.Select() diff --git a/test/WebServiceTest/GiftLogisticsTest.cs b/test/WebServiceTest/GiftLogisticsTest.cs index b40ca99..1ea91ca 100644 --- a/test/WebServiceTest/GiftLogisticsTest.cs +++ b/test/WebServiceTest/GiftLogisticsTest.cs @@ -96,7 +96,7 @@ internal class GiftLogisticsTest public void BuyTest() { var logisticsService = _container.Resolve(); - var ret = logisticsService.Buy("260923-573109716621688", "4439363558732480512", "15222220006"); + var ret = logisticsService.Buy("15222220006","260923-573109716621688", "4439363558732480512"); if (ret != null) { Console.WriteLine(string.Join(" ", ret.Select(a => $"{a.OrderId}:{a.TrackingNumber}")));