Admin.NET/Admin.NET.Application/Configuration/Logging.json
@@ -43,7 +43,7 @@ "JsonBehavior": "None", // 是否输出Json,默认None(OnlyJson、All) "JsonIndented": false, // 是否格式化Json "UseUtcTimestamp": false, // 时间格式UTC、LOCAL "ConsoleLog": true // 是否显示控制台日志 "ConsoleLog": false // 是否显示控制台日志 } } } Admin.NET/Admin.NET.Core/Const/CacheConst.cs
@@ -42,6 +42,11 @@ public const string KeyPhoneVerCode = "sys_phoneVerCode:"; /// <summary> /// 二次登陆验证码 /// </summary> public const string KeyLogoVerCode = "sys_KeyLogoVerCode:"; /// <summary> /// 密码错误次数缓存 /// </summary> public const string KeyPasswordErrorTimes = "sys_password_error_times:"; Admin.NET/Admin.NET.Core/Const/ClaimConst.cs
@@ -77,4 +77,10 @@ /// 客户登录类型 /// </summary> public const string CustomerLogoinType = "CustomerLogoinType"; /// <summary> /// 企业id /// </summary> public const string CustomerExId = "CustomerExId"; } Admin.NET/EzUpFile/UpFileController.cs
@@ -1,5 +1,6 @@ using EzTencentCloud; using Furion.FriendlyException; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http.HttpResults; using Microsoft.AspNetCore.Mvc; @@ -38,6 +39,7 @@ /// <param name="PageName"> 身份证正反面 FRONT 正面 Back 国徽反面 </param> /// <returns></returns> [HttpPost] [AllowAnonymous] public async Task<Object> UploadIdCord([FromServices] IEzFileUploadService fileUploadService,IFormFile file, [FromQuery] string PageName = "FRONT") { @@ -52,6 +54,7 @@ /// <param name="PageName"> 身份证正反面 FRONT 正面 Back 国徽反面 </param> /// <returns></returns> [HttpPost] [AllowAnonymous] public async Task<Object> UpBizLicense([FromServices] IEzFileUploadService fileUploadService, IFormFile file) { @@ -110,6 +113,7 @@ /// <param name="fileUploadService"></param> /// <returns></returns> [HttpPost] [AllowAnonymous] public async Task<string> UpdateFile([FromServices] IEzFileUploadService fileUploadService, IFormFile file) { return await fileUploadService.UploadFiles(); Admin.NET/FZCTB.NET.API.Application/Auth/AuthService.cs
@@ -21,6 +21,11 @@ using FZCZTB.NET.SYSService.CustomerSYS; using Furion; using NewLife; using cylsg.utility.Extend; using static QRCoder.PayloadGenerator; using FZCZTB.NET.MD.CutomerMd.Extend; using Furion.DependencyInjection; using Microsoft.Extensions.Options; namespace FZCTB.NET.API.Application.Auth { @@ -32,8 +37,10 @@ { private readonly UserManager _userManager; private readonly SqlSugarRepository<FBS_Customer> _sysUserRep; private readonly SMSConfigOptions _smsOptions; private readonly SqlSugarRepository<FBS_CustormerUsers> _sysUserRep; private readonly SqlSugarRepository<FBS_CoutomerExRole> _sysUserExRol; private readonly SqlSugarRepository<FBS_ExRole> _sysExRol; private readonly IHttpContextAccessor _httpContextAccessor; private readonly SysMenuService _sysMenuService; private readonly SysOnlineUserService _sysOnlineUserService; @@ -46,7 +53,8 @@ private readonly SysCacheService _sysCacheService; public AuthService( SqlSugarRepository<FBS_Customer> sysUserRep, SqlSugarRepository<FBS_CustormerUsers> sysUserRep, SqlSugarRepository<FBS_CoutomerExRole> sysUserExRol, IHttpContextAccessor httpContextAccessor, SysOnlineUserService sysOnlineUserService, SysConfigService sysConfigService, @@ -56,12 +64,16 @@ SysCacheService sysCacheService, SysMenuService sysMenuService, SysUserService sysUserService, UserManager userManager, ICaptcha captcha) IOptions<SMSConfigOptions> smsConfigOptions, SqlSugarRepository<FBS_ExRole> exrel, ICaptcha captcha ) { _captcha = captcha; _sysUserRep = sysUserRep; _userManager = userManager; _sysSmsService = sysSmsService; _eventPublisher = eventPublisher; _sysUserService = sysUserService; @@ -71,6 +83,9 @@ _httpContextAccessor = httpContextAccessor; _sysOnlineUserService = sysOnlineUserService; _sysLdapService = sysLdapService; _smsOptions = smsConfigOptions.Value; _sysExRol = exrel; _sysUserExRol = sysUserExRol; } /// <summary> @@ -82,24 +97,67 @@ [DisplayName("手机号登录")] public virtual async Task<CustomerLoginOutput> LoginPhone([Required] CustomerLoginPhoneInput input) { if(input.Id>0) { //最后一次确认登陆状态 var verifyCode = _sysCacheService.Get<string>($"{CacheConst.KeyPhoneVerCode}{input.Phone}"); if (string.IsNullOrWhiteSpace(verifyCode)) throw Oops.Oh("验证码不存在或已失效,请重新获取!"); _sysCacheService.Remove($"{CacheConst.KeyPhoneVerCode}{input.Phone}"); if (verifyCode != input.Code) throw Oops.Oh("登录码失效"); var user = await _sysUserRep.AsQueryable().Where(x => x.Id == input.Id && x.IsEn == true).FirstAsync(); if(user == null) throw Oops.Oh("没有找到该手机用户"); return await CreateToken(user, input.ExRuleCode ?? ""); } if(input.Code!="TEST") // 校验短信验证码 _sysSmsService.VerifyCode(new SmsVerifyCodeInput { Phone = input.Phone, Code = input.Code }); // 获取登录租户和用户 // 获取登录租户和用户 var user = await _sysUserRep.AsQueryable().Where(x => x.Account == input.Phone).Includes(x => x.CoutomerExRols, y => y.ExRole).FirstAsync(); if (user == null) var userList = await _sysUserRep.AsQueryable().Where(x => x.PhoneNumber == input.Phone&&x.IsEn==true).Includes(x=>x.CusExtend).ToListAsync(); if (userList == null) { throw Oops.Oh("该用户没有注册"); throw Oops.Oh("没有找到该手机用户"); } if(user.Status== StatusEnum.Disable) if(userList.Count>1) { throw Oops.Oh("用异常"); } // 生成随机验证码 var random = new Random(); var verifyCode = random.Next(100000, 999999); //需要二次登陆 var aRet = new CustomerLoginOutput { TheLastLogo = false, CustomerExs = new List<CustomerExVm>(), Code = verifyCode.ToString(), }; _sysCacheService.Set($"{CacheConst.KeyPhoneVerCode}{input.Phone}", verifyCode.ToString(), TimeSpan.FromSeconds(_smsOptions.lingKai.VerifyTimeOut.ToInt())); foreach (var item in userList) { aRet.CustomerExs.Add(new CustomerExVm { CustomerUserID = item.Id, EnterpriseName = item.CusExtend.EnterpriseName, UnifiedSocialCreditCode = item.CusExtend.UnifiedSocialCreditCode.MaskMiddle(), IsManger = item.IsManager return await CreateToken(user, input.ExRuleCode??""); }); } return aRet; } return await CreateToken(userList[0], input.ExRuleCode??""); } /// <summary> @@ -114,19 +172,24 @@ throw Oops.Oh("用户凭证错误"); } // var rols = await _sysExRol.GetFirstAsync(x => x.Code == RuleCode && x.Status == StatusEnum.Enable); if(rols==null) throw Oops.Oh("角色已经下线"); // 获取登录租户和用户 // 获取登录租户和用户 var user = await _sysUserRep.AsQueryable().Where(x => x.Id == id).Includes(x => x.CoutomerExRols, y => y.ExRole).FirstAsync(); var user = await _sysUserRep.AsQueryable().Where(x => x.Id == id).FirstAsync(); if (user == null) { throw Oops.Oh("该用户没有注册"); } if (user.Status == StatusEnum.Disable) if (user.IsEn == false) { throw Oops.Oh("用异常"); } var exr= await _sysUserExRol.GetFirstAsync(x=>x.CusExtendId==user.CusExtendId&&x.ExRoleId== rols.Id); if (exr==null) throw Oops.Oh("没有申请该角色"); return await CreateToken(user, RuleCode); @@ -141,18 +204,18 @@ [DisplayName("微信扫码登录")] public virtual async Task<CustomerLoginOutput> WeiXinLoginPhone([Required] CustomerLoginPhoneInput input) { throw Oops.Oh("咋不支持微信扫码登录"); throw Oops.Oh("暂时不支持微信扫码登录"); // 校验短信验证码 _sysSmsService.VerifyCode(new SmsVerifyCodeInput { Phone = input.Phone, Code = input.Code }); //_sysSmsService.VerifyCode(new SmsVerifyCodeInput { Phone = input.Phone, Code = input.Code }); // 获取登录租户和用户 var user = await _sysUserRep.AsQueryable().Where(x=>x.Account==input.Phone).Includes(x => x.CoutomerExRols, y => y.ExRole).FirstAsync(); if(user==null) { //// 获取登录租户和用户 //var user = await _sysUserRep.AsQueryable().Where(x=>x.Account==input.Phone).Includes(x => x.CoutomerExRols, y => y.ExRole).FirstAsync(); //if(user==null) //{ } //} return await CreateToken(user, input.ExRuleCode ); //return await CreateToken(user, input.ExRuleCode ); } /// <summary> @@ -162,7 +225,7 @@ /// <param name="sysUserEventTypeEnum"></param>\ /// <returns></returns> [NonAction] internal async Task<CustomerLoginOutput> CreateToken(FBS_Customer user,string ExRuleCode, SysUserEventTypeEnum sysUserEventTypeEnum = SysUserEventTypeEnum.Login) internal async Task<CustomerLoginOutput> CreateToken(FBS_CustormerUsers user,string ExRuleCode, SysUserEventTypeEnum sysUserEventTypeEnum = SysUserEventTypeEnum.Login) { // 单用户登录 await _sysOnlineUserService.SingleLogin(user.Id); @@ -172,11 +235,12 @@ var accessToken = JWTEncryption.Encrypt(new Dictionary<string, object> { { ClaimConst.UserId, user.Id }, { ClaimConst.TenantId, user.TenantId }, { ClaimConst.Account, user.Account }, { ClaimConst.RealName, user.RealName }, { ClaimConst.TenantId, user.CusExtendId }, { ClaimConst.Account, user.PhoneNumber.PrivacyStr() }, { ClaimConst.RealName, user.Nickname??user.Name }, { ClaimConst.UserType, "Customer" }, { ClaimConst.CustomerExId, user.CusExtendId }, { ClaimConst.CustomerLogoinType, ExRuleCode }, }, tokenExpire); @@ -210,6 +274,8 @@ { AccessToken = accessToken, RefreshToken = refreshToken, TheLastLogo=true, @@ -217,20 +283,20 @@ } }; payload.Output.ExRoles = new List<CustomerExRoleVm>(); foreach (var item in user.CoutomerExRols) payload.Output.ExRoles = await _sysUserExRol.AsQueryable().Where(x => x.CusExtendId == user.CusExtendId).Includes(x => x.ExRole).Select(x => new CustomerExRoleVm { Code = x.ExRole.Code, HasFlsh = x.steps == CusExtendStep.Pass, Name = x.ExRole.Name }).ToListAsync(); payload.Output.ExRoles.Add(new CustomerExRoleVm { Code = item.ExRole.Code, Name = item.ExRole.Name, HasFlsh = item.HasFlsh }); } //暂时不出用户事件 // 发布系统用户操作事件 //await _eventPublisher.PublishAsync(sysUserEventTypeEnum, payload); Admin.NET/FZCTB.NET.API.Application/Auth/DTO/CustomerLoginOutput.cs
@@ -18,6 +18,10 @@ public class CustomerLoginOutput { /// <summary> /// /// </summary> public bool TheLastLogo { get; set; } /// <summary> /// 令牌Token /// </summary> public string AccessToken { get; set; } @@ -31,6 +35,15 @@ /// 用户角色即完成情况 /// </summary> public List<CustomerExRoleVm>? ExRoles { get; set; } /// <summary> /// 关联企业机构 /// </summary> public List<CustomerExVm>? CustomerExs { get; set; } /// <summary> /// 临时验证码 /// </summary> public string? Code { get; set; } } /// <summary> @@ -57,9 +70,14 @@ /// </summary> public bool HasFlsh { get; set; } = false; } public class CustomerLoginPhoneInput { @@ -85,5 +103,42 @@ /// </summary> public string? ExRuleCode { get; set; } /// <summary> /// 第二次登陆的Id /// </summary> public long? Id { get; set; } } /// <summary> /// 企业机构列表 /// </summary> public class CustomerExVm { /// <summary> /// 确认用户ID /// </summary> public long CustomerUserID { get; set; } /// <summary> /// 企业名称 /// </summary> [Required(ErrorMessage = "企业名称为必填项")] [SugarColumn(ColumnDescription = "企业名称")] public string EnterpriseName { get; set; } /// <summary> /// 统一社会信用代码 /// </summary> [Required(ErrorMessage = "统一社会信用代码为必填项")] [SugarColumn(ColumnDescription = "统一社会信用代码")] public string UnifiedSocialCreditCode { get; set; } /// <summary> /// 是否是管理 /// </summary> public bool IsManger { get; set; } } Admin.NET/FZCTB.NET.API.Application/FZCTB.NET.API.Application.csproj
@@ -11,6 +11,7 @@ <ProjectReference Include="..\Admin.NET.Application\Admin.NET.Application.csproj" /> <ProjectReference Include="..\Admin.NET.Core\Admin.NET.Core.csproj" /> <ProjectReference Include="..\EzUpFile\EzUpFile.csproj" /> <ProjectReference Include="..\FZCZTB.Net.CustomerSYSTem\FZCZTB.Net.CustomerSYSTem.csproj" /> <ProjectReference Include="..\FZCZTB.NET.MD\FZCZTB.NET.MD.csproj" /> <ProjectReference Include="..\FZCZTB.NET.SYSService\FZCZTB.NET.SYSService.csproj" /> </ItemGroup> Admin.NET/FZCTB.NET.API.Application/User/CustomerService.cs
@@ -6,15 +6,21 @@ using Admin.NET.Core; using Admin.NET.Core.Service; using Aop.Api.Domain; using Dm.util; using Furion; using Furion.DependencyInjection; using Furion.DynamicApiController; using Furion.FriendlyException; using FZCTB.NET.API.Application.Auth; using FZCTB.NET.API.Application.Auth.DTO; using FZCTB.NET.API.Application.User.DTO; using FZCZTB.Net.CustomerSYSTem; using FZCZTB.NET.MD.ConfigMd; using FZCZTB.NET.MD.CutomerMd; using FZCZTB.NET.MD.CutomerMd.Extend; using FZCZTB.NET.SYSService.CustomerSYS; using Lazy.Captcha.Core.Generator.Image.Gif; using Mapster; using MapsterMapper; using Microsoft.AspNetCore.Authorization; @@ -34,7 +40,7 @@ /// 客户控制 /// </summary> [ApiDescriptionSettings("FZCAPISYS", Order = 149)] public class CustomerService: IDynamicApiController public class CustomerService: IDynamicApiController,IScoped { private readonly CustomerManagerS _customerManager; @@ -43,6 +49,8 @@ private readonly SqlSugarRepository<FBS_CoutomerExRole> _fBS_CustomerExRoleRep; private readonly SqlSugarRepository<FBS_EnterpriseType> _fBS_EnterpriseTypeRep; private readonly SqlSugarRepository<FBS_Customer> _fBS_CustomerRep; private readonly SqlSugarRepository<FBS_CustormerUsers> _fBS_CustormerUsersRep; /// <summary> /// 用户扩展 /// </summary> @@ -53,9 +61,12 @@ /// /// </summary> public CustomerService(SysCacheService cacheService, CustomerManagerS managerS,SqlSugarRepository<FBS_Customer> repository , SqlSugarRepository<FBS_EnterpriseType> fbsenrep,IMapper mapper,SqlSugarRepository<FBS_ExRole> exroles , , SqlSugarRepository<FBS_EnterpriseType> fbsenrep,IMapper mapper, SqlSugarRepository<FBS_ExRole> exroles , SqlSugarRepository<FBS_CusExtend> cusrep, SqlSugarRepository<FBS_CoutomerExRole> cexrrep) SqlSugarRepository<FBS_CoutomerExRole> cexrrep , SqlSugarRepository<FBS_CustormerUsers> cusUser ) { _sysCacheService= cacheService; _customerManager = managerS; @@ -65,6 +76,8 @@ _fBS_CusExtendRep = cusrep; _mapper = mapper; _fBS_CustomerExRoleRep = cexrrep; _fBS_CustormerUsersRep = cusUser; } /// <summary> @@ -73,7 +86,7 @@ /// <returns></returns> [AllowAnonymous] [HttpPost] public async Task<bool> CustomerRegistration(CustomerRDto param ) public async Task<string> CustomerRegistration(FBS_CusExtendVm param ) { //_customerManager. var ExRole= (await _customerManager.GetExRole()).Where(x => x.Code == param.ExRoleCode).FirstOrDefault(); @@ -83,68 +96,98 @@ 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("已经注册了该角色请勿重复注册"); } // //已选角色,请选择一个注册角色 //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("该用户名重复,如果需要对该用户添加相应角色,请登录任意角色后添加"); } // else // { // throw Oops.Oh("该用户名重复,如果需要对该用户添加相应角色,请登录任意角色后添加"); // } } var vcode= _sysCacheService.Get<string>($"{CacheConst.KeyPhoneVerCode}{param.Phone}"); // } var vcode= _sysCacheService.Get<string>($"{CacheConst.KeyPhoneVerCode}{param.OperatorPhone}"); 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; _sysCacheService.Remove($"{CacheConst.KeyPhoneVerCode}{param.OperatorPhone}"); var cusex = await _fBS_CusExtendRep.GetFirstAsync(x => x.UnifiedSocialCreditCode == param.UnifiedSocialCreditCode); if(cusex!=null) { throw Oops.Oh("该企业已经注册"); } var dd = param.Adapt<FBS_CusExtend>(); dd.TransactionCode = param.ExRoleCode; dd.CreateTime = DateTime.Now; dd.CreateUserId = 0; dd.CreateUserName = dd.NickName; if(dd.CoutomerExRols==null) dd.CreateUserName = "用户注册"; await _fBS_CusExtendRep.AsTenant().BeginTranAsync(); try { new List<FBS_CoutomerExRole>() { new FBS_CoutomerExRole dd = await _fBS_CusExtendRep.InsertReturnEntityAsync(dd); FBS_CoutomerExRole rulse = new FBS_CoutomerExRole { ExRoleId= ExRole?.Id??0 CusExtendId = dd.Id, ExRoleId = ExRole.Id ?? 0, steps = CusExtendStep.UNExamine } }; await _fBS_CustomerExRoleRep.InsertAsync(rulse); FBS_CustormerUsers user = new FBS_CustormerUsers { CusExtendId = dd.Id, PhoneNumber = dd.OperatorPhone, IsEn = true, IsManager = true, JobTitle = param.JobTitle, Name = dd.OperatorName, Nickname = param.Nickname, CreateTime = dd.CreateTime, CreateUserId = 0, CreateUserName = "用户注册", }; await _fBS_CustormerUsersRep.InsertAsync(user); await _fBS_CusExtendRep.AsTenant().CommitTranAsync(); return "注册成功"; } catch (Exception) { await _fBS_CusExtendRep.AsTenant().RollbackTranAsync(); throw; }; } else { dd.CoutomerExRols.add(new FBS_CoutomerExRole { ExRoleId = ExRole?.Id ?? 0 }); } await _fBS_CustomerRep.AsSugarClient().InsertNav(dd).Include(x=>x.CoutomerExRols).ExecuteCommandAsync(); return true; } /// <summary> /// 注册登录可选角色 @@ -169,8 +212,8 @@ /// 注册角色用户资料 /// </summary> /// <returns></returns> [HttpPost] public async Task<bool> CreaterExRolsInformation(CusExtendDto cusExtend ) [HttpGet] public async Task<bool> CreaterExRolsInformation(string RuleCode) { var id = App.User.FindFirst(ClaimConst.UserId)?.Value.ToLong() ?? 0; @@ -184,16 +227,16 @@ { throw Oops.Oh("用户不存在"); } var rols= await _fBS_ExRoleRep.GetFirstAsync(x => x.Code == cusExtend.TransactionCode && x.Status == StatusEnum.Enable); var data = await _fBS_ExRoleRep.AsQueryable().ToListAsync(); var rols= await _fBS_ExRoleRep.GetFirstAsync(x => x.Code == RuleCode && x.Status == StatusEnum.Enable); if(rols==null) { throw Oops.Oh("交易主体不存在"); } var ExRoles = await _fBS_CustomerExRoleRep.GetListAsync(x => x.CustomerId == id); var ExRoles = await _fBS_CustomerExRoleRep.GetListAsync(x => x.CusExtendId == user.CusExtendId); if (ExRoles != null) { if (ExRoles?.Any(x => x.ExRoleId == rols.Id && x.HasFlsh == true) == true) if (ExRoles?.Any(x => x.ExRoleId == rols.Id ) == true) { throw Oops.Oh("用户已经注册了该主体"); } @@ -204,33 +247,14 @@ await _fBS_CustomerExRoleRep.InsertAsync(new FBS_CoutomerExRole { ExRoleId = rols.Id, CustomerId = id CusExtendId = user.CusExtendId, steps= CusExtendStep.UNExamine, }); var usdata = await _fBS_CusExtendRep.GetFirstAsync(x => x.CustomerId == id&&x.TransactionCode==cusExtend.TransactionCode); if (usdata!=null) { if (usdata.steps == CusExtendStep.Pass) { throw Oops.Oh("用户已经注册了该主体"); } 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); return true; @@ -265,12 +289,12 @@ { throw Oops.Oh("登录交易主体无效"); } var tab= (await _fBS_CusExtendRep.GetFirstAsync(x => x.CustomerId == id && x.TransactionCode == typeCode)).Adapt<CusExtendDto>(); if(tab==null) return await _fBS_CusExtendRep.AsQueryable().Where(x => x.Id == user.CusExtendId).Includes(x => x.ExRoles, y => y.ExRole).Select(x => new CusExtendDto { throw Oops.Oh("没有完成信息录入"); } return tab; ExRoles = x.ExRoles.Adapt<List<FBS_CoutomerExRoleOutput>>() }, true).FirstAsync(); } @@ -304,18 +328,14 @@ { throw Oops.Oh("登录交易主体无效"); } var tab = await _fBS_CusExtendRep.GetFirstAsync(x => x.CustomerId == id && x.TransactionCode == typeCode); var tab = await _fBS_CusExtendRep.GetFirstAsync(x => x.Id == user.CusExtendId ); if (tab == null) { throw Oops.Oh("没有完成信息录入"); } bool isChangeData = false; if (tab.steps== CusExtendStep.Change) { isChangeData = true; } //法人 @@ -326,7 +346,7 @@ tab.LegalRepresentativeName = InParam.LegalRepresentativeName; tab.LegalRepresentativePhone = InParam.LegalRepresentativePhone; //重新审核? tab.steps = CusExtendStep.Change; isChangeData=true; } @@ -341,12 +361,12 @@ tab.EnterpriseName = InParam.EnterpriseName; tab.BusinessLicense = InParam.BusinessLicense; //重新审核? tab.steps = CusExtendStep.Change; isChangeData = true; } if (tab.EnterpriseType != InParam.EnterpriseType) { tab.EnterpriseType = InParam.EnterpriseType; tab.steps = CusExtendStep.Change; } //联系电话 @@ -355,15 +375,15 @@ if (tab.BankAccount != InParam.BankAccount) { //联系电话 tab.BankAccount = InParam.BankAccount; tab.steps = CusExtendStep.Change; isChangeData = true; } if (tab.BankName != InParam.BankName) { tab.BankName = InParam.BankName; tab.steps = CusExtendStep.Change; isChangeData = true; } //银行是否需要修改 //tab.BankAccount = InParam.BankAccount; @@ -377,40 +397,27 @@ tab.OperatorIdNumber = InParam.OperatorIdNumber; tab.OperatorName = InParam.OperatorName; tab.OperatorPhone = InParam.OperatorPhone; isChangeData = true; } await _fBS_CusExtendRep.AsTenant().BeginTranAsync(); try { if((!isChangeData)&&tab.steps== CusExtendStep.Change) if(!isChangeData) { //是更改,需要工改cer的值 var exrolerep= await _fBS_CustomerExRoleRep.GetFirstAsync(x=>x.ExRoleId== rols.Id&&x.CustomerId==tab.CustomerId); if(exrolerep!=null) //是更改,需要更该所有roles的值 var exrolerep= await _fBS_CustomerExRoleRep.GetListAsync(x=>x.CusExtendId==user.CusExtendId); foreach (var item in exrolerep) { if (exrolerep.HasFlsh != false) { exrolerep.HasFlsh = false; //改变状态 await _fBS_CustomerExRoleRep.UpdateAsync(exrolerep); }; item.steps = CusExtendStep.Change; } else { await _fBS_CustomerExRoleRep.InsertAsync(new FBS_CoutomerExRole { CustomerId = tab.CustomerId, ExRoleId = rols.Id, HasFlsh = false }); } await _fBS_CustomerExRoleRep.UpdateRangeAsync(exrolerep); } await _fBS_CusExtendRep.UpdateAsync(tab); await _fBS_CusExtendRep.AsTenant().CommitTranAsync(); @@ -426,6 +433,215 @@ } /// <summary> /// 获取账户列表 /// </summary> /// <returns></returns> [HttpGet] public async Task<List<FBS_CustormerUsersOutput> > GetCustormerUsersList() { var id = App.User.FindFirst(ClaimConst.CustomerExId)?.Value.ToLong() ?? 0; if (id == 0) { throw Oops.Oh("用户凭证错误"); } if (!await isManger()) throw Oops.Oh("用户没有权限"); return (await _fBS_CustormerUsersRep.GetListAsync(x => x.CusExtendId == id&&x.IsEn==true)).Adapt<List<FBS_CustormerUsersOutput>>(); } public FBS_CustormerUsers? ThisUser { get; set; } /// <summary> /// 新建员工数据 /// </summary> /// <returns></returns> [HttpPost] public async Task<bool> CreatCustormerUsers(FBS_CustormerUsersVM param) { if (!await isManger()) throw Oops.Oh("用户没有权限"); var cid = App.User.FindFirst(ClaimConst.CustomerExId)?.Value.ToLong() ?? 0; if (cid == 0) { throw Oops.Oh("用户凭证错误"); } var count = await _fBS_CustormerUsersRep.CountAsync(x=>x.CusExtendId== cid); if(count>10) { throw Oops.Oh("同一组织机构最多可以建立10个用户"); } var User = await _fBS_CustormerUsersRep.GetFirstAsync(x => x.CusExtendId == cid && x.PhoneNumber == param.PhoneNumber); if(User!=null) { throw Oops.Oh("同一家公司账户不能同时出现相同的电话号码"); } User = param.Adapt<FBS_CustormerUsers>(); User.CusExtendId = cid; User.IsManager = false; User.CreateTime = DateTime.Now; User.CreateUserName ="企业用户:"+ ThisUser?.Name; User.CreateUserId = ThisUser?.Id; return await _fBS_CustormerUsersRep.InsertAsync(User); } /// <summary> /// 更改管理员 /// </summary> /// <param name="CustormerUserId"> UserList 的ID</param> /// <returns></returns> [HttpGet] public async Task<bool> ChangeManager(long CustormerUserId ) { if (!await isManger()) throw Oops.Oh("用户没有权限"); var cid = App.User.FindFirst(ClaimConst.CustomerExId)?.Value.ToLong() ?? 0; if (cid == 0) { throw Oops.Oh("用户凭证错误"); } var uid = App.User.FindFirst(ClaimConst.UserId)?.Value.ToLong() ?? 0; if (uid == 0) { throw Oops.Oh("用户凭证错误"); } if(CustormerUserId== uid) return true; if (ThisUser==null) { ThisUser = await _fBS_CustormerUsersRep.GetFirstAsync(x => x.Id == uid && x.CusExtendId == cid && x.IsEn == true); } var User = await _fBS_CustormerUsersRep.GetFirstAsync(x =>x.CusExtendId==ThisUser.CusExtendId &&x.Id== CustormerUserId); if (User != null) { throw Oops.Oh("用户不存在"); } if(User.IsEn==false) throw Oops.Oh("无效用户不可设置为管理员"); User.IsManager = true; User.UpdateTime = DateTime.Now; User.UpdateUserName= "企业用户:" + ThisUser?.Name; User.UpdateUserId = ThisUser.Id; //ThisUser.IsManager = false; //ThisUser.UpdateTime = DateTime.Now; //ThisUser.UpdateUserName = "企业用户:" + ThisUser?.Name; //不互斥 //ThisUser.UpdateUserId = ThisUser.Id; await _fBS_CustormerUsersRep.AsTenant().BeginTranAsync(); try { await _fBS_CustormerUsersRep.UpdateAsync(User); //await _fBS_CustormerUsersRep.UpdateAsync(ThisUser); //不互斥 await _fBS_CustormerUsersRep.AsTenant().CommitTranAsync(); return false; } catch (Exception) { await _fBS_CustormerUsersRep.AsTenant().RollbackTranAsync(); throw; } } /// <summary> /// 更改员工信息 /// </summary> /// <param name="CustormerUserId"> UserList 的ID</param> /// <returns></returns> [HttpPost] public async Task<bool> UpdataCustormerUsers( FBS_CustormerUsersVM Param) { if (!await isManger()) throw Oops.Oh("用户没有权限"); var cid = App.User.FindFirst(ClaimConst.CustomerExId)?.Value.ToLong() ?? 0; if (cid == 0) { throw Oops.Oh("用户凭证错误"); } var uid = App.User.FindFirst(ClaimConst.UserId)?.Value.ToLong() ?? 0; if (uid == 0) { throw Oops.Oh("用户凭证错误"); } if(Param.Id==null) { throw Oops.Oh("Id错误"); } if(Param.CusExtendId!=Param.Id) { throw Oops.Oh("组织机构不同不可修改"); } var User = await _fBS_CustormerUsersRep.GetFirstAsync(x => x.CusExtendId == Param.CusExtendId && x.Id == Param.Id); if (User != null) { throw Oops.Oh("用户不存在"); } User = _mapper.Map(Param, User); User.CreateTime = DateTime.Now; User.CreateUserName = "企业用户:" + ThisUser?.Name; User.CreateUserId = ThisUser?.Id; return await _fBS_CustormerUsersRep.UpdateAsync(User); } /// <summary> /// 权限验证是否是管理员 /// </summary> /// <returns></returns> [NonAction] public async Task< bool> isManger() { if (ThisUser != null) return ThisUser.IsManager; //用户ID var id = App.User.FindFirst(ClaimConst.UserId)?.Value.ToLong() ?? 0; if (id == 0) { throw Oops.Oh("用户凭证错误"); } //企业ID var CExid = App.User.FindFirst(ClaimConst.CustomerExId)?.Value.ToLong() ?? 0; if (id == 0) { throw Oops.Oh("企业资料不匹配"); } var user= await _fBS_CustormerUsersRep.GetFirstAsync(x => x.Id == id && x.CusExtendId == CExid && x.IsEn == true); if(user==null) { throw Oops.Oh("用户不匹配"); } ThisUser = user; if (user.IsManager) return true; else return false; } } Admin.NET/FZCTB.NET.API.Application/User/DTO/DTOS.cs
@@ -4,6 +4,9 @@ // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! using Admin.NET.Core; using Furion.DataValidation; using FZCZTB.Net.CustomerSYSTem; using FZCZTB.NET.MD.ConfigMd; using FZCZTB.NET.MD.CutomerMd.Extend; using SqlSugar; @@ -123,7 +126,7 @@ /// <summary> /// 法定代表人联系电话 /// </summary> [Phone(ErrorMessage = "联系电话格式不正确")] [DataValidation(ValidationTypes.PhoneNumber, ErrorMessage = "手机号码不正确")] public string? LegalRepresentativePhone { get; set; } @@ -137,7 +140,7 @@ /// 企业联系电话 /// </summary> [Phone(ErrorMessage = "联系电话格式不正确")] //[DataValidation(ValidationTypes.PhoneNumber, ErrorMessage = "手机号码不正确")] public string? EnterprisePhone { get; set; } /// <summary> @@ -183,7 +186,7 @@ /// 业务经办人联系电话 /// </summary> [Phone(ErrorMessage = "联系电话格式不正确")] [DataValidation(ValidationTypes.PhoneNumber, ErrorMessage = "手机号码不正确")] public string OperatorPhone { get; set; } /// <summary> @@ -197,10 +200,259 @@ /// 企业银行账号 /// </summary> public string BankAccount { get; set; } /// <summary> /// 银行收款码 /// </summary> public string BankAccountIMG { get; set; } /// <summary> /// 状态 /// 用户角色 /// </summary> public CusExtendStep? steps { set; get; } //public List<FBS_CoutomerExRoleOutput> ExRoles { get; set; } public List<FBS_CoutomerExRoleOutput> ExRoles { get; set; } } /// <summary> /// 企业资料基础输入参数 /// </summary> public class FBS_CusExtendVm { /// <summary> /// 主键Id /// </summary> public virtual long? Id { get; set; } /// <summary> /// 企业类型 /// </summary> [Required(ErrorMessage = "企业类型 不能为空")] public virtual string EnterpriseType { get; set; } /// <summary> /// 主体角色代码不能伪空 原字段 TransactionCode /// </summary> [Required(ErrorMessage = "角色代码 你能为空")] public virtual string ExRoleCode{ get; set; } /// <summary> /// 营业执照文件路径 /// </summary> [Required(ErrorMessage = "营业执照文件路径不能为空")] public virtual string BusinessLicense { get; set; } /// <summary> /// 企业名称 /// </summary> [Required(ErrorMessage = "企业名称不能为空")] public virtual string EnterpriseName { get; set; } /// <summary> /// 统一社会信用代码 /// </summary> [Required(ErrorMessage = "统一社会信用代码不能为空")] public virtual string UnifiedSocialCreditCode { get; set; } /// <summary> /// 注册资金 /// </summary> [Required(ErrorMessage = "注册资金不能为空")] public virtual string RegisteredCapital { get; set; } /// <summary> /// 法定代表人姓名 /// </summary> [Required(ErrorMessage = "法定代表人姓名不能为空")] public virtual string LegalRepresentativeName { get; set; } /// <summary> /// 法定代表人身份证文件路径 /// </summary> [Required(ErrorMessage = "法定代表人身份证文件路径不能为空")] public virtual string LegalRepresentativeIdCard { get; set; } /// <summary> /// 法定代表人姓名 /// </summary> [Required(ErrorMessage = "法定代表人姓名不能为空")] public virtual string LegalRepresentativeIdNumber { get; set; } /// <summary> /// 法定代表人姓名 /// </summary> [Required(ErrorMessage = "法定代表人姓名不能为空")] public virtual string LegalRepresentativePhone { get; set; } /// <summary> /// 企业住所 /// </summary> [Required(ErrorMessage = "企业住所不能为空")] public virtual string Residence { get; set; } /// <summary> /// 企业联系电话 /// </summary> [Required(ErrorMessage = "企业联系电话不能为空")] [DataValidation(ValidationTypes.PhoneNumber, ErrorMessage = "手机号码不正确")] public virtual string EnterprisePhone { get; set; } /// <summary> /// 企业成立时间 /// </summary> [Required(ErrorMessage = "企业成立时间不能为空")] public virtual DateTime EstablishmentTime { get; set; } /// <summary> /// 企业主营业务 /// </summary> public virtual string? MainBusiness { get; set; } /// <summary> /// 企业邮箱 /// </summary> [Required(ErrorMessage = "企业邮箱不能为空")] [DataValidation(ValidationTypes.EmailAddress, ErrorMessage = "手机号码不正确")] public virtual string EnterpriseEmail { get; set; } /// <summary> /// 业务经办人姓名、管理员姓名 /// </summary> [Required(ErrorMessage = "业务经办人身份证不能为空")] public virtual string? OperatorName { get; set; } /// <summary> /// 业务经办人身份证文件路径或标识 /// </summary> [Required(ErrorMessage = "业务经办人身份证不能为空")] public virtual string? OperatorIdCard { get; set; } /// <summary> /// 业务经办人身份证号码 /// </summary> [Required(ErrorMessage = "业务经办人身份证号码")] public virtual string? OperatorIdNumber { get; set; } /// <summary> /// 业务经办人电话/管理员电话 /// </summary> [DataValidation(ValidationTypes.PhoneNumber, ErrorMessage = "手机号码不正确")] public virtual string? OperatorPhone { get; set; } /// <summary> /// 开户行名称 /// </summary> [Required(ErrorMessage = "开户行名称")] public virtual string BankName { get; set; } /// <summary> ///开户行账号 /// </summary> [Required(ErrorMessage = "开户行账号")] public virtual string BankAccount { get; set; } /// <summary> /// 电话号码校验码 /// </summary> [Required(ErrorMessage = "电话号码校验码不能为空")] public string PhoneVCode { get; set; } /// <summary> /// 银行收款码 /// </summary> public string BankAccountIMG { get; set; } /// <summary> /// 职位 /// </summary> public string JobTitle { get; internal set; } /// <summary> /// 昵称 /// </summary> public string Nickname { get; internal set; } } /// <summary> /// 管理用户资料 /// </summary> public class FBS_CustormerUsersVM { /// <summary> /// ID /// </summary> public long? Id { get; set; } /// <summary> /// 组织机构ID /// </summary> [SugarColumn(ColumnDescription = "组织机构ID")] public long? CusExtendId { get; set; } /// <summary> /// 姓名 /// </summary> public string Name { get; set; } /// <summary> /// 昵称 /// </summary> public string? Nickname { get; set; } /// <summary> /// 电话号码 /// </summary> public string PhoneNumber { get; set; } /// <summary> /// 备注 /// </summary> public string? Remarks { get; set; } /// <summary> /// 职务 /// </summary> public string? JobTitle { get; set; } /// <summary> /// 头像 /// </summary> public string? Avatar { get; set; } /// <summary> /// 是否有效 /// </summary> public bool IsEn { get; set; } /// <summary> /// 密码 /// </summary> public string? PassWord { get; set; } /// <summary> /// 是否是管理员 全权限 /// </summary> public bool IsManager { get; set; } /// <summary> /// 电子签名 /// </summary> public string? Signature { get; set; } } /// <summary> /// 更改管理员 /// </summary> public class ChangMamagerInput() { /// <summary> /// 新管理员账户 /// </summary> public long CustormerUserId { get; set; } } Admin.NET/FZCZTB.NET.MD/ConfigMd/FBS_EnterpriseType.cs
@@ -19,7 +19,7 @@ [SugarTable("FBS_EnterpriseType", "企业类配置表")] [SugarIndex("index_{table}_A", nameof(Code), OrderByType.Asc)] [IncreTable] public class FBS_EnterpriseType: EntityBaseTenant public class FBS_EnterpriseType: EntityBase { /// <summary> Admin.NET/FZCZTB.NET.MD/CutomerMd/Extend/FBS_CusExtend.cs
@@ -20,17 +20,25 @@ /// </summary> [SugarTable("FBS_CusExtend", "企业资料")] [IncreTable] public class FBS_CusExtend: EntityBaseTenant public class FBS_CusExtend: EntityBase { /// <summary> /// 用户ID /// 注意该字段已经取消,这里只是用来屏蔽源代码中的报错,修改完后,应该删除该字段 /// </summary> [SugarColumn(ColumnDescription = "用户ID" )] [Required(ErrorMessage = "用户ID 必填")] [SugarColumn(IsIgnore =true)] public long CustomerId { get; set; } /// <summary> /// 注意该字段已经取消,这里只是用来屏蔽源代码中的报错,修改完后,应该删除该字段 /// </summary> [SugarColumn(IsIgnore = true)] public string TransactionCode { get; set; } /// <summary> /// 注意该字段已经取消,这里只是用来屏蔽源代码中的报错,修改完后,应该删除该字段 /// </summary> [SugarColumn(IsIgnore = true)] public CusExtendStep steps { get; set; } /// <summary> /// 企业类型 从企业类型中选择 /// </summary> @@ -39,18 +47,8 @@ public string EnterpriseType { get; set; } /// <summary> /// 交易主体 代码 同角色代码 /// </summary> [Required(ErrorMessage = "交易主体代码为必填项")] [SugarColumn(ColumnDescription = "交易主体code")] public string TransactionCode { get; set; } /// <summary> /// 交易主体 /// </summary> [Navigate(NavigateType.OneToOne, nameof(TransactionCode),nameof(FBS_ExRole.Code))] public FBS_ExRole? TransactionRole { get; set; } /// <summary> /// 营业执照文件路径 /// </summary> @@ -195,12 +193,31 @@ [Required(ErrorMessage = "银行账号为必填项")] [SugarColumn(ColumnDescription = "法定代表人姓名")] public string BankAccount { get; set; } /// <summary> /// 审核步骤 /// </summary> [SugarColumn(ColumnDescription = "审核步骤")] public CusExtendStep steps { set; get; } = CusExtendStep.UNExamine; /// <summary> /// /岗位职责 /// </summary> [SugarColumn(ColumnDescription = "岗位职责", IsNullable = true)] public string JobTitle { get; set; } /// <summary> /// 银行收款码 /// </summary> [SugarColumn(ColumnDescription = "银行收款码")] public string BankAccountIMG { get; set; } /// <summary> /// 用户管理员列表 /// </summary> [Navigate(NavigateType.OneToMany,nameof(FBS_CustormerUsers.CusExtendId),nameof(Id))] public List< FBS_CustormerUsers> CustormerUsers { get; set; } /// <summary> /// 用户角色 /// </summary> [Navigate(NavigateType.OneToMany, nameof(FBS_CoutomerExRole.CusExtendId), nameof(Id))] public List<FBS_CoutomerExRole> ExRoles { get; set; } } /// <summary> Admin.NET/FZCZTB.NET.MD/CutomerMd/FBS_CoutomerExRole.cs
@@ -5,6 +5,7 @@ // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! using Admin.NET.Core; using FZCZTB.NET.MD.CutomerMd.Extend; using SqlSugar; using System; using System.Collections.Generic; @@ -14,28 +15,36 @@ namespace FZCZTB.NET.MD.CutomerMd; /// <summary> /// 外部角色表 /// 主角色表 /// </summary> [SugarTable("FBS_CoutomerExRole", "外部角色表")] [SugarTable("FBS_CoutomerExRole", "主角色表")] [IncreTable] public class FBS_CoutomerExRole: EntityBaseId { //客户ID public long CustomerId { get; set; } /// <summary> /// 组织机构ID /// </summary> public long CusExtendId { get; set; } /// <summary> /// 外部角色 /// </summary> public long ExRoleId { get; set; } /// <summary> /// 是否完成角色创建 /// </summary> public bool HasFlsh { get; set; }= false; public long ExRoleId { get; set; } /// <summary> /// 外部角色 /// </summary> [Navigate(NavigateType.OneToOne, nameof(ExRoleId))] public FBS_ExRole ExRole { get; set; } /// <summary> /// 组织机构 /// </summary> [Navigate(NavigateType.OneToOne, nameof(CusExtendId))] public FBS_CusExtend CusExtend { get; set; } /// <summary> /// 角色审核步骤 /// </summary> [SugarColumn(ColumnDescription = "审核步骤")] public CusExtendStep steps { set; get; } = CusExtendStep.UNExamine; } Admin.NET/FZCZTB.NET.MD/CutomerMd/FBS_Customer.cs
@@ -60,30 +60,7 @@ [MaxLength(512)] public string? Avatar { get; set; } ///// <summary> ///// 性别-男_1、女_2 ///// </summary> //[SugarColumn(ColumnDescription = "性别")] //public GenderEnum Sex { get; set; } = GenderEnum.Male; ///// <summary> ///// 年龄 ///// </summary> //[SugarColumn(ColumnDescription = "年龄")] //public int Age { get; set; } ///// <summary> ///// 出生日期 ///// </summary> //[SugarColumn(ColumnDescription = "出生日期")] //public DateTime? Birthday { get; set; } ///// <summary> ///// 民族 ///// </summary> //[SugarColumn(ColumnDescription = "民族", Length = 32)] //[MaxLength(32)] //public string? Nation { get; set; } /// <summary> /// 手机号码 @@ -92,26 +69,7 @@ [MaxLength(16)] public string? Phone { get; set; } ///// <summary> ///// 证件类型 ///// </summary> //[SugarColumn(ColumnDescription = "证件类型")] //public CardTypeEnum CardType { get; set; } ///// <summary> ///// 身份证号 ///// </summary> //[SugarColumn(ColumnDescription = "身份证号", Length = 32)] //[MaxLength(32)] //public string? IdCardNum { get; set; } ///// <summary> ///// 身份证号 ///// </summary> //[SugarColumn(ColumnDescription = "身份证", Length = 512)] //[MaxLength(512)] //public string? IdCardPath { get; set; } /// <summary> /// 邮箱 @@ -120,73 +78,6 @@ [MaxLength(64)] public string? Email { get; set; } ///// <summary> ///// 地址 ///// </summary> //[SugarColumn(ColumnDescription = "地址", Length = 256)] //[MaxLength(256)] //public string? Address { get; set; } ///// <summary> ///// 文化程度 ///// </summary> //[SugarColumn(ColumnDescription = "文化程度")] //public CultureLevelEnum CultureLevel { get; set; } ///// <summary> ///// 政治面貌 ///// </summary> //[SugarColumn(ColumnDescription = "政治面貌", Length = 16)] //[MaxLength(16)] //public string? PoliticalOutlook { get; set; } ///// <summary> ///// 毕业院校 ///// </summary>COLLEGE //[SugarColumn(ColumnDescription = "毕业院校", Length = 128)] //[MaxLength(128)] //public string? College { get; set; } ///// <summary> ///// 办公电话 ///// </summary> //[SugarColumn(ColumnDescription = "办公电话", Length = 16)] //[MaxLength(16)] //public string? OfficePhone { get; set; } ///// <summary> ///// 紧急联系人 ///// </summary> //[SugarColumn(ColumnDescription = "紧急联系人", Length = 32)] //[MaxLength(32)] //public string? EmergencyContact { get; set; } ///// <summary> ///// 紧急联系人电话 ///// </summary> //[SugarColumn(ColumnDescription = "紧急联系人电话", Length = 16)] //[MaxLength(16)] //public string? EmergencyPhone { get; set; } ///// <summary> ///// 紧急联系人地址 ///// </summary> //[SugarColumn(ColumnDescription = "紧急联系人地址", Length = 256)] //[MaxLength(256)] //public string? EmergencyAddress { get; set; } ///// <summary> ///// 个人简介 ///// </summary> //[SugarColumn(ColumnDescription = "个人简介", Length = 512)] //[MaxLength(512)] //public string? Introduction { get; set; } ///// <summary> ///// 排序 ///// </summary> //[SugarColumn(ColumnDescription = "排序")] //public int OrderNo { get; set; } = 100; /// <summary> /// 状态 @@ -201,99 +92,7 @@ [MaxLength(256)] public string? Remark { get; set; } ///// <summary> ///// 账号类型 ///// </summary> //[SugarColumn(ColumnDescription = "账号类型")] //public AccountTypeEnum AccountType { get; set; } = AccountTypeEnum.NormalUser; ///// <summary> ///// 直属机构Id ///// </summary> //[SugarColumn(ColumnDescription = "直属机构Id")] //public long OrgId { get; set; } /// <summary> /// 直属机构 /// </summary> //[Navigate(NavigateType.OneToOne, nameof(OrgId))] //public SysOrg SysOrg { get; set; } /// <summary> /// 直属主管Id /// </summary> //[SugarColumn(ColumnDescription = "直属主管Id")] //public long? ManagerUserId { get; set; } /// <summary> /// 直属主管 /// </summary> //[Newtonsoft.Json.JsonIgnore] //[System.Text.Json.Serialization.JsonIgnore] //[Navigate(NavigateType.OneToOne, nameof(ManagerUserId))] //public SysUser ManagerUser { get; set; } ///// <summary> ///// 职位Id ///// </summary> //[SugarColumn(ColumnDescription = "职位Id")] //public long PosId { get; set; } ///// <summary> ///// 职位 ///// </summary> //[Newtonsoft.Json.JsonIgnore] //[System.Text.Json.Serialization.JsonIgnore] //[Navigate(NavigateType.OneToOne, nameof(PosId))] //public SysPos SysPos { get; set; } ///// <summary> ///// 工号 ///// </summary> //[SugarColumn(ColumnDescription = "工号", Length = 32)] //[MaxLength(32)] //public string? JobNum { get; set; } ///// <summary> ///// 职级 ///// </summary> //[SugarColumn(ColumnDescription = "职级", Length = 32)] //[MaxLength(32)] //public string? PosLevel { get; set; } ///// <summary> ///// 职称 ///// </summary> //[SugarColumn(ColumnDescription = "职称", Length = 32)] //[MaxLength(32)] //public string? PosTitle { get; set; } ///// <summary> ///// 擅长领域 ///// </summary> //[SugarColumn(ColumnDescription = "擅长领域", Length = 32)] //[MaxLength(32)] //public string? Expertise { get; set; } ///// <summary> ///// 办公区域 ///// </summary> //[SugarColumn(ColumnDescription = "办公区域", Length = 32)] //[MaxLength(32)] //public string? OfficeZone { get; set; } ///// <summary> ///// 办公室 ///// </summary> //[SugarColumn(ColumnDescription = "办公室", Length = 32)] //[MaxLength(32)] //public string? Office { get; set; } ///// <summary> ///// 入职日期 ///// </summary> //[SugarColumn(ColumnDescription = "入职日期")] //public DateTime? JoinDate { get; set; } /// <summary> /// 最新登录Ip @@ -329,23 +128,7 @@ [MaxLength(512)] public string? Signature { get; set; } /// <summary> /// 外部规则,登录角色 /// </summary> [Navigate(NavigateType.OneToMany, nameof(FBS_CoutomerExRole.CustomerId))] public List<FBS_CoutomerExRole> CoutomerExRols { set; get; } ///// <summary> ///// 验证超级管理员类型,若账号类型为超级管理员则报错 ///// </summary> ///// <param name="errorMsg">自定义错误消息</param> //public void ValidateIsSuperAdminAccountType(ErrorCodeEnum? errorMsg = ErrorCodeEnum.D1014) //{ // if (AccountType == AccountTypeEnum.SuperAdmin) // { // throw Oops.Oh(errorMsg); // } //} /// <summary> /// 验证用户Id是否相同,若用户Id相同则报错 Admin.NET/FZCZTB.NET.MD/CutomerMd/FBS_CustomerRole.cs
@@ -29,7 +29,7 @@ [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] [Navigate(NavigateType.OneToOne, nameof(CutomerId))] public SysUser SysUser { get; set; } public FBS_CustomerRole SysUser { get; set; } /// <summary> /// 角色Id Admin.NET/FZCZTB.NET.MD/CutomerMd/FBS_CustormerUsers.cs
New file @@ -0,0 +1,128 @@ // Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 // // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! using Admin.NET.Core; using Furion.DataValidation; using FZCZTB.NET.MD.CutomerMd.Extend; using SqlSugar; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FZCZTB.NET.MD.CutomerMd; /// <summary> /// 客户管理员表 /// </summary> [IncreTable] [SugarTable( TableDescription ="客户租户管理员表")] public class FBS_CustormerUsers: EntityBase { /// <summary> /// 组织机构ID /// </summary> [SugarColumn(ColumnDescription = "客户ID")] public long CusExtendId { get; set; } /// <summary> /// 组织机构 /// </summary> [Navigate(NavigateType.OneToOne,nameof(CusExtendId))] public FBS_CusExtend CusExtend { get; set; } /// <summary> /// 姓名 /// </summary> [SugarColumn(ColumnDescription = "联系人的正式姓名", Length = 50, IsNullable = false)] public string Name { get; set; } /// <summary> /// 昵称 /// </summary> [SugarColumn(ColumnDescription = "联系人的非正式称呼或别名", Length = 50, IsNullable = true)] public string? Nickname { get; set; } /// <summary> /// 电话号码 /// </summary> //[DataValidation(ValidationTypes.PhoneNumber, ErrorMessage = "不是一个正确的{0}")] [SugarColumn(ColumnDescription = "联系人的联系电话", Length = 20, IsNullable = false)] public string PhoneNumber { get; set; } /// <summary> /// 备注 /// </summary> [SugarColumn(ColumnDescription = "关于联系人的额外说明信息", Length = 500, IsNullable = true)] public string? Remarks { get; set; } /// <summary> /// 职务 /// </summary> [SugarColumn(ColumnDescription = "联系人的工作职位或头衔", Length = 100, IsNullable = true)] public string? JobTitle { get; set; } /// <summary> /// 头像 /// </summary> [SugarColumn(ColumnDescription = "联系人头像的存储路径或URL", Length = 255, IsNullable = true)] public string? Avatar { get; set; } /// <summary> /// 是否有效 /// </summary> [SugarColumn(ColumnDescription = "是否有效", Length = 255, IsNullable = true)] public bool IsEn { get; set; } /// <summary> /// 密码 /// </summary> [SugarColumn(ColumnDescription = "密码", Length = 255, IsNullable = true)] public string? PassWord { get; set; } /// <summary> /// 是否是管理员 全权限 /// </summary> [SugarColumn(ColumnDescription = "是否是管理员", Length = 255, IsNullable = true)] public bool IsManager { get; set; } /// <summary> /// 最新登录Ip /// </summary> [SugarColumn(ColumnDescription = "最新登录Ip", Length = 256)] [MaxLength(256)] public string? LastLoginIp { get; set; } /// <summary> /// 最新登录地点 /// </summary> [SugarColumn(ColumnDescription = "最新登录地点", Length = 128)] [MaxLength(128)] public string? LastLoginAddress { get; set; } /// <summary> /// 最新登录时间 /// </summary> [SugarColumn(ColumnDescription = "最新登录时间")] public DateTime? LastLoginTime { get; set; } /// <summary> /// 最新登录设备 /// </summary> [SugarColumn(ColumnDescription = "最新登录设备", Length = 128)] [MaxLength(128)] public string? LastLoginDevice { get; set; } /// <summary> /// 电子签名 /// </summary> [SugarColumn(ColumnDescription = "电子签名", Length = 512)] [MaxLength(512)] public string? Signature { get; set; } } Admin.NET/FZCZTB.NET.MD/CutomerMd/FBS_ExRole.cs
@@ -22,7 +22,7 @@ [SugarIndex("index_{table}_N", nameof(Name), OrderByType.Asc)] [SugarIndex("index_{table}_C", nameof(Code), OrderByType.Asc)] [IncreTable] public class FBS_ExRole: EntityBaseTenant public class FBS_ExRole: EntityBase { /// <summary> /// 名称 Admin.NET/FZCZTB.NET.SYSService/CustomerSYS/CustomerManagerS.cs
@@ -3,6 +3,7 @@ using Furion.DependencyInjection; using Furion.FriendlyException; using FZCZTB.NET.MD.CutomerMd; using FZCZTB.NET.MD.CutomerMd.Extend; using Mapster; using SqlSugar; using System; @@ -20,12 +21,12 @@ public class CustomerManagerS: IScoped { private readonly SqlSugarRepository<FBS_ExRole> _fBS_ExRoleRep; private readonly SqlSugarRepository<FBS_Customer> _fBS_CustomerRep; private readonly SqlSugarRepository<FBS_CustormerUsers> _fBS_CustomerRep; private readonly SysCacheService _sysCacheService; public CustomerManagerS(SysCacheService sysCacheService, SqlSugarRepository<FBS_ExRole> fBS_ExRoleRep, SqlSugarRepository<FBS_Customer> fBS_CustomerRep) SqlSugarRepository<FBS_CustormerUsers> fBS_CustomerRep) { _sysCacheService = sysCacheService; _fBS_ExRoleRep = fBS_ExRoleRep; @@ -46,12 +47,13 @@ /// 返回当前可用的用户角色 再注册和登录时需要返回编码 /// </summary> /// <returns></returns> public async Task<CustomerRDto> GetCustomer(long id) public async Task<FBS_CustormerUsers> GetCustomer(long id) { return await _fBS_CustomerRep.AsQueryable().Where(x=>x.Id==id&&x.Status== StatusEnum.Enable).Includes(x=>x.CoutomerExRols,y=>y.ExRole) .Select<CustomerRDto>().WithCache(20).FirstAsync(); return await _fBS_CustomerRep.AsQueryable().Where(x=>x.Id==id&&x.IsEn== true) //.Includes(x=>x.CoutomerExRols,y=>y.ExRole) .WithCache(20).FirstAsync(); //return (await _fBS_CustomerRep.GetFirstAsync(x => x.Id == id && x.Status == StatusEnum.Enable)).Adapt<CustomerRDto>(); @@ -61,22 +63,22 @@ } /// <summary> /// 返回当前可用的用户角色 再注册和登录时需要返回编码 /// </summary> /// <returns></returns> public async Task<CustomerRDto> UpDataCustomer(int id) { ///// <summary> ///// 返回当前可用的用户角色 再注册和登录时需要返回编码 ///// </summary> ///// <returns></returns> //public async Task<CustomerRDto> UpDataCustomer(int id) //{ return (await _fBS_CustomerRep.GetFirstAsync(x => x.Id == id && x.Status == StatusEnum.Enable)).Adapt<CustomerRDto>(); // return (await _fBS_CustomerRep.GetFirstAsync(x => x.Id == id && x.Status == StatusEnum.Enable)).Adapt<CustomerRDto>(); } //} @@ -131,7 +133,7 @@ } /// <summary> /// 客户表输出参数 /// </summary> @@ -209,11 +211,11 @@ public string? Signature { get; set; } /// <summary> /// 登录角色 /// </summary> [Navigate(NavigateType.OneToMany, nameof(FBS_CoutomerExRole.CustomerId))] public List<FBS_CoutomerExRole> CoutomerExRols { set; get; } ///// <summary> ///// 登录角色 ///// </summary> //[Navigate(NavigateType.OneToMany, nameof(FBS_CoutomerExRole.CustomerId))] //public List<FBS_CoutomerExRole> CoutomerExRols { set; get; } /// <summary> /// 注册用户角色 @@ -226,4 +228,101 @@ public string? PhoneVCode { get; set; } } /// <summary> /// 客户表输出参数 /// </summary> public class Cu { /// <summary> /// 账号 /// </summary> public virtual string Account { get; set; } /// <summary> /// 密码 /// </summary> [MaxLength(512)] public virtual string Password { get; set; } /// <summary> /// 真实姓名 /// </summary> [MaxLength(32)] public virtual string RealName { get; set; } /// <summary> /// 昵称 /// </summary> [MaxLength(32)] public string? NickName { get; set; } /// <summary> /// 头像 /// </summary> [MaxLength(512)] public string? Avatar { get; set; } /// <summary> /// 手机号码 /// </summary> [MaxLength(16)] public string? Phone { get; set; } /// <summary> /// 邮箱 /// </summary> [MaxLength(64)] public string? Email { get; set; } /// <summary> /// 备注 /// </summary> [MaxLength(256)] public string? Remark { get; set; } /// <summary> /// 电子签名 /// </summary> public string? Signature { get; set; } ///// <summary> ///// 登录角色 ///// </summary> //[Navigate(NavigateType.OneToMany, nameof(FBS_CoutomerExRole.CustomerId))] //public List<FBS_CoutomerExRole> CoutomerExRols { set; get; } /// <summary> /// 注册用户角色 /// </summary> public string? ExRoleCode { get; set; } /// <summary> /// 用户注册手机验证码 /// </summary> public string? PhoneVCode { get; set; } } } Admin.NET/FZCZTB.Net.CustomerSYSTem/Service/FBS_CusExtend/Dto/FBS_CusExtendDto.cs
@@ -16,10 +16,7 @@ /// </summary> public long Id { get; set; } /// <summary> /// 用户ID /// </summary> public long CustomerId { get; set; } /// <summary> /// 企业类型 @@ -165,5 +162,15 @@ /// 修改者姓名 /// </summary> public string? UpdateUserName { get; set; } /// <summary> /// 用户管理员列表 /// </summary> public List<FBS_CustormerUsersOutput> CustormerUsers { get; set; } /// <summary> /// 用户角色 /// </summary> public List<FBS_CoutomerExRoleOutput> ExRoles { get; set; } } Admin.NET/FZCZTB.Net.CustomerSYSTem/Service/FBS_CusExtend/Dto/FBS_CusExtendInput.cs
@@ -9,6 +9,9 @@ using Magicodes.ExporterAndImporter.Core; using Magicodes.ExporterAndImporter.Excel; using FZCZTB.NET.MD.CutomerMd.Extend; using FZCZTB.NET.MD.CutomerMd; using SqlSugar; using Furion.DataValidation; namespace FZCZTB.Net.CustomerSYSTem; @@ -149,12 +152,7 @@ [Required(ErrorMessage = "法定代表人姓名不能为空")] public virtual string BankAccount { get; set; } /// <summary> /// 审核步骤 /// </summary> [Dict("CusExtendStep", AllowNullValue=true)] [Required(ErrorMessage = "审核步骤不能为空")] public virtual int? steps { get; set; } } @@ -163,21 +161,19 @@ /// </summary> public class PageFBS_CusExtendInput : BasePageInput { /// <summary> /// 用户ID /// </summary> public long? CustomerId { get; set; } /// <summary> /// 企业类型 /// </summary> public string EnterpriseType { get; set; } /// <summary> /// 交易主体code /// 已申请角色 /// </summary> public string TransactionCode { get; set; } /// <summary> /// 营业执照文件路径 /// </summary> @@ -273,11 +269,7 @@ /// </summary> public string BankAccount { get; set; } /// <summary> /// 审核步骤 /// </summary> public CusExtendStep? steps { get; set; } /// <summary> /// 选中主键列表 @@ -290,11 +282,7 @@ /// </summary> public class AddFBS_CusExtendInput { /// <summary> /// 用户ID /// </summary> [Required(ErrorMessage = "用户ID不能为空")] public long? CustomerId { get; set; } /// <summary> /// 企业类型 @@ -303,12 +291,7 @@ [MaxLength(255, ErrorMessage = "企业类型 字符长度不能超过255")] public string EnterpriseType { get; set; } /// <summary> /// 交易主体code /// </summary> [Required(ErrorMessage = "交易主体code不能为空")] [MaxLength(255, ErrorMessage = "交易主体code字符长度不能超过255")] public string TransactionCode { get; set; } /// <summary> /// 营业执照文件路径 @@ -435,14 +418,17 @@ [Required(ErrorMessage = "法定代表人姓名不能为空")] [MaxLength(255, ErrorMessage = "法定代表人姓名字符长度不能超过255")] public string BankAccount { get; set; } /// <summary> /// 审核步骤 /// 用户管理员列表 /// </summary> [Dict("CusExtendStep", AllowNullValue=true)] [Required(ErrorMessage = "审核步骤不能为空")] public int? steps { get; set; } public List<FBS_CustormerUsersOutput> CustormerUsers { get; set; } /// <summary> /// 用户角色 /// </summary> public List<FBS_CoutomerExRoleOutput> ExRoles { get; set; } } /// <summary> @@ -469,11 +455,7 @@ [Required(ErrorMessage = "主键Id不能为空")] public long? Id { get; set; } /// <summary> /// 用户ID /// </summary> [Required(ErrorMessage = "用户ID不能为空")] public long? CustomerId { get; set; } /// <summary> /// 企业类型 @@ -614,14 +596,17 @@ [Required(ErrorMessage = "法定代表人姓名不能为空")] [MaxLength(255, ErrorMessage = "法定代表人姓名字符长度不能超过255")] public string BankAccount { get; set; } /// <summary> /// 审核步骤 /// </summary> [Dict("CusExtendStep", AllowNullValue=true)] [Required(ErrorMessage = "审核步骤不能为空")] public CusExtendStep? steps { get; set; } /// 用户管理员列表 /// </summary> public List<FBS_CustormerUsersOutput> CustormerUsers { get; set; } /// <summary> /// 用户角色 /// </summary> public List<FBS_CoutomerExRoleOutput> ExRoles { get; set; } } /// <summary> @@ -637,12 +622,7 @@ [ExcelImporter(SheetIndex = 1, IsOnlyErrorRows = true)] public class ImportFBS_CusExtendInput : BaseImportInput { /// <summary> /// 用户ID /// </summary> [ImporterHeader(Name = "*用户ID")] [ExporterHeader("*用户ID", Format = "", Width = 25, IsBold = true)] public long? CustomerId { get; set; } /// <summary> /// 企业类型 @@ -791,12 +771,12 @@ [ExporterHeader("*法定代表人姓名", Format = "", Width = 25, IsBold = true)] public string BankAccount { get; set; } /// <summary> /// 审核步骤 关联值 /// </summary> [ImporterHeader(IsIgnore = true)] [ExporterHeader(IsIgnore = true)] public CusExtendStep? steps { get; set; } ///// <summary> ///// 审核步骤 关联值 ///// </summary> //[ImporterHeader(IsIgnore = true)] //[ExporterHeader(IsIgnore = true)] //public CusExtendStep? steps { get; set; } ///// <summary> ///// 审核步骤 文本 @@ -807,3 +787,84 @@ //public string stepsDictLabel { get; set; } } /// <summary> /// /// </summary> public class FBS_CustormerUsersInPut { /// <summary> /// id /// </summary> public long? Id { get; set; } /// <summary> /// 组织机构ID /// </summary> [Required] public long CusExtendId { get; set; } /// <summary> /// 姓名 /// </summary> public string Name { get; set; } /// <summary> /// 昵称 /// </summary> public string? Nickname { get; set; } /// <summary> /// 电话号码 /// </summary> [DataValidation(ValidationTypes.PhoneNumber, ErrorMessage = "不是一个正确的{0}")] [Required] public string PhoneNumber { get; set; } /// <summary> /// 备注 /// </summary> public string? Remarks { get; set; } /// <summary> /// 职务 /// </summary> public string? JobTitle { get; set; } /// <summary> /// 头像 /// </summary> public string? Avatar { get; set; } /// <summary> /// 是否有效 /// </summary> public bool IsEn { get; set; } /// <summary> /// 密码 /// </summary> public string? PassWord { get; set; } /// <summary> /// 是否是管理员 全权限 /// </summary> public bool IsManager { get; set; } /// <summary> /// 电子签名 /// </summary> [SugarColumn(ColumnDescription = "电子签名", Length = 512)] [MaxLength(512)] public string? Signature { get; set; } } Admin.NET/FZCZTB.Net.CustomerSYSTem/Service/FBS_CusExtend/Dto/FBS_CusExtendOutput.cs
@@ -7,6 +7,7 @@ namespace FZCZTB.Net.CustomerSYSTem; using cylsg.utility; using FZCZTB.NET.MD.CutomerMd; using FZCZTB.NET.MD.CutomerMd.Extend; /// <summary> @@ -17,12 +18,8 @@ /// <summary> /// 主键Id /// </summary> public long Id { get; set; } /// <summary> /// 用户ID /// </summary> public long CustomerId { get; set; } public long Id { get; set; } /// <summary> /// 用户名 @@ -133,10 +130,7 @@ /// </summary> public string BankAccount { get; set; } /// <summary> /// 审核步骤 /// </summary> public CusExtendStep steps { get; set; } /// <summary> /// 租户Id @@ -171,10 +165,22 @@ /// <summary> /// 修改者姓名 /// </summary> public string? UpdateUserName { get; set; } public string? UpdateUserName { get; set; } /// <summary> /// 用户管理员列表 /// </summary> //public List<FBS_CustormerUsersOutput> CustormerUsers { get; set; } public List<FBS_CustormerUsersOutput> CustormerUsers { get; set; } /// <summary> /// 用户角色 /// </summary> //public List<FBS_CoutomerExRoleOutput> ExRoles { get; set; } public List<FBS_CoutomerExRoleOutput> ExRoles { get; set; } } @@ -202,4 +208,102 @@ /// </summary> public List<FBS_EnterpriseTypeOutput> EnterpriseTypes{ get; set; } } /// <summary> /// 管理用户资料 /// </summary> public class FBS_CustormerUsersOutput { /// <summary> /// ID /// </summary> public long? Id { get; set;} /// <summary> /// 组织机构ID /// </summary> public long CusExtendId { get; set; } /// <summary> /// 姓名 /// </summary> public string Name { get; set; } /// <summary> /// 昵称 /// </summary> public string? Nickname { get; set; } /// <summary> /// 电话号码 /// </summary> public string PhoneNumber { get; set; } /// <summary> /// 备注 /// </summary> public string? Remarks { get; set; } /// <summary> /// 职务 /// </summary> public string? JobTitle { get; set; } /// <summary> /// 头像 /// </summary> public string? Avatar { get; set; } /// <summary> /// 是否有效 /// </summary> public bool IsEn { get; set; } /// <summary> /// 密码 /// </summary> public string? PassWord { get; set; } /// <summary> /// 是否是管理员 全权限 /// </summary> public bool IsManager { get; set; } /// <summary> /// 电子签名 /// </summary> public string? Signature { get; set; } } /// <summary> /// 角色管理 /// </summary> public class FBS_CoutomerExRoleOutput { /// <summary> /// ID /// </summary> public long? Id { get; set; } /// <summary> /// 组织机构ID /// </summary> public long CusExtendId { get; set; } /// <summary> /// 外部角色 /// </summary> public long ExRoleId { get; set; } /// <summary> /// 外部角色 /// </summary> public FBS_ExRole ExRole { get; set; } /// <summary> /// 组织机构 /// </summary> public FBS_CusExtend CusExtend { get; set; } /// <summary> /// 角色审核步骤 /// </summary> public CusExtendStep steps { set; get; } = CusExtendStep.UNExamine; } Admin.NET/FZCZTB.Net.CustomerSYSTem/Service/FBS_CusExtend/FBS_CusExtendService.cs
@@ -20,6 +20,8 @@ using cylsg.utility; using FZCZTB.NET.MD.CutomerMd; using Furion.Logging.Extensions; using FZCZTB.Net.CustomerSYSTem.Service.FBS_ExRole.Dto; using MapsterMapper; namespace FZCZTB.Net.CustomerSYSTem; /// <summary> @@ -33,19 +35,25 @@ 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, SqlSugarRepository<FBS_CoutomerExRole> cerRep) 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> /// @@ -71,11 +79,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())) @@ -94,87 +104,36 @@ .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="id">要更改的用户角色资料Id</param> /// <param name="step">要更改的状态</param> /// <returns></returns> /// <summary> /// 更改审核状态 /// </summary> /// <param name="CoutomerExRolesId">该ID是用户角色列表中的Id</param> /// <param name="step">要更改的状态</param> /// <returns></returns> [HttpGet] public async Task<bool > ChangeSteps (long id, CusExtendStep step) public async Task<int > ChangeSteps (long CoutomerExRolesId, CusExtendStep step) { var data=await _fBS_CusExtendRep.AsQueryable().Includes(x=>x.TransactionRole).Where(x=>x.Id==id).FirstAsync(); var data=await _fBS_CoutomerExRoleRep.AsQueryable().Where(x=>x.Id== CoutomerExRolesId).FirstAsync(); if (data == null) { throw Oops.Oh("数据不存在"); }; if(data.steps== step) { return true; return 1; } try { await _fBS_CusExtendRep.AsTenant().BeginTranAsync(); if (step == CusExtendStep.Pass) { //是审核通过 if (data.TransactionRole == null) { throw Oops.Oh("用户关联角色失败,用户没有申请该角色,请重新申请角色"); } var exrles = await _fBS_CoutomerExRoleRep.GetFirstAsync(x => x.CustomerId == data.CustomerId && x.ExRoleId == data.TransactionRole.Id); if (exrles == null) throw Oops.Oh("用户关联角色失败,用户没有申请该角色,请重新申请角色"); exrles.HasFlsh = true; await _fBS_CoutomerExRoleRep.UpdateAsync(exrles); } else if(data.steps== CusExtendStep.Pass) { //更改为未通过 if (data.TransactionRole == null) { throw Oops.Oh("用户关联角色失败,用户没有申请该角色,请重新申请角色"); } var exrles = await _fBS_CoutomerExRoleRep.GetFirstAsync(x => x.CustomerId == data.CustomerId && x.ExRoleId == data.TransactionRole.Id); if (exrles == null) throw Oops.Oh("用户关联角色失败,用户没有申请该角色,请重新申请角色"); exrles.HasFlsh = false; await _fBS_CoutomerExRoleRep.UpdateAsync(exrles); } data.steps = step; await _fBS_CusExtendRep.AsUpdateable(data).ExecuteCommandAsync(); await _fBS_CusExtendRep.AsTenant().CommitTranAsync(); return true; } catch (Exception e) { await _fBS_CusExtendRep.AsTenant().RollbackTranAsync(); e.Message.LogError(); throw Oops.Oh("更改审核状态失败"); ; } data.steps = step; return await _fBS_CoutomerExRoleRep.AsUpdateable(data).ExecuteCommandAsync(); } @@ -229,19 +188,19 @@ await _fBS_CusExtendRep.AsTenant().BeginTranAsync(); try { var entity = await _fBS_CusExtendRep.AsQueryable().Includes(x => x.TransactionRole).Where(x => x.Id == input.Id).FirstAsync() ?? throw Oops.Oh(ErrorCodeEnum.D1002); if (entity != null) { var exrles = await _fBS_CoutomerExRoleRep.GetFirstAsync(x => x.CustomerId == entity.CustomerId && x.ExRoleId == entity.TransactionRole.Id); if (exrles != null) { await _fBS_CoutomerExRoleRep.DeleteAsync(exrles); } //var entity = await _fBS_CusExtendRep.AsQueryable().Includes(x => x.TransactionRole).Where(x => x.Id == input.Id).FirstAsync() ?? throw Oops.Oh(ErrorCodeEnum.D1002); //if (entity != null) //{ // var exrles = await _fBS_CoutomerExRoleRep.GetFirstAsync(x => x.CustomerId == entity.CustomerId && x.ExRoleId == entity.TransactionRole.Id); // if (exrles != null) // { // await _fBS_CoutomerExRoleRep.DeleteAsync(exrles); // } //await _fBS_CusExtendRep.FakeDeleteAsync(entity); //假删除 // //await _fBS_CusExtendRep.FakeDeleteAsync(entity); //假删除 await _fBS_CusExtendRep.DeleteAsync(entity); //真删除 } // await _fBS_CusExtendRep.DeleteAsync(entity); //真删除 //} await _fBS_CusExtendRep.AsTenant().CommitTranAsync(); } @@ -326,15 +285,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>>(); @@ -387,4 +346,95 @@ 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<int> CareCustormerUser(FBS_CustormerUsersInPut Param) { 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>(); return await _fBS_CustormerUsersRep.AsInsertable(Data).ExecuteCommandAsync(); } /// <summary> /// 删除一个用户员工 /// </summary> /// <param name="CustormerUserId">这个是列表中袁弘用户表中的Id</param> /// <returns></returns> [HttpDelete] public async Task<bool> DelCustormerUser(long CustormerUserId) { return await _fBS_CustormerUsersRep.DeleteByIdAsync(CustormerUserId); } } Admin.NET/FZFCGDD.ORDER.Application/FZFCGDD.ORDER.Application.csproj
@@ -16,4 +16,8 @@ <ProjectReference Include="..\Plugins\Admin.NET.Plugin.GoView\Admin.NET.Plugin.GoView.csproj" /> </ItemGroup> <ItemGroup> <Folder Include="Service\ShouyeGonggao\" /> </ItemGroup> </Project> Admin.NET/FZFCGDD.ORDER.Application/Service/ShouyeGonggao/ShouyeGonggaoService.cs
@@ -590,11 +590,11 @@ { tenderOrderBiddingOutput.IsTransferName = "否"; } var cusExtend = await _sqlSugarClient.Queryable<FBS_CusExtend>().Where(x => x.CustomerId == tenderOrderBiddingOutput.CreateUserId && x.TransactionCode == "GYS" && x.steps == CusExtendStep.Pass).FirstAsync(); if (cusExtend != null) { tenderOrderBiddingOutput.ChangshangName = cusExtend.EnterpriseName; } //var cusExtend = await _sqlSugarClient.Queryable<FBS_CusExtend>().Where(x => x.cus == tenderOrderBiddingOutput.CreateUserId && x.TransactionCode == "GYS" && x.steps == CusExtendStep.Pass).FirstAsync(); //if (cusExtend != null) //{ // tenderOrderBiddingOutput.ChangshangName = cusExtend.EnterpriseName; //} } } Admin.NET/cylsg.utility/Extend/StringEx.cs
@@ -133,7 +133,26 @@ return masked; } } /// <summary> /// 掩码中间字符(保留前3位和后4位,中间用*代替) /// </summary> /// <param name="input">原始字符串</param> /// <param name="keepStart">保留开头字符数(默认3)</param> /// <param name="keepEnd">保留结尾字符数(默认4)</param> /// <param name="maskChar">掩码字符(默认*)</param> /// <returns>处理后的掩码字符串</returns> public static string MaskMiddle(this string input, int keepStart = 3, int keepEnd = 4, char maskChar = '*') { // 空值或长度不足时直接返回原始值 if (string.IsNullOrEmpty(input) || input.Length <= keepStart + keepEnd) return $"{input.Substring(0, 1)}*{input.Substring(input.Length - 1, 1)}"; // 计算需要掩码的字符数 int maskLength = input.Length - keepStart - keepEnd; // 拼接结果:前3位 + maskLength个* + 后4位 return $"{input.Substring(0, keepStart)}{new string(maskChar, maskLength)}{input.Substring(input.Length - keepEnd)}"; } #region 时间区间字符串转其实和结束时间 /// <summary>