新增试用 更具设置的试用时间

This commit is contained in:
lq1405 2025-02-07 15:58:00 +08:00
parent 9203788e1d
commit eb8a48c642
4 changed files with 60 additions and 19 deletions

View File

@ -7,5 +7,7 @@ namespace LMS.Repository.Software
public SoftwareControlEnum.SoftwareControlValidityEnum? ExpirationTime { get; set; }
public bool? IsForever { get; set; }
public bool? IsTry { get; set; }
}
}

View File

@ -40,5 +40,22 @@
return 0; // 默认返回0
}
/// <summary>
/// 将字符串转换为int默认或者是转换错误返回0
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static int ConvertStringToIntOrDefault(string input)
{
if (int.TryParse(input, out int result))
{
return result;
}
else
{
return 0;
}
}
}
}

View File

@ -1,16 +1,10 @@
using LMS.Repository.DB;
using LMS.Repository.DTO;
using LMS.Repository.DTO;
using LMS.Repository.DTO.Software;
using LMS.Repository.Models.User;
using LMS.Repository.Software;
using LMS.Repository.User;
using LMS.service.Service.SoftwareService;
using LMS.service.Service.UserService;
using LMS.Tools.Extensions;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.IdentityModel.Tokens;
using System.ComponentModel.DataAnnotations;
using System.IdentityModel.Tokens.Jwt;
using static LMS.Common.Enums.ResponseCodeEnum;
@ -55,10 +49,6 @@ namespace LMS.service.Controllers
{
return APIResponseModel<string>.CreateErrorResponseModel(ResponseCode.ParameterError);
}
if (model.IsForever == null && model.ExpirationTime == null)
{
return APIResponseModel<string>.CreateErrorResponseModel(ResponseCode.ParameterError);
}
long requestUserId = ConvertExtension.ObjectToLong(HttpContext.Items["UserId"] ?? 0);
return await _softwareControlService.ModifySoftwareControlValidity(id, model, requestUserId);
}

View File

@ -117,18 +117,18 @@ namespace LMS.service.Service.SoftwareService
{
try
{
if (model.IsForever == null && model.ExpirationTime == null && model.IsTry == null)
{
return APIResponseModel<string>.CreateErrorResponseModel(ResponseCode.ParameterError);
}
model.IsTry ??= false;
// 检查用户是不是管理员
if (!await _userBasicDao.CheckUserIsAdminOrSuperAdmin(requestUserId))
{
return APIResponseModel<string>.CreateErrorResponseModel(ResponseCode.NotPermissionAction);
}
if (model.ExpirationTime != null)
{
// 判断model传入的枚举值是不是再对应的enum中是有效的
if (!Enum.IsDefined(typeof(SoftwareControlEnum.SoftwareControlValidityEnum), model.ExpirationTime))
{
return APIResponseModel<string>.CreateErrorResponseModel(ResponseCode.ParameterError, "传入的到期时间不在有效范围内");
}
}
// 判断指定ID的软件控制项是否存在
SoftwareControl? softwareControl = await _dbContext.SoftwareControl.FirstOrDefaultAsync(x => x.Id == id);
@ -137,6 +137,38 @@ namespace LMS.service.Service.SoftwareService
return APIResponseModel<string>.CreateErrorResponseModel(ResponseCode.IdDateNotFound);
}
// 试用
if (model.IsTry == true)
{
// 设置更新时间和更新人
softwareControl.UpdatedTime = BeijingTimeExtension.GetBeijingTime();
softwareControl.UpdatedUserId = requestUserId;
double trialDays = 1;
Options? options = await _dbContext.Options.FirstOrDefaultAsync(x => x.Key == "LaiToolTrialDays");
if (options != null)
{
double s = options.GetValueObject<double>();
trialDays = s;
}
softwareControl.ExpirationTime = BeijingTimeExtension.GetBeijingTime().AddDays(trialDays);
softwareControl.IsForever = false;
// 更新数据库
_dbContext.SoftwareControl.Update(softwareControl);
await _dbContext.SaveChangesAsync();
return APIResponseModel<string>.CreateSuccessResponseModel("修改成功");
}
if (model.ExpirationTime != null)
{
// 判断model传入的枚举值是不是再对应的enum中是有效的
if (!Enum.IsDefined(typeof(SoftwareControlEnum.SoftwareControlValidityEnum), model.ExpirationTime))
{
return APIResponseModel<string>.CreateErrorResponseModel(ResponseCode.ParameterError, "传入的到期时间不在有效范围内");
}
}
// 判断当前数据是不是永久,如果是永久,就不能修改
if (softwareControl.IsForever && model.IsForever == true)
{