Files
StoreWeb/Modules/Store.Users/Repositories/UserRepository.cs
T

32 lines
1.7 KiB
C#

using FreeSql;
using MAX.Core.DependencyInjection;
using Store.Users.Entities;
namespace Store.Users.Repositories;
public interface IUserRepository : IBaseRepository<UserEntity>
{
Task<UserEntity> GetUser(string userName);
}
/// <summary>集中处理旧系统主子账号的有效计费配置和积分权限继承。</summary>
internal class UserRepository(IFreeSql freeSql) : BaseRepository<UserEntity>(freeSql), IUserRepository, ITransientDependency
{
public async Task<UserEntity> GetUser(string userName)
{
var user = await Where(u => u.UserName == userName).FirstAsync();
if (user == null || user.IsMainUser) return user;
var parent = await Where(u => u.UserName == user.ParentUserName).FirstAsync();
if (parent == null) throw new MAX.Framework.Commons.AppException("主账号不存在,请联系管理员");
user.OemId = parent.OemId;
user.PostagePerOrder = Math.Max(2.2m, parent.PostagePerOrder ?? 0);
user.RefundPostagePerOrder = Math.Max(2.5m, parent.RefundPostagePerOrder ?? 0);
user.GiftOemAmountPerOrder = Math.Max(0, parent.GiftOemAmountPerOrder ?? 0);
user.SyncLogisticsPerOrder = parent.SyncLogisticsPerOrder;
var authority = (user.Authority ?? "").Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries).ToHashSet();
var parentAuthority = (parent.Authority ?? "").Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
if (parentAuthority.Contains("积分用户")) authority.Add("积分用户"); else authority.Remove("积分用户");
user.Authority = string.Join(",", authority);
return user;
}
}