using Furion.DatabaseAccessor;
|
using Furion.DependencyInjection;
|
using Furion.DistributedIDGenerator;
|
using Furion.FriendlyException;
|
using Microsoft.EntityFrameworkCore;
|
using pingan.openbank.api.sdk.enums;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading;
|
using System.Threading.Tasks;
|
|
namespace ApiTools.Core
|
{
|
/// <summary>
|
/// 企业钱包仓库
|
/// </summary>
|
public class ChannelWalletRepository : BaseRepository<ChannelWallet, MasterDbContextLocator>, IScoped
|
{
|
public ChannelWalletRepository(IRepository<ChannelWallet, MasterDbContextLocator> rep) : base(rep)
|
{
|
}
|
|
public override IQueryable<ChannelWallet> GetQueryable(bool noTracking = true)
|
{
|
var q = rep.GetQueryable(noTracking);
|
if (logier != null)
|
{
|
switch (logier.Type)
|
{
|
case EnumUserType.Channel:
|
q = q.Where(it => it.ChannelId == logier.ChannelId);
|
break;
|
case EnumUserType.Operation:
|
break;
|
default:
|
break;
|
}
|
}
|
return q;
|
}
|
|
public Task<bool> CheckExist(string code, Guid? id)
|
{
|
return GetQueryableIgnoreFilter()
|
.AnyAsync(it => it.Code == code && it.Id != id);
|
}
|
|
/// <summary>
|
/// 设置编号
|
/// </summary>
|
/// <param name="entity"></param>
|
/// <returns></returns>
|
public async Task SetCode(ChannelWallet entity)
|
{
|
entity.Code = $"{DateTime.Now:yyyyMMddHHmmss}{new Random(IDGen.NextID().GetHashCode()).Next(1000, 9999)}";
|
var exist = await CheckExist(entity.Code, entity.Id);
|
if (exist)
|
{
|
await SetCode(entity);
|
}
|
}
|
|
}
|
}
|