You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

147 lines
5.1 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using Myshipping.Core;
using Furion.DependencyInjection;
using Furion.DynamicApiController;
using Mapster;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
using System.Linq;
using System.Threading.Tasks;
using Myshipping.Core.Entity;
using Microsoft.Extensions.Logging;
using System;
using Furion.DataEncryption;
namespace Myshipping.Core.Service
{
/// <summary>
/// 接口授权服务
/// </summary>
[ApiDescriptionSettings(Name = "DjyApiAuth", Order = 1)]
public class DjyApiAuthService : IDjyApiAuthService, IDynamicApiController, ITransient
{
private readonly SqlSugarRepository<DjyApiAuth> _rep;
private readonly ILogger<DjyApiAuth> _logger;
public DjyApiAuthService(SqlSugarRepository<DjyApiAuth> rep, ILogger<DjyApiAuth> logger)
{
_rep = rep;
_logger = logger;
}
/// <summary>
/// 分页查询接口授权
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpGet("/DjyApiAuth/page")]
public async Task<dynamic> Page([FromQuery] QueryDjyApiAuthInput input)
{
var entities = await _rep.AsQueryable().Filter(null, true)
.WhereIF(!string.IsNullOrWhiteSpace(input.ApiCode), u => u.ApiCode.Contains(input.ApiCode))
.WhereIF(!string.IsNullOrWhiteSpace(input.ApiName), u => u.ApiName.Contains(input.ApiName))
.WhereIF(!string.IsNullOrWhiteSpace(input.TenantName), u => u.TenantName == input.TenantName)
.WhereIF(!string.IsNullOrWhiteSpace(input.UserName), u => u.UserName == input.UserName)
.WhereIF(input.IsDisable.HasValue, u => u.IsDisable == input.IsDisable.Value)
.ToPagedListAsync(input.PageNo, input.PageSize);
return entities.XnPagedResult();
}
/// <summary>
/// 保存授权
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("/DjyApiAuth/save")]
public async Task<long> Save(SaveDjyApiAuthInput input)
{
DjyApiAuth entity = null;
if (input.Id == 0)
{
entity = input.Adapt<DjyApiAuth>();
entity.ApiKey = Guid.NewGuid().ToString().Replace("-", "").ToLower();
entity.ApiSecret = GenSecret();
await _rep.InsertAsync(entity);
}
else
{
entity = _rep.AsQueryable().Filter(null, true).First(x => x.Id == input.Id);
input.Adapt(entity);
await _rep.UpdateAsync(entity);
}
return entity.Id;
}
/// <summary>
/// 删除接口授权
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("/DjyApiAuth/delete")]
public async Task Delete(GetDjyApiAuthInput input)
{
var entity = await _rep.AsQueryable().Filter(null, true).FirstAsync(u => u.Id == input.Id);
await _rep.DeleteAsync(entity);
}
/// <summary>
/// 获取接口授权
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpGet("/DjyApiAuth/detail")]
public async Task<DjyApiAuth> Get([FromQuery] GetDjyApiAuthInput input)
{
return await _rep.AsQueryable().Filter(null, true).FirstAsync(u => u.Id == input.Id);
}
/// <summary>
/// 重置秘钥
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpPost("/DjyApiAuth/SecretReset")]
public async Task<string> SecretReset(long id)
{
var entity = _rep.AsQueryable().Filter(null, true).First(x => x.Id == id);
entity.ApiSecret = GenSecret();
await _rep.UpdateAsync(entity);
return entity.ApiSecret;
}
/// <summary>
/// 启用禁用
/// </summary>
/// <param name="id"></param>
/// <param name="disable">可用false禁用true</param>
/// <returns></returns>
[HttpPost("/DjyApiAuth/SetDisable")]
public async Task SetDisable(long id, bool disable)
{
var entity = _rep.AsQueryable().Filter(null, true).First(x => x.Id == id);
entity.IsDisable = disable;
await _rep.UpdateAsync(entity);
}
/// <summary>
/// 生成新秘钥
/// </summary>
/// <returns></returns>
[NonAction]
private string GenSecret()
{
return DESCEncryption.Encrypt(Guid.NewGuid().ToString(), "13245687").ToLower();
}
///// <summary>
///// 获取接口授权列表
///// </summary>
///// <param name="input"></param>
///// <returns></returns>
//[HttpGet("/DjyApiAuth/list")]
//public async Task<dynamic> List([FromQuery] QueryDjyApiAuthInput input)
//{
// return await _rep.ToListAsync();
//}
}
}