username@email.com
2025-08-25 24f914a80d01fa8e5c6cfcba14ae59a6c0a117a8
Admin.NET/FZCZTB.Net.CustomerSYSTem/Service/FBS_CusExtend/FBS_CusExtendService.cs
@@ -18,6 +18,12 @@
using Admin.NET.Core;
using FZCZTB.NET.MD.CutomerMd.Extend;
using cylsg.utility;
using FZCZTB.NET.MD.CutomerMd;
using Furion.Logging.Extensions;
using FZCZTB.Net.CustomerSYSTem.Service.FBS_ExRole.Dto;
using MapsterMapper;
using System.Runtime.ConstrainedExecution;
using Microsoft.AspNetCore.Authorization;
namespace FZCZTB.Net.CustomerSYSTem;
/// <summary>
@@ -27,19 +33,29 @@
public class FBS_CusExtendService : IDynamicApiController, ITransient
{
    private readonly SqlSugarRepository<FBS_CusExtend> _fBS_CusExtendRep;
    private readonly SqlSugarRepository<FBS_CoutomerExRole> _fBS_CoutomerExRoleRep;
    private readonly ISqlSugarClient _sqlSugarClient;
    private readonly SysDictTypeService _sysDictTypeService;
    private readonly FBS_EnterpriseTypeService _EnterpriseTypeService;
    public readonly SqlSugarRepository<FBS_CustormerUsers> _fBS_CustormerUsersRep;
    private readonly IMapper _mapper;
    public FBS_CusExtendService(SqlSugarRepository<FBS_CusExtend> fBS_CusExtendRep,
        ISqlSugarClient sqlSugarClient,
        SysDictTypeService sysDictTypeService,
        FBS_EnterpriseTypeService fBS_EnterpriseTypeService )
        FBS_EnterpriseTypeService fBS_EnterpriseTypeService,
         SqlSugarRepository<FBS_CoutomerExRole> cerRep,
         IMapper mapper,
         SqlSugarRepository<FBS_CustormerUsers> fbscu)
    {
        _fBS_CusExtendRep = fBS_CusExtendRep;
        _sqlSugarClient = sqlSugarClient;
        _sysDictTypeService = sysDictTypeService;
        _EnterpriseTypeService = fBS_EnterpriseTypeService;
        _fBS_CoutomerExRoleRep = cerRep;
        _mapper = mapper;
        _fBS_CustormerUsersRep = fbscu;
    }
    /// <summary>
    /// 
@@ -55,6 +71,7 @@
            StepsTypeItems = CommonHelper.GetEnumItemsWithAttributes<CusExtendStep>()
        };
    }
    /// <summary>
    /// 分页查询企业资料 🔖
    /// </summary>
