Quellcode durchsuchen

update 版本号

CrazyIter_Bin vor 2 Jahren
Ursprung
Commit
04034e6190

+ 43 - 0
TEAMModelOS.SDK/Helper/Security/AESCrypt/AESHelper.cs

@@ -8,6 +8,49 @@ namespace TEAMModelOS.SDK
 {
     public class AESHelper
     {
+        public static string Decryptor(string TextToDecrypt,string strKey,string strIV)
+        {
+            byte[] EncryptedBytes = Convert.FromBase64String(TextToDecrypt);
+
+            //Setup the AES provider for decrypting.
+            Aes aesProvider = Aes.Create();
+            //aesProvider.Key = System.Text.Encoding.ASCII.GetBytes(strKey);
+            //aesProvider.IV = System.Text.Encoding.ASCII.GetBytes(strIV);
+            aesProvider.BlockSize = 128;
+            aesProvider.KeySize = 256;
+            //My key and iv that i have used in openssl
+            aesProvider.Key = System.Text.Encoding.UTF8.GetBytes(strKey);
+            aesProvider.IV = System.Text.Encoding.UTF8.GetBytes(strIV);
+            aesProvider.Padding = PaddingMode.PKCS7;
+            aesProvider.Mode = CipherMode.CBC;
+
+
+            ICryptoTransform cryptoTransform = aesProvider.CreateDecryptor(aesProvider.Key, aesProvider.IV);
+            byte[] DecryptedBytes = cryptoTransform.TransformFinalBlock(EncryptedBytes, 0, EncryptedBytes.Length);
+            return System.Text.Encoding.UTF8.GetString(DecryptedBytes);
+        }
+        public static string Encryptor(string TextToEncrypt, string strKey, string strIV)
+        {
+            //Turn the plaintext into a byte array.
+            byte[] PlainTextBytes = System.Text.ASCIIEncoding.UTF8.GetBytes(TextToEncrypt);
+
+            //Setup the AES providor for our purposes.
+            Aes aesProvider = Aes.Create();
+
+            aesProvider.BlockSize = 128;
+            aesProvider.KeySize = 256;
+            //My key and iv that i have used in openssl
+            aesProvider.Key = System.Text.Encoding.UTF8.GetBytes(strKey);
+            aesProvider.IV = System.Text.Encoding.UTF8.GetBytes(strIV);
+            aesProvider.Padding = PaddingMode.PKCS7;
+            aesProvider.Mode = CipherMode.CBC;
+
+            ICryptoTransform cryptoTransform = aesProvider.CreateEncryptor(aesProvider.Key, aesProvider.IV);
+            byte[] EncryptedBytes = cryptoTransform.TransformFinalBlock(PlainTextBytes, 0, PlainTextBytes.Length);
+            return Convert.ToBase64String(EncryptedBytes);
+        }
+
+
 
         /// <summary>
         /// 有密码的加密 

+ 201 - 0
TEAMModelOS/Controllers/Third/LePei/LePeiController.cs

@@ -0,0 +1,201 @@
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using TEAMModelOS.Models;
+using TEAMModelOS.SDK.DI;
+using System.Text.Json;
+using TEAMModelOS.SDK.Models;
+using Microsoft.AspNetCore.Http;
+using TEAMModelOS.SDK.Extension;
+using Azure.Cosmos;
+using System.Text;
+using TEAMModelOS.SDK.DI;
+using Microsoft.Extensions.Options;
+using Azure.Messaging.ServiceBus;
+using Microsoft.Extensions.Configuration;
+using HTEXLib.COMM.Helpers;
+using TEAMModelOS.SDK;
+using System.IdentityModel.Tokens.Jwt;
+using TEAMModelOS.Services;
+using TEAMModelOS.SDK.Models.Service;
+using System.IO;
+using System.Dynamic;
+using Microsoft.AspNetCore.Authorization;
+using Azure.Storage.Blobs.Models;
+using static TEAMModelOS.SDK.Models.Teacher;
+using System.Web;
+using static TEAMModelOS.Controllers.FixDataController;
+using static TEAMModelOS.SDK.SchoolService;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.Azure.Cosmos.Table;
+using System.Net.Http;
+using TEAMModelOS.SDK.Context.Attributes.Azure;
+
+namespace TEAMModelOS.Controllers.Third.LePei
+{
+    [ApiController]
+    public class LePeiController : ControllerBase
+    {
+        private readonly SnowflakeId _snowflakeId;
+        private readonly AzureCosmosFactory _azureCosmos;
+        private readonly DingDing _dingDing;
+        private readonly Option _option;
+        private readonly AzureStorageFactory _azureStorage;
+        private readonly AzureServiceBusFactory _serviceBus;
+        private readonly AzureRedisFactory _azureRedis;
+        private readonly CoreAPIHttpService _coreAPIHttpService;
+        public readonly string type = "scsyxpt";
+        public readonly IHttpClientFactory _httpClientFactory;
+
+        public IConfiguration _configuration { get; set; }
+        public LePeiController(IWebHostEnvironment environment, AzureCosmosFactory azureCosmos, SnowflakeId snowflakeId, DingDing dingDing, IOptionsSnapshot<Option> option, AzureStorageFactory azureStorage,
+          AzureRedisFactory azureRedis, AzureServiceBusFactory serviceBus, IConfiguration configuration, CoreAPIHttpService coreAPIHttpService, IHttpClientFactory httpClientFactory)
+        {
+            _azureCosmos = azureCosmos;
+            _snowflakeId = snowflakeId;
+            _dingDing = dingDing;
+            _option = option?.Value;
+            _azureStorage = azureStorage;
+            _serviceBus = serviceBus;
+            _configuration = configuration;
+            _azureRedis = azureRedis;
+            _coreAPIHttpService = coreAPIHttpService;
+            _httpClientFactory = httpClientFactory;
+        }
+        [HttpPost("{path}/lepei-sso")]
+        [AllowAnonymous]
+        public async Task<IActionResult> Sso(LPSSO sso, string path) {
+            string HostName = HttpContext.GetHostName();
+            if (!string.IsNullOrWhiteSpace(_option.HostName))
+            {
+                HostName = _option.HostName;
+            }
+            if (path.Equals("xinjin"))
+            {
+                if (!_option.Location.Contains("Dep"))
+                {
+                    HostName = "www.teammodel.cn";
+                }
+            }
+            var rurl = new StringBuilder($"https://{HostName}/sso");
+            var table = _azureStorage.GetCloudTableClient().GetTableReference("ScYxpt");
+            List<LPConfig> configs = await table.FindListByDict<LPConfig>(new Dictionary<string, object>() { { "PartitionKey", $"LPConfig-{sso.appId}" }, { Constant.RowKey,path } });
+            if (configs.Any())
+            {
+                LPConfig config = configs[0];
+                string data = AESHelper.Decryptor(sso.encryptData, config.secretKey, config.secretKey.Substring(0, 16));
+                LPSSOEncryptData encryptData = data.ToObject<LPSSOEncryptData>();
+                List<LPTeacher> teachers = await table.FindListByDict<LPTeacher>(new Dictionary<string, object>() { { "PartitionKey", $"LPTeacher-{encryptData.schoolId}" }, { Constant.RowKey, encryptData.userId } });
+                if (teachers.Any())
+                {
+                    LPTeacher teacher = teachers[0];
+                    if (!string.IsNullOrWhiteSpace(teacher.tmdid))
+                    {
+
+                    }
+                    else { 
+                    
+                    }
+                }
+                else {
+                    int status = 2;//手机号未注册
+                    string param =string.Empty;
+                    string enurl=string.Empty;
+                    if (!string.IsNullOrWhiteSpace(encryptData.mobile)) {
+                        //未绑定,尝试用手机号进行关联
+                        var coreUser = await _coreAPIHttpService.GetUserInfo(new Dictionary<string, string> { { "key", encryptData.mobile } }, _option.Location, _configuration);
+                      
+                        if (coreUser != null)
+                        {
+
+                        }
+                    }
+                    enurl = $"status={status}&param={HttpUtility.UrlEncode(new { msg = $"教师编号为:{encryptData.userId}未绑定" , }.ToJsonString(), Encoding.UTF8)}";
+                    return Redirect(rurl.Append($"?{enurl}").ToString());
+                }
+            }
+            else {
+                //未配置 {path}项目
+                string enurl = $"status=1&param={HttpUtility.UrlEncode(new { msg =$"未配置{path}项目" }.ToJsonString(), Encoding.UTF8)}";
+                return Redirect(rurl.Append($"?{enurl}").ToString());
+            }
+            return Ok();
+        }
+    }
+
+  
+    public class LPSSO { 
+        public string appId { get; set; }
+        public string schoolId { get; set; }
+        public string encryptData { get; set; }
+    }
+    public class LPSSOEncryptData
+    {
+        public string appId { get; set; }
+        public string schoolId { get; set; }
+        public string userId { get; set; }
+        public string mobile { get; set; }
+    }
+    [TableName(Name = "ScYxpt")]
+    public class LPTeacher :TableEntity
+    {
+        /// <summary>
+        /// PartitionKey = "LPTeacher-{schoolId}"
+        /// RowKey = $"{userId}"
+        /// </summary>
+        public string userId { get; set; }
+        /// <summary>
+        /// 乐陪对应的学校id
+        /// </summary>
+        public string schoolId { get; set; }
+        /// <summary>
+        /// 醍摩豆对应的学校编码
+        /// </summary>
+        public string schoolCode { get; set; }
+        public string mobile { get; set; }
+        public string tmdid { get; set; }
+        /// <summary>
+        /// {path}/lepei-sso 中的path
+        /// </summary>
+        public string path { get; set; }
+    }
+    [TableName(Name = "ScYxpt")]
+    public class LPSchool : TableEntity
+    {
+        public LPSchool()
+        {
+            PartitionKey = "LPSchool";
+        }
+        /// <summary>
+        /// PartitionKey = "LPSchool"
+        /// RowKey = $"{schoolId学校id}"
+        /// </summary>
+        public string schoolId { get; set; }
+        public string schoolName { get; set; }
+        /// <summary>
+        /// 醍摩豆对应的学校编码
+        /// </summary>
+        public string schoolCode { get; set; }
+
+        /// <summary>
+        /// {path}/lepei-sso 中的path
+        /// </summary>
+        public string path { get; set; }
+    }
+    [TableName(Name = "ScYxpt")]
+    public class LPConfig : TableEntity
+    {
+        public LPConfig (){
+            PartitionKey = "LPConfig-{appId}";
+        }
+        /// <summary>
+        /// pk="LPConfig"
+        /// rk=$"{path}"
+        /// </summary>
+        public string path { get; set; }
+        public  string appId { get; set;}
+        public string secretKey { get; set; }
+    }
+}

+ 0 - 1
TEAMModelOS/Controllers/Third/Sc/ScController.cs

@@ -533,7 +533,6 @@ namespace TEAMModelOS.Controllers
         public async Task<IActionResult> Sso([FromQuery] ScSSO scsso, string path)
         {
             string HostName = HttpContext.GetHostName();
-
             if (!string.IsNullOrWhiteSpace(_option.HostName))
             {
                 HostName = _option.HostName;

+ 11 - 7
TEAMModelOS/Controllers/XTest/TestController.cs

@@ -500,13 +500,17 @@ namespace TEAMModelOS.Controllers
         [ProducesDefaultResponseType]
         [HttpPost("check-ems")]
         public async Task<IActionResult> CheckPjx(JsonElement json)
-        {
-
-            await BIStats.SetTypeAddStats(_azureCosmos.GetCosmosClient(), _dingDing, "cdjsxc", "Exam", 1, careDate: 1678958789738);//BI统计增/减量
-            List<GroupListGrp> groups = await GroupListService.GetMemberInGroupList(_coreAPIHttpService, _azureCosmos.GetCosmosClient(), _dingDing, "202201004", 2, "hbcn", new List<string> { "class", "teach" });
-            QueryDefinition queryDefinition = new QueryDefinition($"SELECT  value(c) FROM c ");
-            var data = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Student).GetList<Student>(queryDefinition, "Base-hbcn");
-            return Ok(new { data.continuationToken, data.list, data.ru });
+        { 
+            var s = AESHelper.Decryptor("O1b2qJxHbOTXModS23iTxTJm4TV+WPVjdHH2brUVxTukikfXlQFGrfPKj4JG4YlKbGg8gqyEcYfGesNDUvkojf4acagZuxx5pXBiPv88ZsERazCTi759v6O6ml/IJlRA0Y5OD0Ri6+n2f0xdvDh9bT9sre5wA/drOBHraqe1IIy9oFzN/WhSaRSx6dQDKWUxNx5nyVWr1muA09C6Xel2zqng4Bf1NpCWxtCmNTgzzlVUsG8o5IP3AJ3gVGjTEOl18UOv/zKkfcq87QWeJ4ahvV3F6Ih7bVw7EEFprQ5J3cY=", "JU57Vi4xUNNPqGsz44HNq9gSJX9JQYf7", "JU57Vi4xUNNPqGsz");
+
+            string ss = "[{\"cert_num\":\"513001190008160311\",\"class_id\":\"1542777741770342400\",\"grade_id\":\"1542776818738249728\",\"is_fill\":\"0\",\"student_name\":\"张山\",\"student_number\":\"1555777983257395256\",\"student_status\":\"在读\"}]";
+            string em = AESHelper.Encryptor(s, "JU57Vi4xUNNPqGsz44HNq9gSJX9JQYf7", "JU57Vi4xUNNPqGsz");
+            string dm = AESHelper.Decryptor(em, "JU57Vi4xUNNPqGsz44HNq9gSJX9JQYf7", "JU57Vi4xUNNPqGsz");
+            //await BIStats.SetTypeAddStats(_azureCosmos.GetCosmosClient(), _dingDing, "cdjsxc", "Exam", 1, careDate: 1678958789738);//BI统计增/减量
+            //List<GroupListGrp> groups = await GroupListService.GetMemberInGroupList(_coreAPIHttpService, _azureCosmos.GetCosmosClient(), _dingDing, "202201004", 2, "hbcn", new List<string> { "class", "teach" });
+            //QueryDefinition queryDefinition = new QueryDefinition($"SELECT  value(c) FROM c ");
+            //var data = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Student).GetList<Student>(queryDefinition, "Base-hbcn");
+            return Ok(/*new { data.continuationToken, data.list, data.ru }*/);
         }
 
 

+ 1 - 1
TEAMModelOS/Program.cs

@@ -11,7 +11,7 @@ namespace TEAMModelOS
         public static void Main(string[] args)
         {
 
-           
+          
             CreateHostBuilder(args).Build().Run();
         }
 

+ 4 - 4
TEAMModelOS/TEAMModelOS.csproj

@@ -69,11 +69,11 @@
     <SpaRoot>ClientApp\</SpaRoot>
     <DefaultItemExcludes>$(DefaultItemExcludes);$(SpaRoot)node_modules\**</DefaultItemExcludes>
     <UserSecretsId>078b5d89-7d90-4f6a-88fc-7d96025990a8</UserSecretsId>
-    <Version>5.2304.6</Version>
-    <AssemblyVersion>5.2304.6.1</AssemblyVersion>
-    <FileVersion>5.2304.6.1</FileVersion>
+    <Version>5.2304.12</Version>
+    <AssemblyVersion>5.2304.12.1</AssemblyVersion>
+    <FileVersion>5.2304.12.1</FileVersion>
     <Description>TEAMModelOS(IES5)</Description>
-    <PackageReleaseNotes>IES版本说明版本切换标记5.2304.6.1</PackageReleaseNotes>
+    <PackageReleaseNotes>IES版本说明版本切换标记5.2304.12.1</PackageReleaseNotes>
     <PackageId>TEAMModelOS</PackageId>
     <Authors>teammodel</Authors>
     <Company>醍摩豆(成都)信息技术有限公司</Company>

+ 1 - 1
TEAMModelOS/appsettings.Development.json

@@ -18,7 +18,7 @@
     "IdTokenSalt": "8263692E2213497BB55E74792B7900B4",
     "HttpTrigger": "https://teammodelosfunction-test.chinacloudsites.cn/api/",
     //"HttpTrigger": "http://localhost:7071/api/"
-    "Version": "5.2304.6.1"
+    "Version": "5.2304.12.1"
   },
   "Azure": {
     "Storage": {

+ 1 - 1
TEAMModelOS/appsettings.json

@@ -18,7 +18,7 @@
     "Exp": 86400,
     "IdTokenSalt": "8263692E2213497BB55E74792B7900B4",
     "HttpTrigger": "https://teammodelosfunction.chinacloudsites.cn/api/",
-    "Version": "5.2304.6.1"
+    "Version": "5.2304.12.1"
   },
   "Azure": {
     "Storage": {