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.

129 lines
4.1 KiB
C#

using Furion;
using Furion.DependencyInjection;
using Furion.DynamicApiController;
using Furion.FriendlyException;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Myshipping.Core.Service;
using Myshipping.Core;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Myshipping.Application.Entity;
using Myshipping.Application.Service.Fee.Dto;
using Mapster;
using Furion.DistributedIDGenerator;
namespace Myshipping.Application.Service.TaskManagePlat
{
/// <summary>
/// 任务API配置
/// </summary>
[ApiDescriptionSettings("Application", Name = "TaskAPI", Order = 10)]
public class TaskAPIService : IDynamicApiController, ITransient
{
private readonly SqlSugarRepository<TaskAPIInfo> _rep;
public TaskAPIService(SqlSugarRepository<TaskAPIInfo> rep)
{
_rep = rep;
}
/// <summary>
/// 分页查询任务API配置
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
[ApiDescriptionSettings(Name = "Page")]
public async Task<SqlSugarPagedList<TaskAPIInfo>> Page(TaskAPIInput input)
{
var query = _rep.AsQueryable()
.Select(u => new TaskAPIInfo
{
PK_ID = u.PK_ID,
APIName = u.APIName,
URL = u.URL,
RequestMethod = u.RequestMethod,
Key = u.Key,
SecretKey = u.SecretKey,
SYSTEM_CODE = u.SYSTEM_CODE,
SYSTEM_NAME = u.SYSTEM_NAME
});
return await query.ToPagedListAsync(input.PageNo, input.PageSize);
}
/// <summary>
/// 增加任务API配置
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
[ApiDescriptionSettings(Name = "Add")]
public async Task Add(AddTaskAPIInput input)
{
var entity = input.Adapt<TaskAPIInfo>();
entity.PK_ID = IDGen.NextID().ToString();
await _rep.InsertAsync(entity);
}
/// <summary>
/// 删除任务API配置
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
[ApiDescriptionSettings(Name = "Delete")]
public async Task Delete(DeleteTaskAPIInput input)
{
var entity = await _rep.FirstOrDefaultAsync(u => u.PK_ID == input.PK_ID) ?? throw Oops.Oh("数据不存在");
entity.IsDeleted = true;
await _rep.UpdateAsync(entity);
}
/// <summary>
/// 更新任务API配置
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
[ApiDescriptionSettings(Name = "Update")]
public async Task Update(UpdateTaskAPIInput input)
{
var entity = input.Adapt<TaskAPIInfo>();
await _rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
}
/// <summary>
/// 获取任务API配置详情
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
[ApiDescriptionSettings(Name = "Detail")]
public async Task<TaskAPIInfo> Get(GetTaskApiInfoInput input)
{
return await _rep.FirstOrDefaultAsync(u => u.PK_ID == input.PK_ID);
}
/// <summary>
/// 获取任务API配置列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpGet]
[ApiDescriptionSettings(Name = "List")]
public async Task<List<TaskAPIInfo>> List([FromQuery] TaskAPIInput input)
{
return await _rep.AsQueryable().Select<TaskAPIInfo>().ToListAsync();
}
}
}