From b8f1e312f00318e201d9267a35a53ebac3d0c837 Mon Sep 17 00:00:00 2001 From: 移动系统liao <liaoxujun@qq.com> Date: 星期三, 25 六月 2025 16:33:57 +0800 Subject: [PATCH] 增加腾讯文字识别服务工程和项目 --- Admin.NET/FZCTB.NET.API.Application/Auth/AuthService.cs | 191 +++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 190 insertions(+), 1 deletions(-) diff --git a/Admin.NET/FZCTB.NET.API.Application/Auth/AuthService.cs b/Admin.NET/FZCTB.NET.API.Application/Auth/AuthService.cs index b4f00fe..376ef20 100644 --- a/Admin.NET/FZCTB.NET.API.Application/Auth/AuthService.cs +++ b/Admin.NET/FZCTB.NET.API.Application/Auth/AuthService.cs @@ -1,10 +1,24 @@ -锘縰sing Furion.DynamicApiController; +锘縰sing Admin.NET.Core.Service; +using Admin.NET.Core; +using Furion.DataEncryption; +using Furion.DynamicApiController; +using Furion.EventBus; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using Lazy.Captcha.Core; +using Microsoft.AspNetCore.Http; +using FZCZTB.NET.MD.CutomerMd; +using Microsoft.AspNetCore.Authorization; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel; +using FZCZTB.NET.SYSService.MSM; +using FZCTB.NET.API.Application.Auth.DTO; +using Furion.FriendlyException; +using FZCZTB.NET.SYSService.CustomerSYS; namespace FZCTB.NET.API.Application.Auth { @@ -14,5 +28,180 @@ [ApiDescriptionSettings("FZCAPISYS", Order = 149)] public class AuthService: IDynamicApiController { + + + private readonly UserManager _userManager; + private readonly SqlSugarRepository<FBS_Customer> _sysUserRep; + private readonly IHttpContextAccessor _httpContextAccessor; + private readonly SysMenuService _sysMenuService; + private readonly SysOnlineUserService _sysOnlineUserService; + private readonly SysConfigService _sysConfigService; + private readonly SysUserService _sysUserService; + private readonly ZCSMSService _sysSmsService; + private readonly SysLdapService _sysLdapService; + private readonly ICaptcha _captcha; + private readonly IEventPublisher _eventPublisher; + private readonly SysCacheService _sysCacheService; + + public AuthService( + SqlSugarRepository<FBS_Customer> sysUserRep, + IHttpContextAccessor httpContextAccessor, + SysOnlineUserService sysOnlineUserService, + SysConfigService sysConfigService, + SysLdapService sysLdapService, + IEventPublisher eventPublisher, + ZCSMSService sysSmsService, + SysCacheService sysCacheService, + SysMenuService sysMenuService, + SysUserService sysUserService, + UserManager userManager, + ICaptcha captcha) + { + _captcha = captcha; + _sysUserRep = sysUserRep; + _userManager = userManager; + _sysSmsService = sysSmsService; + _eventPublisher = eventPublisher; + _sysUserService = sysUserService; + _sysMenuService = sysMenuService; + _sysCacheService = sysCacheService; + _sysConfigService = sysConfigService; + _httpContextAccessor = httpContextAccessor; + _sysOnlineUserService = sysOnlineUserService; + _sysLdapService = sysLdapService; + } + + /// <summary> + /// 鎵嬫満鍙风櫥褰� 馃敄 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [AllowAnonymous] + [DisplayName("鎵嬫満鍙风櫥褰�")] + public virtual async Task<CustomerLoginOutput> LoginPhone([Required] CustomerLoginPhoneInput input) + { + 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) + { + throw Oops.Oh("璇ョ敤鎴锋病鏈夋敞鍐�"); + } + if(user.Status== StatusEnum.Disable) + { + throw Oops.Oh("鐢ㄥ紓甯�"); + } + + + return await CreateToken(user, input.ExRuleCode??""); + } + /// <summary> + /// 鎵嬫満鍙风櫥褰� 馃敄 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [AllowAnonymous] + [DisplayName("寰俊鎵爜鐧诲綍")] + public virtual async Task<CustomerLoginOutput> WeiXinLoginPhone([Required] CustomerLoginPhoneInput input) + { + throw Oops.Oh("鍜嬩笉鏀寔寰俊鎵爜鐧诲綍"); + // 鏍¢獙鐭俊楠岃瘉鐮� + _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) + { + + } + + return await CreateToken(user, input.ExRuleCode ); + } + + /// <summary> + /// 鐢熸垚Token浠ょ墝 馃敄 + /// </summary> + /// <param name="user"></param>\ + /// <param name="sysUserEventTypeEnum"></param>\ + /// <returns></returns> + [NonAction] + internal async Task<CustomerLoginOutput> CreateToken(FBS_Customer user,string ExRuleCode, SysUserEventTypeEnum sysUserEventTypeEnum = SysUserEventTypeEnum.Login) + { + // 鍗曠敤鎴风櫥褰� + await _sysOnlineUserService.SingleLogin(user.Id); + + // 鐢熸垚Token浠ょ墝 + var tokenExpire = await _sysConfigService.GetTokenExpire(); + 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.UserType, "Customer" }, + { ClaimConst.CustomerLogoinType, ExRuleCode }, + }, tokenExpire); + + // 鐢熸垚鍒锋柊Token浠ょ墝 + var refreshTokenExpire = await _sysConfigService.GetRefreshTokenExpire(); + var refreshToken = JWTEncryption.GenerateRefreshToken(accessToken, refreshTokenExpire); + + // 璁剧疆鍝嶅簲鎶ユ枃澶� + _httpContextAccessor.HttpContext.SetTokensOfResponseHeaders(accessToken, refreshToken); + + // Swagger Knife4UI-AfterScript鐧诲綍鑴氭湰 + // ke.global.setAllHeader('Authorization', 'Bearer ' + ke.response.headers['access-token']); + + // 鏇存柊鐢ㄦ埛鐧诲綍淇℃伅 + user.LastLoginIp = _httpContextAccessor.HttpContext.GetRemoteIpAddressToIPv4(true); + (user.LastLoginAddress, double? longitude, double? latitude) = CommonUtil.GetIpAddress(user.LastLoginIp); + user.LastLoginTime = DateTime.Now; + user.LastLoginDevice = CommonUtil.GetClientDeviceInfo(_httpContextAccessor.HttpContext?.Request?.Headers?.UserAgent); + await _sysUserRep.AsUpdateable(user).UpdateColumns(u => new + { + u.LastLoginIp, + u.LastLoginAddress, + u.LastLoginTime, + u.LastLoginDevice, + }).ExecuteCommandAsync(); + + var payload = new + { + Entity = user, + Output = new CustomerLoginOutput + { + AccessToken = accessToken, + RefreshToken = refreshToken, + + + + + + + } + }; + payload.Output.ExRoles = new List<CustomerExRoleVm>(); + + foreach (var item in user.CoutomerExRols) + { + + payload.Output.ExRoles.Add(new CustomerExRoleVm + { + Code = item.ExRole.Code, + Name = item.ExRole.Name, + HasFlsh = item.HasFlsh + }); + } + + //鏆傛椂涓嶅嚭鐢ㄦ埛浜嬩欢 + // 鍙戝竷绯荤粺鐢ㄦ埛鎿嶄綔浜嬩欢 + //await _eventPublisher.PublishAsync(sysUserEventTypeEnum, payload); + return payload.Output; + } } } -- Gitblit v1.9.1