From ae25832ee13a24d9d980810e822ab41644fe7d89 Mon Sep 17 00:00:00 2001 From: zpc Date: Thu, 12 Feb 2026 01:22:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9D=83=E7=9B=8A=E7=AD=89=E7=BA=A7?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=96=B0=E5=A2=9E=E5=92=8C=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/QyLevelController.cs | 40 +++++++++++ .../Models/QyLevel/QyLevelModels.cs | 21 ++++++ .../Services/Interfaces/IQyLevelService.cs | 14 ++++ .../Services/QyLevelService.cs | 67 +++++++++++++++++++ 4 files changed, 142 insertions(+) diff --git a/server/HoneyBox/src/HoneyBox.Admin.Business/Controllers/QyLevelController.cs b/server/HoneyBox/src/HoneyBox.Admin.Business/Controllers/QyLevelController.cs index 6ab220b8..4f743702 100644 --- a/server/HoneyBox/src/HoneyBox.Admin.Business/Controllers/QyLevelController.cs +++ b/server/HoneyBox/src/HoneyBox.Admin.Business/Controllers/QyLevelController.cs @@ -87,6 +87,46 @@ public class QyLevelController : BusinessControllerBase } } + /// + /// 新增权益等级 + /// + /// 创建请求 + /// 新创建的权益等级ID + [HttpPost] + [BusinessPermission("qylevel:add")] + public async Task CreateQyLevel([FromBody] QyLevelCreateRequest request) + { + try + { + var id = await _qyLevelService.CreateQyLevelAsync(request); + return Ok(new { id }, "创建成功"); + } + catch (BusinessException ex) + { + return Error(ex.Code, ex.Message); + } + } + + /// + /// 删除权益等级(软删除) + /// + /// 权益等级ID + /// 操作结果 + [HttpDelete("{id}")] + [BusinessPermission("qylevel:delete")] + public async Task DeleteQyLevel(int id) + { + try + { + var result = await _qyLevelService.DeleteQyLevelAsync(id); + return result ? Ok("删除成功") : Error(BusinessErrorCodes.InternalError, "删除失败"); + } + catch (BusinessException ex) + { + return Error(ex.Code, ex.Message); + } + } + #endregion #region 权益等级奖品接口 diff --git a/server/HoneyBox/src/HoneyBox.Admin.Business/Models/QyLevel/QyLevelModels.cs b/server/HoneyBox/src/HoneyBox.Admin.Business/Models/QyLevel/QyLevelModels.cs index c421c3f8..99514777 100644 --- a/server/HoneyBox/src/HoneyBox.Admin.Business/Models/QyLevel/QyLevelModels.cs +++ b/server/HoneyBox/src/HoneyBox.Admin.Business/Models/QyLevel/QyLevelModels.cs @@ -172,6 +172,27 @@ public class QyLevelUpdateRequest public int RequiredPoints { get; set; } } +/// +/// 权益等级创建请求 +/// +public class QyLevelCreateRequest +{ + /// + /// 等级 + /// + public int Level { get; set; } + + /// + /// 等级名称 + /// + public string Title { get; set; } = string.Empty; + + /// + /// 所需欧气值 + /// + public int RequiredPoints { get; set; } +} + /// /// 权益等级奖品列表查询请求 /// diff --git a/server/HoneyBox/src/HoneyBox.Admin.Business/Services/Interfaces/IQyLevelService.cs b/server/HoneyBox/src/HoneyBox.Admin.Business/Services/Interfaces/IQyLevelService.cs index 03674d36..8c097399 100644 --- a/server/HoneyBox/src/HoneyBox.Admin.Business/Services/Interfaces/IQyLevelService.cs +++ b/server/HoneyBox/src/HoneyBox.Admin.Business/Services/Interfaces/IQyLevelService.cs @@ -32,6 +32,20 @@ public interface IQyLevelService /// 是否成功 Task UpdateQyLevelAsync(int id, QyLevelUpdateRequest request); + /// + /// 创建权益等级 + /// + /// 创建请求 + /// 新创建的权益等级ID + Task CreateQyLevelAsync(QyLevelCreateRequest request); + + /// + /// 删除权益等级(软删除) + /// + /// 权益等级ID + /// 是否成功 + Task DeleteQyLevelAsync(int id); + #endregion #region 权益等级奖品操作 diff --git a/server/HoneyBox/src/HoneyBox.Admin.Business/Services/QyLevelService.cs b/server/HoneyBox/src/HoneyBox.Admin.Business/Services/QyLevelService.cs index 4745af2d..b71e416a 100644 --- a/server/HoneyBox/src/HoneyBox.Admin.Business/Services/QyLevelService.cs +++ b/server/HoneyBox/src/HoneyBox.Admin.Business/Services/QyLevelService.cs @@ -100,6 +100,73 @@ public class QyLevelService : IQyLevelService return result; } + /// + public async Task CreateQyLevelAsync(QyLevelCreateRequest request) + { + // 验证请求 + if (string.IsNullOrWhiteSpace(request.Title)) + { + throw new BusinessException(BusinessErrorCodes.ValidationFailed, "等级名称不能为空"); + } + + if (request.Level < 0) + { + throw new BusinessException(BusinessErrorCodes.ValidationFailed, "等级不能为负数"); + } + + if (request.RequiredPoints < 0) + { + throw new BusinessException(BusinessErrorCodes.ValidationFailed, "所需欧气值不能为负数"); + } + + // 检查等级是否已存在 + var existingLevel = await _dbContext.EquityLevels + .FirstOrDefaultAsync(e => e.Level == request.Level && e.DeletedAt == null); + + if (existingLevel != null) + { + throw new BusinessException(BusinessErrorCodes.ValidationFailed, $"等级 {request.Level} 已存在"); + } + + var entity = new EquityLevel + { + Level = request.Level, + Title = request.Title, + Number = request.RequiredPoints, + CreatedAt = DateTime.Now, + UpdatedAt = DateTime.Now + }; + + _dbContext.EquityLevels.Add(entity); + await _dbContext.SaveChangesAsync(); + + _logger.LogInformation("创建权益等级成功: Id={Id}, Level={Level}, Title={Title}", entity.Id, entity.Level, entity.Title); + + return entity.Id; + } + + /// + public async Task DeleteQyLevelAsync(int id) + { + var entity = await _dbContext.EquityLevels + .FirstOrDefaultAsync(e => e.Id == id && e.DeletedAt == null); + + if (entity == null) + { + throw new BusinessException(BusinessErrorCodes.NotFound, "权益等级不存在"); + } + + // 软删除 + entity.DeletedAt = DateTime.Now; + entity.UpdatedAt = DateTime.Now; + + var result = await _dbContext.SaveChangesAsync() > 0; + + _logger.LogInformation("删除权益等级成功: Id={Id}, Level={Level}", id, entity.Level); + + return result; + } + #endregion #region 权益等级奖品操作