From 17308f6494c81fb5a5ee035724a414ec7da11936 Mon Sep 17 00:00:00 2001 From: username@email.com <yzy2002yzy@163.com> Date: 星期四, 22 八月 2024 08:38:45 +0800 Subject: [PATCH] Merge branch 'master' of http://47.108.235.38:8080/r/cylsg --- cylsg/EzUpFile/EzUpFile.csproj | 17 cylsg/EzWechat/WechatConfig.json | 9 cylsg/EzTencentCloud/ITencentCloudService.cs | 44 ++ .gitignore | 4 cylsg/cylsg.Model/UserModel/UserWorker.cs | 27 + cylsg/cylsg.Web.Core/cylsg.Web.Core.csproj | 1 cylsg/EzTencentCloud/TencentCloudConfig.json | 10 cylsg/EzWechat/WechatService.cs | 12 cylsg/cylsg.Application/applicationsettings.json | 8 cylsg/cylsg.Authorization/cylsg.Authorization.csproj | 1 cylsg/EzUpFile/UpFileConfig.json | 29 + cylsg/EzUpFile/EzFileUploadService.cs | 531 +++++++++++++++++++++++++ /dev/null | 7 cylsg/cylsg.Application/System/Services/SystemService.cs | 2 cylsg/cylsg.Application/LogoInController.cs | 3 cylsg/cylsg.Web.Entry/appsettings.json | 1 cylsg/EzUpFile/UpFileController.cs | 187 ++++++++ cylsg/EzWechat/WecharPayServicecs.cs | 43 ++ cylsg/EzWechat/EzWechat.csproj | 1 cylsg/EzTencentCloud/TencentCloudService.cs | 213 +++++++++ cylsg/EzWechat/IWecharPayServicecs.cs | 19 cylsg/cylsg.Application/cylsg.Application.csproj | 1 cylsg/EzUpFile/IEzFileUploadService.cs | 67 +++ 23 files changed, 1,217 insertions(+), 20 deletions(-) diff --git a/.gitignore b/.gitignore index f80bbf4..324afb0 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,7 @@ cylsg/EzTencentCloud/bin/ cylsg/EzTencentCloud/obj/ cylsg/EzUpFile/obj/ +cylsg/cylsg.services/bin/ +cylsg/EzUpFile/bin/ +cylsg/cylsg.Web.Entry/wwwroot/wechartKey/ +cylsg/cylsg.Web.Entry/wwwroot/1669018589_20240820_cert.zip diff --git a/cylsg/EzTencentCloud/Class1.cs b/cylsg/EzTencentCloud/Class1.cs deleted file mode 100644 index 5238cf9..0000000 --- a/cylsg/EzTencentCloud/Class1.cs +++ /dev/null @@ -1,7 +0,0 @@ -锘縩amespace EzTencentCloud -{ - public class Class1 - { - - } -} diff --git a/cylsg/EzTencentCloud/ITencentCloudService.cs b/cylsg/EzTencentCloud/ITencentCloudService.cs index 8a43e16..da37eff 100644 --- a/cylsg/EzTencentCloud/ITencentCloudService.cs +++ b/cylsg/EzTencentCloud/ITencentCloudService.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; +using TencentCloud.Iai.V20200303.Models; using TencentCloud.Ocr.V20181119.Models; namespace EzTencentCloud @@ -13,10 +14,11 @@ /// </summary> public interface ITencentCloudService: IScoped { + #region orc 鍥炬枃璇嗗埆 /// <summary> /// 韬唤璇佽瘑鍒紝骞跺壀瑁� /// </summary> - /// <param name="ImageBase64"></param> + /// <param name="ImageBase64">鍥剧墖base64</param> /// <param name="isFRONT"></param> /// <returns></returns> IDCardOCRResponse IdCord(string ImageBase64, bool isFRONT); @@ -25,5 +27,45 @@ /// </summary> /// <returns></returns> string GetIdCordImg(); + /// <summary> + /// 钀ヤ笟鎵х収璁よ瘉 + /// </summary> + /// <param name="ImageBase64"> 鍥剧墖base64</param> + /// <returns></returns> + BizLicenseOCRResponse BizLicenseOCR(string ImageBase64); + #endregion + #region iai 浜鸿劯璇嗗埆 + /// <summary> + /// 鍒涘缓浜鸿劯搴擄紝涓�鑸竴涓簯璐﹀彿鍙渶瑕佸垱寤轰竴娆� + /// </summary> + public void IaiCreatGroup(); + /// <summary> + /// 浜鸿劯楠岃瘉 涓�鑸垎鏁拌秴杩�50 鍒嗚瘑鍒负涓�涓汉 + /// </summary> + /// <param name="img64"></param> + /// <param name="PersonNameId"></param> + /// <returns></returns> + public VerifyFaceResponse VerifyFace(string img64, string PersonNameId); + /// <summary> + /// 澧炲姞涓�涓汉鐨勪汉鑴稿浘鐗囩壒寰侊紝涓�涓渶澶氬彧鍏佽鏈変簲涓汉鑴哥壒杩� + /// </summary> + /// <param name="img64"></param> + /// <param name="PersonNameId"></param> + /// <param name="PersonName"></param> + /// <param name="PersonGender"></param> + /// <returns></returns> + public bool IaiAddPersoImg(string img64, string PersonNameId, string PersonName, int PersonGender); + + /// <summary> + /// 澧炲姞涓�涓汉 + /// </summary> + /// <param name="img64">浜鸿劯鐓�</param> + /// <param name="PersonNameId">浜鸿劯ID 涓�涓簯璐︽埛涓敮涓�</param> + /// <param name="PersonName">濮撳悕</param> + /// <param name="PersonGender">鎬у埆 0浠h〃鏈~鍐欙紝1浠h〃鐢锋�э紝2浠h〃濂虫�с��</param> + /// <returns></returns> + public bool IaiAddPerso(string img64, string PersonNameId, string PersonName, int PersonGender); + #endregion + } } diff --git a/cylsg/EzTencentCloud/TencentCloudConfig.json b/cylsg/EzTencentCloud/TencentCloudConfig.json index e52425a..0623d8f 100644 --- a/cylsg/EzTencentCloud/TencentCloudConfig.json +++ b/cylsg/EzTencentCloud/TencentCloudConfig.json @@ -1,6 +1,12 @@ { "TencentCloud": { - "SecretId": "AKIDIPFp9CyThfMmvoQlpeCl34pKYVBahY9T", - "SecretKey": "4rNcaHhrkMhmb9QQ9bmgKipfFZcOt86n" + "SecretId": "AKIDIPFp9CyThfMmvoQlpeCl34pKYVBahY9T", + "SecretKey": "4rNcaHhrkMhmb9QQ9bmgKipfFZcOt86n" + }, + //浜鸿劯搴撶浉鍏抽厤缃� + "IAIGroupSet": { + "ID": "cylsg", + "Name": "宸濆嵃涓存椂宸�" } + } diff --git a/cylsg/EzTencentCloud/TencentCloudService.cs b/cylsg/EzTencentCloud/TencentCloudService.cs index 5d2919d..ceafd97 100644 --- a/cylsg/EzTencentCloud/TencentCloudService.cs +++ b/cylsg/EzTencentCloud/TencentCloudService.cs @@ -12,11 +12,25 @@ using TencentCloud.Common.Profile; using Furion.DependencyInjection; using Furion; +using TencentCloud.Iai.V20200303; +using TencentCloud.Iai.V20200303.Models; + + + namespace EzTencentCloud { public class TencentCloudService: ITencentCloudService, IScoped { + + + + + public TencentCloudService() + { + + } + #region orc 鍥炬枃璇嗗埆 /// <summary> /// 鍓鍚庣殑韬唤璇佸浘鐗� /// </summary> @@ -31,13 +45,14 @@ } - public IDCardOCRResponse IdCord(string ImageBase64, bool isFRONT) + public IDCardOCRResponse IdCord(string ImageBase64, bool isFRONT) { try { + Credential cred = new Credential { - SecretId = App.Configuration["TencentCloud:SecretId"] ??"AKIDIPFp9CyThfMmvoQlpeCl34pKYVBahY9T", + SecretId = App.Configuration["TencentCloud:SecretId"] ?? "AKIDIPFp9CyThfMmvoQlpeCl34pKYVBahY9T", SecretKey = App.Configuration["TencentCloud:SecretKey"] ?? "4rNcaHhrkMhmb9QQ9bmgKipfFZcOt86n" }; @@ -48,7 +63,8 @@ httpProfile.Endpoint = ("ocr.tencentcloudapi.com"); clientProfile.HttpProfile = httpProfile; - OcrClient client = new OcrClient(cred, "ap-beijing", clientProfile); + var _ocrClient = new OcrClient(cred, "ap-shanghai", clientProfile); + IDCardOCRRequest req = new IDCardOCRRequest(); if (isFRONT) req.CardSide = "FRONT"; @@ -73,7 +89,7 @@ Quality = true, }); - IDCardOCRResponse resp = client.IDCardOCRSync(req); + IDCardOCRResponse resp = _ocrClient.IDCardOCRSync(req); if (resp == null) throw new Exception("鍥剧墖鏃犳硶璇嗗埆锛岃閲嶆柊閫夋嫨韬唤璇佸浘鐗�"); @@ -103,6 +119,195 @@ } + + public BizLicenseOCRResponse BizLicenseOCR(string ImageBase64) + { + try + { + + Credential cred = new Credential + { + SecretId = App.Configuration["TencentCloud:SecretId"] ?? "AKIDIPFp9CyThfMmvoQlpeCl34pKYVBahY9T", + SecretKey = App.Configuration["TencentCloud:SecretKey"] ?? "4rNcaHhrkMhmb9QQ9bmgKipfFZcOt86n" + }; + + ClientProfile clientProfile = new ClientProfile(); + HttpProfile httpProfile = new HttpProfile(); + + + httpProfile.Endpoint = ("ocr.tencentcloudapi.com"); + clientProfile.HttpProfile = httpProfile; + + var _ocrClient = new OcrClient(cred, "ap-chengdu", clientProfile); + + var ret = _ocrClient.BizLicenseOCRSync(new BizLicenseOCRRequest() + { + ImageBase64 = ImageBase64, + }); + + return ret; + } + catch (Exception) + { + throw; + } + + + } + + + #endregion + + #region iai 浜鸿劯璇嗗埆 + public void IaiCreatGroup() + { + + Credential cred = new Credential + { + SecretId = App.Configuration["TencentCloud:SecretId"] ?? "AKIDIPFp9CyThfMmvoQlpeCl34pKYVBahY9T", + SecretKey = App.Configuration["TencentCloud:SecretKey"] ?? "4rNcaHhrkMhmb9QQ9bmgKipfFZcOt86n" + }; + + ClientProfile clientProfile = new ClientProfile(); + HttpProfile httpProfile = new HttpProfile(); + + + httpProfile.Endpoint = ("iai.tencentcloudapi.com"); + clientProfile.HttpProfile = httpProfile; + + var iaiClient = new IaiClient(cred, "ap-shanghai", clientProfile); + try + { + var retinfo = iaiClient.GetGroupInfoSync(new GetGroupInfoRequest + { + GroupId = App.Configuration["IAIGroupSet:ID"] ?? "", + }); + } + catch (TencentCloudSDKException e) + { + if (e.ErrorCode == "InvalidParameterValue.GroupIdNotExist") + + { + CreateGroupRequest request = new CreateGroupRequest() + { + GroupId = App.Configuration["IAIGroupSet:ID"], + GroupName= App.Configuration["IAIGroupSet:Name"], + + + }; + var aia = iaiClient.CreateGroupSync(request); + } + } + + + + } + + + public bool IaiAddPerso( string img64,string PersonNameId,string PersonName, int PersonGender) + { + + Credential cred = new Credential + { + SecretId = App.Configuration["TencentCloud:SecretId"] ?? "AKIDIPFp9CyThfMmvoQlpeCl34pKYVBahY9T", + SecretKey = App.Configuration["TencentCloud:SecretKey"] ?? "4rNcaHhrkMhmb9QQ9bmgKipfFZcOt86n" + }; + + ClientProfile clientProfile = new ClientProfile(); + HttpProfile httpProfile = new HttpProfile(); + + + httpProfile.Endpoint = ("iai.tencentcloudapi.com"); + clientProfile.HttpProfile = httpProfile; + + var iaiClient = new IaiClient(cred, "ap-shanghai", clientProfile); + var ret= iaiClient.CreatePerson(new TencentCloud.Iai.V20200303.Models.CreatePersonRequest + { + GroupId = App.Configuration["IAIGroupSet:ID"], + Image = img64, + PersonId= PersonNameId, + PersonName= PersonName, + Gender=PersonGender, + + }); + + if(ret.IsFaulted) + return false; + else + return true; + + + + } + + + public bool IaiAddPersoImg(string img64, string PersonNameId, string PersonName, int PersonGender) + { + + Credential cred = new Credential + { + SecretId = App.Configuration["TencentCloud:SecretId"] ?? "AKIDIPFp9CyThfMmvoQlpeCl34pKYVBahY9T", + SecretKey = App.Configuration["TencentCloud:SecretKey"] ?? "4rNcaHhrkMhmb9QQ9bmgKipfFZcOt86n" + }; + + ClientProfile clientProfile = new ClientProfile(); + HttpProfile httpProfile = new HttpProfile(); + + + httpProfile.Endpoint = ("iai.tencentcloudapi.com"); + clientProfile.HttpProfile = httpProfile; + var iaiClient = new IaiClient(cred, "ap-chengdu", clientProfile); + var ret = iaiClient.CreateFace( new TencentCloud.Iai.V20200303.Models.CreateFaceRequest + { + + PersonId = PersonNameId, + Images = [img64], + + + + }); + + if (ret.IsFaulted) + return false; + else + return true; + + + + } + + + public VerifyFaceResponse VerifyFace(string img64, string PersonNameId) + { + Credential cred = new Credential + { + SecretId = App.Configuration["TencentCloud:SecretId"] ?? "AKIDIPFp9CyThfMmvoQlpeCl34pKYVBahY9T", + SecretKey = App.Configuration["TencentCloud:SecretKey"] ?? "4rNcaHhrkMhmb9QQ9bmgKipfFZcOt86n" + }; + + ClientProfile clientProfile = new ClientProfile(); + HttpProfile httpProfile = new HttpProfile(); + + + httpProfile.Endpoint = ("iai.tencentcloudapi.com"); + clientProfile.HttpProfile = httpProfile; + var iaiClient = new IaiClient(cred, "ap-chengdu", clientProfile); + var ret = iaiClient.VerifyFaceSync(new TencentCloud.Iai.V20200303.Models.VerifyFaceRequest + { + + PersonId = PersonNameId, + Image= img64 + + + + }); + return ret; + + + + } + #endregion + } //杩斿洖鎵╁睍鍙傛暟 diff --git a/cylsg/EzUpFile/Class1.cs b/cylsg/EzUpFile/Class1.cs deleted file mode 100644 index 2d366e9..0000000 --- a/cylsg/EzUpFile/Class1.cs +++ /dev/null @@ -1,7 +0,0 @@ -锘縩amespace EzUpFile -{ - public class Class1 - { - - } -} diff --git a/cylsg/EzUpFile/EzFileUploadService.cs b/cylsg/EzUpFile/EzFileUploadService.cs new file mode 100644 index 0000000..da61bfd --- /dev/null +++ b/cylsg/EzUpFile/EzFileUploadService.cs @@ -0,0 +1,531 @@ +锘� +using Aliyun.OSS; +using Aliyun.OSS.Util; +using cylsg.utility; +using cylsg.utility.Extend; +using EzTencentCloud; +using Furion; +using Furion.DependencyInjection; +using Furion.FriendlyException; +using Microsoft.AspNetCore.Http; + +using SqlSugar; +using System; +using System.Buffers.Text; +using System.Drawing; +using System.Globalization; +using System.Security.Policy; +using TencentCloud.Ocr.V20181119.Models; +using TencentCloud.Teo.V20220901.Models; +using Task = System.Threading.Tasks.Task; +namespace EzUpFile +{ + /// <summary> + /// 闄勪欢鏈嶅姟绋嬪簭 + /// </summary> + public class EzFileUploadService : IEzFileUploadService, IScoped + { + + private readonly HttpRequest? _request; + private readonly ISqlSugarClient _sqlSugarClient; + private readonly ITencentCloudService _tcs; + public EzFileUploadService(IHttpContextAccessor httpContext, ISqlSugarClient sqlSugarClient,ITencentCloudService tencentCloudService) + { + + _request = httpContext.HttpContext?.Request ?? null; + _sqlSugarClient = sqlSugarClient; + _tcs= tencentCloudService; + } + + /// <summary> + /// 涓婁紶闄勪欢 + /// </summary> + /// <returns></returns> + public async Task<string> UploadFiles() + { + + + var maxSize = 1024 * 1024 * 5; //涓婁紶澶у皬5M + + var file = _request?.Form?.Files["file"]; + if (file == null) + { + throw Oops.Oh("浣犳病鏈夐�夋嫨鏂囦欢"); + } + + var fileName = file.FileName; + var fileExt = Path.GetExtension(fileName).ToLowerInvariant(); + + //妫�鏌ュぇ灏� + if (file.Length > maxSize) + { + throw Oops.Oh("鏂囦欢澶т簬璁剧疆鏂囦欢"); + } + + ////妫�鏌ユ枃浠舵墿灞曞悕 + //if (string.IsNullOrEmpty(fileExt) || Array.IndexOf(op.AttachmentSaveFileExtName?.Split(',') ?? new string[] { "" }, fileExt.Substring(1).ToLower()) == -1) + //{ + // throw Oops.Oh("涓婁紶鏂囦欢鎵╁睍鍚嶆槸涓嶅厑璁哥殑鎵╁睍鍚�,璇蜂笂浼犲悗缂�鍚嶄负锛�" + op.AttachmentSaveFileExtName); + + //} + + string url = string.Empty; + + + url = await UpLoadFileForAliYunOSS(fileExt, file); + + + return url; + + + } + + /// <summary> + /// 涓婁紶base64 + /// </summary> + /// <param name="base64"></param> + /// <returns></returns> + public async Task<string> UploadFilesFByBase64(string base64) + { + + if (string.IsNullOrEmpty(base64)) + { + throw Oops.Oh("娌℃湁鍐呭"); + } + + //妫�鏌ヤ笂浼犲ぇ灏� + if (!CommonHelper.CheckBase64Size(base64, 5)) + { + throw Oops.Oh("涓婁紶鏂囦欢澶у皬瓒呰繃闄愬埗锛屾渶澶у厑璁镐笂浼�" + "5" + "M"); + + } + + base64 = base64.Replace("data:image/png;base64,", "").Replace("data:image/jgp;base64,", "").Replace("data:image/jpg;base64,", "").Replace("data:image/jpeg;base64,", "");//灏哹ase64澶撮儴淇℃伅鏇挎崲 + byte[] bytes = Convert.FromBase64String(base64); + MemoryStream memStream = new MemoryStream(bytes); + + string url = string.Empty; + + url = await UpLoadBase64ForAliYunOSS(memStream); + + + + return url; + } + + /// <summary> + /// 鍒犻櫎鏂囦欢 + /// </summary> + /// <param name="Path"></param> + /// <returns></returns> + public async Task<bool> DelFile(string Path) + { + + + var ret = await DelFileForAliYunOSS(Path); + + + + return ret; + } + + + + #region 闃块噷浜戜笂浼犳柟娉曪紙File锛� + /// <summary> + /// 闃块噷浜戜笂浼犳柟娉曪紙File锛� + /// </summary> + /// <param name="options"></param> + /// <param name="fileExt"></param> + /// <param name="file"></param> + /// <returns></returns> + public async Task<string> UpLoadFileForAliYunOSS(string fileExt, IFormFile file) + { + + + var newFileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", DateTimeFormatInfo.InvariantInfo) + fileExt; + var today = DateTime.Now.ToString("yyyyMMdd"); + + //涓婁紶鍒伴樋閲屼簯 + await using var fileStream = file.OpenReadStream(); + var md5 = OssUtils.ComputeContentMd5(fileStream, file.Length); + + var filePath = App.Configuration["FileUploadOptions:SavePath"] + today + "/" + newFileName; //浜戞枃浠朵繚瀛樿矾寰� + //鍒濆鍖栭樋閲屼簯閰嶇疆--澶栫綉Endpoint銆佽闂甀D銆佽闂畃assword + var aliYun = new OssClient(App.Configuration["FileUploadOptions:AliOSSEndpoint"], App.Configuration["FileUploadOptions:AliOSSAccessKeyID"], App.Configuration["FileUploadOptions:AliOSSAccessKeySecret"]); + //灏嗘枃浠秏d5鍊艰祴鍊肩粰meat澶翠俊鎭紝鏈嶅姟鍣ㄩ獙璇佹枃浠禡D5 + var objectMeta = new ObjectMetadata + { + ContentMd5 = md5 + }; + + + var task = Task.Run(() => + //鏂囦欢涓婁紶--绌洪棿鍚嶃�佹枃浠朵繚瀛樿矾寰勩�佹枃浠舵祦銆乵eta澶翠俊鎭�(鏂囦欢md5) //杩斿洖meta澶翠俊鎭�(鏂囦欢md5) + aliYun.PutObject(App.Configuration["FileUploadOptions:AliOSSBucketName"], filePath, fileStream, objectMeta) + + + + ); + //绛夊緟瀹屾垚 + try + { + task.Wait(); + } + catch (AggregateException ex) + { + + throw Oops.Oh(ex.Message); + } + + //杩斿洖缁橴Editor鐨勬彃鍏ョ紪杈戝櫒鐨勫浘鐗囩殑src + + return App.Configuration["FileUploadOptions:AliOSSSaveBaseUrl"] + filePath; + } + + #endregion + + + + + + #region 闃块噷浜戜笂浼犳柟娉曪紙Base64锛� + /// <summary> + /// 闃块噷浜戜笂浼犳柟娉曪紙Base64锛� + /// </summary> + /// <param name="options"></param> + /// <param name="memStream"></param> + /// <returns></returns> + public async Task<string> UpLoadBase64ForAliYunOSS(MemoryStream memStream) + { + + + var newFileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", DateTimeFormatInfo.InvariantInfo) + ".jpg"; + var today = DateTime.Now.ToString("yyyyMMdd"); + + // 璁剧疆褰撳墠娴佺殑浣嶇疆涓烘祦鐨勫紑濮� + memStream.Seek(0, SeekOrigin.Begin); + + await using var fileStream = memStream; + var md5 = OssUtils.ComputeContentMd5(fileStream, memStream.Length); + + var filePath = App.Configuration["FileUploadOptions:SavePath"] + today + "/" + newFileName; //浜戞枃浠朵繚瀛樿矾寰� + //鍒濆鍖栭樋閲屼簯閰嶇疆--澶栫綉Endpoint銆佽闂甀D銆佽闂畃assword + var aliYun = new OssClient(App.Configuration["FileUploadOptions:AliOSSEndpoint"], App.Configuration["FileUploadOptions:AliOSSAccessKeyID"], App.Configuration["FileUploadOptions:AliOSSAccessKeySecret"]); + //灏嗘枃浠秏d5鍊艰祴鍊肩粰meat澶翠俊鎭紝鏈嶅姟鍣ㄩ獙璇佹枃浠禡D5 + var objectMeta = new ObjectMetadata + { + ContentMd5 = md5 + }; + try + { + //鏂囦欢涓婁紶--绌洪棿鍚嶃�佹枃浠朵繚瀛樿矾寰勩�佹枃浠舵祦銆乵eta澶翠俊鎭�(鏂囦欢md5) //杩斿洖meta澶翠俊鎭�(鏂囦欢md5) + aliYun.PutObject(App.Configuration["FileUploadOptions:AliOSSBucketName"], filePath, fileStream, objectMeta); + } + catch (AggregateException ex) + { + + throw Oops.Oh(ex.Message); + } + + + //杩斿洖缁橴Editor鐨勬彃鍏ョ紪杈戝櫒鐨勫浘鐗囩殑src + + return App.Configuration["FileUploadOptions:AliOSSSaveBaseUrl"] + filePath; + + } + + #endregion + + + + + + #region 鍒犻櫎鏂囦欢 + + /// <summary> + /// 闃块噷浜戝垹闄� + /// </summary> + /// <param name="options"></param> + /// <param name="fileUrl">甯xx.xx鐨勯摼鎺ュ湴鍧�</param> + /// <returns></returns> + public async Task<bool> DelFileForAliYunOSS(string fileUrl) + { + + + + + + + + + + + //鍒濆鍖栭樋閲屼簯閰嶇疆--澶栫綉Endpoint銆佽闂甀D銆佽闂畃assword + var aliYun = new OssClient(App.Configuration["FileUploadOptions:AliOSSEndpoint"], App.Configuration["FileUploadOptions:AliOSSAccessKeyID"], App.Configuration["FileUploadOptions:AliOSSAccessKeySecret"]); + + try + { + var task = Task.Run(() => aliYun.DeleteObject(App.Configuration["FileUploadOptions:AliOSSBucketName"], (App.Configuration["FileUploadOptions:SavePath"]?.RemoveStartWithStr("/") ?? "") + fileUrl.GetFileName())); + + + task.Wait(); + + } + catch (Exception ex) + { + + throw Oops.Oh(ex.Message); + } + + + //杩斿洖缁橴Editor鐨勬彃鍏ョ紪杈戝櫒鐨勫浘鐗囩殑src + + return true; + + } + + + + + #endregion + + #region 璇嗗埆涓婁紶 + public async Task<(IDCardOCRResponse, string)> UpIdCord(string PageName = "FRONT") + { + try + { + + var maxSize = 1024 * 1024 * 5; //涓婁紶澶у皬5M + + var FileData = _request?.Form?.Files["file"]; + + if (FileData.Length > maxSize) + { + throw Oops.Oh(" 涓婁紶鏂囦欢涓嶅彲瓒呭嚭500K"); + } + + + //澶勭悊鍥惧舰 + // var FileData = Request.Form.Files[0]; + + Image oimage = Image.FromStream(FileData.OpenReadStream()); + if (oimage == null) + { + throw Oops.Oh(" 涓婁紶澶辫触"); + } + + MemoryStream ms = new MemoryStream(); + if (oimage.Width > 600) + + { + if (oimage.Width > oimage.Height) + oimage.GetThumbnailImage(600, 400, null, IntPtr.Zero).Save(ms, System.Drawing.Imaging.ImageFormat.Png); + else + oimage.GetThumbnailImage(400, 600, null, IntPtr.Zero).Save(ms, System.Drawing.Imaging.ImageFormat.Png); + } + else + oimage.Save(ms, System.Drawing.Imaging.ImageFormat.Png); + ms.Position = 0; + + var arr = ms.ToArray(); + string img64 = Convert.ToBase64String(arr); + + IDCardOCRResponse idcordinfo = null; + string url = ""; + + try + { + + + idcordinfo = _tcs.IdCord(img64, PageName == "FRONT"); + + url = await UploadFilesFByBase64(_tcs.GetIdCordImg()); + idcordinfo.AdvancedInfo = null; + + return (idcordinfo, url); + + } + catch (Exception e) + { + + throw Oops.Oh(e.Message); + } + } + catch (Exception e) + { + + throw Oops.Oh(e.Message); + } + + } + + public async Task<(BizLicenseOCRResponse, string)> UpBizLicense() + { + try + { + + var maxSize = 1024 * 1024 * 5; //涓婁紶澶у皬5M + + var FileData = _request?.Form?.Files["file"]; + + if (FileData.Length > maxSize) + { + throw Oops.Oh(" 涓婁紶鏂囦欢涓嶅彲瓒呭嚭500K"); + } + + + //澶勭悊鍥惧舰 + // var FileData = Request.Form.Files[0]; + + Image oimage = Image.FromStream(FileData.OpenReadStream()); + if (oimage == null) + { + throw Oops.Oh(" 涓婁紶澶辫触"); + } + + MemoryStream ms = new MemoryStream(); + if (oimage.Width > 600) + + { + if (oimage.Width > oimage.Height) + oimage.GetThumbnailImage(600, 400, null, IntPtr.Zero).Save(ms, System.Drawing.Imaging.ImageFormat.Png); + else + oimage.GetThumbnailImage(400, 600, null, IntPtr.Zero).Save(ms, System.Drawing.Imaging.ImageFormat.Png); + } + else + oimage.Save(ms, System.Drawing.Imaging.ImageFormat.Png); + ms.Position = 0; + + var arr = ms.ToArray(); + string img64 = Convert.ToBase64String(arr); + + BizLicenseOCRResponse info = null; + string url = ""; + + try + { + info = _tcs.BizLicenseOCR(img64); + + url = await UploadFilesFByBase64(img64); + + return (info, url); + + } + catch (Exception e) + { + + throw Oops.Oh(e.Message); + } + } + catch (Exception e) + { + + throw Oops.Oh(e.Message); + } + } + + + public async Task<(bool,string)> IaiAddPerso(string CoredID,string Name,int PersonGender) + { + try + { + + var maxSize = 1024 * 1024 * 5; //涓婁紶澶у皬5M + + var FileData = _request?.Form?.Files["file"]; + + if (FileData.Length > maxSize) + { + throw Oops.Oh(" 涓婁紶鏂囦欢涓嶅彲瓒呭嚭500K"); + } + + + //澶勭悊鍥惧舰 + // var FileData = Request.Form.Files[0]; + + Image oimage = Image.FromStream(FileData.OpenReadStream()); + if (oimage == null) + { + throw Oops.Oh(" 涓婁紶澶辫触"); + } + + MemoryStream ms = new MemoryStream(); + if (oimage.Width > 600) + + { + if (oimage.Width > oimage.Height) + oimage.GetThumbnailImage(600, 400, null, IntPtr.Zero).Save(ms, System.Drawing.Imaging.ImageFormat.Png); + else + oimage.GetThumbnailImage(400, 600, null, IntPtr.Zero).Save(ms, System.Drawing.Imaging.ImageFormat.Png); + } + else + oimage.Save(ms, System.Drawing.Imaging.ImageFormat.Png); + ms.Position = 0; + + var arr = ms.ToArray(); + string img64 = Convert.ToBase64String(arr); + + bool info = false; + string url = ""; + + try + { + info = _tcs.IaiAddPerso(img64, CoredID, Name, PersonGender); + + url = await UploadFilesFByBase64(img64); + + return (info, url); + + } + catch (Exception e) + { + + throw Oops.Oh(e.Message); + } + } + catch (Exception e) + { + + throw Oops.Oh(e.Message); + } + } +/// <inheritdoc/> + + public async Task<(bool, string)> IaiAddPerso(string imgBase64, string CoredID, string Name, int PersonGender) + { + if (string.IsNullOrEmpty(imgBase64)) + { + throw Oops.Oh("娌℃湁鍐呭"); + } + + //妫�鏌ヤ笂浼犲ぇ灏� + if (!CommonHelper.CheckBase64Size(imgBase64, 5)) + { + throw Oops.Oh("涓婁紶鏂囦欢澶у皬瓒呰繃闄愬埗锛屾渶澶у厑璁镐笂浼�" + "5" + "M"); + } + + imgBase64 = imgBase64.Replace("data:image/png;base64,", "").Replace("data:image/jgp;base64,", "").Replace("data:image/jpg;base64,", "").Replace("data:image/jpeg;base64,", "");//灏哹ase64澶撮儴淇℃伅鏇挎崲 + bool info = false; + string url = ""; + + try + { + info = _tcs.IaiAddPerso(imgBase64, CoredID, Name, PersonGender); + + url = await UploadFilesFByBase64(imgBase64); + + return (info, url); + + } + catch (Exception e) + { + + throw Oops.Oh(e.Message); + } + } + + + #endregion + } +} diff --git a/cylsg/EzUpFile/EzUpFile.csproj b/cylsg/EzUpFile/EzUpFile.csproj index fa71b7a..d21d20d 100644 --- a/cylsg/EzUpFile/EzUpFile.csproj +++ b/cylsg/EzUpFile/EzUpFile.csproj @@ -4,6 +4,23 @@ <TargetFramework>net8.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> + <GenerateDocumentationFile>True</GenerateDocumentationFile> </PropertyGroup> + <ItemGroup> + <PackageReference Include="Aliyun.OSS.SDK.NetCore" Version="2.14.1" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\cylsg.Core\cylsg.Core.csproj" /> + <ProjectReference Include="..\cylsg.utility\cylsg.utility.csproj" /> + <ProjectReference Include="..\EzTencentCloud\EzTencentCloud.csproj" /> + </ItemGroup> + + <ItemGroup> + <None Update="UpFileConfig.json"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + </ItemGroup> + </Project> diff --git a/cylsg/EzUpFile/IEzFileUploadService.cs b/cylsg/EzUpFile/IEzFileUploadService.cs new file mode 100644 index 0000000..dbf822d --- /dev/null +++ b/cylsg/EzUpFile/IEzFileUploadService.cs @@ -0,0 +1,67 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using TencentCloud.Ocr.V20181119.Models; + +namespace EzUpFile +{ + public interface IEzFileUploadService + { + /// <summary> + /// 涓婁紶base64 + /// </summary> + /// <param name="base64"></param> + /// <returns></returns> + Task<string> UploadFilesFByBase64(string base64); + /// <summary> + /// 涓婁紶鏂囦欢 + /// </summary> + /// <returns></returns> + Task<string> UploadFiles(); + /// <summary> + /// 鍒犻櫎鏂囦欢 + /// </summary> + /// <param name="Path"></param> + /// <returns></returns> + Task<bool> DelFile(string Path); + + /// <summary> + /// 涓婁紶韬唤璇� + /// </summary> + /// <param name="Path"></param> + /// <returns></returns> + Task<(IDCardOCRResponse, string)> UpIdCord(string PageName = "FRONT"); + + + /// <summary> + /// 涓婁紶钀ヤ笟鎵х収 + /// </summary> + /// <returns></returns> + Task<(BizLicenseOCRResponse, string)> UpBizLicense(); + + /// <summary> + /// 鍒涘缓浜鸿劯鐗瑰緛 鏂囦欢浼犻�� + /// </summary> + /// <param name="CoredID"> 韬唤璇佸彿</param> + /// <param name="Name">濮撳悕</param> + /// <param name="PersonGender"> 鎬у埆 0浠h〃鏈~鍐欙紝1浠h〃鐢锋�э紝2浠h〃濂虫�с��</param> + /// <returns></returns> + Task<(bool, string)> IaiAddPerso(string CoredID, string Name, int PersonGender); + /// <summary> + /// 鍒涘缓浜鸿劯鐗瑰緛 + /// </summary> + /// <param name="imgBase64">img base64</param> + /// <param name="CoredID"> 韬唤璇佸彿</param> + /// <param name="Name">濮撳悕</param> + /// <param name="PersonGender"> 鎬у埆 0浠h〃鏈~鍐欙紝1浠h〃鐢锋�э紝2浠h〃濂虫�с��</param> + /// <returns></returns> + Task<(bool, string)> IaiAddPerso(string imgBase64, string CoredID, string Name, int PersonGender); + + } + + + + +} diff --git a/cylsg/EzUpFile/UpFileConfig.json b/cylsg/EzUpFile/UpFileConfig.json new file mode 100644 index 0000000..31c4179 --- /dev/null +++ b/cylsg/EzUpFile/UpFileConfig.json @@ -0,0 +1,29 @@ +{ + "FileUploadOptions": { + + "AliOSSBucketName": "appimchat", + "SavePath": "cylsg/", + "AliOSSEndpoint": "oss-accelerate.aliyuncs.com", + "AliOSSAccessKeyID": "LTAI5tNYGwTd3swLhC8H2XYV", + "AliOSSAccessKeySecret": "TyfkpYbXRUCh1K8LLtUyxY3ZcFCy1A", + "AliOSSSaveBaseUrl": "https://appimchat.oss-cn-chengdu.aliyuncs.com/" + + }, + + "[openapi:FileUpdata]": { + "Title": "鏂囦欢涓婁紶", + "Order": 0, + "Description": "鏂囦欢涓婁紶API", + "Version": "1.0.0", + "TermsOfService": "", + "Contact": { + "Name": "鏂囦欢涓婁紶宸濆嵃涓存椂宸�", + "Url": "", + "Email": "liaoXuJun@QQ.Com" + }, + "License": { + "Name": "MIT", + "Url": "" + } + } +} diff --git a/cylsg/EzUpFile/UpFileController.cs b/cylsg/EzUpFile/UpFileController.cs new file mode 100644 index 0000000..a3ee514 --- /dev/null +++ b/cylsg/EzUpFile/UpFileController.cs @@ -0,0 +1,187 @@ +锘縰sing EzTencentCloud; +using Furion.FriendlyException; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.HttpResults; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.IdentityModel.Abstractions; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using TencentCloud.Ocr.V20181119.Models; + +namespace EzUpFile +{ + /// <summary> + /// 鏂囦欢涓婁紶涓嬭浇 + /// </summary> + [DynamicApiController] + [ApiDescriptionSettings("FileUpdata")] + public class UpFileController + { + + + /// <summary> + /// 涓婁紶韬唤璇佷俊鎭� + /// </summary> + /// <param name="PageName"> 韬唤璇佹鍙嶉潰 FRONT 姝i潰 Back 鍥藉窘鍙嶉潰 </param> + /// <returns></returns> + [HttpPost] + public async Task<Object> UploadIdCord([FromServices] IEzFileUploadService fileUploadService,IFormFile file, [FromQuery] string PageName = "FRONT") + { + + + var ret= await fileUploadService.UpIdCord(PageName); + return new { Info = ret.Item1, url = ret.Item2 }; + } + + /// <summary> + /// 涓婁紶鍜岃瘑鍒惀涓氭墽鐓� + /// </summary> + /// <param name="PageName"> 韬唤璇佹鍙嶉潰 FRONT 姝i潰 Back 鍥藉窘鍙嶉潰 </param> + /// <returns></returns> + [HttpPost] + public async Task<Object> UpBizLicense([FromServices] IEzFileUploadService fileUploadService, IFormFile file) + { + + + var ret= await fileUploadService.UpBizLicense(); + return new { Info = ret.Item1, url = ret.Item2 }; + + } + /// <summary> + /// 澧炲姞浜鸿劯鐗瑰緛 + /// </summary> + /// <param name="CordId">韬唤璇佸彿</param> + /// <param name="Name">鍚嶇О</param> + /// <param name="Gender">0浠h〃鏈~鍐欙紝1浠h〃鐢锋�э紝2浠h〃濂虫�с��</param> + /// <returns></returns> + [HttpPost] + public async Task<object> IaiAddPerso([FromServices] IEzFileUploadService fileUploadService, IFormFile file,[FromQuery] string CordId, [FromQuery] string Name, [FromQuery] int Gender) + { + + + var ret= await fileUploadService.IaiAddPerso(CordId, Name,Gender); + return new { IsOK = ret.Item1, url = ret.Item2 }; + + + } + + /// <summary> + /// 澧炲姞浜鸿劯搴� base64 + /// </summary> + /// <param name="param"></param> + /// <returns></returns> + [HttpPost] + public async Task<object> IaiAddPersoBase64([FromServices] IEzFileUploadService fileUploadService, UpDataFileData param) + { + if (string.IsNullOrEmpty(param.imgBase64)) + throw Oops.Oh("娌℃湁鏂囦欢绫诲"); + if (string.IsNullOrEmpty(param.Name)) + throw Oops.Oh("娌℃湁濮撳悕"); + if (string.IsNullOrEmpty(param.CordId)) + throw Oops.Oh("娌℃湁韬唤璇佷俊鎭�"); + var ret = await fileUploadService.IaiAddPerso(param.imgBase64, param.CordId, param. Name, param.Gender??0); + return new { IsOK = ret.Item1, url = ret.Item2 }; + + + } + public async Task test([FromServices] ITencentCloudService fileUploadService) + { + + fileUploadService.IaiCreatGroup(); + + } + + /// <summary> + /// 涓婁紶闄勪欢 + /// </summary> + /// <param name="fileUploadService"></param> + /// <returns></returns> + [HttpPost] + public async Task<string> UpdateFile([FromServices] IEzFileUploadService fileUploadService, IFormFile file) + { + return await fileUploadService.UploadFiles(); + } + /// <summary> + /// 鑾峰彇鍒板鎴风鐨処Pv4 + /// </summary> + /// <param name="httpContextAccessor"></param> + /// <returns></returns> + [HttpGet] + public string GetIp4([FromServices] IHttpContextAccessor httpContextAccessor) + { + var httpc = httpContextAccessor.HttpContext; + var ipv4 = httpc.GetRemoteIpAddressToIPv4(); + return ipv4; + } + /// <summary> + /// 涓婁紶闄勪欢 + /// </summary> + /// <param name="fileUploadService"></param> + /// <param name="Param"></param> + /// <returns></returns> + [HttpPost] + public async Task<string> UpdateFileBase64([FromServices] IEzFileUploadService fileUploadService, UpDataFileData Param) + { + return await fileUploadService.UploadFilesFByBase64(Param.imgBase64); + } + [HttpPost] + public async Task<bool> DelFile([FromServices] IEzFileUploadService fileUploadService, DelFileData Param) + { + return await fileUploadService.DelFile(Param.FilePath); + } + } + /// <summary> + /// 涓婁紶鏁版嵁 + /// </summary> + public class UpDataFileData + + { + /// <summary> + /// 鏁版嵁base64 + /// </summary> + public string imgBase64 { get; set; } + /// <summary> + /// 韬唤璇佸彿鐮� + /// </summary> + public string? CordId { get; set; } + /// <summary> + /// 濮撳悕 + /// </summary> + public string? Name { get; set; } + /// <summary> + /// 鎬у埆 + /// </summary> + public int? Gender { get; set; } + } + /// <summary> + /// 涓婁紶鏁版嵁 + /// </summary> + public class DelFileData + + { + /// <summary> + /// 鏁版嵁base64 + /// </summary> + public string FilePath { get; set; } + } + /// <summary> + /// 韬唤璇佽繑鍥炶緭鍑� + /// </summary> + public class IdCordOuput + { + /// <summary> + /// 韬唤璇佺浉鍏充俊鎭� + /// </summary> + public IDCardOCRResponse IdCordInfo { get; set; } + + /// <summary> + /// url + /// </summary> + public string Url { get; set; } + + } +} diff --git a/cylsg/EzWechat/EzWechat.csproj b/cylsg/EzWechat/EzWechat.csproj index 1e28ec0..ed480b7 100644 --- a/cylsg/EzWechat/EzWechat.csproj +++ b/cylsg/EzWechat/EzWechat.csproj @@ -8,6 +8,7 @@ <ItemGroup> <PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="3.4.0" /> + <PackageReference Include="SKIT.FlurlHttpClient.Wechat.TenpayV3" Version="3.7.0" /> </ItemGroup> <ItemGroup> diff --git a/cylsg/EzWechat/IWecharPayServicecs.cs b/cylsg/EzWechat/IWecharPayServicecs.cs new file mode 100644 index 0000000..21173bd --- /dev/null +++ b/cylsg/EzWechat/IWecharPayServicecs.cs @@ -0,0 +1,19 @@ +锘縰sing SKIT.FlurlHttpClient.Wechat.TenpayV3.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EzWechat +{ + public interface IWecharPayServicecs + { + /// <summary> + /// 鏀粯涓�鍗� + /// </summary> + /// <param name="request"></param> + /// <returns></returns> + Task<CreateTransferBatchResponse> PayOderAsync(CreateTransferBatchRequest request); + } +} diff --git a/cylsg/EzWechat/WecharPayServicecs.cs b/cylsg/EzWechat/WecharPayServicecs.cs new file mode 100644 index 0000000..e4a37ab --- /dev/null +++ b/cylsg/EzWechat/WecharPayServicecs.cs @@ -0,0 +1,43 @@ +锘縰sing Furion; +using Furion.DependencyInjection; +using SKIT.FlurlHttpClient.Wechat.TenpayV3; +using SKIT.FlurlHttpClient.Wechat.TenpayV3.Models; +using SKIT.FlurlHttpClient.Wechat.TenpayV3.Settings; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static SKIT.FlurlHttpClient.Wechat.Api.Models.CgibinOpenApiRequestIdGetResponse.Types; + +namespace EzWechat +{ + /// <summary> + /// 寰俊鏀粯鏈嶅姟 + /// </summary> + public class WecharPayServicecs:IWecharPayServicecs, IScoped + { + private readonly WechatTenpayClient _V3Client; + + public WecharPayServicecs() { + var manager = new InMemoryCertificateManager(); + var options = new WechatTenpayClientOptions() + { + MerchantId = App.Configuration["WechartPay:MerchantId"], + MerchantV3Secret = App.Configuration["WechartPay:lojdhuqyt5648dikunm623ddsl2543a5"], + MerchantCertificateSerialNumber = App.Configuration["WechartPay:MerchantCertificateSerialNumber"], + MerchantCertificatePrivateKey = System.IO.File.ReadAllText(App.Configuration["WechartPay:apiclient_keyFile"]), + PlatformCertificateManager = manager // 骞冲彴璇佷功绠$悊鍣ㄧ殑鍏蜂綋鐢ㄦ硶璇峰弬闃呬笅鏂囩殑鍩虹鐢ㄦ硶涓庡姞瀵嗐�侀獙绛炬湁鍏崇殑绔犺妭 + }; + _V3Client = WechatTenpayClientBuilder.Create(options).Build(); + } + + public async Task<CreateTransferBatchResponse> PayOderAsync(CreateTransferBatchRequest request) + { + + var response = await _V3Client.ExecuteCreateTransferBatchAsync(request); + return response; + + } + } +} diff --git a/cylsg/EzWechat/WechatConfig.json b/cylsg/EzWechat/WechatConfig.json index f238b57..a7d7366 100644 --- a/cylsg/EzWechat/WechatConfig.json +++ b/cylsg/EzWechat/WechatConfig.json @@ -3,5 +3,14 @@ "AppId": "wx983556688354dd14", "AppSecret": "2ab1aefaac926855dc9d5f7bf7f04477" + }, + + "WechartPay": { + + "MerchantV3Secret": "lojdhuqyt5648dikunm623ddsl2543a5", + "MerchantId": "1669018589", + "MerchantCertificateSerialNumber": "49FFE8CB27B5EDD026BFF23C41F0DAA83405EB10", + "apiclient_keyFile": "wwwroot\\wechartKey\\apiclient_key.pem" + } } \ No newline at end of file diff --git a/cylsg/EzWechat/WechatService.cs b/cylsg/EzWechat/WechatService.cs index 1d07cce..5070c70 100644 --- a/cylsg/EzWechat/WechatService.cs +++ b/cylsg/EzWechat/WechatService.cs @@ -13,6 +13,7 @@ using System.Text; using System.Threading.Tasks; + namespace EzWechat { @@ -106,5 +107,16 @@ return key; } + + + + + + + + + } + + } diff --git a/cylsg/cylsg.Application/LogoInController.cs b/cylsg/cylsg.Application/LogoInController.cs index 8521f42..a97ec29 100644 --- a/cylsg/cylsg.Application/LogoInController.cs +++ b/cylsg/cylsg.Application/LogoInController.cs @@ -15,6 +15,7 @@ /// 鐧诲綍 /// </summary> [DynamicApiController] + [ApiDescriptionSettings("Default@1")] public class LogoIn { private readonly IWechatService _wechatService; @@ -47,7 +48,7 @@ } var jwt = new EzJwtModel() { - ITCode = user.ItCode, + //ITCode = user.ItCode, 涓嶅湪鏄庢枃涓娇鐢↖tcode NickName = user.Nickname, UserID = user.Id, diff --git a/cylsg/cylsg.Application/System/Services/SystemService.cs b/cylsg/cylsg.Application/System/Services/SystemService.cs index 13bd938..6c72041 100644 --- a/cylsg/cylsg.Application/System/Services/SystemService.cs +++ b/cylsg/cylsg.Application/System/Services/SystemService.cs @@ -4,6 +4,6 @@ { public string GetDescription() { - return "宸濆嵃鎷涜仒"; + return "宸濆嵃鎷涜仒鏈嶅姟"; } } diff --git a/cylsg/cylsg.Application/applicationsettings.json b/cylsg/cylsg.Application/applicationsettings.json index 4b91598..47b488e 100644 --- a/cylsg/cylsg.Application/applicationsettings.json +++ b/cylsg/cylsg.Application/applicationsettings.json @@ -1,14 +1,14 @@ 锘縶 "$schema": "https://gitee.com/dotnetchina/Furion/raw/v4/schemas/v4/furion-schema.json", "SpecificationDocumentSettings": { - "DocumentTitle": "Furion | 宸濆嵃闆舵椂宸�", + "DocumentTitle": " 宸濆嵃涓存椂宸�", "GroupOpenApiInfos": [ { "Group": "Default", - "Title": "宸濆嵃闆舵椂宸�", - "Description": "宸濆嵃闆舵椂宸�", + "Title": "宸濆嵃涓存椂宸�", + "Description": "宸濆嵃涓存椂宸�", "Version": "1.0.0", - + "Order": 10, "Contact": { "Name": "", diff --git a/cylsg/cylsg.Application/cylsg.Application.csproj b/cylsg/cylsg.Application/cylsg.Application.csproj index 75373a4..0d6e2b3 100644 --- a/cylsg/cylsg.Application/cylsg.Application.csproj +++ b/cylsg/cylsg.Application/cylsg.Application.csproj @@ -28,6 +28,7 @@ <ProjectReference Include="..\cylsg.redis\cylsg.redis.csproj" /> <ProjectReference Include="..\cylsg.utility\cylsg.utility.csproj" /> <ProjectReference Include="..\EzTencentCloud\EzTencentCloud.csproj" /> + <ProjectReference Include="..\EzUpFile\EzUpFile.csproj" /> <ProjectReference Include="..\EzWechat\EzWechat.csproj" /> </ItemGroup> diff --git a/cylsg/cylsg.Authorization/cylsg.Authorization.csproj b/cylsg/cylsg.Authorization/cylsg.Authorization.csproj index 7250e20..2704b18 100644 --- a/cylsg/cylsg.Authorization/cylsg.Authorization.csproj +++ b/cylsg/cylsg.Authorization/cylsg.Authorization.csproj @@ -4,6 +4,7 @@ <TargetFramework>net8.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> + <GenerateDocumentationFile>True</GenerateDocumentationFile> </PropertyGroup> <ItemGroup> diff --git a/cylsg/cylsg.Model/UserModel/UserWorker.cs b/cylsg/cylsg.Model/UserModel/UserWorker.cs index 22f8da9..dd781c6 100644 --- a/cylsg/cylsg.Model/UserModel/UserWorker.cs +++ b/cylsg/cylsg.Model/UserModel/UserWorker.cs @@ -85,5 +85,32 @@ [SugarColumn(ColumnDescription = "宸叉彁鐜伴噾棰�", Length = 18, DecimalDigits = 2, IsNullable = true)] public decimal? YiTiXianJine { get; set; } + + + /// <summary> + /// 浜鸿劯ID + /// </summary> + [SugarColumn(ColumnDescription = "浜鸿劯ID", IsNullable = true)] + public string? IAIPersonId { get; set; } + + /// <summary> + /// 浜鸿劯搴揑D + /// </summary> + [SugarColumn(ColumnDescription = "浜鸿劯搴揑D", IsNullable = true)] + public string? IAIGroupId { get; set; } + + + /// <summary> + /// 浜鸿劯搴撳悕绉� + /// </summary> + [SugarColumn(ColumnDescription = "浜鸿劯搴撳悕绉�", IsNullable = true)] + public string? IAIGroupName { get; set; } + + /// <summary> + /// 鎬у埆 0浠h〃鏈~鍐欙紝1浠h〃鐢锋�э紝2浠h〃濂虫�с�� + /// </summary> + [SugarColumn(ColumnDescription = "浜鸿劯搴撳悕绉�", IsNullable = true)] + public long? Gender { get; set; } = 0; + } } diff --git a/cylsg/cylsg.Web.Core/cylsg.Web.Core.csproj b/cylsg/cylsg.Web.Core/cylsg.Web.Core.csproj index b558568..76cc66d 100644 --- a/cylsg/cylsg.Web.Core/cylsg.Web.Core.csproj +++ b/cylsg/cylsg.Web.Core/cylsg.Web.Core.csproj @@ -16,6 +16,7 @@ <ItemGroup> <ProjectReference Include="..\cylsg.Application\cylsg.Application.csproj" /> <ProjectReference Include="..\cylsg.Authorization\cylsg.Authorization.csproj" /> + <ProjectReference Include="..\EzUpFile\EzUpFile.csproj" /> </ItemGroup> </Project> diff --git a/cylsg/cylsg.Web.Entry/appsettings.json b/cylsg/cylsg.Web.Entry/appsettings.json index c9ec59a..bb50097 100644 --- a/cylsg/cylsg.Web.Entry/appsettings.json +++ b/cylsg/cylsg.Web.Entry/appsettings.json @@ -24,6 +24,7 @@ ], + "DynamicApiControllerSettings": { "KeepName": true, "KeepVerb": true, -- Gitblit v1.9.1