zhengyiming
2025-03-25 5c3f745cc2a9104e831115a4949e8543373f6105
LifePayment/LifePayment.Domain/Common/ChannelFilter.cs
@@ -1,21 +1,58 @@
using System;
using LifePayment.Application.Contracts;
using LifePayment.Domain;
using LifePayment.Domain.Models;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Channels;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Domain.Repositories;
using Z.EntityFramework.Plus;
using ZeroD.Util;
namespace LifePayment.Domain.Common
{
    //public class ChannelFilter : AbstractChannelFilter
    //{
    //    public async Task<IQueryable<ChannelsBase>> GetPolicyFilter<ChannelsBase, TKey>(IQueryable<ChannelsBase> query)
    //    {
    //        throw new NotImplementedException();
    //    }
    //}
    public class ChannelFilter : AbstractChannelFilter
    {
        public override IQueryable<LifePayOrder> GetChannelLifePayOrderFilter(IQueryable<LifePayOrder> query)
        {
            if (CurrentUser.ClientId == Constant.ClientType.Back && !CurrentUser.IsSystem)
            {
                var queryUser = UserChannleRepository.Where(r => r.UserId == CurrentUser.Id).Select(s => s.ChannleId).ToList();
                if (queryUser.Count() > 0)
                {
                    var queryResult = query.Where(s => (!string.IsNullOrEmpty(s.ChannelId) && queryUser.Contains(s.ChannelId)) || string.IsNullOrEmpty(s.ChannelId) || queryUser.Count() == 0);
                    return queryResult;
                }
            }
    //public class ChannelsBase:IChannelFilter
    //{
    //   // public Guid ChannelId { get; set; }
    //}
            return query;
        }
        public override IQueryable<LifePayUser> GetChannelLifePayUserFilter(IQueryable<LifePayUser> query)
        {
            if (CurrentUser.ClientId == Constant.ClientType.Back && !CurrentUser.IsSystem)
            {
                var queryUser = UserChannleRepository.Where(r => r.UserId == CurrentUser.Id).Select(s => s.ChannleId).ToList();
                if (queryUser.Count() > 0)
                {
                    var queryResult = query.Where(s => (!string.IsNullOrEmpty(s.CreationChannleNum) && queryUser.Contains(s.CreationChannleNum)) || string.IsNullOrEmpty(s.CreationChannleNum));
                    return queryResult;
                }
            }
            return query;
        }
    }
    public class ChannelsBase : Entity<Guid>
    {
        public Guid ChannleId { get; set; }
    }
}