@@ -64,11 +81,13 @@
    [ApiDescriptionSettings(Name = "Page"), HttpPost]
    public async Task<SqlSugarPagedList<FBS_CusExtendOutput>> Page(PageFBS_CusExtendInput input)
    {
        //var data            = await _fBS_CusExtendRep.AsQueryable().Includes(u => u.ExRoles, y => y.ExRole).Includes(u => u.CustormerUsers).ToListAsync();
        input.Keyword = input.Keyword?.Trim();
        var query = _fBS_CusExtendRep.AsQueryable()
            .WhereIF(!string.IsNullOrWhiteSpace(input.Keyword), u => u.EnterpriseType.Contains(input.Keyword) || u.TransactionCode.Contains(input.Keyword) || u.BusinessLicense.Contains(input.Keyword) || u.EnterpriseName.Contains(input.Keyword) || u.UnifiedSocialCreditCode.Contains(input.Keyword) || u.RegisteredCapital.Contains(input.Keyword) || u.LegalRepresentativeName.Contains(input.Keyword) || u.LegalRepresentativeIdCard.Contains(input.Keyword) || u.LegalRepresentativeIdNumber.Contains(input.Keyword) || u.LegalRepresentativePhone.Contains(input.Keyword) || u.Residence.Contains(input.Keyword) || u.EnterprisePhone.Contains(input.Keyword) || u.MainBusiness.Contains(input.Keyword) || u.EnterpriseEmail.Contains(input.Keyword) || u.OperatorName.Contains(input.Keyword) || u.OperatorIdCard.Contains(input.Keyword) || u.OperatorIdNumber.Contains(input.Keyword) || u.OperatorPhone.Contains(input.Keyword) || u.BankName.Contains(input.Keyword) || u.BankAccount.Contains(input.Keyword))
        var query = _fBS_CusExtendRep.AsQueryable().Includes(u => u.ExRoles, y => y.ExRole).Includes(u => u.CustormerUsers)
            .WhereIF(!string.IsNullOrWhiteSpace(input.Keyword), u => u.EnterpriseType.Contains(input.Keyword) || u.BusinessLicense.Contains(input.Keyword) || u.EnterpriseName.Contains(input.Keyword) || u.UnifiedSocialCreditCode.Contains(input.Keyword) || u.RegisteredCapital.Contains(input.Keyword) || u.LegalRepresentativeName.Contains(input.Keyword) || u.LegalRepresentativeIdCard.Contains(input.Keyword) || u.LegalRepresentativeIdNumber.Contains(input.Keyword) || u.LegalRepresentativePhone.Contains(input.Keyword) || u.Residence.Contains(input.Keyword) || u.EnterprisePhone.Contains(input.Keyword) || u.MainBusiness.Contains(input.Keyword) || u.EnterpriseEmail.Contains(input.Keyword) || u.OperatorName.Contains(input.Keyword) || u.OperatorIdCard.Contains(input.Keyword) || u.OperatorIdNumber.Contains(input.Keyword) || u.OperatorPhone.Contains(input.Keyword) || u.BankName.Contains(input.Keyword) || u.BankAccount.Contains(input.Keyword))
            .WhereIF(!string.IsNullOrWhiteSpace(input.EnterpriseType), u => u.EnterpriseType.Contains(input.EnterpriseType.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.TransactionCode), u => u.TransactionCode.Contains(input.TransactionCode.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.TransactionCode), u => u.ExRoles.Any(x => x.ExRole.Code == input.TransactionCode))
            .WhereIF(!string.IsNullOrWhiteSpace(input.BusinessLicense), u => u.BusinessLicense.Contains(input.BusinessLicense.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.EnterpriseName), u => u.EnterpriseName.Contains(input.EnterpriseName.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.UnifiedSocialCreditCode), u => u.UnifiedSocialCreditCode.Contains(input.UnifiedSocialCreditCode.Trim()))
@@ -87,11 +106,37 @@
            .WhereIF(!string.IsNullOrWhiteSpace(input.OperatorPhone), u => u.OperatorPhone.Contains(input.OperatorPhone.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.BankName), u => u.BankName.Contains(input.BankName.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.BankAccount), u => u.BankAccount.Contains(input.BankAccount.Trim()))
            .WhereIF(input.CustomerId != null, u => u.CustomerId == input.CustomerId)
            .WhereIF(input.EstablishmentTimeRange?.Length == 2, u => u.EstablishmentTime >= input.EstablishmentTimeRange[0] && u.EstablishmentTime <= input.EstablishmentTimeRange[1])
            .WhereIF(input.steps != null, u => u.steps == input.steps)
            .Select<FBS_CusExtendOutput>();
            .Select(u => new FBS_CusExtendOutput
            {
                ExRoles = u.ExRoles.Adapt<List<FBS_CoutomerExRoleOutput>>(),
                CustormerUsers = u.CustormerUsers.Adapt<List<FBS_CustormerUsersOutput>>()
            },true);
      return await query.OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize);
    }
    /// <summary>
    /// 更改审核状态
    /// </summary>
    /// <param name="CoutomerExRolesId">该ID是用户角色列表中的Id</param>
    /// <param name="step">要更改的状态</param>
    /// <returns></returns>
    [HttpGet]
    public async  Task<int  > ChangeSteps (long CoutomerExRolesId, CusExtendStep step)
    {
        var data=await  _fBS_CoutomerExRoleRep.AsQueryable().Where(x=>x.Id== CoutomerExRolesId).FirstAsync();
        if (data == null)
        {
            throw Oops.Oh("数据不存在");
        };
        if(data.steps== step)
        {
            return 1;
        }
        data.steps = step;
       return await  _fBS_CoutomerExRoleRep.AsUpdateable(data).ExecuteCommandAsync();
    }
    /// <summary>
@@ -103,7 +148,7 @@
    [ApiDescriptionSettings(Name = "Detail"), HttpGet]
    public async Task<FBS_CusExtend> Detail([FromQuery] QueryByIdFBS_CusExtendInput input)
    {
        return await _fBS_CusExtendRep.GetFirstAsync(u => u.Id == input.Id);
        return await _fBS_CusExtendRep.AsQueryable().Includes(x => x.ExRoles,y=>y.ExRole).Includes(x => x.CustormerUsers).Where(x=>x.Id==input.Id).FirstAsync();
    }
    /// <summary>
