ActivationCodeController.cs 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. using HiTeachCE.Helpers;
  2. using HiTeachCE.Models;
  3. using HiTeachCE.Services;
  4. using IdentityModel;
  5. using Microsoft.AspNetCore.Authorization;
  6. using Microsoft.AspNetCore.Mvc;
  7. using OpenXmlPowerTools;
  8. using Org.BouncyCastle.Ocsp;
  9. using SqlSugar;
  10. using System;
  11. using System.Collections.Generic;
  12. using System.ComponentModel.DataAnnotations;
  13. using System.Linq;
  14. using System.Linq.Expressions;
  15. using System.Threading.Tasks;
  16. using TEAMModelOS.SDK.Context.Exception;
  17. using TEAMModelOS.SDK.Extension.DataResult.JsonRpcRequest;
  18. using TEAMModelOS.SDK.Extension.DataResult.JsonRpcResponse;
  19. using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
  20. namespace HiTeachCE.Controllers
  21. {
  22. [Route("api/[controller]")]
  23. [ApiController]
  24. public class ActivationCodeController : BaseController
  25. {
  26. public ActivationCodeService activationCodeService;
  27. public OrganizationService organizationService;
  28. public ActivationCodeController(ActivationCodeService activationCode, OrganizationService organization)
  29. {
  30. activationCodeService = activationCode;
  31. organizationService = organization;
  32. }
  33. /// <summary>
  34. /// 获取组织列表
  35. /// </summary>
  36. /// <param name="request"></param>
  37. /// <returns></returns>
  38. [HttpPost("list")]
  39. [Authorize(Policy = Constant.Role_Root)]
  40. public BaseJosnRPCResponse List(PaginationJosnRPCRequest<Dictionary<string, string>> request)
  41. {
  42. JsonRPCResponseBuilder builder = new JsonRPCResponseBuilder();
  43. //string role = GetLoginUser(JwtClaimTypes.Role);
  44. // string loginUnionid = GetLoginUser(JwtClaimTypes.Id);
  45. bool flag = false;
  46. return builder.build();
  47. }
  48. /// <summary>
  49. /// 添加
  50. /// </summary>
  51. /// <param name="request"></param>
  52. /// <returns></returns>
  53. [HttpPost("Get")]
  54. [Authorize(Policy = Constant.Role_Root)]
  55. public BaseJosnRPCResponse Get(JosnRPCRequest<string> request)
  56. {
  57. JsonRPCResponseBuilder builder = new JsonRPCResponseBuilder();
  58. Expression<Func<Organization, bool>> oinq = null;
  59. oinq = oinq => oinq.code == request.@params;
  60. List<Organization> organizations = organizationService.GetList(oinq);
  61. if (organizations.IsNotEmpty())
  62. {
  63. Expression<Func<ActivationCode, bool>> linq = null;
  64. linq = linq => linq.orgCode == request.@params;
  65. List<ActivationCode> activationCodes = activationCodeService.GetList(linq);
  66. if (activationCodes.IsNotEmpty())
  67. {
  68. return builder.Data(activationCodes[0]).build();
  69. }
  70. else {
  71. throw new BizException("组织机构未被授权!", 2);
  72. }
  73. }
  74. else {
  75. throw new BizException("组织机构不存在!",2);
  76. }
  77. }
  78. /// <summary>
  79. /// 添加
  80. /// </summary>
  81. /// <param name="request"></param>
  82. /// <returns></returns>
  83. [HttpPost("saveOrUpdate")]
  84. [Authorize(Policy = Constant.Role_Root)]
  85. public BaseJosnRPCResponse SaveOrUpdate(JosnRPCRequest<ActivationCodeDto> request)
  86. {
  87. JsonRPCResponseBuilder builder = new JsonRPCResponseBuilder();
  88. bool flag = false;
  89. Expression<Func<Organization, bool>> oinq = null;
  90. oinq = oinq => oinq.code == request.@params.orgCode;
  91. List<Organization> organizations = organizationService.GetList(oinq);
  92. if (organizations.IsNotEmpty())
  93. {
  94. //个人只能有一个成员
  95. Organization organization = organizations[0];
  96. if (organization.type == 2) {
  97. request.@params.maximum = 1;
  98. }
  99. Expression<Func<ActivationCode, bool>> linq = null;
  100. linq = linq => linq.orgCode == request.@params.orgCode;
  101. List<ActivationCode> activationCodes = activationCodeService.GetList(linq);
  102. if (activationCodes.IsNotEmpty())
  103. {
  104. ActivationCode activationCode = activationCodes[0];
  105. if (request.@params.expires > 0)
  106. {
  107. activationCode.expires = activationCode.expires + request.@params.expires * 60 * 60 * 24;
  108. }
  109. activationCode.maximum = request.@params.maximum;
  110. activationCode.status = request.@params.status;
  111. flag = activationCodeService.Update(activationCode);
  112. }
  113. else
  114. {
  115. string cdkey = "";
  116. Random rdid = new Random();
  117. for (int i = 0; i < 25; i++)//从数组随机抽取字符组成新的字符生成机器三
  118. {
  119. cdkey += Constant.az09[rdid.Next(0, Constant.az09.Length)];
  120. if (i != 24 && (i + 1) % 5 == 0)
  121. {
  122. cdkey += "-";
  123. }
  124. }
  125. long time = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
  126. long expires = time;
  127. if (request.@params.expires > 0)
  128. {
  129. expires = time + request.@params.expires * 60 * 60 * 24;
  130. }
  131. ActivationCode activationCode = new ActivationCode
  132. {
  133. id = Guid.NewGuid().ToString(),
  134. cdkey = cdkey.ToUpper(),
  135. createTime = time,
  136. clientId = Guid.NewGuid().ToString("N"),
  137. secret = Guid.NewGuid().ToString("N"),
  138. status = request.@params.status,
  139. orgCode = request.@params.orgCode,
  140. expires = expires,
  141. maximum = request.@params.maximum
  142. };
  143. flag = activationCodeService.Insert(activationCode);
  144. }
  145. }
  146. else {
  147. throw new BizException("组织机构不存在!", 2);
  148. }
  149. return builder.Data(flag).build();
  150. }
  151. }
  152. public class ActivationCodeDto {
  153. [Required(ErrorMessage = "组织必须设置")]
  154. public string orgCode { get; set; }
  155. [Required(ErrorMessage = "授权上限必须填写")]
  156. [Range(1, 1000, ErrorMessage = "请输入1~1000的整数")]
  157. public int maximum { get; set; }
  158. /// <summary>
  159. /// 时长-1 永久 ,大于0 按天计算
  160. /// </summary>
  161. [Required(ErrorMessage = "授权时限必须填写")]
  162. [Range(0, 3650, ErrorMessage = "请输入0~3650的整数")]
  163. public int expires { get; set; }
  164. public int status { get; set; }
  165. }
  166. }