移动系统liao
4 天以前 90bdaccc4bf6a99e68bd3ed3590bce8301c9cf47
Admin.NET/FZCTB.NET.API.Application/User/CustomerService.cs
@@ -4,44 +4,323 @@
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
using Admin.NET.Core;
using Admin.NET.Core.Service;
using Furion;
using Furion.DynamicApiController;
using Furion.FriendlyException;
using FZCTB.NET.API.Application.User.DTO;
using FZCZTB.NET.MD.ConfigMd;
using FZCZTB.NET.MD.CutomerMd;
using FZCZTB.NET.MD.CutomerMd.Extend;
using FZCZTB.NET.SYSService.CustomerSYS;
using Mapster;
using MapsterMapper;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.ViewComponents;
using NewLife;
using OfficeOpenXml.FormulaParsing.ExpressionGraph.FunctionCompilers;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static QRCoder.PayloadGenerator;
namespace FZCTB.NET.API.Application.User;
/// <summary>
/// 客户处里
/// 客户控制
/// </summary>
[ApiDescriptionSettings("FZCAPISYS", Order = 149)]
public class CustomerService: IDynamicApiController
{
  private  readonly CustomerManagerS _customerManager;
    private readonly SysCacheService _sysCacheService;
    private readonly SqlSugarRepository<FBS_ExRole> _fBS_ExRoleRep;
    private readonly SqlSugarRepository<FBS_EnterpriseType> _fBS_EnterpriseTypeRep;
    private readonly SqlSugarRepository<FBS_Customer> _fBS_CustomerRep;
    /// <summary>
    /// 用户扩展
    /// </summary>
    private readonly SqlSugarRepository<FBS_CusExtend> _fBS_CusExtendRep;
    private IMapper _mapper;
    /// <summary>
    /// 
    /// </summary>
    public CustomerService(SysCacheService cacheService, CustomerManagerS managerS)
    public CustomerService(SysCacheService cacheService, CustomerManagerS managerS,SqlSugarRepository<FBS_Customer>  repository
        , SqlSugarRepository<FBS_EnterpriseType> fbsenrep,IMapper mapper )
    {
        _sysCacheService= cacheService;
         _customerManager = managerS;
        _fBS_CustomerRep = repository;
        _fBS_EnterpriseTypeRep = fbsenrep;
        _mapper = mapper;
    }
    /// <summary>
    /// 用户注册
    /// </summary>
    /// <returns></returns>
    public async Task<bool>  CustomerRegistration(CustomerDto param )
    [AllowAnonymous]
    [HttpPost]
    public async Task<bool>  CustomerRegistration(CustomerRDto param )
    {
        //_customerManager.
         await Task.CompletedTask;
        var ExRole= (await _customerManager.GetExRole()).Where(x => x.Code == param.ExRoleCode).FirstOrDefault();
     if(ExRole==null)
        {
            throw Oops.Oh("请选择一个有效的角色进行注册");
        }
        //已选角色,请选择一个注册角色
       var data= await _fBS_CustomerRep.AsQueryable().Includes(X => X.CoutomerExRols,y=>y.ExRole).Where(x => x.Account == param.Account).FirstAsync();
        if (data != null)
        {
            if (data.CoutomerExRols.Any(x => x.ExRole.Code == param.ExRoleCode))
            {
                throw Oops.Oh("已经注册了该角色请勿重复注册");
            }
            else
            {
                throw Oops.Oh("该用户名重复,如果需要对该用户添加相应角色,请登录任意角色后添加");
            }
        }
       var vcode= _sysCacheService.Get<string>($"{CacheConst.KeyPhoneVerCode}{param.Phone}");
         if(param.PhoneVCode!="TEST")
        if(vcode!=param.PhoneVCode)
        {
            //手机验证码错误
            throw Oops.Oh("手机验证码错误,请输入正确的手机验证码");
        }
        //使用后立即删除
        _sysCacheService.Remove($"{CacheConst.KeyPhoneVerCode}{param.Phone}");
        var dd = param.Adapt<FBS_Customer>();
        dd.RealName = dd.NickName;
        dd.Account = dd.Phone;
        dd.Password = "";
        dd.TenantId = 1300000000001;
        dd.CreateTime = DateTime.Now;
        dd.CreateUserId = 0;
        dd.CreateUserName = dd.NickName;
        dd.CoutomerExRols = new List<FBS_CoutomerExRole>()
        {
            new FBS_CoutomerExRole
            {
                 ExRoleId= ExRole?.Id??0
            }
        };
      await   _fBS_CustomerRep.AsSugarClient().InsertNav(dd).Include(x=>x.CoutomerExRols).ExecuteCommandAsync();
        return true;
    }
    /// <summary>
    /// 注册登录可选角色
    /// </summary>
    /// <returns></returns>
    [AllowAnonymous]
    public async Task<List< ExRoleVM>> GetExRole()
    {
      return  await   _customerManager.GetExRole();
    }
    /// <summary>
    /// 获取企业类型
    /// </summary>
    /// <returns></returns>
    [AllowAnonymous]
    public async Task<List<EnterpriseTypeVM>> EnterpriseTypes()
    {
        return await _fBS_EnterpriseTypeRep.AsQueryable().Select<EnterpriseTypeVM>().ToTreeAsync(x=>x.Child,x=>x.ParentId,null,x=>x.Id);
    }
    /// <summary>
    /// 注册角色用户资料
    /// </summary>
    /// <returns></returns>
    [HttpPost]
    public async Task<bool> CreaterExRolsInformation(CusExtendDto cusExtend )
    {
        var id = App.User.FindFirst(ClaimConst.UserId)?.Value.ToLong() ?? 0;
        if (id == 0)
        {
            throw Oops.Oh("用户凭证错误");
        }
        var user=await _customerManager.GetCustomer(id);
        if(user==null)
        {
            throw Oops.Oh("用户不存在");
        }
       var rols= await  _fBS_ExRoleRep.GetFirstAsync(x => x.Code == cusExtend.TransactionCode && x.Status == StatusEnum.Enable);
        if(rols==null)
        {
            throw Oops.Oh("交易主体不存在");
        }
        if(user.CoutomerExRols.Any(x=>x.ExRole.Code==cusExtend.TransactionCode&& x.HasFlsh==true))
        {
            throw Oops.Oh("用户已经注册了该主体");
        }
        var data= cusExtend.Adapt<FBS_CusExtend>();
        data.steps = CusExtendStep.UNExamine;
        data.CustomerId = id;
        data.CreateTime = DateTime.Now;
        data.CreateUserName = user.NickName;
        data.TransactionCode = rols.Code;
      return   await _fBS_CusExtendRep.InsertAsync(data);
    }
    /// <summary>
    /// 获取 个人中心数据?
    /// </summary>
    [HttpPost]
    public async Task<CusExtendDto> GetCusExtendInfo()
    {
        var id = App.User.FindFirst(ClaimConst.UserId)?.Value.ToLong() ?? 0;
        if (id == 0)
        {
            throw Oops.Oh("用户凭证错误");
        }
        //
        var typeCode = App.User.FindFirst(ClaimConst.CustomerLogoinType)?.Value ;
        if (typeCode == null)
        {
            throw Oops.Oh("登录交易主体错误");
        }
        var user = await _customerManager.GetCustomer(id);
        if (user == null)
        {
            throw Oops.Oh("用户不存在");
        }
        var rols = await _fBS_ExRoleRep.GetFirstAsync(x => x.Code == typeCode && x.Status == StatusEnum.Enable);
        if (rols == null)
        {
            throw Oops.Oh("登录交易主体无效");
        }
       var tab= (await _fBS_CusExtendRep.GetFirstAsync(x => x.CustomerId == id && x.TransactionCode == typeCode)).Adapt<CusExtendDto>();
        if(tab==null)
        {
            throw Oops.Oh("没有完成信息录入");
        }
        return tab;
    }
    /// <summary>
    /// 修改个人中心数据
    /// </summary>
    [HttpPost]
    public async Task<bool> ChangeCusExtend(CusExtendDto InParam)
    {
        var id = App.User.FindFirst(ClaimConst.UserId)?.Value.ToLong() ?? 0;
        if (id == 0)
        {
            throw Oops.Oh("用户凭证错误");
        }
        //
        var typeCode = App.User.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (typeCode == null)
        {
            throw Oops.Oh("登录交易主体错误");
        }
        var user = await _customerManager.GetCustomer(id);
        if (user == null)
        {
            throw Oops.Oh("用户不存在");
        }
        var rols = await _fBS_ExRoleRep.GetFirstAsync(x => x.Code == typeCode && x.Status == StatusEnum.Enable);
        if (rols == null)
        {
            throw Oops.Oh("登录交易主体无效");
        }
        var tab = await _fBS_CusExtendRep.GetFirstAsync(x => x.CustomerId == id && x.TransactionCode == typeCode);
        if (tab == null)
        {
            throw Oops.Oh("没有完成信息录入");
        }
        //法人
        if (tab.LegalRepresentativeIdCard != InParam.LegalRepresentativeIdCard)
        {
            tab.LegalRepresentativeIdCard = InParam.LegalRepresentativeIdCard;
            tab.LegalRepresentativeIdNumber = InParam.LegalRepresentativeIdNumber;
            tab.LegalRepresentativeName = InParam.LegalRepresentativeName;
            tab.LegalRepresentativePhone = InParam.LegalRepresentativePhone;
            //重新审核?
            tab.steps = CusExtendStep.Change;
        }
        //企业信息
        if (tab.BusinessLicense != InParam.BusinessLicense)
        {
            tab.EstablishmentTime = tab.EstablishmentTime;
            tab.RegisteredCapital = tab.RegisteredCapital;
            tab.Residence = tab.Residence;
            tab.MainBusiness = InParam.MainBusiness;
            tab.EnterpriseType = InParam.EnterpriseType;
            tab.EnterpriseName = InParam.EnterpriseName;
            tab.BusinessLicense = InParam.BusinessLicense;
            //重新审核?
            tab.steps = CusExtendStep.Change;
        }
        //联系电话
        tab.EnterprisePhone = InParam.EnterprisePhone;
        tab.EnterpriseEmail = InParam.EnterpriseEmail;
        //银行是否需要修改
        tab.BankAccount = InParam.BankAccount;
        tab.BankName = InParam.BankName;
        // 经办人
        if (tab.OperatorIdCard != InParam.OperatorIdCard)
        {
            tab.OperatorIdCard = InParam.OperatorIdCard;
            tab.OperatorIdNumber = InParam.OperatorIdNumber;
            tab.OperatorName = InParam.OperatorName;
            tab.OperatorPhone = InParam.OperatorPhone;
        }
        return await _fBS_CusExtendRep.UpdateAsync(tab);
    }
}