@@ -129,7 +174,7 @@
    public async Task Update(UpdateFBS_CusExtendInput input)
    {
        var entity = input.Adapt<FBS_CusExtend>();
        await _fBS_CusExtendRep.AsUpdateable(entity)
        await _fBS_CusExtendRep. AsUpdateable(entity)
        .ExecuteCommandAsync();
    }
@@ -142,9 +187,24 @@
    [ApiDescriptionSettings(Name = "Delete"), HttpPost]
    public async Task Delete(DeleteFBS_CusExtendInput input)
    {
        var entity = await _fBS_CusExtendRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
        //await _fBS_CusExtendRep.FakeDeleteAsync(entity);   //假删除
        await _fBS_CusExtendRep.DeleteAsync(entity);   //真删除
     await    _fBS_CusExtendRep.AsTenant().BeginTranAsync();
        try
        {
            var entity = await _fBS_CusExtendRep.AsQueryable().Where(x => x.Id == input.Id).FirstAsync() ?? throw Oops.Oh(ErrorCodeEnum.D1002);
            if (entity != null)
            {
                await _fBS_CusExtendRep.AsSugarClient().DeleteNav(entity).Include(x=>x.ExRoles).Include(x=>x.CustormerUsers).ExecuteCommandAsync();   //真删除
            }
            await   _fBS_CusExtendRep.AsTenant().CommitTranAsync();
        }
        catch (Exception)
        {
            await _fBS_CusExtendRep.AsTenant().RollbackTranAsync();
            throw;
        }
    }
    /// <summary>
@@ -159,9 +219,9 @@
        var exp = Expressionable.Create<FBS_CusExtend>();
        foreach (var row in input) exp = exp.Or(it => it.Id == row.Id);
        var list = await _fBS_CusExtendRep.AsQueryable().Where(exp.ToExpression()).ToListAsync();
       // return await _fBS_CusExtendRep.FakeDeleteAsync(list);   //假删除
        return await _fBS_CusExtendRep.DeleteAsync(list);   //真删除
        return await _fBS_CusExtendRep.AsSugarClient().DeleteNav(list).Include(x => x.ExRoles).Include(x => x.CustormerUsers).ExecuteCommandAsync();   //真删除
                                                                                                                                                  // return await _fBS_CusExtendRep.FakeDeleteAsync(list);   //假删除
        //return await _fBS_CusExtendRep.DeleteAsync(list);   //真删除
    }
    
    /// <summary>
@@ -220,15 +280,15 @@
                    // 校验并过滤必填基本类型为null的字段
                    var rows = pageItems.Where(x => {
                        if (!string.IsNullOrWhiteSpace(x.Error)) return false;
                        if (x.CustomerId == null){
                            x.Error = "用户ID不能为空";
                            return false;
                        }
                        if (!string.IsNullOrWhiteSpace(x.Error)) return false;
                        if (x.steps == null){
                            x.Error = "审核步骤不能为空";
                            return false;
                        }
                        //if (x.CustomerId == null){
                        //    x.Error = "用户ID不能为空";
                        //    return false;
                        //}
                        //if (!string.IsNullOrWhiteSpace(x.Error)) return false;
                        //if (x.steps == null){
                        //    x.Error = "审核步骤不能为空";
                        //    return false;
                        //}
                        return true;
                    }).Adapt<List<FBS_CusExtend>>();
                    
