mi-assessment/server/MiAssessment/src/MiAssessment.Admin.Business/Services/Interfaces/IUserBusinessService.cs
zpc 26902724c8 fix(user): 修复用户等级显示乱码,添加删除用户功能
- 修正用户等级常量:1=普通用户, 2=合伙人, 3=渠道合伙人
- 添加删除用户接口(硬删除),同时清除 user_refresh_tokens 和 user_login_logs
- 前端添加删除按钮和确认对话框
2026-02-20 21:54:38 +08:00

125 lines
4.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using MiAssessment.Admin.Business.Models;
using MiAssessment.Admin.Business.Models.User;
namespace MiAssessment.Admin.Business.Services.Interfaces;
/// <summary>
/// <20>û<EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
/// </summary>
public interface IUserBusinessService
{
#region -
/// <summary>
/// 获取用户列表(旧接口)
/// </summary>
/// <param name="request">查询参数</param>
/// <returns>分页用户列表</returns>
Task<PagedResult<UserListResponse>> GetUserListAsync(UserListRequest request);
#endregion
#region <EFBFBD>û<EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½ӿ<EFBFBD> - Requirements 9.1-9.7<EFBFBD><EFBFBD>
/// <summary>
/// <20><>ȡC<C8A1><43><EFBFBD>û<EFBFBD><C3BB>б<EFBFBD>
/// </summary>
/// <param name="request"><3E><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD></param>
/// <returns><3E><>ҳ<EFBFBD>û<EFBFBD><C3BB>б<EFBFBD></returns>
Task<PagedResult<UserDto>> GetUserListAsync(UserQueryRequest request);
/// <summary>
/// <20><>ȡC<C8A1><43><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="id"><3E>û<EFBFBD>ID</param>
/// <returns><3E>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD></returns>
Task<UserDetailDto?> GetUserDetailAsync(long id);
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>״̬
/// </summary>
/// <param name="id"><3E>û<EFBFBD>ID</param>
/// <param name="status">״̬<D7B4><CCAC>0<EFBFBD><30><EFBFBD><EFBFBD> 1<><31><EFBFBD><EFBFBD></param>
/// <returns><3E>Ƿ<EFBFBD>ɹ<EFBFBD></returns>
Task<bool> UpdateUserStatusAsync(long id, int status);
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ȼ<EFBFBD>
/// </summary>
/// <param name="id"><3E>û<EFBFBD>ID</param>
/// <param name="userLevel"><3E>û<EFBFBD><C3BB>ȼ<EFBFBD><C8BC><EFBFBD>1<EFBFBD><31>ͨ<EFBFBD>û<EFBFBD> 2<>ϻ<EFBFBD><CFBB><EFBFBD> 3<><33><EFBFBD><EFBFBD><EFBFBD>ϻ<EFBFBD><CFBB><EFBFBD></param>
/// <returns><3E>Ƿ<EFBFBD>ɹ<EFBFBD></returns>
Task<bool> UpdateUserLevelAsync(long id, int userLevel);
/// <summary>
/// 导出用户列表
/// </summary>
/// <param name="request">查询参数</param>
/// <returns>导出数据</returns>
Task<List<UserDto>> ExportUsersAsync(UserQueryRequest request);
/// <summary>
/// 删除用户(硬删除,同时清除登录记录和令牌)
/// </summary>
/// <param name="id">用户ID</param>
/// <returns>是否成功</returns>
Task<bool> DeleteUserAsync(long id);
#endregion
#region ״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽӿ<EFBFBD> - <EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>/<2F><>
/// </summary>
/// <param name="userId"><3E>û<EFBFBD>ID</param>
/// <param name="status">״̬<D7B4><CCAC>1-<2D><><EFBFBD><EFBFBD> 0-<2D><><EFBFBD><EFBFBD></param>
/// <returns><3E>Ƿ<EFBFBD>ɹ<EFBFBD></returns>
Task<bool> SetUserStatusAsync(long userId, int status);
/// <summary>
/// <20><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD>˺ű<CBBA>ʶ
/// </summary>
/// <param name="userId"><3E>û<EFBFBD>ID</param>
/// <param name="isTest"><3E>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>˺ţ<CBBA>0-<2D><> 1-<2D><></param>
/// <returns><3E>Ƿ<EFBFBD>ɹ<EFBFBD></returns>
Task<bool> SetTestAccountAsync(long userId, int isTest);
/// <summary>
/// <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ֻ<EFBFBD><D6BB><EFBFBD>
/// </summary>
/// <param name="userId"><3E>û<EFBFBD>ID</param>
/// <returns><3E>Ƿ<EFBFBD>ɹ<EFBFBD></returns>
Task<bool> ClearMobileAsync(long userId);
/// <summary>
/// <20><><EFBFBD><EFBFBD>û<EFBFBD>΢<EFBFBD>Ű󶨣<C5B0><F3B6A8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD>openid<69><64>
/// </summary>
/// <param name="userId"><3E>û<EFBFBD>ID</param>
/// <returns><3E>Ƿ<EFBFBD>ɹ<EFBFBD></returns>
Task<bool> ClearWeChatAsync(long userId);
#endregion
#region <EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD>ɽӿ<EFBFBD> - <EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>
/// <summary>
/// <20><>ȡ<EFBFBD>û<EFBFBD>IP<49><50>¼<EFBFBD><C2BC>ʷ
/// </summary>
/// <param name="userId"><3E>û<EFBFBD>ID</param>
/// <param name="page">ҳ<><D2B3></param>
/// <param name="pageSize">ÿҳ<C3BF><D2B3><EFBFBD><EFBFBD></param>
/// <returns>IP<49><50>¼<EFBFBD><C2BC>ʷ<EFBFBD>б<EFBFBD></returns>
Task<PagedResult<IpLogItem>> GetUserIpLogsAsync(long userId, int page, int pageSize);
/// <summary>
/// <20><><EFBFBD>û<EFBFBD><C3BB>ֻ<EFBFBD><D6BB><EFBFBD>
/// </summary>
/// <param name="userId"><3E>û<EFBFBD>ID</param>
/// <param name="mobile"><3E>ֻ<EFBFBD><D6BB><EFBFBD></param>
/// <returns><3E>Ƿ<EFBFBD>ɹ<EFBFBD></returns>
Task<bool> BindMobileAsync(long userId, string mobile);
#endregion
}