From 662bd2e245356b5584a7cd17a6cbcb8484e9aac5 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Wed, 5 Jun 2024 17:51:03 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E5=91=98=E5=B7=A5=E6=B6=88=E8=B4=B9?= =?UTF-8?q?=E4=BA=8C=E7=BB=B4=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/GainfoQrCodeController.cs | 32 +++++++++ .../Services/IGainfoQrCodeService.cs | 6 ++ .../Implements/GainfoQrCodeService.cs | 66 +++++++++++++++++++ .../Basic/Entity/GainfoQrCodeEntity.cs | 23 +++++++ 4 files changed, 127 insertions(+) create mode 100644 Src/Dlhis.Basic/Organization/Controllers/GainfoQrCodeController.cs create mode 100644 Src/Dlhis.Basic/Organization/Services/IGainfoQrCodeService.cs create mode 100644 Src/Dlhis.Basic/Organization/Services/Implements/GainfoQrCodeService.cs create mode 100644 Src/Dlhis.Entity/Basic/Entity/GainfoQrCodeEntity.cs diff --git a/Src/Dlhis.Basic/Organization/Controllers/GainfoQrCodeController.cs b/Src/Dlhis.Basic/Organization/Controllers/GainfoQrCodeController.cs new file mode 100644 index 00000000..c043c07b --- /dev/null +++ b/Src/Dlhis.Basic/Organization/Controllers/GainfoQrCodeController.cs @@ -0,0 +1,32 @@ +using Dlhis.Basic.Organization.Services; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; + +namespace Dlhis.Basic.Organization.Controllers; + +/// +/// 档案二维码 +/// +[Authorize] +[Route("api/[controller]")] +[ApiController] +public class GainfoQrCodeController : ControllerBase +{ + private readonly IGainfoQrCodeService _gainfoQrCodeService; + + public GainfoQrCodeController(IGainfoQrCodeService gainfoQrCodeService) + { + _gainfoQrCodeService = gainfoQrCodeService; + } + + /// + /// 获取我的消费二维码 + /// + /// 是否主动刷新 + /// + [HttpGet("consumer")] + public async Task GetMyQrCode(bool isNeedRefresh = false) + { + return await _gainfoQrCodeService.GetMyQrCodeAsync(isNeedRefresh); + } +} \ No newline at end of file diff --git a/Src/Dlhis.Basic/Organization/Services/IGainfoQrCodeService.cs b/Src/Dlhis.Basic/Organization/Services/IGainfoQrCodeService.cs new file mode 100644 index 00000000..128f5b7f --- /dev/null +++ b/Src/Dlhis.Basic/Organization/Services/IGainfoQrCodeService.cs @@ -0,0 +1,6 @@ +namespace Dlhis.Basic.Organization.Services; + +public interface IGainfoQrCodeService : IScopeDependency +{ + Task GetMyQrCodeAsync(bool isNeedRefresh = false); +} \ No newline at end of file diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoQrCodeService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoQrCodeService.cs new file mode 100644 index 00000000..2a17ab9a --- /dev/null +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoQrCodeService.cs @@ -0,0 +1,66 @@ +using System.Text; +using Dlhis.Entity.Basic.Entity; +using Kurisu.AspNetCore.Authentication.Abstractions; +using Kurisu.AspNetCore.DataAccess.SqlSugar.Services; +using Kurisu.AspNetCore.Utils.Extensions; + +namespace Dlhis.Basic.Organization.Services.Implements; + +public class GainfoQrCodeService : IGainfoQrCodeService +{ + private readonly IDbContext _dbContext; + private readonly ICurrentUser _currentUser; + + public GainfoQrCodeService(IDbContext dbContext, ICurrentUser currentUser) + { + _dbContext = dbContext; + _currentUser = currentUser; + } + + + public async Task GetMyQrCodeAsync(bool isNeedRefresh = false) + { + var jinkoCode = _currentUser.GetUserClaim("jinko-code"); + jinkoCode = "09992534"; + jinkoCode.IsEmpty().ThrowIfTrue("无法获取二维码"); + + var now = DateTime.Now; + var gainfoQrCode = await _dbContext.Queryable().SingleAsync(x => x.UserCode == jinkoCode); + + if (gainfoQrCode == null) + { + gainfoQrCode = new GainfoQrCodeEntity + { + UserCode = jinkoCode, + QrCode = GenerateQrCode(jinkoCode) + }; + + await _dbContext.InsertAsync(gainfoQrCode); + } + + if (gainfoQrCode.ModifiedTime.AddMinutes(1) >= now && !isNeedRefresh) + { + return gainfoQrCode.QrCode; + } + + gainfoQrCode.QrCode = GenerateQrCode(jinkoCode); + await _dbContext.UpdateAsync(gainfoQrCode); + + return gainfoQrCode.QrCode; + } + + //****************************************************************** help methods ********************************************************************************** + + private static string GenerateQrCode(string code) + { + //var gainfo = await _dbContext.Queryable().Where(x => x.Code == code).SingleAsync(); + var qrCode = string.Concat("consumer", ":", code, ":", Guid.NewGuid()).Replace("-", ""); + + return qrCode.ToArray().Select(x => + { + var b = Encoding.ASCII.GetBytes(x.ToString()); + int i = b[0]; + return Convert.ToString(i); + }).Join(string.Empty); + } +} \ No newline at end of file diff --git a/Src/Dlhis.Entity/Basic/Entity/GainfoQrCodeEntity.cs b/Src/Dlhis.Entity/Basic/Entity/GainfoQrCodeEntity.cs new file mode 100644 index 00000000..d1f1a73b --- /dev/null +++ b/Src/Dlhis.Entity/Basic/Entity/GainfoQrCodeEntity.cs @@ -0,0 +1,23 @@ +using Kurisu.AspNetCore.DataAccess.SqlSugar; +using SqlSugar; + +namespace Dlhis.Entity.Basic.Entity; + +/// +/// 档案二维码 +/// +[SugarTable(TableName = "GainfoQrCode", TableDescription = "档案二维码")] +public class GainfoQrCodeEntity : SugarBaseEntity +{ + /// + /// 工号 + /// + [SugarColumn(IsNullable = false, ColumnDescription = "工号", UniqueGroupNameList = new[] { "unique_GainfoQrCode_UserCode" })] + public string UserCode { get; set; } + + /// + /// 二维码 + /// + [SugarColumn(IsNullable = false, ColumnDescription = "二维码", UniqueGroupNameList = new[] { "unique_GainfoQrCode_QrCode" })] + public string QrCode { get; set; } +} \ No newline at end of file