提交
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
namespace IM_API.Dtos.Auth
|
||||
{
|
||||
public record RefreshDto(string refreshToken);
|
||||
}
|
||||
namespace IM_API.Dtos.Auth
|
||||
{
|
||||
public record RefreshDto(string refreshToken);
|
||||
}
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
using IM_API.Tools;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace IM_API.Dtos.Auth
|
||||
{
|
||||
public class LoginRequestDto
|
||||
{
|
||||
[Required(ErrorMessage = "用户名不能为空")]
|
||||
[StringLength(20, ErrorMessage = "用户名不能超过20字符")]
|
||||
[RegularExpression(@"^[A-Za-z0-9]+$",ErrorMessage = "用户名只能为英文或数字")]
|
||||
public string Username { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "密码不能为空")]
|
||||
[StringLength(50, ErrorMessage = "密码不能超过50字符")]
|
||||
public string Password { get; set; }
|
||||
}
|
||||
}
|
||||
using IM_API.Tools;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace IM_API.Dtos.Auth
|
||||
{
|
||||
public class LoginRequestDto
|
||||
{
|
||||
[Required(ErrorMessage = "用户名不能为空")]
|
||||
[StringLength(20, ErrorMessage = "用户名不能超过20字符")]
|
||||
[RegularExpression(@"^[A-Za-z0-9]+$",ErrorMessage = "用户名只能为英文或数字")]
|
||||
public string Username { get; set; }
|
||||
|
||||
[Required(ErrorMessage = "密码不能为空")]
|
||||
[StringLength(50, ErrorMessage = "密码不能超过50字符")]
|
||||
public string Password { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace IM_API.Dtos.Auth
|
||||
{
|
||||
public class RegisterRequestDto
|
||||
{
|
||||
[Required(ErrorMessage = "用户名不能为空")]
|
||||
[MaxLength(20, ErrorMessage = "用户名不能超过20字符")]
|
||||
[RegularExpression(@"^[A-Za-z0-9]+$", ErrorMessage = "用户名只能为英文或数字")]
|
||||
public string Username { get; set; }
|
||||
[Required(ErrorMessage = "密码不能为空")]
|
||||
[MaxLength(50, ErrorMessage = "密码不能超过50字符")]
|
||||
public string Password { get; set; }
|
||||
[Required(ErrorMessage = "昵称不能为空")]
|
||||
[MaxLength(20, ErrorMessage = "昵称不能超过20字符")]
|
||||
|
||||
public string? NickName { get; set; }
|
||||
}
|
||||
}
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace IM_API.Dtos.Auth
|
||||
{
|
||||
public class RegisterRequestDto
|
||||
{
|
||||
[Required(ErrorMessage = "用户名不能为空")]
|
||||
[MaxLength(20, ErrorMessage = "用户名不能超过20字符")]
|
||||
[RegularExpression(@"^[A-Za-z0-9]+$", ErrorMessage = "用户名只能为英文或数字")]
|
||||
public string Username { get; set; }
|
||||
[Required(ErrorMessage = "密码不能为空")]
|
||||
[MaxLength(50, ErrorMessage = "密码不能超过50字符")]
|
||||
public string Password { get; set; }
|
||||
[Required(ErrorMessage = "昵称不能为空")]
|
||||
[MaxLength(20, ErrorMessage = "昵称不能超过20字符")]
|
||||
|
||||
public string? NickName { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,82 +1,82 @@
|
||||
using IM_API.Tools;
|
||||
|
||||
namespace IM_API.Dtos
|
||||
{
|
||||
public class BaseResponse<T>
|
||||
{
|
||||
//响应状态码
|
||||
public int Code { get; set; }
|
||||
//响应消息
|
||||
public string Message { get; set; }
|
||||
//响应数据
|
||||
public T? Data { get; set; }
|
||||
/// <summary>
|
||||
/// 默认成功响应返回
|
||||
/// </summary>
|
||||
/// <param name="msg"></param>
|
||||
/// <param name="data"></param>
|
||||
public BaseResponse(string msg,T data)
|
||||
{
|
||||
this.Code = 0;
|
||||
this.Message = msg;
|
||||
this.Data = data;
|
||||
}
|
||||
/// <summary>
|
||||
/// 默认成功响应返回仅数据
|
||||
/// </summary>
|
||||
/// <param name="data"></param>
|
||||
public BaseResponse(T data)
|
||||
{
|
||||
this.Code = CodeDefine.SUCCESS.Code;
|
||||
this.Message = CodeDefine.SUCCESS.Message;
|
||||
this.Data = data;
|
||||
}
|
||||
/// <summary>
|
||||
/// 默认成功响应返回,不带数据
|
||||
/// </summary>
|
||||
/// <param name="msg"></param>
|
||||
/// <param name="data"></param>
|
||||
public BaseResponse(string msg)
|
||||
{
|
||||
this.Code = CodeDefine.SUCCESS.Code;
|
||||
this.Message = msg;
|
||||
}
|
||||
/// <summary>
|
||||
/// 非成功响应且带数据
|
||||
/// </summary>
|
||||
/// <param name="code"></param>
|
||||
/// <param name="message"></param>
|
||||
/// <param name="data"></param>
|
||||
public BaseResponse(int code, string message, T? data)
|
||||
{
|
||||
Code = code;
|
||||
Message = message;
|
||||
Data = data;
|
||||
}
|
||||
/// <summary>
|
||||
/// 非成功响应且不带数据
|
||||
/// </summary>
|
||||
/// <param name="code"></param>
|
||||
/// <param name="message"></param>
|
||||
/// <param name="data"></param>
|
||||
public BaseResponse(int code, string message)
|
||||
{
|
||||
Code = code;
|
||||
Message = message;
|
||||
}
|
||||
/// <summary>
|
||||
/// 接受codedefine对象
|
||||
/// </summary>
|
||||
/// <param name="codeDefine"></param>
|
||||
public BaseResponse(CodeDefine codeDefine)
|
||||
{
|
||||
this.Code = codeDefine.Code;
|
||||
this.Message = codeDefine.Message;
|
||||
}
|
||||
public BaseResponse()
|
||||
{
|
||||
this.Code = CodeDefine.SUCCESS.Code;
|
||||
this.Message = CodeDefine.SUCCESS.Message;
|
||||
}
|
||||
}
|
||||
}
|
||||
using IM_API.Tools;
|
||||
|
||||
namespace IM_API.Dtos
|
||||
{
|
||||
public class BaseResponse<T>
|
||||
{
|
||||
//响应状态码
|
||||
public int Code { get; set; }
|
||||
//响应消息
|
||||
public string Message { get; set; }
|
||||
//响应数据
|
||||
public T? Data { get; set; }
|
||||
/// <summary>
|
||||
/// 默认成功响应返回
|
||||
/// </summary>
|
||||
/// <param name="msg"></param>
|
||||
/// <param name="data"></param>
|
||||
public BaseResponse(string msg,T data)
|
||||
{
|
||||
this.Code = 0;
|
||||
this.Message = msg;
|
||||
this.Data = data;
|
||||
}
|
||||
/// <summary>
|
||||
/// 默认成功响应返回仅数据
|
||||
/// </summary>
|
||||
/// <param name="data"></param>
|
||||
public BaseResponse(T data)
|
||||
{
|
||||
this.Code = CodeDefine.SUCCESS.Code;
|
||||
this.Message = CodeDefine.SUCCESS.Message;
|
||||
this.Data = data;
|
||||
}
|
||||
/// <summary>
|
||||
/// 默认成功响应返回,不带数据
|
||||
/// </summary>
|
||||
/// <param name="msg"></param>
|
||||
/// <param name="data"></param>
|
||||
public BaseResponse(string msg)
|
||||
{
|
||||
this.Code = CodeDefine.SUCCESS.Code;
|
||||
this.Message = msg;
|
||||
}
|
||||
/// <summary>
|
||||
/// 非成功响应且带数据
|
||||
/// </summary>
|
||||
/// <param name="code"></param>
|
||||
/// <param name="message"></param>
|
||||
/// <param name="data"></param>
|
||||
public BaseResponse(int code, string message, T? data)
|
||||
{
|
||||
Code = code;
|
||||
Message = message;
|
||||
Data = data;
|
||||
}
|
||||
/// <summary>
|
||||
/// 非成功响应且不带数据
|
||||
/// </summary>
|
||||
/// <param name="code"></param>
|
||||
/// <param name="message"></param>
|
||||
/// <param name="data"></param>
|
||||
public BaseResponse(int code, string message)
|
||||
{
|
||||
Code = code;
|
||||
Message = message;
|
||||
}
|
||||
/// <summary>
|
||||
/// 接受codedefine对象
|
||||
/// </summary>
|
||||
/// <param name="codeDefine"></param>
|
||||
public BaseResponse(CodeDefine codeDefine)
|
||||
{
|
||||
this.Code = codeDefine.Code;
|
||||
this.Message = codeDefine.Message;
|
||||
}
|
||||
public BaseResponse()
|
||||
{
|
||||
this.Code = CodeDefine.SUCCESS.Code;
|
||||
this.Message = CodeDefine.SUCCESS.Message;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
namespace IM_API.Dtos.Conversation
|
||||
{
|
||||
public class ClearConversationsDto
|
||||
{
|
||||
public int UserId { get; set; }
|
||||
/// <summary>
|
||||
/// 聊天类型
|
||||
/// </summary>
|
||||
public MsgChatType ChatType { get; set; }
|
||||
/// <summary>
|
||||
/// 目标ID,聊天类型为群则为群id,私聊为用户id
|
||||
/// </summary>
|
||||
public int TargetId { get; set; }
|
||||
}
|
||||
public enum MsgChatType
|
||||
{
|
||||
/// <summary>
|
||||
/// 私聊
|
||||
/// </summary>
|
||||
single = 0,
|
||||
/// <summary>
|
||||
/// 私聊
|
||||
/// </summary>
|
||||
group = 1
|
||||
}
|
||||
}
|
||||
namespace IM_API.Dtos.Conversation
|
||||
{
|
||||
public class ClearConversationsDto
|
||||
{
|
||||
public int UserId { get; set; }
|
||||
/// <summary>
|
||||
/// 聊天类型
|
||||
/// </summary>
|
||||
public MsgChatType ChatType { get; set; }
|
||||
/// <summary>
|
||||
/// 目标ID,聊天类型为群则为群id,私聊为用户id
|
||||
/// </summary>
|
||||
public int TargetId { get; set; }
|
||||
}
|
||||
public enum MsgChatType
|
||||
{
|
||||
/// <summary>
|
||||
/// 私聊
|
||||
/// </summary>
|
||||
single = 0,
|
||||
/// <summary>
|
||||
/// 私聊
|
||||
/// </summary>
|
||||
group = 1
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
namespace IM_API.Dtos.Conversation
|
||||
{
|
||||
public class UpdateConversationDto
|
||||
{
|
||||
public string StreamKey { get; set; }
|
||||
public int SenderId { get; set; }
|
||||
public int ReceiptId { get; set; }
|
||||
public string LastMessage { get; set; }
|
||||
public long LastSequenceId { get; set; }
|
||||
public DateTimeOffset DateTime { get; set; }
|
||||
}
|
||||
}
|
||||
namespace IM_API.Dtos.Conversation
|
||||
{
|
||||
public class UpdateConversationDto
|
||||
{
|
||||
public string StreamKey { get; set; }
|
||||
public int SenderId { get; set; }
|
||||
public int ReceiptId { get; set; }
|
||||
public string LastMessage { get; set; }
|
||||
public long LastSequenceId { get; set; }
|
||||
public DateTimeOffset DateTime { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,33 +1,33 @@
|
||||
using IM_API.Dtos.User;
|
||||
using IM_API.Models;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace IM_API.Dtos.Friend
|
||||
{
|
||||
public record FriendInfoDto
|
||||
{
|
||||
public int Id { get; init; }
|
||||
|
||||
public int UserId { get; init; }
|
||||
|
||||
public int FriendId { get; init; }
|
||||
|
||||
public FriendStatus StatusEnum { get; init; }
|
||||
|
||||
public DateTimeOffset Created { get; init; }
|
||||
|
||||
public string RemarkName { get; init; } = string.Empty;
|
||||
|
||||
public string? Avatar { get; init; }
|
||||
public UserInfoDto UserInfo { get; init; }
|
||||
}
|
||||
|
||||
public record FriendRequestHandleDto
|
||||
{
|
||||
[Required(ErrorMessage = "操作必填")]
|
||||
public HandleFriendRequestAction Action { get; init; }
|
||||
|
||||
[StringLength(20, ErrorMessage = "备注名最大20个字符")]
|
||||
public string? RemarkName { get; init; }
|
||||
}
|
||||
}
|
||||
using IM_API.Dtos.User;
|
||||
using IM_API.Models;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace IM_API.Dtos.Friend
|
||||
{
|
||||
public record FriendInfoDto
|
||||
{
|
||||
public int Id { get; init; }
|
||||
|
||||
public int UserId { get; init; }
|
||||
|
||||
public int FriendId { get; init; }
|
||||
|
||||
public FriendStatus StatusEnum { get; init; }
|
||||
|
||||
public DateTimeOffset Created { get; init; }
|
||||
|
||||
public string RemarkName { get; init; } = string.Empty;
|
||||
|
||||
public string? Avatar { get; init; }
|
||||
public UserInfoDto UserInfo { get; init; }
|
||||
}
|
||||
|
||||
public record FriendRequestHandleDto
|
||||
{
|
||||
[Required(ErrorMessage = "操作必填")]
|
||||
public HandleFriendRequestAction Action { get; init; }
|
||||
|
||||
[StringLength(20, ErrorMessage = "备注名最大20个字符")]
|
||||
public string? RemarkName { get; init; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace IM_API.Dtos.Friend
|
||||
{
|
||||
public class FriendRequestDto
|
||||
{
|
||||
public int? FromUserId { get; set; }
|
||||
public int ToUserId { get; set; }
|
||||
[Required(ErrorMessage = "备注名必填")]
|
||||
[StringLength(20, ErrorMessage = "备注名不能超过20位字符")]
|
||||
public string? RemarkName { get; set; }
|
||||
[StringLength(50, ErrorMessage = "描述不能超过50字符")]
|
||||
public string? Description { get; set; }
|
||||
}
|
||||
}
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace IM_API.Dtos.Friend
|
||||
{
|
||||
public class FriendRequestDto
|
||||
{
|
||||
public int? FromUserId { get; set; }
|
||||
public int ToUserId { get; set; }
|
||||
[Required(ErrorMessage = "备注名必填")]
|
||||
[StringLength(20, ErrorMessage = "备注名不能超过20位字符")]
|
||||
public string? RemarkName { get; set; }
|
||||
[StringLength(50, ErrorMessage = "描述不能超过50字符")]
|
||||
public string? Description { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,36 +1,36 @@
|
||||
using IM_API.Models;
|
||||
|
||||
namespace IM_API.Dtos.Friend
|
||||
{
|
||||
public class FriendRequestResDto
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 申请人
|
||||
/// </summary>
|
||||
public int RequestUser { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 被申请人
|
||||
/// </summary>
|
||||
public int ResponseUser { get; set; }
|
||||
public string Avatar { get; set; }
|
||||
public string NickName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 申请时间
|
||||
/// </summary>
|
||||
public DateTimeOffset Created { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 申请附言
|
||||
/// </summary>
|
||||
public string? Description { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 申请状态(0:待通过,1:拒绝,2:同意,3:拉黑)
|
||||
/// </summary>
|
||||
public FriendRequestState State { get; set; }
|
||||
}
|
||||
}
|
||||
using IM_API.Models;
|
||||
|
||||
namespace IM_API.Dtos.Friend
|
||||
{
|
||||
public class FriendRequestResDto
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 申请人
|
||||
/// </summary>
|
||||
public int RequestUser { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 被申请人
|
||||
/// </summary>
|
||||
public int ResponseUser { get; set; }
|
||||
public string Avatar { get; set; }
|
||||
public string NickName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 申请时间
|
||||
/// </summary>
|
||||
public DateTimeOffset Created { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 申请附言
|
||||
/// </summary>
|
||||
public string? Description { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 申请状态(0:待通过,1:拒绝,2:同意,3:拉黑)
|
||||
/// </summary>
|
||||
public FriendRequestState State { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,29 +1,29 @@
|
||||
namespace IM_API.Dtos.Friend
|
||||
{
|
||||
public class HandleFriendRequestDto
|
||||
{
|
||||
/// <summary>
|
||||
/// 好友请求Id
|
||||
/// </summary>
|
||||
public int RequestId { get; set; }
|
||||
/// <summary>
|
||||
/// 处理操作
|
||||
/// </summary>
|
||||
public HandleFriendRequestAction Action { get; set; }
|
||||
/// <summary>
|
||||
/// 好友备注名
|
||||
/// </summary>
|
||||
public string? RemarkName { get; set; }
|
||||
}
|
||||
public enum HandleFriendRequestAction
|
||||
{
|
||||
/// <summary>
|
||||
/// 同意
|
||||
/// </summary>
|
||||
Accept = 0,
|
||||
/// <summary>
|
||||
/// 拒绝
|
||||
/// </summary>
|
||||
Reject = 1
|
||||
}
|
||||
}
|
||||
namespace IM_API.Dtos.Friend
|
||||
{
|
||||
public class HandleFriendRequestDto
|
||||
{
|
||||
/// <summary>
|
||||
/// 好友请求Id
|
||||
/// </summary>
|
||||
public int RequestId { get; set; }
|
||||
/// <summary>
|
||||
/// 处理操作
|
||||
/// </summary>
|
||||
public HandleFriendRequestAction Action { get; set; }
|
||||
/// <summary>
|
||||
/// 好友备注名
|
||||
/// </summary>
|
||||
public string? RemarkName { get; set; }
|
||||
}
|
||||
public enum HandleFriendRequestAction
|
||||
{
|
||||
/// <summary>
|
||||
/// 同意
|
||||
/// </summary>
|
||||
Accept = 0,
|
||||
/// <summary>
|
||||
/// 拒绝
|
||||
/// </summary>
|
||||
Reject = 1
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
using IM_API.Models;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace IM_API.Dtos.Group
|
||||
{
|
||||
public class GroupCreateDto
|
||||
{
|
||||
/// <summary>
|
||||
/// 群聊名称
|
||||
/// </summary>
|
||||
[Required(ErrorMessage = "群名称必填")]
|
||||
[MaxLength(20, ErrorMessage = "群名称不能大于20字符")]
|
||||
public string Name { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// 群头像
|
||||
/// </summary>
|
||||
[Required(ErrorMessage = "群头像必填")]
|
||||
public string Avatar { get; set; } = null!;
|
||||
public List<int>? UserIDs { get; set; }
|
||||
}
|
||||
}
|
||||
using IM_API.Models;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace IM_API.Dtos.Group
|
||||
{
|
||||
public class GroupCreateDto
|
||||
{
|
||||
/// <summary>
|
||||
/// 群聊名称
|
||||
/// </summary>
|
||||
[Required(ErrorMessage = "群名称必填")]
|
||||
[MaxLength(20, ErrorMessage = "群名称不能大于20字符")]
|
||||
public string Name { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// 群头像
|
||||
/// </summary>
|
||||
[Required(ErrorMessage = "群头像必填")]
|
||||
public string Avatar { get; set; } = null!;
|
||||
public List<int>? UserIDs { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,51 +1,51 @@
|
||||
using IM_API.Models;
|
||||
|
||||
namespace IM_API.Dtos.Group
|
||||
{
|
||||
public class GroupInfoDto
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 群聊名称
|
||||
/// </summary>
|
||||
public string Name { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// 群主
|
||||
/// </summary>
|
||||
public int GroupMaster { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 群权限
|
||||
/// (0:需管理员同意,1:任意人可加群,2:不允许任何人加入)
|
||||
/// </summary>
|
||||
public GroupAuhority Auhority { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 全员禁言(0允许发言,2全员禁言)
|
||||
/// </summary>
|
||||
public GroupAllMembersBanned AllMembersBanned { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 群聊状态
|
||||
/// (1:正常,2:封禁)
|
||||
/// </summary>
|
||||
public GroupStatus Status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 群公告
|
||||
/// </summary>
|
||||
public string? Announcement { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 群聊创建时间
|
||||
/// </summary>
|
||||
public DateTimeOffset Created { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 群头像
|
||||
/// </summary>
|
||||
public string Avatar { get; set; } = null!;
|
||||
}
|
||||
}
|
||||
using IM_API.Models;
|
||||
|
||||
namespace IM_API.Dtos.Group
|
||||
{
|
||||
public class GroupInfoDto
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 群聊名称
|
||||
/// </summary>
|
||||
public string Name { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// 群主
|
||||
/// </summary>
|
||||
public int GroupMaster { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 群权限
|
||||
/// (0:需管理员同意,1:任意人可加群,2:不允许任何人加入)
|
||||
/// </summary>
|
||||
public GroupAuhority Auhority { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 全员禁言(0允许发言,2全员禁言)
|
||||
/// </summary>
|
||||
public GroupAllMembersBanned AllMembersBanned { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 群聊状态
|
||||
/// (1:正常,2:封禁)
|
||||
/// </summary>
|
||||
public GroupStatus Status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 群公告
|
||||
/// </summary>
|
||||
public string? Announcement { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 群聊创建时间
|
||||
/// </summary>
|
||||
public DateTimeOffset Created { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 群头像
|
||||
/// </summary>
|
||||
public string Avatar { get; set; } = null!;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
namespace IM_API.Dtos.Group
|
||||
{
|
||||
public class GroupInviteUserDto
|
||||
{
|
||||
public int GroupId { get; set; }
|
||||
public List<int> Ids { get; set; }
|
||||
}
|
||||
}
|
||||
namespace IM_API.Dtos.Group
|
||||
{
|
||||
public class GroupInviteUserDto
|
||||
{
|
||||
public int GroupId { get; set; }
|
||||
public List<int> Ids { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
namespace IM_API.Dtos.Group
|
||||
{
|
||||
public class GroupUpdateConversationDto
|
||||
{
|
||||
public int GroupId { get; set; }
|
||||
public long MaxSequenceId { get; set; }
|
||||
public string LastMessage { get; set; }
|
||||
public string LastSenderName { get; set; }
|
||||
public DateTimeOffset LastUpdateTime { get; set; }
|
||||
}
|
||||
}
|
||||
namespace IM_API.Dtos.Group
|
||||
{
|
||||
public class GroupUpdateConversationDto
|
||||
{
|
||||
public int GroupId { get; set; }
|
||||
public long MaxSequenceId { get; set; }
|
||||
public string LastMessage { get; set; }
|
||||
public string LastSenderName { get; set; }
|
||||
public DateTimeOffset LastUpdateTime { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
using IM_API.Models;
|
||||
|
||||
namespace IM_API.Dtos.Group
|
||||
{
|
||||
public class HandleGroupInviteDto
|
||||
{
|
||||
public int InviteId { get; set; }
|
||||
public GroupInviteState Action { get; set; }
|
||||
}
|
||||
}
|
||||
using IM_API.Models;
|
||||
|
||||
namespace IM_API.Dtos.Group
|
||||
{
|
||||
public class HandleGroupInviteDto
|
||||
{
|
||||
public int InviteId { get; set; }
|
||||
public GroupInviteState Action { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
using IM_API.Models;
|
||||
|
||||
namespace IM_API.Dtos.Group
|
||||
{
|
||||
public class HandleGroupRequestDto
|
||||
{
|
||||
public int RequestId { get; set; }
|
||||
public GroupRequestState Action { get; set; }
|
||||
}
|
||||
}
|
||||
using IM_API.Models;
|
||||
|
||||
namespace IM_API.Dtos.Group
|
||||
{
|
||||
public class HandleGroupRequestDto
|
||||
{
|
||||
public int RequestId { get; set; }
|
||||
public GroupRequestState Action { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,49 +1,49 @@
|
||||
using IM_API.Tools;
|
||||
|
||||
namespace IM_API.Dtos
|
||||
{
|
||||
public class HubResponse<T>
|
||||
{
|
||||
public int Code { get; init; }
|
||||
public string Method { get; init; }
|
||||
public HubResponseType Type { get; init; }
|
||||
public string Message { get; init; }
|
||||
public T? Data { get; init; }
|
||||
public HubResponse(string method)
|
||||
{
|
||||
Code = CodeDefine.SUCCESS.Code;
|
||||
Message = CodeDefine.SUCCESS.Message;
|
||||
Type = HubResponseType.ActionStatus;
|
||||
Method = method;
|
||||
}
|
||||
public HubResponse(string method,T data)
|
||||
{
|
||||
Code = CodeDefine.SUCCESS.Code;
|
||||
Message = CodeDefine.SUCCESS.Message;
|
||||
Type = HubResponseType.ActionStatus;
|
||||
Data = data;
|
||||
Method = method;
|
||||
}
|
||||
public HubResponse(CodeDefine codedefine,string method)
|
||||
{
|
||||
Code = codedefine.Code;
|
||||
Method = method;
|
||||
Message = codedefine.Message;
|
||||
Type = HubResponseType.ActionStatus;
|
||||
}
|
||||
public HubResponse(CodeDefine codeDefine, string method, HubResponseType type, T? data)
|
||||
{
|
||||
Code = codeDefine.Code;
|
||||
Method = method;
|
||||
Type = type;
|
||||
Message = codeDefine.Message;
|
||||
Data = data;
|
||||
}
|
||||
}
|
||||
public enum HubResponseType
|
||||
{
|
||||
ChatMsg = 1, // 聊天内容
|
||||
SystemNotice = 2, // 系统通知(如:申请好友成功)
|
||||
ActionStatus = 3 // 状态变更(如:对方正在输入、已读回执)
|
||||
}
|
||||
}
|
||||
using IM_API.Tools;
|
||||
|
||||
namespace IM_API.Dtos
|
||||
{
|
||||
public class HubResponse<T>
|
||||
{
|
||||
public int Code { get; init; }
|
||||
public string Method { get; init; }
|
||||
public HubResponseType Type { get; init; }
|
||||
public string Message { get; init; }
|
||||
public T? Data { get; init; }
|
||||
public HubResponse(string method)
|
||||
{
|
||||
Code = CodeDefine.SUCCESS.Code;
|
||||
Message = CodeDefine.SUCCESS.Message;
|
||||
Type = HubResponseType.ActionStatus;
|
||||
Method = method;
|
||||
}
|
||||
public HubResponse(string method,T data)
|
||||
{
|
||||
Code = CodeDefine.SUCCESS.Code;
|
||||
Message = CodeDefine.SUCCESS.Message;
|
||||
Type = HubResponseType.ActionStatus;
|
||||
Data = data;
|
||||
Method = method;
|
||||
}
|
||||
public HubResponse(CodeDefine codedefine,string method)
|
||||
{
|
||||
Code = codedefine.Code;
|
||||
Method = method;
|
||||
Message = codedefine.Message;
|
||||
Type = HubResponseType.ActionStatus;
|
||||
}
|
||||
public HubResponse(CodeDefine codeDefine, string method, HubResponseType type, T? data)
|
||||
{
|
||||
Code = codeDefine.Code;
|
||||
Method = method;
|
||||
Type = type;
|
||||
Message = codeDefine.Message;
|
||||
Data = data;
|
||||
}
|
||||
}
|
||||
public enum HubResponseType
|
||||
{
|
||||
ChatMsg = 1, // 聊天内容
|
||||
SystemNotice = 2, // 系统通知(如:申请好友成功)
|
||||
ActionStatus = 3 // 状态变更(如:对方正在输入、已读回执)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace IM_API.Dtos.Message
|
||||
{
|
||||
public class MessageQueryDto
|
||||
{
|
||||
[Required(ErrorMessage = "会话ID必填")]
|
||||
public int ConversationId { get; set; }
|
||||
|
||||
// 锚点序号(如果为空,说明是第一次进聊天框,拉最新的)
|
||||
public long? Cursor { get; set; }
|
||||
|
||||
// 查询方向:0 - 查旧(Before), 1 - 查新(After)
|
||||
public int Direction { get; set; } = 0;
|
||||
|
||||
public int Limit { get; set; } = 20;
|
||||
}
|
||||
}
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace IM_API.Dtos.Message
|
||||
{
|
||||
public class MessageQueryDto
|
||||
{
|
||||
[Required(ErrorMessage = "会话ID必填")]
|
||||
public int ConversationId { get; set; }
|
||||
|
||||
// 锚点序号(如果为空,说明是第一次进聊天框,拉最新的)
|
||||
public long? Cursor { get; set; }
|
||||
|
||||
// 查询方向:0 - 查旧(Before), 1 - 查新(After)
|
||||
public int Direction { get; set; } = 0;
|
||||
|
||||
public int Limit { get; set; } = 20;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
using IM_API.Models;
|
||||
|
||||
namespace IM_API.Dtos
|
||||
{
|
||||
public record MessageBaseDto
|
||||
{
|
||||
// 使用 { get; init; } 确保对象创建后不可修改,且支持无参构造
|
||||
public MessageMsgType Type { get; init; } = default!;
|
||||
public ChatType ChatType { get; init; } = default!;
|
||||
public Guid MsgId { get; init; }
|
||||
public int SenderId { get; init; }
|
||||
public int ReceiverId { get; init; }
|
||||
public string Content { get; init; } = default!;
|
||||
public DateTimeOffset TimeStamp { get; init; }
|
||||
public MessageBaseDto() { }
|
||||
}
|
||||
}
|
||||
using IM_API.Models;
|
||||
|
||||
namespace IM_API.Dtos
|
||||
{
|
||||
public record MessageBaseDto
|
||||
{
|
||||
// 使用 { get; init; } 确保对象创建后不可修改,且支持无参构造
|
||||
public MessageMsgType Type { get; init; } = default!;
|
||||
public ChatType ChatType { get; init; } = default!;
|
||||
public Guid MsgId { get; init; }
|
||||
public int SenderId { get; init; }
|
||||
public int ReceiverId { get; init; }
|
||||
public string Content { get; init; } = default!;
|
||||
public DateTimeOffset TimeStamp { get; init; }
|
||||
public MessageBaseDto() { }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,66 +1,66 @@
|
||||
using IM_API.Tools;
|
||||
|
||||
namespace IM_API.Dtos
|
||||
{
|
||||
public class SignalRResponseDto
|
||||
{
|
||||
public string Type { get; set; }
|
||||
public string Message { get; set; }
|
||||
public int Code { get; set; }
|
||||
public string Status { get; set; }
|
||||
public SignalRResponseDto(SignalRResponseType type,CodeDefine codeDefine)
|
||||
{
|
||||
this.Type = type.ToString();
|
||||
this.Code = codeDefine.Code;
|
||||
this.Message = codeDefine.Message;
|
||||
this.Status = codeDefine.Message;
|
||||
}
|
||||
public SignalRResponseDto(SignalRResponseType type)
|
||||
{
|
||||
this.Type = type.ToString();
|
||||
this.Code = CodeDefine.SUCCESS.Code;
|
||||
this.Message = CodeDefine.SUCCESS.Message;
|
||||
this.Status = CodeDefine.SUCCESS.Message;
|
||||
}
|
||||
}
|
||||
|
||||
public enum SignalRResponseType
|
||||
{
|
||||
/// <summary>
|
||||
/// 消息
|
||||
/// </summary>
|
||||
MESSAGE = 0,
|
||||
/// <summary>
|
||||
/// 鉴权
|
||||
/// </summary>
|
||||
AUTH = 1,
|
||||
/// <summary>
|
||||
/// 心跳
|
||||
/// </summary>
|
||||
HEARTBEAT = 2,
|
||||
/// <summary>
|
||||
/// 消息回执
|
||||
/// </summary>
|
||||
MESSAGE_ACK = 3,
|
||||
/// <summary>
|
||||
/// 消息撤回
|
||||
/// </summary>
|
||||
MESSAGE_RECALL = 4,
|
||||
/// <summary>
|
||||
/// 好友请求
|
||||
/// </summary>
|
||||
FRIEND_REQUEST = 5,
|
||||
/// <summary>
|
||||
/// 群邀请
|
||||
/// </summary>
|
||||
GROUP_INVITE = 6,
|
||||
/// <summary>
|
||||
/// 系统通知
|
||||
/// </summary>
|
||||
SYSTEM_NOTICE = 7,
|
||||
/// <summary>
|
||||
/// 错误
|
||||
/// </summary>
|
||||
ERROR = 8
|
||||
}
|
||||
}
|
||||
using IM_API.Tools;
|
||||
|
||||
namespace IM_API.Dtos
|
||||
{
|
||||
public class SignalRResponseDto
|
||||
{
|
||||
public string Type { get; set; }
|
||||
public string Message { get; set; }
|
||||
public int Code { get; set; }
|
||||
public string Status { get; set; }
|
||||
public SignalRResponseDto(SignalRResponseType type,CodeDefine codeDefine)
|
||||
{
|
||||
this.Type = type.ToString();
|
||||
this.Code = codeDefine.Code;
|
||||
this.Message = codeDefine.Message;
|
||||
this.Status = codeDefine.Message;
|
||||
}
|
||||
public SignalRResponseDto(SignalRResponseType type)
|
||||
{
|
||||
this.Type = type.ToString();
|
||||
this.Code = CodeDefine.SUCCESS.Code;
|
||||
this.Message = CodeDefine.SUCCESS.Message;
|
||||
this.Status = CodeDefine.SUCCESS.Message;
|
||||
}
|
||||
}
|
||||
|
||||
public enum SignalRResponseType
|
||||
{
|
||||
/// <summary>
|
||||
/// 消息
|
||||
/// </summary>
|
||||
MESSAGE = 0,
|
||||
/// <summary>
|
||||
/// 鉴权
|
||||
/// </summary>
|
||||
AUTH = 1,
|
||||
/// <summary>
|
||||
/// 心跳
|
||||
/// </summary>
|
||||
HEARTBEAT = 2,
|
||||
/// <summary>
|
||||
/// 消息回执
|
||||
/// </summary>
|
||||
MESSAGE_ACK = 3,
|
||||
/// <summary>
|
||||
/// 消息撤回
|
||||
/// </summary>
|
||||
MESSAGE_RECALL = 4,
|
||||
/// <summary>
|
||||
/// 好友请求
|
||||
/// </summary>
|
||||
FRIEND_REQUEST = 5,
|
||||
/// <summary>
|
||||
/// 群邀请
|
||||
/// </summary>
|
||||
GROUP_INVITE = 6,
|
||||
/// <summary>
|
||||
/// 系统通知
|
||||
/// </summary>
|
||||
SYSTEM_NOTICE = 7,
|
||||
/// <summary>
|
||||
/// 错误
|
||||
/// </summary>
|
||||
ERROR = 8
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
namespace IM_API.Dtos
|
||||
{
|
||||
public class TestDto
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
}
|
||||
}
|
||||
namespace IM_API.Dtos
|
||||
{
|
||||
public class TestDto
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace IM_API.Dtos.User
|
||||
{
|
||||
public class UpdateUserDto
|
||||
{
|
||||
[MaxLength(20, ErrorMessage = "昵称不能超过50字符")]
|
||||
public string? NickName { get; set; }
|
||||
public string? Avatar { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace IM_API.Dtos.User
|
||||
{
|
||||
public class UpdateUserDto
|
||||
{
|
||||
[MaxLength(20, ErrorMessage = "昵称不能超过50字符")]
|
||||
public string? NickName { get; set; }
|
||||
public string? Avatar { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
using IM_API.Models;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace IM_API.Dtos.User
|
||||
{
|
||||
public record PasswordResetDto
|
||||
{
|
||||
[Required(ErrorMessage = "旧密码不能为空")]
|
||||
public string OldPassword { get; init; }
|
||||
|
||||
[Required(ErrorMessage = "新密码不能为空")]
|
||||
[MaxLength(50, ErrorMessage = "密码不能超过50个字符")]
|
||||
public string Password { get; init; }
|
||||
}
|
||||
|
||||
public record OnlineStatusSetDto
|
||||
{
|
||||
[Required]
|
||||
public UserOnlineStatus OnlineStatus { get; init; }
|
||||
}
|
||||
}
|
||||
using IM_API.Models;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace IM_API.Dtos.User
|
||||
{
|
||||
public record PasswordResetDto
|
||||
{
|
||||
[Required(ErrorMessage = "旧密码不能为空")]
|
||||
public string OldPassword { get; init; }
|
||||
|
||||
[Required(ErrorMessage = "新密码不能为空")]
|
||||
[MaxLength(50, ErrorMessage = "密码不能超过50个字符")]
|
||||
public string Password { get; init; }
|
||||
}
|
||||
|
||||
public record OnlineStatusSetDto
|
||||
{
|
||||
[Required]
|
||||
public UserOnlineStatus OnlineStatus { get; init; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,43 +1,43 @@
|
||||
using IM_API.Models;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace IM_API.Dtos.User
|
||||
{
|
||||
public class UserInfoDto
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 唯一用户名
|
||||
/// </summary>
|
||||
public string Username { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 用户昵称
|
||||
/// </summary>
|
||||
public string NickName { get; set; }
|
||||
/// <summary>
|
||||
/// 用户头像
|
||||
/// </summary>
|
||||
public string? Avatar { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 用户在线状态
|
||||
/// 0(默认):不在线
|
||||
/// 1:在线
|
||||
/// </summary>
|
||||
public UserOnlineStatus OnlineStatusEnum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
public DateTimeOffset Created { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 账户状态
|
||||
/// (0:未激活,1:正常,2:封禁)
|
||||
/// </summary>
|
||||
public UserStatus StatusEnum { get; set; }
|
||||
}
|
||||
}
|
||||
using IM_API.Models;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace IM_API.Dtos.User
|
||||
{
|
||||
public class UserInfoDto
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 唯一用户名
|
||||
/// </summary>
|
||||
public string Username { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 用户昵称
|
||||
/// </summary>
|
||||
public string NickName { get; set; }
|
||||
/// <summary>
|
||||
/// 用户头像
|
||||
/// </summary>
|
||||
public string? Avatar { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 用户在线状态
|
||||
/// 0(默认):不在线
|
||||
/// 1:在线
|
||||
/// </summary>
|
||||
public UserOnlineStatus OnlineStatusEnum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
public DateTimeOffset Created { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 账户状态
|
||||
/// (0:未激活,1:正常,2:封禁)
|
||||
/// </summary>
|
||||
public UserStatus StatusEnum { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user