init project
This commit is contained in:
58
QRCodeService/Controllers/GenController.cs
Normal file
58
QRCodeService/Controllers/GenController.cs
Normal file
@@ -0,0 +1,58 @@
|
||||
using Domain.AggregateModel.LinkAggregate;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using QRCodeService.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Security.Cryptography;
|
||||
using Domain.AggregateModel.AppAggregate;
|
||||
using Base62;
|
||||
using QRCodeService.Extensions;
|
||||
|
||||
namespace QRCodeService.Controllers
|
||||
{
|
||||
/// <summary>
|
||||
/// 生成二维码图片
|
||||
/// </summary>
|
||||
[Route("api/[controller]")]
|
||||
[ApiController]
|
||||
public class GenController:ControllerBase
|
||||
{
|
||||
readonly ILinkRepository linkRepository;
|
||||
readonly IAppRepository appRepository;
|
||||
|
||||
public GenController(ILinkRepository linkRepository, IAppRepository appRepository)
|
||||
{
|
||||
this.linkRepository = linkRepository;
|
||||
this.appRepository = appRepository;
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public async Task<IActionResult> CreateLink(GenInputModel model)
|
||||
{
|
||||
|
||||
var app = await appRepository.GetAsync(model.AppId);
|
||||
if (app == null)
|
||||
{
|
||||
return BadRequest();
|
||||
}
|
||||
using(var md5 = MD5.Create())
|
||||
{
|
||||
var result = md5.ComputeHash(Encoding.UTF8.GetBytes($"{model.AppId}{model.SuffixUrl}{model.Time}{app.AppKey}"));
|
||||
var sign = BitConverter.ToString(result);
|
||||
if (sign != model.Sign)
|
||||
{
|
||||
return BadRequest();
|
||||
}
|
||||
}
|
||||
var shortCode = $"{model.SuffixUrl}".ToMD5().ToBase62();
|
||||
var link = new Link(app.BaseUrl, model.SuffixUrl,1);
|
||||
linkRepository.Add(link);
|
||||
await linkRepository.UnitOfWork.SaveEntitiesAsync();
|
||||
return Ok(link.ShortCode);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user