后端: - 新增 ai_intent_router 意图路由 - 新增 AiEntryDraft 草稿存储 + EF 迁移 - 新增 Prompts 模块化(global/modules/rag/router) - AI Agent handlers 扩展 前端: - 新增 AI 同意门 (ai_consent_gate/provider/details_page) - HealthMetricVisuals 视觉统一 - 设备扫描/管理页面优化 - agent 插图替换 + 趋势指标图标 配置: - DeepSeek 模型改 deepseek-v4-flash - .gitignore 加 artifacts/audit - build.gradle.kts 签名配置调整
44 lines
1.6 KiB
C#
44 lines
1.6 KiB
C#
namespace Health.Application.Users;
|
|
|
|
public sealed class UserService(
|
|
IUserRepository users,
|
|
IAccountFileCleanup fileCleanup) : IUserService
|
|
{
|
|
private readonly IUserRepository _users = users;
|
|
private readonly IAccountFileCleanup _fileCleanup = fileCleanup;
|
|
|
|
public async Task<UserProfileDto?> GetProfileAsync(Guid userId, CancellationToken ct)
|
|
{
|
|
var user = await _users.GetAsync(userId, ct);
|
|
return user == null ? null : new UserProfileDto(
|
|
user.Id,
|
|
user.Phone,
|
|
user.Role,
|
|
user.Name,
|
|
user.Gender,
|
|
user.BirthDate?.ToString("yyyy-MM-dd"),
|
|
user.AvatarUrl);
|
|
}
|
|
|
|
public async Task<bool> UpdateProfileAsync(Guid userId, UserProfileUpdateRequest request, CancellationToken ct)
|
|
{
|
|
var user = await _users.GetAsync(userId, ct);
|
|
if (user == null) return false;
|
|
|
|
if (request.Name != null) user.Name = request.Name;
|
|
if (request.Gender != null) user.Gender = request.Gender;
|
|
if (request.BirthDate.HasValue) user.BirthDate = request.BirthDate.Value;
|
|
if (request.AvatarUrl != null) user.AvatarUrl = request.AvatarUrl;
|
|
user.UpdatedAt = DateTime.UtcNow;
|
|
await _users.SaveChangesAsync(ct);
|
|
return true;
|
|
}
|
|
|
|
public async Task DeleteAccountAsync(Guid userId, CancellationToken ct)
|
|
{
|
|
var references = await _users.GetAccountFileReferencesAsync(userId, ct);
|
|
await _fileCleanup.DeleteAsync(userId, references, ct);
|
|
await _users.DeleteAccountDataAsync(userId, ct);
|
|
}
|
|
}
|