// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
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;
///
/// 客户控制
///
[ApiDescriptionSettings("FZCAPISYS", Order = 149)]
public class CustomerService: IDynamicApiController
{
private readonly CustomerManagerS _customerManager;
private readonly SysCacheService _sysCacheService;
private readonly SqlSugarRepository _fBS_ExRoleRep;
private readonly SqlSugarRepository _fBS_EnterpriseTypeRep;
private readonly SqlSugarRepository _fBS_CustomerRep;
///
/// 用户扩展
///
private readonly SqlSugarRepository _fBS_CusExtendRep;
private IMapper _mapper;
///
///
///
public CustomerService(SysCacheService cacheService, CustomerManagerS managerS,SqlSugarRepository repository
, SqlSugarRepository fbsenrep,IMapper mapper,SqlSugarRepository exroles , SqlSugarRepository cusrep)
{
_sysCacheService= cacheService;
_customerManager = managerS;
_fBS_CustomerRep = repository;
_fBS_EnterpriseTypeRep = fbsenrep;
_fBS_ExRoleRep = exroles;
_fBS_CusExtendRep = cusrep;
_mapper = mapper;
}
///
/// 用户注册
///
///
[AllowAnonymous]
[HttpPost]
public async Task CustomerRegistration(CustomerRDto param )
{
//_customerManager.
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($"{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();
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()
{
new FBS_CoutomerExRole
{
ExRoleId= ExRole?.Id??0
}
};
await _fBS_CustomerRep.AsSugarClient().InsertNav(dd).Include(x=>x.CoutomerExRols).ExecuteCommandAsync();
return true;
}
///
/// 注册登录可选角色
///
///
[AllowAnonymous]
public async Task> GetExRole()
{
return await _customerManager.GetExRole();
}
///
/// 获取企业类型
///
///
[AllowAnonymous]
public async Task> EnterpriseTypes()
{
return await _fBS_EnterpriseTypeRep.AsQueryable().Select().ToTreeAsync(x=>x.Child,x=>x.ParentId,null,x=>x.Id);
}
///
/// 注册角色用户资料
///
///
[HttpPost]
public async Task 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)==true)
{
throw Oops.Oh("用户已经注册了该主体");
}
var data= cusExtend.Adapt();
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);
}
///
/// 获取 个人中心数据?
///
[HttpPost]
public async Task 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();
if(tab==null)
{
throw Oops.Oh("没有完成信息录入");
}
return tab;
}
///
/// 修改个人中心数据
///
[HttpPost]
public async Task 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);
}
}