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