更新购买同步物流 金额校验

This commit is contained in:
chfei committed 2026-09-23 19:31:44 +08:00
1 parent 472d052631
commit ae1949c9c2
4 files changed
+45 -15

No files matched your search

+36 -12
View File
@@ -48,7 +48,25 @@ namespace KJD_Web.Services.Users
public UserEntity GetUserByUserName(string userName)
{
if (string.IsNullOrEmpty(userName)) return null;
return _freeSql.Select<UserEntity>().Where(a => a.UserName == userName).First();
var user = _freeSql.Select<UserEntity>().Where(a => a.UserName == userName).First();
if (user != null)
{
if (user.IsMainUser == false)
{
var mainUser = _freeSql.Select<UserEntity>()
.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;
}
/// <summary>
/// 获取用户包含子账户
@@ -374,6 +392,23 @@ namespace KJD_Web.Services.Users
work.Commit();
}
/// <summary>
/// 是否可以消费
/// </summary>
/// <param name="userName"></param>
/// <param name="type"></param>
/// <param name="consumeAmount"></param>
/// <returns></returns>
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;
}
/// <summary>
/// 用户消费付款记录
@@ -394,17 +429,6 @@ namespace KJD_Web.Services.Users
{
throw new Exception("用户不存在");
}
if (user.IsMainUser == false)
{
var mainUser = _freeSql.Select<UserEntity>()
.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
{
@@ -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<UserEntity> GetOEMUsers(string oemId, bool includeSu = true);
@@ -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<OrderPddBuyerOrderEntity>()
.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<WeiOrderEntity>()
+1 -1
View File
@@ -96,7 +96,7 @@ internal class GiftLogisticsTest
public void BuyTest()
{
var logisticsService = _container.Resolve<VirtualLogisticsService>();
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}")));