102 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
| using IRaCIS.Application.Contracts;
 | |
| using IRaCIS.Core.Infrastructure.Encryption;
 | |
| using Microsoft.AspNetCore.Authorization;
 | |
| using Microsoft.AspNetCore.Builder;
 | |
| using Microsoft.AspNetCore.Mvc;
 | |
| using Microsoft.Extensions.Options;
 | |
| using Newtonsoft.Json;
 | |
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Linq;
 | |
| using System.Security.Cryptography;
 | |
| using System.Text;
 | |
| using System.Threading.Tasks;
 | |
| 
 | |
| namespace IRaCIS.Core.Application.Service;
 | |
| 
 | |
| public class HIRActivateService : ServiceBase
 | |
| {
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 获取授权码明文信息
 | |
|     /// </summary>
 | |
|     /// <param name="authorizationCode"></param>
 | |
|     /// <param name="_hospitalOption"></param>
 | |
|     /// <returns></returns>
 | |
|     [AllowAnonymous]
 | |
|     public async Task<IResponseOutput> GetAuthorizationCodeInfo(string authorizationCode, [FromServices] IOptionsMonitor<SystemHospitalOption> _hospitalOption)
 | |
|     {
 | |
|         // 解密 Base64 编码后的数据
 | |
|         byte[] base64DecodedBytes = Convert.FromBase64String(authorizationCode);
 | |
|         string decodedText = System.Text.Encoding.UTF8.GetString(base64DecodedBytes);
 | |
| 
 | |
| 
 | |
|         var authInfo = JsonConvert.DeserializeObject<TrialAuthorizationInfo>(decodedText);
 | |
| 
 | |
|         if (authInfo == null)
 | |
|         {
 | |
|             return ResponseOutput.NotOk("不能解析该项目授权码");
 | |
|         }
 | |
| 
 | |
|         return ResponseOutput.Ok(decodedText);
 | |
|     }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 获取项目激活码
 | |
|     /// </summary>
 | |
|     /// <param name="_basicSystemConfigConfig"></param>
 | |
|     /// <returns></returns>
 | |
|     [AllowAnonymous]
 | |
|     [RoutePattern(HttpMethod = "get")]
 | |
|     public async Task<IResponseOutput> GetTrialActivationCode(TrialAuthorizationInfo authorizationInfo, [FromServices] IOptionsMonitor<ServiceVerifyConfigOption> _basicSystemConfigConfig)
 | |
|     {
 | |
| 
 | |
| 
 | |
|         if (authorizationInfo != null)
 | |
|         {
 | |
|             //一周内激活
 | |
|             authorizationInfo.ActiveDeadLineDate = DateTime.Now.Date.AddDays(8).AddSeconds(-1);
 | |
| 
 | |
|             var info = AesEncryption.Encrypt($"{JsonConvert.SerializeObject(authorizationInfo)}", "HIR_System_AES_Key_Info", "Trial_AuthorizationEncrypt");
 | |
| 
 | |
|             Console.WriteLine("HIR_System_AES_Key_Info".PadRight(32, '0').Substring(0, 32) + "    " + "Trial_AuthorizationEncrypt".PadRight(16, '0').Substring(0, 16));
 | |
| 
 | |
|             //var dd = AesEncryption.Decrypt(info, "HIR_System_AES_Key_Info", "Trial_AuthorizationEncrypt");
 | |
| 
 | |
|             return ResponseOutput.Ok(info);
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|             return ResponseOutput.NotOk("激活码解密文本信息有误");
 | |
|         }
 | |
| 
 | |
|        
 | |
| 
 | |
|     }
 | |
| }
 | |
| 
 | |
| public class TrialAuthorizationInfo
 | |
| {
 | |
|     public Guid TrialId { get; set; }
 | |
|     public Guid CreateUserId { get; set; }
 | |
|     public string TrialCode { get; set; }
 | |
| 
 | |
|     public string HospitalName { get; set; }
 | |
| 
 | |
|     public string HospitalCode { get; set; }
 | |
| 
 | |
|     public int PurchaseDuration { get; set; }
 | |
| 
 | |
| 
 | |
| 
 | |
|     public List<CriterionType> CriterionTypeList { get; set; }
 | |
| 
 | |
|     public DateTime? AuthorizationDeadLineDate { get; set; }
 | |
| 
 | |
|     public DateTime? ActiveDeadLineDate { get; set; }
 | |
| 
 | |
|     public DateTime? ActiveTime { get; set; }
 | |
| 
 | |
| }
 | |
| 
 |