diff --git a/Infrastructure/Attribute/LogAttribute.cs b/Infrastructure/Attribute/LogAttribute.cs
index 20df620..0e764c5 100644
--- a/Infrastructure/Attribute/LogAttribute.cs
+++ b/Infrastructure/Attribute/LogAttribute.cs
@@ -18,6 +18,10 @@ namespace Infrastructure.Attribute
///
public bool IsSaveResponseData { get; set; } = true;
+ ///
+ /// 内容
+ ///
+ public string MessageKey { get; set; }
public LogAttribute() { }
public LogAttribute(string name)
diff --git a/Infrastructure/Helper/LogMessageRegistry.cs b/Infrastructure/Helper/LogMessageRegistry.cs
new file mode 100644
index 0000000..8b0b544
--- /dev/null
+++ b/Infrastructure/Helper/LogMessageRegistry.cs
@@ -0,0 +1,47 @@
+using Microsoft.AspNetCore.Mvc.Filters;
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Microsoft.AspNetCore.Mvc;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ZR.Infrastructure.Helper;
+
+public static class LogMessageRegistry
+{
+ public static readonly Dictionary> Templates
+ = new Dictionary>
+ {
+ ["giftclaim:status"] = ctx =>
+ {
+ if (ctx.HttpContext.Request.Query.TryGetValue("id", out var idStr) &&
+ ctx.HttpContext.Request.Query.TryGetValue("status", out var statusStr))
+ {
+ var id = int.Parse(idStr);
+ int status = int.Parse(statusStr);
+ if (id > 0)
+ {
+ return $"礼品审核状态修改,礼品兑换ID:{id},修改时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")},修改状态为:{(status == 1 ? "通过" : "未通过")}";
+ }
+ }
+ return "";
+ }
+ };
+
+ ///
+ /// 获取日志消息模板
+ ///
+ ///
+ ///
+ ///
+ public static string GetMessage(string key, ResultExecutedContext client)
+ {
+ if (!Templates.TryGetValue(key, out var func))
+ {
+ return "";
+ }
+ return func(client);
+ }
+}
diff --git a/Infrastructure/WebExtensions/LogoExtension.cs b/Infrastructure/WebExtensions/LogoExtension.cs
index 20fd26d..22dc791 100644
--- a/Infrastructure/WebExtensions/LogoExtension.cs
+++ b/Infrastructure/WebExtensions/LogoExtension.cs
@@ -16,11 +16,11 @@ namespace Infrastructure
Console.WriteLine(content);
Console.ForegroundColor = ConsoleColor.Blue;
//Console.WriteLine("🎉源码地址: https://gitee.com/izory/ZrAdminNetCore");
- Console.WriteLine("📖官方文档:http://www.izhaorui.cn");
- Console.WriteLine("💰打赏作者:http://www.izhaorui.cn/vip");
- Console.WriteLine("📱移动端体验:http://demo.izhaorui.cn/h5");
- Console.WriteLine($"Swagger地址:{url}/swagger/index.html");
- Console.WriteLine($"初始化种子数据地址:{url}/common/InitSeedData");
+ //Console.WriteLine("📖官方文档:http://www.izhaorui.cn");
+ //Console.WriteLine("💰打赏作者:http://www.izhaorui.cn/vip");
+ //Console.WriteLine("📱移动端体验:http://demo.izhaorui.cn/h5");
+ //Console.WriteLine($"Swagger地址:{url}/swagger/index.html");
+ //Console.WriteLine($"初始化种子数据地址:{url}/common/InitSeedData");
}
}
}
diff --git a/ZR.Admin.WebApi/Controllers/Business/GiftClaimController.cs b/ZR.Admin.WebApi/Controllers/Business/GiftClaimController.cs
new file mode 100644
index 0000000..89d72ea
--- /dev/null
+++ b/ZR.Admin.WebApi/Controllers/Business/GiftClaimController.cs
@@ -0,0 +1,154 @@
+using Microsoft.AspNetCore.Mvc;
+using ZR.Model.Business.Dto;
+using ZR.Model.Business;
+using ZR.Service.Business.IBusinessService;
+using System.Threading.Tasks;
+
+//创建时间:2025-07-30
+namespace ZR.Admin.WebApi.Controllers.Business
+{
+ ///
+ /// 礼品申领表
+ ///
+ [Route("business/GiftClaim")]
+ public class GiftClaimController : BaseController
+ {
+ ///
+ /// 礼品申领表接口
+ ///
+ private readonly IGiftClaimService _GiftClaimService;
+
+ public GiftClaimController(IGiftClaimService GiftClaimService)
+ {
+ _GiftClaimService = GiftClaimService;
+ }
+
+ ///
+ /// 查询礼品申领表列表
+ ///
+ ///
+ ///
+ [HttpGet("list")]
+ [ActionPermissionFilter(Permission = "giftclaim:list")]
+ public IActionResult QueryGiftClaim([FromQuery] GiftClaimQueryDto parm)
+ {
+ var response = _GiftClaimService.GetList(parm);
+ return SUCCESS(response);
+ }
+
+ ///
+ /// 查询礼品申领表列表
+ ///
+ ///
+ ///
+ [HttpGet("statistics")]
+ public IActionResult getGiftClaimStatistics()
+ {
+ var nowDate = DateTime.Now.Date;
+ var nowCount = _GiftClaimService.AsQueryable().Count();
+ var shenheCount = _GiftClaimService.AsQueryable().Where(it => it.Status == 0).Count();
+ var shenheCount1 = _GiftClaimService.AsQueryable().Where(it => it.Status == 1).Count();
+ var shenheCount2 = _GiftClaimService.AsQueryable().Where(it => it.Status == 2).Count();
+ return SUCCESS(new { nowCount, shenheCount, shenheCount1, shenheCount2 });
+ }
+ ///
+ /// 查询礼品申领表详情
+ ///
+ ///
+ ///
+ [HttpGet("{Id}")]
+ [ActionPermissionFilter(Permission = "giftclaim:query")]
+ public IActionResult GetGiftClaim(int Id)
+ {
+ var response = _GiftClaimService.GetInfo(Id);
+
+ var info = response.Adapt();
+ return SUCCESS(info);
+ }
+
+ ///
+ /// 添加礼品申领表
+ ///
+ ///
+ [HttpPost]
+ [ActionPermissionFilter(Permission = "giftclaim:add")]
+ [Log(Title = "礼品申领记录", BusinessType = BusinessType.INSERT)]
+ public IActionResult AddGiftClaim([FromBody] GiftClaimDto parm)
+ {
+ var modal = parm.Adapt().ToCreate(HttpContext);
+
+ var response = _GiftClaimService.AddGiftClaim(modal);
+
+ return SUCCESS(response);
+ }
+
+ ///
+ /// 更新礼品申领表
+ ///
+ ///
+ [HttpPut]
+ [ActionPermissionFilter(Permission = "giftclaim:edit")]
+ [Log(Title = "礼品申领记录", BusinessType = BusinessType.UPDATE)]
+ public IActionResult UpdateGiftClaim([FromBody] GiftClaimDto parm)
+ {
+ var modal = parm.Adapt().ToUpdate(HttpContext);
+ var response = _GiftClaimService.UpdateGiftClaim(modal);
+
+ return ToResponse(response);
+ }
+
+ ///
+ /// 更新礼品申领表
+ ///
+ ///
+ [HttpPost("editStatus")]
+ [ActionPermissionFilter(Permission = "giftclaim:editStatus")]
+ [Log(Title = "礼品申领记录", BusinessType = BusinessType.UPDATE, MessageKey = "giftclaim:status")]
+ public async Task UpdateGiftClaimStatus([FromQuery] int id, [FromQuery] int status)
+ {
+ var model = await _GiftClaimService.AsQueryable().FirstAsync(it => it.Id == id);
+ if (model == null)
+ {
+ return ToResponse(ResultCode.FAIL, "礼品申领数据不存在");
+ }
+ model.Status = status;
+ model.ReviewAt = DateTime.Now;
+ var response = await _GiftClaimService.UpdateAsync(model);
+ return ToResponse(new ApiResult(response ? 200 : 500, ""));
+ }
+
+
+ ///
+ /// 删除礼品申领表
+ ///
+ ///
+ [HttpPost("delete/{ids}")]
+ [ActionPermissionFilter(Permission = "giftclaim:delete")]
+ [Log(Title = "礼品申领表", BusinessType = BusinessType.DELETE)]
+ public IActionResult DeleteGiftClaim([FromRoute] string ids)
+ {
+ var idArr = Tools.SplitAndConvert(ids);
+
+ return ToResponse(_GiftClaimService.Delete(idArr));
+ }
+
+ ///
+ /// 导出礼品申领表
+ ///
+ ///
+ [Log(Title = "礼品申领记录", BusinessType = BusinessType.EXPORT, IsSaveResponseData = false)]
+ [HttpGet("export")]
+ [ActionPermissionFilter(Permission = "giftclaim:export")]
+ public IActionResult Export([FromQuery] GiftClaimQueryDto parm)
+ {
+ var list = _GiftClaimService.ExportList(parm).Result;
+ if (list == null || list.Count <= 0)
+ {
+ return ToResponse(ResultCode.FAIL, "没有要导出的数据");
+ }
+ var result = ExportExcelMini(list, "礼品申领记录", "礼品申领记录");
+ return ExportExcel(result.Item2, result.Item1);
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/ZR.Admin.WebApi/Controllers/Business/GiftConfigController.cs b/ZR.Admin.WebApi/Controllers/Business/GiftConfigController.cs
new file mode 100644
index 0000000..883c1fc
--- /dev/null
+++ b/ZR.Admin.WebApi/Controllers/Business/GiftConfigController.cs
@@ -0,0 +1,116 @@
+using Microsoft.AspNetCore.Mvc;
+using ZR.Model.Business.Dto;
+using ZR.Model.Business;
+using ZR.Service.Business.IBusinessService;
+using ZR.Service.Business;
+
+//创建时间:2025-07-30
+namespace ZR.Admin.WebApi.Controllers.Business
+{
+ ///
+ /// 礼品小程序
+ ///
+ [Route("business/GiftConfig")]
+ public class GiftConfigController : BaseController
+ {
+ ///
+ /// 礼品小程序接口
+ ///
+ private readonly IGiftConfigService _GiftConfigService;
+
+ public GiftConfigController(IGiftConfigService GiftConfigService)
+ {
+ _GiftConfigService = GiftConfigService;
+ }
+
+ ///
+ /// 查询礼品小程序列表
+ ///
+ ///
+ ///
+ [HttpGet("list")]
+ [ActionPermissionFilter(Permission = "giftconfig:list")]
+ public IActionResult QueryGiftConfig([FromQuery] GiftConfigQueryDto parm)
+ {
+ var response = _GiftConfigService.GetList(parm);
+ return SUCCESS(response);
+ }
+
+
+ ///
+ /// 查询礼品小程序详情
+ ///
+ ///
+ ///
+ [HttpGet("{Id}")]
+ [ActionPermissionFilter(Permission = "giftconfig:query")]
+ public IActionResult GetGiftConfig(int? Id)
+ {
+ var t = _GiftConfigService.Count(it => true);
+ GiftConfigDto info = new GiftConfigDto();
+ if (t > 0)
+ {
+ var response = _GiftConfigService.GetFirst(it => true);
+ info = response.Adapt();
+
+ }
+ else
+ {
+ var tt = _GiftConfigService.AddGiftConfig(new GiftConfig()
+ {
+ HomeImage = "",
+ Extend = "",
+ Extend1 = "",
+ });
+ info = tt.Adapt();
+ }
+ return SUCCESS(info);
+ }
+
+ ///
+ /// 添加礼品小程序
+ ///
+ ///
+ [HttpPost]
+ [ActionPermissionFilter(Permission = "giftconfig:add")]
+ [Log(Title = "礼品小程序", BusinessType = BusinessType.INSERT)]
+ public IActionResult AddGiftConfig([FromBody] GiftConfigDto parm)
+ {
+ var modal = parm.Adapt().ToCreate(HttpContext);
+
+ var response = _GiftConfigService.AddGiftConfig(modal);
+
+ return SUCCESS(response);
+ }
+
+ ///
+ /// 更新礼品小程序
+ ///
+ ///
+ [HttpPut]
+ [ActionPermissionFilter(Permission = "giftconfig:edit")]
+ [Log(Title = "礼品小程序", BusinessType = BusinessType.UPDATE)]
+ public IActionResult UpdateGiftConfig([FromBody] GiftConfigDto parm)
+ {
+ var modal = parm.Adapt().ToUpdate(HttpContext);
+ var response = _GiftConfigService.UpdateGiftConfig(modal);
+
+ return ToResponse(response);
+ }
+
+ ///
+ /// 删除礼品小程序
+ ///
+ ///
+ [HttpPost("delete/{ids}")]
+ [ActionPermissionFilter(Permission = "giftconfig:delete")]
+ [Log(Title = "礼品小程序", BusinessType = BusinessType.DELETE)]
+ public IActionResult DeleteGiftConfig([FromRoute] string ids)
+ {
+ var idArr = Tools.SplitAndConvert(ids);
+
+ return ToResponse(_GiftConfigService.Delete(idArr, "删除礼品小程序"));
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/ZR.Admin.WebApi/Controllers/Business/GiftUserController.cs b/ZR.Admin.WebApi/Controllers/Business/GiftUserController.cs
new file mode 100644
index 0000000..9736011
--- /dev/null
+++ b/ZR.Admin.WebApi/Controllers/Business/GiftUserController.cs
@@ -0,0 +1,121 @@
+using Microsoft.AspNetCore.Mvc;
+using ZR.Model.Business.Dto;
+using ZR.Model.Business;
+using ZR.Service.Business.IBusinessService;
+
+//创建时间:2025-07-30
+namespace ZR.Admin.WebApi.Controllers.Business
+{
+ ///
+ /// 微信用户表
+ ///
+ [Route("business/GiftUser")]
+ public class GiftUserController : BaseController
+ {
+ ///
+ /// 微信用户表接口
+ ///
+ private readonly IGiftUserService _GiftUserService;
+
+ public GiftUserController(IGiftUserService GiftUserService)
+ {
+ _GiftUserService = GiftUserService;
+ }
+
+ ///
+ /// 查询微信用户表列表
+ ///
+ ///
+ ///
+ [HttpGet("list")]
+ [ActionPermissionFilter(Permission = "giftuser:list")]
+ public IActionResult QueryGiftUser([FromQuery] GiftUserQueryDto parm)
+ {
+ var response = _GiftUserService.GetList(parm);
+ return SUCCESS(response);
+ }
+
+
+ ///
+ /// 查询微信用户表详情
+ ///
+ ///
+ ///
+ [HttpGet("{Id}")]
+ [ActionPermissionFilter(Permission = "giftuser:query")]
+ public IActionResult GetGiftUser(int Id)
+ {
+ var response = _GiftUserService.GetInfo(Id);
+
+ var info = response.Adapt();
+ return SUCCESS(info);
+ }
+
+ ///
+ /// 添加微信用户表
+ ///
+ ///
+ [HttpPost]
+ [ActionPermissionFilter(Permission = "giftuser:add")]
+ [Log(Title = "微信用户表", BusinessType = BusinessType.INSERT)]
+ public IActionResult AddGiftUser([FromBody] GiftUserDto parm)
+ {
+ parm.CreateTime= DateTime.Now;
+ parm.UpdateTime= DateTime.Now;
+ var modal = parm.Adapt().ToCreate(HttpContext);
+
+ var response = _GiftUserService.AddGiftUser(modal);
+
+ return SUCCESS(response);
+ }
+
+ ///
+ /// 更新微信用户表
+ ///
+ ///
+ [HttpPut]
+ [ActionPermissionFilter(Permission = "giftuser:edit")]
+ [Log(Title = "微信用户表", BusinessType = BusinessType.UPDATE)]
+ public IActionResult UpdateGiftUser([FromBody] GiftUserDto parm)
+ {
+ parm.UpdateTime = DateTime.Now;
+ var modal = parm.Adapt().ToUpdate(HttpContext);
+ var response = _GiftUserService.UpdateGiftUser(modal);
+
+ return ToResponse(response);
+ }
+
+ ///
+ /// 删除微信用户表
+ ///
+ ///
+ [HttpPost("delete/{ids}")]
+ [ActionPermissionFilter(Permission = "giftuser:delete")]
+ [Log(Title = "微信用户表", BusinessType = BusinessType.DELETE)]
+ public IActionResult DeleteGiftUser([FromRoute]string ids)
+ {
+ var idArr = Tools.SplitAndConvert(ids);
+
+ return ToResponse(_GiftUserService.Delete(idArr));
+ }
+
+ ///
+ /// 导出微信用户表
+ ///
+ ///
+ [Log(Title = "微信用户表", BusinessType = BusinessType.EXPORT, IsSaveResponseData = false)]
+ [HttpGet("export")]
+ [ActionPermissionFilter(Permission = "giftuser:export")]
+ public IActionResult Export([FromQuery] GiftUserQueryDto parm)
+ {
+ var list = _GiftUserService.ExportList(parm).Result;
+ if (list == null || list.Count <= 0)
+ {
+ return ToResponse(ResultCode.FAIL, "没有要导出的数据");
+ }
+ var result = ExportExcelMini(list, "微信用户表", "微信用户表");
+ return ExportExcel(result.Item2, result.Item1);
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/ZR.Admin.WebApi/Controllers/CommonController.cs b/ZR.Admin.WebApi/Controllers/CommonController.cs
index 0f2ecd3..88e6d40 100644
--- a/ZR.Admin.WebApi/Controllers/CommonController.cs
+++ b/ZR.Admin.WebApi/Controllers/CommonController.cs
@@ -1,10 +1,13 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Localization;
using Microsoft.Extensions.Options;
+
using MiniExcelLibs;
+
using ZR.Infrastructure.IPTools;
using ZR.Model.Dto;
using ZR.Model.System;
+using ZR.Service.Business.IBusinessService;
using ZR.ServiceCore.Resources;
namespace ZR.Admin.WebApi.Controllers
@@ -22,7 +25,10 @@ namespace ZR.Admin.WebApi.Controllers
private IWebHostEnvironment WebHostEnvironment;
private ISysFileService SysFileService;
private readonly IStringLocalizer _localizer;
-
+ ///
+ /// 礼品小程序接口
+ ///
+ private readonly IGiftConfigService _GiftConfigService;
///
///
///
@@ -34,12 +40,14 @@ namespace ZR.Admin.WebApi.Controllers
IStringLocalizer stringLocalizer,
IOptions options,
IWebHostEnvironment webHostEnvironment,
- ISysFileService fileService)
+ ISysFileService fileService,
+ IGiftConfigService GiftConfigService)
{
WebHostEnvironment = webHostEnvironment;
SysFileService = fileService;
OptionsSetting = options.Value;
_localizer = stringLocalizer;
+ _GiftConfigService = GiftConfigService;
}
///
@@ -56,6 +64,19 @@ namespace ZR.Admin.WebApi.Controllers
"如果觉得项目有用,打赏作者喝杯咖啡作为奖励\n☛☛http://www.izhaorui.cn/vip\n");
}
+ ///
+ /// home
+ ///
+ ///
+ [Route("/config")]
+ [HttpGet]
+ [AllowAnonymous]
+ public async Task