@@ -281,4 +341,185 @@
            return stream;
        }
    }
    /// <summary>
    /// 修改用户
    /// </summary>
    /// <param name="Param"></param>
    /// <returns></returns>
    [HttpPost]
    public  async Task<int > UpDataCustormerUser(FBS_CustormerUsersInPut Param)
    {
        if(Param.Id==null)
        {
            throw Oops.Oh("Id为空");
        }
     var Data=   await  _fBS_CustormerUsersRep.GetFirstAsync(x => x.Id == Param.Id && x.CusExtendId == Param.CusExtendId);
        if(Data==null)
        {
            throw Oops.Oh("数据不存在");
        }
            Data = _mapper.Map(Param, Data);
     return  await   _fBS_CustormerUsersRep.AsUpdateable(Data).ExecuteCommandAsync();
    }
    /// <summary>
    /// 获取用户信息
    /// </summary>
    /// <param name="CustormerUserId">这个是列表中袁弘用户表中的Id</param>
    /// <returns></returns>
    [HttpGet]
    public async Task<FBS_CustormerUsersOutput> GetCustormerUserInfo(long  CustormerUserId)
    {
        if (CustormerUserId == null)
        {
            throw Oops.Oh("Id为空");
        }
        var Data = await _fBS_CustormerUsersRep.GetFirstAsync(x => x.Id == CustormerUserId );
        if (Data == null)
        {
            throw Oops.Oh("数据不存在");
        }
        return Data.Adapt<FBS_CustormerUsersOutput>();
    }
    /// <summary>
    /// 修改用户
    /// </summary>
    /// <param name="Param"></param>
    /// <returns></returns>
    [HttpPost]
    public async Task<long > CareCustormerUser(FBS_CustormerUsersInPut Param)
    {
        if(Param.CusExtendId<=0)
            throw Oops.Oh("CusExtendId 无效");
        var Ex = await _fBS_CusExtendRep.GetByIdAsync(Param.CusExtendId);
        if(Ex==null)
            throw Oops.Oh("组织机构不存在或者异常");
        var Data = await _fBS_CustormerUsersRep.GetFirstAsync(x => x.CusExtendId == Param.CusExtendId && x.PhoneNumber == Param.PhoneNumber);
        if (Data != null)
        {
            throw Oops.Oh("同一个公司下手机号不能重复");
        }
        Data = Param.Adapt<FBS_CustormerUsers>();
        var id=  await _fBS_CustormerUsersRep.AsInsertable(Data).ExecuteReturnEntityAsync();
        return id.Id;
    }
    /// <summary>
    /// 获取组织机构的用户列表
    /// </summary>
    /// <param name="Param"></param>
    /// <returns></returns>
    [HttpGet]
    public async Task<List<FBS_CustormerUsersOutput>> GetCustormerUserList(long CusExtendId)
    {
        if (CusExtendId <= 0)
            throw Oops.Oh("CusExtendId 无效");
   return (await _fBS_CustormerUsersRep.GetListAsync(x => x.CusExtendId == CusExtendId)).Adapt<List< FBS_CustormerUsersOutput>>();
    }
    /// <summary>
    /// 删除一个用户员工
    /// </summary>
    /// <param name="CustormerUserId">这个是列表中袁弘用户表中的Id</param>
    /// <returns></returns>
    [HttpDelete]
    public async Task<bool> DelCustormerUser(long CustormerUserId)
    {
        return await _fBS_CustormerUsersRep.DeleteByIdAsync(CustormerUserId);
    }
    /// <summary>
    /// 分页查询待审企业角色🔖
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [DisplayName("分页查询待审企业角色")]
    [ApiDescriptionSettings(Name = "GetReviewPage"), HttpPost]
    public async Task<SqlSugarPagedList<FBS_CusExtendOutput>> GetReviewPage(BasePageInput input)
    {
        //var data            = await _fBS_CusExtendRep.AsQueryable().Includes(u => u.ExRoles, y => y.ExRole).Includes(u => u.CustormerUsers).ToListAsync();
        input.Keyword = input.Keyword?.Trim();
        var querlist1 = await _fBS_CusExtendRep.AsQueryable().RightJoin<FBS_CoutomerExRole>((ce, cer) => cer.CusExtendId == ce.Id).Where((ce, cer) => cer.steps == CusExtendStep.UNExamine || cer.steps == CusExtendStep.Change).Select((ce, cer) => new FBS_CusExtendOutput
        {
            steps = cer.steps,
            ExRole = SqlFunc.Subqueryable<FBS_ExRole>().Where(x => x.Id == cer.ExRoleId).First(),
            EnterpriseName = ce.EnterpriseName,
            CoutomerExRoleId = cer.Id,
            Id = ce.Id,
            CreateTime = SqlFunc.IsNullOrEmpty(cer.UpdateTime) == true ? cer.CreateTime:cer.UpdateTime
        }, true).OrderBy(ce => ce.CreateTime)
          .ToPagedListAsync(input.Page, input.PageSize);
        return querlist1;
        //var querlist = _fBS_CusExtendRep.AsQueryable().RightJoin<FBS_CoutomerExRole>((ce, cer) => cer.CusExtendId == ce.Id).Where((ce, cer) => cer.steps == CusExtendStep.UNExamine)
        //    .Select((ce, cer) => new FBS_CusExtendOutput
        //    {
        //        steps = cer.steps,
        //        ExRole = SqlFunc.Subqueryable<FBS_ExRole>().Where(x => x.Id == cer.ExRoleId).First(),
        //         EnterpriseName=ce.EnterpriseName,
        //         CoutomerExRoleId= cer.Id,
        //         Id= ce.Id
        //    },true);
        //var query = _fBS_CusExtendRep.AsQueryable().Includes(u => u.ExRoles, y => y.ExRole).Includes(u => u.CustormerUsers)
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.Keyword), u => u.EnterpriseType.Contains(input.Keyword) || u.BusinessLicense.Contains(input.Keyword) || u.EnterpriseName.Contains(input.Keyword) || u.UnifiedSocialCreditCode.Contains(input.Keyword) || u.RegisteredCapital.Contains(input.Keyword) || u.LegalRepresentativeName.Contains(input.Keyword) || u.LegalRepresentativeIdCard.Contains(input.Keyword) || u.LegalRepresentativeIdNumber.Contains(input.Keyword) || u.LegalRepresentativePhone.Contains(input.Keyword) || u.Residence.Contains(input.Keyword) || u.EnterprisePhone.Contains(input.Keyword) || u.MainBusiness.Contains(input.Keyword) || u.EnterpriseEmail.Contains(input.Keyword) || u.OperatorName.Contains(input.Keyword) || u.OperatorIdCard.Contains(input.Keyword) || u.OperatorIdNumber.Contains(input.Keyword) || u.OperatorPhone.Contains(input.Keyword) || u.BankName.Contains(input.Keyword) || u.BankAccount.Contains(input.Keyword))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.EnterpriseType), u => u.EnterpriseType.Contains(input.EnterpriseType.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.TransactionCode), u => u.ExRoles.Any(x => x.ExRole.Code == input.TransactionCode))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.BusinessLicense), u => u.BusinessLicense.Contains(input.BusinessLicense.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.EnterpriseName), u => u.EnterpriseName.Contains(input.EnterpriseName.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.UnifiedSocialCreditCode), u => u.UnifiedSocialCreditCode.Contains(input.UnifiedSocialCreditCode.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.RegisteredCapital), u => u.RegisteredCapital.Contains(input.RegisteredCapital.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.LegalRepresentativeName), u => u.LegalRepresentativeName.Contains(input.LegalRepresentativeName.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.LegalRepresentativeIdCard), u => u.LegalRepresentativeIdCard.Contains(input.LegalRepresentativeIdCard.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.LegalRepresentativeIdNumber), u => u.LegalRepresentativeIdNumber.Contains(input.LegalRepresentativeIdNumber.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.LegalRepresentativePhone), u => u.LegalRepresentativePhone.Contains(input.LegalRepresentativePhone.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.Residence), u => u.Residence.Contains(input.Residence.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.EnterprisePhone), u => u.EnterprisePhone.Contains(input.EnterprisePhone.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.MainBusiness), u => u.MainBusiness.Contains(input.MainBusiness.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.EnterpriseEmail), u => u.EnterpriseEmail.Contains(input.EnterpriseEmail.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.OperatorName), u => u.OperatorName.Contains(input.OperatorName.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.OperatorIdCard), u => u.OperatorIdCard.Contains(input.OperatorIdCard.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.OperatorIdNumber), u => u.OperatorIdNumber.Contains(input.OperatorIdNumber.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.OperatorPhone), u => u.OperatorPhone.Contains(input.OperatorPhone.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.BankName), u => u.BankName.Contains(input.BankName.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.BankAccount), u => u.BankAccount.Contains(input.BankAccount.Trim()))
        //    .WhereIF(input.EstablishmentTimeRange?.Length == 2, u => u.EstablishmentTime >= input.EstablishmentTimeRange[0] && u.EstablishmentTime <= input.EstablishmentTimeRange[1])
        //    .Select(u => new FBS_CusExtendOutput
        //    {
        //        ExRoles = u.ExRoles.Adapt<List<FBS_CoutomerExRoleOutput>>(),
        //        CustormerUsers = u.CustormerUsers.Adapt<List<FBS_CustormerUsersOutput>>()
        //    }, true);
        //return await querlist.OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize);
    }
}