174 lines
6.7 KiB
C#
174 lines
6.7 KiB
C#
using Apimanager_backend.Dtos;
|
|
using Apimanager_backend.Exceptions;
|
|
using Apimanager_backend.Models;
|
|
using Apimanager_backend.Services;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace Apimanager_backend.Controllers
|
|
{
|
|
[Route("api/[controller]/[action]")]
|
|
[ApiController]
|
|
public class PackageController : ControllerBase
|
|
{
|
|
private readonly IPackageService packageService;
|
|
private readonly ILogger<PackageController> logger;
|
|
public PackageController(IPackageService packageService,ILogger<PackageController> logger)
|
|
{
|
|
this.packageService = packageService;
|
|
this.logger = logger;
|
|
}
|
|
#region 新增套餐
|
|
[HttpPost]
|
|
[Authorize(Roles = "Admin")]
|
|
public async Task<ActionResult<ResponseBase<PackageInfoDto>>> AddPackage(AddPackageDto addPackageDto)
|
|
{
|
|
var packageInfo = await packageService.AddPackageAsync(addPackageDto);
|
|
var res = new ResponseBase<PackageInfoDto>(packageInfo);
|
|
return Ok(res);
|
|
}
|
|
#endregion
|
|
#region 删除套餐
|
|
[HttpDelete]
|
|
[Authorize(Roles = "Admin")]
|
|
public async Task<ActionResult<ResponseBase<object?>>> DeletePackage(int packageId)
|
|
{
|
|
try
|
|
{
|
|
await packageService.DeletePackageAsync(packageId);
|
|
var res = new ResponseBase<object?>(null);
|
|
return Ok(res);
|
|
}catch(BaseException e)
|
|
{
|
|
var res = new ResponseBase<object?>(
|
|
code:e.code,
|
|
message:e.message,
|
|
data:null
|
|
);
|
|
return NotFound(res);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 修改套餐信息
|
|
[HttpPost]
|
|
[Authorize(Roles = "Admin")]
|
|
public async Task<ActionResult<ResponseBase<PackageInfoDto?>>> UpdatePackage(int packageId, UpdatePackageDto updatePackageDto)
|
|
{
|
|
try
|
|
{
|
|
var packageInfo = await packageService.UpdatePackageAsync(packageId, updatePackageDto);
|
|
var res = new ResponseBase<PackageInfoDto?>(packageInfo);
|
|
return Ok(res);
|
|
}
|
|
catch (BaseException e)
|
|
{
|
|
var res = new ResponseBase<PackageInfoDto?>(
|
|
code:e.code,
|
|
message:e.message,
|
|
data:null
|
|
);
|
|
return NotFound(res);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 获取套餐信息
|
|
[HttpGet]
|
|
[Authorize(Roles = "User")]
|
|
public async Task<ActionResult<ResponseBase<PackageInfoDto?>>> GetPackageInfo(int packageId)
|
|
{
|
|
try
|
|
{
|
|
var packageInfo = await packageService.PackageInfoByIdAsync(packageId);
|
|
var res = new ResponseBase<PackageInfoDto?>(packageInfo);
|
|
return Ok(res);
|
|
}catch(BaseException e)
|
|
{
|
|
var res = new ResponseBase<PackageInfoDto?>(
|
|
code:e.code,
|
|
message:e.message,
|
|
data:null
|
|
);
|
|
return NotFound(res);
|
|
}
|
|
}
|
|
#endregion
|
|
#region 获取套餐列表
|
|
[HttpGet]
|
|
[Authorize(Roles = "User")]
|
|
public async Task<ActionResult<ResponseBase<List<PackageInfoDto>>>> GetPackageList(int pageIndex,int pageSize,bool desc)
|
|
{
|
|
var packageList = await packageService.GetAllPackagesAsync(pageIndex,pageSize,desc);
|
|
var res = new ResponseBase<List<PackageInfoDto>>(packageList);
|
|
return Ok(res);
|
|
}
|
|
#endregion
|
|
#region 获取用户已订阅套餐
|
|
[HttpGet]
|
|
[Authorize(Roles = "User")]
|
|
public async Task<ActionResult<ResponseBase<List<UserPackage>>>> GetUserPackageList(int pageIndex,int pageSize,bool desc)
|
|
{
|
|
var selfUserId = User.Claims.First(x => x.ValueType == "userId").Value;
|
|
var list = await packageService.GetUserPackagesAsync(int.Parse(selfUserId));
|
|
var res = new ResponseBase<List<UserPackage>>(list);
|
|
return Ok(res);
|
|
}
|
|
#endregion
|
|
#region 管理员获取用户已订阅套餐
|
|
[HttpGet]
|
|
[Authorize(Roles = "Admin")]
|
|
public async Task<ActionResult<ResponseBase<List<UserPackage>>>> GetUserPackageListAdmin(int userId,int pageIndex, int pageSize, bool desc)
|
|
{
|
|
var list = await packageService.GetUserPackagesAsync(userId);
|
|
var res = new ResponseBase<List<UserPackage>>(list);
|
|
return Ok(res);
|
|
}
|
|
#endregion
|
|
#region 添加套餐有效期
|
|
[HttpPost]
|
|
[Authorize(Roles = "User")]
|
|
public async Task<ActionResult<ResponseBase<UserPackage>>> UserPackageUpdate(int packageId,int day)
|
|
{
|
|
TimeSpan timeSpan = TimeSpan.FromDays(day);
|
|
var selfUserId = User.Claims.First(x => x.ValueType == "userId").Value;
|
|
var userPackage = await packageService.AddUserPackageTimeAsync(packageId,int.Parse(selfUserId),timeSpan,false);
|
|
var res = new ResponseBase<UserPackage>(userPackage);
|
|
return Ok(res);
|
|
}
|
|
#endregion
|
|
#region 管理员添加套餐有效期
|
|
[HttpPost]
|
|
[Authorize(Roles = "Admin")]
|
|
public async Task<ActionResult<ResponseBase<UserPackage>>> UserPackageUpdateAdmin(int packageId,int userId, int day)
|
|
{
|
|
TimeSpan timeSpan = TimeSpan.FromDays(day);
|
|
var userPackage = await packageService.AddUserPackageTimeAsync(packageId, userId, timeSpan, true);
|
|
var res = new ResponseBase<UserPackage>(userPackage);
|
|
return Ok(res);
|
|
}
|
|
#endregion
|
|
#region 扣减套餐有效期
|
|
[HttpPost]
|
|
[Authorize(Roles = "Admin")]
|
|
public async Task<ActionResult<ResponseBase<UserPackage?>>> DecuteUserPackage(int packageId,int userId,int day)
|
|
{
|
|
try
|
|
{
|
|
TimeSpan timeSpan = TimeSpan.FromDays(day);
|
|
var userPackage = await packageService.DecuteUserPackageTimeAsync(packageId, userId, timeSpan);
|
|
var res = new ResponseBase<UserPackage>(userPackage);
|
|
return Ok(res);
|
|
}catch(BaseException e)
|
|
{
|
|
var res = new ResponseBase<UserPackage?>(
|
|
code:e.code,
|
|
message:e.message,
|
|
data:null
|
|
);
|
|
return NotFound(res);
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
}
|