feat: 完成多模块功能迭代与优化

1.  新增宠物皮肤初始枚举值、下拉列表接口及相关DTO
2.  完善商品实体与DTO,新增虚拟商品标记和类型ID字段
3.  重构用户认证体系,支持多用户切换并重新生成JWT令牌
4.  新增签到配置管理全套功能,包括增删改查和状态管理
5.  优化模型验证过滤器和基础响应类的命名规范
6.  新增补签功能,完善签到服务逻辑
7.  拆分用户详情DTO,新增各子数据分页查询接口
8.  重构微信控制器的用户ID获取逻辑,统一使用激活用户ID
9.  修复背包服务中补签卡的扣减逻辑
10. 新增家长姓名修改接口和相关服务实现
This commit is contained in:
glz
2026-06-10 17:53:38 +08:00
parent 028e3dfb34
commit ae4cd627df
35 changed files with 1334 additions and 316 deletions

View File

@ -1,4 +1,5 @@
using Microsoft.Extensions.Logging;
using QYZH.InteractiveMagazine.Common.Helpers;
using QYZH.InteractiveMagazine.Infrastructure.OSS;
using QYZH.InteractiveMagazine.IService;
using QYZH.InteractiveMagazine.Models.Common;
@ -52,6 +53,8 @@ public class ProductService(
MetaData = input.MetaData,
IsActive = input.IsActive,
Stock = input.Stock,
IsVirtual = input.IsVirtual,
TypeId = input.TypeId,
CreatedBy = "System",
UpdatedBy = "System",
CreatedAt = DateTime.Now,
@ -90,6 +93,8 @@ public class ProductService(
MetaData = product.MetaData,
IsActive = product.IsActive,
Stock = product.Stock,
IsVirtual = product.IsVirtual,
TypeId = product.TypeId,
CreatedBy = product.CreatedBy,
CreatedAt = product.CreatedAt,
UpdatedBy = product.UpdatedBy,
@ -144,6 +149,8 @@ public class ProductService(
product.MetaData = input.MetaData;
product.IsActive = input.IsActive;
product.Stock = input.Stock;
product.IsVirtual = input.IsVirtual;
product.TypeId = input.TypeId;
product.UpdatedBy = "System";
product.UpdatedAt = DateTime.Now;
@ -168,6 +175,8 @@ public class ProductService(
MetaData = product.MetaData,
IsActive = product.IsActive,
Stock = product.Stock,
IsVirtual = product.IsVirtual,
TypeId = product.TypeId,
CreatedBy = product.CreatedBy,
CreatedAt = product.CreatedAt,
UpdatedBy = product.UpdatedBy,
@ -218,13 +227,15 @@ public class ProductService(
Id = product.Id,
Name = product.Name,
Description = product.Description,
ImageUrl = product.ImageUrl,
ImageUrl = DomainHelper.OssFullUrl(product.ImageUrl),
Price = product.Price,
Type = product.Type.ToString(),
Status = product.Status.ToString(),
MetaData = product.MetaData,
IsActive = product.IsActive,
Stock = product.Stock,
IsVirtual = product.IsVirtual,
TypeId = product.TypeId,
CreatedBy = product.CreatedBy,
CreatedAt = product.CreatedAt,
UpdatedBy = product.UpdatedBy,
@ -256,26 +267,29 @@ public class ProductService(
.WhereIF(input.Status.HasValue, p => p.Status == (int)input.Status)
.WhereIF(input.IsActive.HasValue, p => p.IsActive == input.IsActive.Value)
.OrderByDescending(p => p.CreatedAt)
.Select(p => new ProductOutput
{
Id = p.Id,
Name = p.Name,
Description = p.Description,
ImageUrl = p.ImageUrl,
Price = p.Price,
Type = p.Type.ToString(),
Status = p.Status.ToString(),
MetaData = p.MetaData,
IsActive = p.IsActive,
Stock = p.Stock,
CreatedBy = p.CreatedBy,
CreatedAt = p.CreatedAt,
UpdatedBy = p.UpdatedBy,
UpdatedAt = p.UpdatedAt
}, true)
.ToPageListAsync(input.PageIndex, input.PageSize, totalNumber);
return new PageListModel<ProductOutput>(pageResult, input.PageIndex, input.PageSize, totalNumber);
var result = pageResult.Select(p => new ProductOutput
{
Id = p.Id,
Name = p.Name,
Description = p.Description,
ImageUrl = DomainHelper.OssFullUrl(p.ImageUrl),
Price = p.Price,
Type = p.Type.ToString(),
Status = p.Status.ToString(),
MetaData = p.MetaData,
IsActive = p.IsActive,
Stock = p.Stock,
IsVirtual = p.IsVirtual,
TypeId = p.TypeId,
CreatedBy = p.CreatedBy,
CreatedAt = p.CreatedAt,
UpdatedBy = p.UpdatedBy,
UpdatedAt = p.UpdatedAt
}).ToList();
return new PageListModel<ProductOutput>(result, input.PageIndex, input.PageSize, totalNumber);
}
/// <summary>