Merge pull request 'feature-nxdev' (#15) from feature-nxdev into main
Reviewed-on: #15
This commit is contained in:
commit
7495c14905
@ -27,6 +27,6 @@ namespace IM_API.Interface.Services
|
||||
/// <param name="page"></param>
|
||||
/// <param name="limit"></param>
|
||||
/// <returns></returns>
|
||||
Task<Friendrequest> GetFriendRequestListAsync(int userId,bool isReceived,int page,int limit);
|
||||
Task<FriendRequest> GetFriendRequestListAsync(int userId,bool isReceived,int page,int limit);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,58 +1,41 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace IM_API.Models;
|
||||
|
||||
[Table("admins")]
|
||||
[Index("RoleId", Name = "RoleId")]
|
||||
[MySqlCharSet("utf8mb4")]
|
||||
[MySqlCollation("utf8mb4_general_ci")]
|
||||
public partial class Admin
|
||||
{
|
||||
[Key]
|
||||
[Column("ID", TypeName = "int(11)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 用户名
|
||||
/// </summary>
|
||||
[StringLength(50)]
|
||||
public string Username { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// 密码
|
||||
/// </summary>
|
||||
[StringLength(50)]
|
||||
public string Password { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// 角色
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int RoleId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 状态(0:正常,2:封禁)
|
||||
/// </summary>
|
||||
[Column(TypeName = "tinyint(4)")]
|
||||
public sbyte State { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
[Column(TypeName = "datetime")]
|
||||
public DateTime Created { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 更新时间
|
||||
/// </summary>
|
||||
[Column(TypeName = "datetime")]
|
||||
public DateTime Updated { get; set; }
|
||||
|
||||
[ForeignKey("RoleId")]
|
||||
[InverseProperty("Admins")]
|
||||
public virtual Role Role { get; set; } = null!;
|
||||
}
|
||||
|
||||
11
backend/IM_API/Models/AdminExt.cs
Normal file
11
backend/IM_API/Models/AdminExt.cs
Normal file
@ -0,0 +1,11 @@
|
||||
namespace IM_API.Models
|
||||
{
|
||||
public partial class Admin
|
||||
{
|
||||
public AdminState StateEnum
|
||||
{
|
||||
get => (AdminState)State;
|
||||
set => State = (sbyte)value;
|
||||
}
|
||||
}
|
||||
}
|
||||
8
backend/IM_API/Models/AdminState.cs
Normal file
8
backend/IM_API/Models/AdminState.cs
Normal file
@ -0,0 +1,8 @@
|
||||
namespace IM_API.Models
|
||||
{
|
||||
public enum AdminState
|
||||
{
|
||||
Normal = 0,
|
||||
Blocked = 2
|
||||
}
|
||||
}
|
||||
@ -1,57 +1,38 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace IM_API.Models;
|
||||
|
||||
[Table("conversations")]
|
||||
[Index("Userid", Name = "Userid")]
|
||||
[Index("LastMessageId", Name = "lastMessageId")]
|
||||
[MySqlCharSet("utf8mb4")]
|
||||
[MySqlCollation("utf8mb4_general_ci")]
|
||||
public partial class Conversation
|
||||
{
|
||||
[Key]
|
||||
[Column("ID", TypeName = "int(11)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 用户
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int Userid { get; set; }
|
||||
public int UserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 对方ID(群聊为群聊ID,单聊为单聊ID)
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int Targetid { get; set; }
|
||||
public int TargetId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 消息类型(同Messages.MsgType)
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int MsgType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最后一条消息ID
|
||||
/// </summary>
|
||||
[Column("lastMessageId", TypeName = "int(11)")]
|
||||
public int LastMessageId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 未读消息数
|
||||
/// </summary>
|
||||
[Column("unreadCount", TypeName = "int(11)")]
|
||||
public int UnreadCount { get; set; }
|
||||
|
||||
[ForeignKey("LastMessageId")]
|
||||
[InverseProperty("Conversations")]
|
||||
public virtual Message LastMessage { get; set; } = null!;
|
||||
|
||||
[ForeignKey("Userid")]
|
||||
[InverseProperty("Conversations")]
|
||||
public virtual User User { get; set; } = null!;
|
||||
}
|
||||
|
||||
@ -1,41 +1,27 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace IM_API.Models;
|
||||
|
||||
[Table("devices")]
|
||||
[Index("Userid", Name = "Userid")]
|
||||
[MySqlCharSet("utf8mb4")]
|
||||
[MySqlCollation("utf8mb4_general_ci")]
|
||||
public partial class Device
|
||||
{
|
||||
[Key]
|
||||
[Column("ID", TypeName = "int(11)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 设备所属用户
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int Userid { get; set; }
|
||||
public int UserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 设备类型(
|
||||
/// 0:Android,1:Ios,2:PC,3:Pad,4:未知)
|
||||
/// </summary>
|
||||
[Column("DType", TypeName = "tinyint(4)")]
|
||||
public sbyte Dtype { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最后一次登录
|
||||
/// </summary>
|
||||
[Column(TypeName = "datetime")]
|
||||
public DateTime LastLogin { get; set; }
|
||||
|
||||
[ForeignKey("Userid")]
|
||||
[InverseProperty("Devices")]
|
||||
public virtual User User { get; set; } = null!;
|
||||
}
|
||||
|
||||
26
backend/IM_API/Models/DeviceDtype.cs
Normal file
26
backend/IM_API/Models/DeviceDtype.cs
Normal file
@ -0,0 +1,26 @@
|
||||
namespace IM_API.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// 设备类型枚举
|
||||
/// </summary>
|
||||
public enum DeviceDtype
|
||||
{
|
||||
/// <summary>
|
||||
/// 安卓端
|
||||
/// </summary>
|
||||
ANDROID = 0,
|
||||
/// <summary>
|
||||
/// IOS端
|
||||
/// </summary>
|
||||
IOS = 1,
|
||||
/// <summary>
|
||||
/// PC
|
||||
/// </summary>
|
||||
PC = 2,
|
||||
PAD = 3,
|
||||
/// <summary>
|
||||
/// 未知端
|
||||
/// </summary>
|
||||
OTHER = 4
|
||||
}
|
||||
}
|
||||
11
backend/IM_API/Models/DeviceExt.cs
Normal file
11
backend/IM_API/Models/DeviceExt.cs
Normal file
@ -0,0 +1,11 @@
|
||||
namespace IM_API.Models
|
||||
{
|
||||
public partial class Device
|
||||
{
|
||||
public DeviceDtype DtypeEnum
|
||||
{
|
||||
get => (DeviceDtype)Dtype;
|
||||
set => Dtype = (sbyte)value;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,59 +1,41 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace IM_API.Models;
|
||||
|
||||
[Table("files")]
|
||||
[Index("Messageld", Name = "Messageld")]
|
||||
[MySqlCharSet("utf8mb4")]
|
||||
[MySqlCollation("utf8mb4_general_ci")]
|
||||
public partial class File
|
||||
{
|
||||
[Key]
|
||||
[Column("ID", TypeName = "int(11)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 文件名
|
||||
/// </summary>
|
||||
[StringLength(50)]
|
||||
public string Name { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// 文件储存URL
|
||||
/// </summary>
|
||||
[Column("URL")]
|
||||
[StringLength(100)]
|
||||
public string Url { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// 文件大小(单位:KB)
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int Size { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 文件类型
|
||||
/// </summary>
|
||||
[StringLength(10)]
|
||||
public string Type { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// 关联消息ID
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int Messageld { get; set; }
|
||||
public int MessageId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
[Column(TypeName = "datetime")]
|
||||
public DateTime Created { get; set; }
|
||||
|
||||
[ForeignKey("Messageld")]
|
||||
[InverseProperty("Files")]
|
||||
public virtual Message MessageldNavigation { get; set; } = null!;
|
||||
public virtual Message Message { get; set; } = null!;
|
||||
}
|
||||
|
||||
@ -1,53 +1,34 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace IM_API.Models;
|
||||
|
||||
[Table("friends")]
|
||||
[Index("Id", Name = "ID")]
|
||||
[Index("Userld", "Friendld", Name = "Userld")]
|
||||
[Index("Friendld", Name = "用户2id")]
|
||||
[MySqlCharSet("utf8mb4")]
|
||||
[MySqlCollation("utf8mb4_general_ci")]
|
||||
public partial class Friend
|
||||
{
|
||||
[Key]
|
||||
[Column("ID", TypeName = "int(11)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 用户ID
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int Userld { get; set; }
|
||||
public int UserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 用户2ID
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int Friendld { get; set; }
|
||||
public int FriendId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前好友关系状态
|
||||
/// (0:待通过,1:已添加,2:已拒绝,3:已拉黑)
|
||||
/// </summary>
|
||||
[Column(TypeName = "tinyint(4)")]
|
||||
public sbyte Status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 好友关系创建时间
|
||||
/// </summary>
|
||||
[Column(TypeName = "datetime")]
|
||||
public DateTime Created { get; set; }
|
||||
|
||||
[ForeignKey("Friendld")]
|
||||
[InverseProperty("FriendFriendldNavigations")]
|
||||
public virtual User FriendldNavigation { get; set; } = null!;
|
||||
public virtual User FriendNavigation { get; set; } = null!;
|
||||
|
||||
[ForeignKey("Userld")]
|
||||
[InverseProperty("FriendUserldNavigations")]
|
||||
public virtual User UserldNavigation { get; set; } = null!;
|
||||
public virtual User User { get; set; } = null!;
|
||||
}
|
||||
|
||||
11
backend/IM_API/Models/FriendExt.cs
Normal file
11
backend/IM_API/Models/FriendExt.cs
Normal file
@ -0,0 +1,11 @@
|
||||
namespace IM_API.Models
|
||||
{
|
||||
public partial class Friend
|
||||
{
|
||||
public FriendStatus StatusEnum
|
||||
{
|
||||
get => (FriendStatus)Status;
|
||||
set => Status = (sbyte)value;
|
||||
}
|
||||
}
|
||||
}
|
||||
11
backend/IM_API/Models/FriendRequestExt.cs
Normal file
11
backend/IM_API/Models/FriendRequestExt.cs
Normal file
@ -0,0 +1,11 @@
|
||||
namespace IM_API.Models
|
||||
{
|
||||
public partial class FriendRequest
|
||||
{
|
||||
public FriendRequestState StateEnum
|
||||
{
|
||||
get => (FriendRequestState)State;
|
||||
set => State = (sbyte)value;
|
||||
}
|
||||
}
|
||||
}
|
||||
25
backend/IM_API/Models/FriendRequestState.cs
Normal file
25
backend/IM_API/Models/FriendRequestState.cs
Normal file
@ -0,0 +1,25 @@
|
||||
namespace IM_API.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// 好友请求状态
|
||||
/// </summary>
|
||||
public enum FriendRequestState
|
||||
{
|
||||
/// <summary>
|
||||
/// 待处理
|
||||
/// </summary>
|
||||
Pending = 0,
|
||||
/// <summary>
|
||||
/// 已通过
|
||||
/// </summary>
|
||||
Passed = 2,
|
||||
/// <summary>
|
||||
/// 已拒绝
|
||||
/// </summary>
|
||||
Declined = 1,
|
||||
/// <summary>
|
||||
/// 拉黑
|
||||
/// </summary>
|
||||
Blocked = 3
|
||||
}
|
||||
}
|
||||
@ -1,7 +1,25 @@
|
||||
namespace IM_API.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// 好友关系状态
|
||||
/// </summary>
|
||||
public enum FriendStatus:SByte
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 待处理
|
||||
/// </summary>
|
||||
Pending = 0,
|
||||
/// <summary>
|
||||
/// 已添加
|
||||
/// </summary>
|
||||
Added = 1,
|
||||
/// <summary>
|
||||
/// 已拒绝
|
||||
/// </summary>
|
||||
Declined = 2,
|
||||
/// <summary>
|
||||
/// 已拉黑
|
||||
/// </summary>
|
||||
Blocked = 3
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,57 +1,38 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace IM_API.Models;
|
||||
|
||||
[Table("friendrequest")]
|
||||
[Index("RequestUser", Name = "RequestUser")]
|
||||
[Index("ResponseUser", Name = "ResponseUser")]
|
||||
[MySqlCharSet("utf8mb4")]
|
||||
[MySqlCollation("utf8mb4_general_ci")]
|
||||
public partial class Friendrequest
|
||||
public partial class FriendRequest
|
||||
{
|
||||
[Key]
|
||||
[Column("ID", TypeName = "int(11)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 申请人
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int RequestUser { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 被申请人
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int ResponseUser { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 申请时间
|
||||
/// </summary>
|
||||
[Column(TypeName = "datetime")]
|
||||
public DateTime Created { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 申请附言
|
||||
/// </summary>
|
||||
[Column(TypeName = "text")]
|
||||
public string? Description { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 申请状态(0:待通过,1:拒绝,2:同意,3:拉黑)
|
||||
/// </summary>
|
||||
[Column(TypeName = "tinyint(4)")]
|
||||
public sbyte State { get; set; }
|
||||
|
||||
[ForeignKey("RequestUser")]
|
||||
[InverseProperty("FriendrequestRequestUserNavigations")]
|
||||
public virtual User RequestUserNavigation { get; set; } = null!;
|
||||
|
||||
[ForeignKey("ResponseUser")]
|
||||
[InverseProperty("FriendrequestResponseUserNavigations")]
|
||||
public virtual User ResponseUserNavigation { get; set; } = null!;
|
||||
}
|
||||
|
||||
@ -1,73 +1,52 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace IM_API.Models;
|
||||
|
||||
[Table("groups")]
|
||||
[Index("GroupMaster", Name = "GroupMaster")]
|
||||
[Index("Id", Name = "ID")]
|
||||
[MySqlCharSet("utf8mb4")]
|
||||
[MySqlCollation("utf8mb4_general_ci")]
|
||||
public partial class Group
|
||||
{
|
||||
[Key]
|
||||
[Column("ID", TypeName = "int(11)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 群聊名称
|
||||
/// </summary>
|
||||
[StringLength(20)]
|
||||
public string Name { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// 群主
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int GroupMaster { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 群权限
|
||||
/// (0:需管理员同意,1:任意人可加群,2:不允许任何人加入)
|
||||
/// </summary>
|
||||
[Column(TypeName = "tinyint(4)")]
|
||||
public sbyte Auhority { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 全员禁言(0允许发言,2全员禁言)
|
||||
/// </summary>
|
||||
[Column(TypeName = "tinyint(4)")]
|
||||
public sbyte AllMembersBanned { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 群聊状态
|
||||
/// (1:正常,2:封禁)
|
||||
/// </summary>
|
||||
[Column(TypeName = "tinyint(4)")]
|
||||
public sbyte Status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 群公告
|
||||
/// </summary>
|
||||
[Column(TypeName = "text")]
|
||||
public string? Announcement { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 群聊创建时间
|
||||
/// </summary>
|
||||
[Column(TypeName = "datetime")]
|
||||
public DateTime Created { get; set; }
|
||||
|
||||
[ForeignKey("GroupMaster")]
|
||||
[InverseProperty("Groups")]
|
||||
public virtual ICollection<GroupInvite> GroupInvites { get; set; } = new List<GroupInvite>();
|
||||
|
||||
public virtual User GroupMasterNavigation { get; set; } = null!;
|
||||
|
||||
[InverseProperty("Group")]
|
||||
public virtual ICollection<Groupinvite> Groupinvites { get; set; } = new List<Groupinvite>();
|
||||
|
||||
[InverseProperty("Group")]
|
||||
public virtual ICollection<Grouprequest> Grouprequests { get; set; } = new List<Grouprequest>();
|
||||
public virtual ICollection<GroupRequest> GroupRequests { get; set; } = new List<GroupRequest>();
|
||||
}
|
||||
|
||||
14
backend/IM_API/Models/GroupAllMembersBanned.cs
Normal file
14
backend/IM_API/Models/GroupAllMembersBanned.cs
Normal file
@ -0,0 +1,14 @@
|
||||
namespace IM_API.Models
|
||||
{
|
||||
public enum GroupAllMembersBanned
|
||||
{
|
||||
/// <summary>
|
||||
/// 可发言
|
||||
/// </summary>
|
||||
ALLOWED = 0,
|
||||
/// <summary>
|
||||
/// 全员禁言
|
||||
/// </summary>
|
||||
BANNED = 2
|
||||
}
|
||||
}
|
||||
22
backend/IM_API/Models/GroupAuhority.cs
Normal file
22
backend/IM_API/Models/GroupAuhority.cs
Normal file
@ -0,0 +1,22 @@
|
||||
namespace IM_API.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// 群加入权限
|
||||
/// </summary>
|
||||
public enum GroupAuhority
|
||||
{
|
||||
/// <summary>
|
||||
/// 需管理员同意
|
||||
/// </summary>
|
||||
REQUIRE_CONSENT = 0,
|
||||
/// <summary>
|
||||
/// 任何人可加入
|
||||
/// </summary>
|
||||
ANYONE_CAN_JOIN = 1,
|
||||
/// <summary>
|
||||
/// 不允许加入
|
||||
/// </summary>
|
||||
NOT_ALLOWED_TO_JOIN = 2
|
||||
|
||||
}
|
||||
}
|
||||
21
backend/IM_API/Models/GroupExt.cs
Normal file
21
backend/IM_API/Models/GroupExt.cs
Normal file
@ -0,0 +1,21 @@
|
||||
namespace IM_API.Models
|
||||
{
|
||||
public partial class Group
|
||||
{
|
||||
public GroupAuhority AuhorityEnum
|
||||
{
|
||||
get => (GroupAuhority)Auhority;
|
||||
set => Auhority = (sbyte) value;
|
||||
}
|
||||
public GroupAllMembersBanned AllMembersBannedEnum
|
||||
{
|
||||
get => (GroupAllMembersBanned)AllMembersBanned;
|
||||
set => AllMembersBanned = (sbyte)value;
|
||||
}
|
||||
public GroupStatus StatusEnum
|
||||
{
|
||||
get => (GroupStatus)Status;
|
||||
set => Status = (sbyte)value;
|
||||
}
|
||||
}
|
||||
}
|
||||
11
backend/IM_API/Models/GroupInviteExt.cs
Normal file
11
backend/IM_API/Models/GroupInviteExt.cs
Normal file
@ -0,0 +1,11 @@
|
||||
namespace IM_API.Models
|
||||
{
|
||||
public partial class GroupInvite
|
||||
{
|
||||
public GroupInviteState StateEnum
|
||||
{
|
||||
get => (GroupInviteState)State;
|
||||
set => State = (sbyte)value;
|
||||
}
|
||||
}
|
||||
}
|
||||
17
backend/IM_API/Models/GroupInviteState.cs
Normal file
17
backend/IM_API/Models/GroupInviteState.cs
Normal file
@ -0,0 +1,17 @@
|
||||
namespace IM_API.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// 群邀请状态
|
||||
/// </summary>
|
||||
public enum GroupInviteState
|
||||
{
|
||||
/// <summary>
|
||||
/// 待处理
|
||||
/// </summary>
|
||||
Pending = 0,
|
||||
/// <summary>
|
||||
/// 已同意
|
||||
/// </summary>
|
||||
Passed = 1
|
||||
}
|
||||
}
|
||||
11
backend/IM_API/Models/GroupMemberExt.cs
Normal file
11
backend/IM_API/Models/GroupMemberExt.cs
Normal file
@ -0,0 +1,11 @@
|
||||
namespace IM_API.Models
|
||||
{
|
||||
public partial class GroupMember
|
||||
{
|
||||
public GroupMemberRole RoleEnum
|
||||
{
|
||||
get => (GroupMemberRole)Role;
|
||||
set => Role = (sbyte)value;
|
||||
}
|
||||
}
|
||||
}
|
||||
18
backend/IM_API/Models/GroupMemberRole.cs
Normal file
18
backend/IM_API/Models/GroupMemberRole.cs
Normal file
@ -0,0 +1,18 @@
|
||||
namespace IM_API.Models
|
||||
{
|
||||
public enum GroupMemberRole
|
||||
{
|
||||
/// <summary>
|
||||
/// 普通成员
|
||||
/// </summary>
|
||||
Normal = 0,
|
||||
/// <summary>
|
||||
/// 管理员
|
||||
/// </summary>
|
||||
Administrator = 1,
|
||||
/// <summary>
|
||||
/// 群主
|
||||
/// </summary>
|
||||
Master = 2
|
||||
}
|
||||
}
|
||||
11
backend/IM_API/Models/GroupRequestExt.cs
Normal file
11
backend/IM_API/Models/GroupRequestExt.cs
Normal file
@ -0,0 +1,11 @@
|
||||
namespace IM_API.Models
|
||||
{
|
||||
public partial class GroupRequest
|
||||
{
|
||||
public GroupRequestState StateEnum
|
||||
{
|
||||
get => (GroupRequestState)State;
|
||||
set => State = (sbyte)value;
|
||||
}
|
||||
}
|
||||
}
|
||||
18
backend/IM_API/Models/GroupRequestState.cs
Normal file
18
backend/IM_API/Models/GroupRequestState.cs
Normal file
@ -0,0 +1,18 @@
|
||||
namespace IM_API.Models
|
||||
{
|
||||
public enum GroupRequestState
|
||||
{
|
||||
/// <summary>
|
||||
/// 待管理员处理
|
||||
/// </summary>
|
||||
Pending = 0,
|
||||
/// <summary>
|
||||
/// 已拒绝
|
||||
/// </summary>
|
||||
Declined = 1,
|
||||
/// <summary>
|
||||
/// 已同意
|
||||
/// </summary>
|
||||
Passed = 2
|
||||
}
|
||||
}
|
||||
14
backend/IM_API/Models/GroupStatus.cs
Normal file
14
backend/IM_API/Models/GroupStatus.cs
Normal file
@ -0,0 +1,14 @@
|
||||
namespace IM_API.Models
|
||||
{
|
||||
public enum GroupStatus
|
||||
{
|
||||
/// <summary>
|
||||
/// 正常
|
||||
/// </summary>
|
||||
Normal = 1,
|
||||
/// <summary>
|
||||
/// 封禁
|
||||
/// </summary>
|
||||
Blocked = 2
|
||||
}
|
||||
}
|
||||
@ -1,63 +1,41 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace IM_API.Models;
|
||||
|
||||
[Table("groupinvite")]
|
||||
[Index("GroupId", Name = "GroupId")]
|
||||
[Index("InviteUser", Name = "InviteUser")]
|
||||
[Index("InvitedUser", Name = "InvitedUser")]
|
||||
[MySqlCharSet("utf8mb4")]
|
||||
[MySqlCollation("utf8mb4_general_ci")]
|
||||
public partial class Groupinvite
|
||||
public partial class GroupInvite
|
||||
{
|
||||
[Key]
|
||||
[Column("ID", TypeName = "int(11)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 群聊编号
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int GroupId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 被邀请用户
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int? InvitedUser { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 邀请用户
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int? InviteUser { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前状态(0:待被邀请人同意
|
||||
/// 1:被邀请人已同意)
|
||||
/// </summary>
|
||||
[Column(TypeName = "tinyint(4)")]
|
||||
public sbyte? State { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
[Column(TypeName = "datetime")]
|
||||
public DateTime? Created { get; set; }
|
||||
|
||||
[ForeignKey("GroupId")]
|
||||
[InverseProperty("Groupinvites")]
|
||||
public virtual Group Group { get; set; } = null!;
|
||||
|
||||
[ForeignKey("InviteUser")]
|
||||
[InverseProperty("GroupinviteInviteUserNavigations")]
|
||||
public virtual User? InviteUserNavigation { get; set; }
|
||||
|
||||
[ForeignKey("InvitedUser")]
|
||||
[InverseProperty("GroupinviteInvitedUserNavigations")]
|
||||
public virtual User? InvitedUserNavigation { get; set; }
|
||||
}
|
||||
|
||||
@ -1,52 +1,32 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace IM_API.Models;
|
||||
|
||||
[Table("groupmember")]
|
||||
[Index("Groupld", Name = "Groupld")]
|
||||
[Index("Id", Name = "ID")]
|
||||
[Index("Userld", Name = "Userld")]
|
||||
[MySqlCharSet("utf8mb4")]
|
||||
[MySqlCollation("utf8mb4_general_ci")]
|
||||
public partial class Groupmember
|
||||
public partial class GroupMember
|
||||
{
|
||||
[Key]
|
||||
[Column("ID", TypeName = "int(11)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 用户编号
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int Userld { get; set; }
|
||||
public int UserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 群聊编号
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int Groupld { get; set; }
|
||||
public int GroupId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 成员角色(0:普通成员,1:管理员,2:群主)
|
||||
/// </summary>
|
||||
[Column(TypeName = "tinyint(4)")]
|
||||
public sbyte Role { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 加入群聊时间
|
||||
/// </summary>
|
||||
[Column(TypeName = "datetime")]
|
||||
public DateTime Created { get; set; }
|
||||
|
||||
[ForeignKey("Groupld")]
|
||||
[InverseProperty("GroupmemberGroupldNavigations")]
|
||||
public virtual User GroupldNavigation { get; set; } = null!;
|
||||
public virtual User Group { get; set; } = null!;
|
||||
|
||||
[ForeignKey("Userld")]
|
||||
[InverseProperty("GroupmemberUserldNavigations")]
|
||||
public virtual User UserldNavigation { get; set; } = null!;
|
||||
public virtual User User { get; set; } = null!;
|
||||
}
|
||||
|
||||
@ -1,57 +1,39 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace IM_API.Models;
|
||||
|
||||
[Table("grouprequest")]
|
||||
[Index("GroupId", Name = "GroupId")]
|
||||
[MySqlCharSet("utf8mb4")]
|
||||
[MySqlCollation("utf8mb4_general_ci")]
|
||||
public partial class Grouprequest
|
||||
public partial class GroupRequest
|
||||
{
|
||||
[Key]
|
||||
[Column("ID", TypeName = "int(11)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 群聊编号
|
||||
///
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int GroupId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 申请人
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int UserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 申请状态(0:待管理员同意,1:已拒绝,2:已同意)
|
||||
/// </summary>
|
||||
[Column(TypeName = "tinyint(4)")]
|
||||
public sbyte State { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入群附言
|
||||
/// </summary>
|
||||
[Column(TypeName = "text")]
|
||||
public string Description { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
[Column(TypeName = "datetime")]
|
||||
public DateTime Created { get; set; }
|
||||
|
||||
[ForeignKey("GroupId")]
|
||||
[InverseProperty("Grouprequests")]
|
||||
public virtual Group Group { get; set; } = null!;
|
||||
|
||||
[ForeignKey("GroupId")]
|
||||
[InverseProperty("Grouprequests")]
|
||||
public virtual User GroupNavigation { get; set; } = null!;
|
||||
}
|
||||
|
||||
@ -1,339 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pomelo.EntityFrameworkCore.MySql.Scaffolding.Internal;
|
||||
|
||||
namespace IM_API.Models;
|
||||
|
||||
public partial class IMDbContext : DbContext
|
||||
{
|
||||
public IMDbContext()
|
||||
{
|
||||
}
|
||||
|
||||
public IMDbContext(DbContextOptions<IMDbContext> options)
|
||||
: base(options)
|
||||
{
|
||||
}
|
||||
|
||||
public virtual DbSet<Admin> Admins { get; set; }
|
||||
|
||||
public virtual DbSet<Conversation> Conversations { get; set; }
|
||||
|
||||
public virtual DbSet<Device> Devices { get; set; }
|
||||
|
||||
public virtual DbSet<File> Files { get; set; }
|
||||
|
||||
public virtual DbSet<Friend> Friends { get; set; }
|
||||
|
||||
public virtual DbSet<Friendrequest> Friendrequests { get; set; }
|
||||
|
||||
public virtual DbSet<Group> Groups { get; set; }
|
||||
|
||||
public virtual DbSet<Groupinvite> Groupinvites { get; set; }
|
||||
|
||||
public virtual DbSet<Groupmember> Groupmembers { get; set; }
|
||||
|
||||
public virtual DbSet<Grouprequest> Grouprequests { get; set; }
|
||||
|
||||
public virtual DbSet<LoginLog> LoginLogs { get; set; }
|
||||
|
||||
public virtual DbSet<Message> Messages { get; set; }
|
||||
|
||||
public virtual DbSet<Notification> Notifications { get; set; }
|
||||
|
||||
public virtual DbSet<Permission> Permissions { get; set; }
|
||||
|
||||
public virtual DbSet<Permissionarole> Permissionaroles { get; set; }
|
||||
|
||||
public virtual DbSet<Role> Roles { get; set; }
|
||||
|
||||
public virtual DbSet<User> Users { get; set; }
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
modelBuilder
|
||||
.UseCollation("latin1_swedish_ci")
|
||||
.HasCharSet("latin1");
|
||||
|
||||
modelBuilder.Entity<Admin>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity.Property(e => e.Created).HasComment("创建时间 ");
|
||||
entity.Property(e => e.Password).HasComment("密码");
|
||||
entity.Property(e => e.RoleId).HasComment("角色");
|
||||
entity.Property(e => e.State).HasComment("状态(0:正常,2:封禁) ");
|
||||
entity.Property(e => e.Updated).HasComment("更新时间 ");
|
||||
entity.Property(e => e.Username).HasComment("用户名");
|
||||
|
||||
entity.HasOne(d => d.Role).WithMany(p => p.Admins)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("admins_ibfk_1");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<Conversation>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity.Property(e => e.LastMessageId).HasComment("最后一条消息ID ");
|
||||
entity.Property(e => e.MsgType).HasComment("消息类型(同Messages.MsgType) ");
|
||||
entity.Property(e => e.Targetid).HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) ");
|
||||
entity.Property(e => e.UnreadCount).HasComment("未读消息数 ");
|
||||
entity.Property(e => e.Userid).HasComment("用户");
|
||||
|
||||
entity.HasOne(d => d.LastMessage).WithMany(p => p.Conversations)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("conversations_ibfk_2");
|
||||
|
||||
entity.HasOne(d => d.User).WithMany(p => p.Conversations)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("conversations_ibfk_1");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<Device>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity.Property(e => e.Dtype).HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)");
|
||||
entity.Property(e => e.LastLogin).HasComment("最后一次登录 ");
|
||||
entity.Property(e => e.Userid).HasComment("设备所属用户 ");
|
||||
|
||||
entity.HasOne(d => d.User).WithMany(p => p.Devices)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("devices_ibfk_1");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<File>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity.Property(e => e.Created).HasComment("创建时间 ");
|
||||
entity.Property(e => e.Messageld).HasComment("关联消息ID ");
|
||||
entity.Property(e => e.Name).HasComment("文件名 ");
|
||||
entity.Property(e => e.Size).HasComment("文件大小(单位:KB) ");
|
||||
entity.Property(e => e.Type).HasComment("文件类型 ");
|
||||
entity.Property(e => e.Url).HasComment("文件储存URL ");
|
||||
|
||||
entity.HasOne(d => d.MessageldNavigation).WithMany(p => p.Files)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("files_ibfk_1");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<Friend>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity.Property(e => e.Created).HasComment("好友关系创建时间");
|
||||
entity.Property(e => e.Friendld).HasComment("用户2ID");
|
||||
entity.Property(e => e.Status).HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)");
|
||||
entity.Property(e => e.Userld).HasComment("用户ID");
|
||||
|
||||
entity.HasOne(d => d.FriendldNavigation).WithMany(p => p.FriendFriendldNavigations)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("用户2id");
|
||||
|
||||
entity.HasOne(d => d.UserldNavigation).WithMany(p => p.FriendUserldNavigations)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("用户id");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<Friendrequest>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity.Property(e => e.Created).HasComment("申请时间 ");
|
||||
entity.Property(e => e.Description).HasComment("申请附言 ");
|
||||
entity.Property(e => e.RequestUser).HasComment("申请人 ");
|
||||
entity.Property(e => e.ResponseUser).HasComment("被申请人 ");
|
||||
entity.Property(e => e.State).HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) ");
|
||||
|
||||
entity.HasOne(d => d.RequestUserNavigation).WithMany(p => p.FriendrequestRequestUserNavigations)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("friendrequest_ibfk_1");
|
||||
|
||||
entity.HasOne(d => d.ResponseUserNavigation).WithMany(p => p.FriendrequestResponseUserNavigations)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("friendrequest_ibfk_2");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<Group>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity.Property(e => e.AllMembersBanned).HasComment("全员禁言(0允许发言,2全员禁言)");
|
||||
entity.Property(e => e.Announcement).HasComment("群公告");
|
||||
entity.Property(e => e.Auhority).HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)");
|
||||
entity.Property(e => e.Created).HasComment("群聊创建时间");
|
||||
entity.Property(e => e.GroupMaster).HasComment("群主");
|
||||
entity.Property(e => e.Name).HasComment("群聊名称");
|
||||
entity.Property(e => e.Status).HasComment("群聊状态\r\n(1:正常,2:封禁)");
|
||||
|
||||
entity.HasOne(d => d.GroupMasterNavigation).WithMany(p => p.Groups)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("groups_ibfk_1");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<Groupinvite>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity.Property(e => e.Created).HasComment("创建时间");
|
||||
entity.Property(e => e.GroupId).HasComment("群聊编号");
|
||||
entity.Property(e => e.InviteUser).HasComment("邀请用户");
|
||||
entity.Property(e => e.InvitedUser).HasComment("被邀请用户");
|
||||
entity.Property(e => e.State).HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)");
|
||||
|
||||
entity.HasOne(d => d.Group).WithMany(p => p.Groupinvites)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("groupinvite_ibfk_2");
|
||||
|
||||
entity.HasOne(d => d.InviteUserNavigation).WithMany(p => p.GroupinviteInviteUserNavigations).HasConstraintName("groupinvite_ibfk_1");
|
||||
|
||||
entity.HasOne(d => d.InvitedUserNavigation).WithMany(p => p.GroupinviteInvitedUserNavigations).HasConstraintName("groupinvite_ibfk_3");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<Groupmember>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity.Property(e => e.Created)
|
||||
.HasDefaultValueSql("'1970-01-01 00:00:00'")
|
||||
.HasComment("加入群聊时间");
|
||||
entity.Property(e => e.Groupld).HasComment("群聊编号");
|
||||
entity.Property(e => e.Role).HasComment("成员角色(0:普通成员,1:管理员,2:群主)");
|
||||
entity.Property(e => e.Userld).HasComment("用户编号");
|
||||
|
||||
entity.HasOne(d => d.GroupldNavigation).WithMany(p => p.GroupmemberGroupldNavigations)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("groupmember_ibfk_2");
|
||||
|
||||
entity.HasOne(d => d.UserldNavigation).WithMany(p => p.GroupmemberUserldNavigations)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("groupmember_ibfk_1");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<Grouprequest>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity.Property(e => e.Created).HasComment("创建时间");
|
||||
entity.Property(e => e.Description).HasComment("入群附言");
|
||||
entity.Property(e => e.GroupId).HasComment("群聊编号\r\n");
|
||||
entity.Property(e => e.State).HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)");
|
||||
entity.Property(e => e.UserId).HasComment("申请人 ");
|
||||
|
||||
entity.HasOne(d => d.Group).WithMany(p => p.Grouprequests)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("grouprequest_ibfk_1");
|
||||
|
||||
entity.HasOne(d => d.GroupNavigation).WithMany(p => p.Grouprequests)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("grouprequest_ibfk_2");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<LoginLog>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity.Property(e => e.Dtype).HasComment("设备类型(通Devices/DType) ");
|
||||
entity.Property(e => e.Logined).HasComment("登录时间 ");
|
||||
entity.Property(e => e.State).HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) ");
|
||||
entity.Property(e => e.Userld).HasComment("登录用户 ");
|
||||
|
||||
entity.HasOne(d => d.UserldNavigation).WithMany(p => p.LoginLogs)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("login_log_ibfk_1");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<Message>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity.Property(e => e.ChatType).HasComment("聊天类型\r\n(0:私聊,1:群聊)");
|
||||
entity.Property(e => e.Content).HasComment("消息内容 ");
|
||||
entity.Property(e => e.Created).HasComment("发送时间 ");
|
||||
entity.Property(e => e.MsgType).HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)");
|
||||
entity.Property(e => e.Recipient).HasComment("接收者(私聊为用户ID,群聊为群聊ID) ");
|
||||
entity.Property(e => e.Sender).HasComment("发送者 ");
|
||||
entity.Property(e => e.State).HasComment("消息状态(0:已发送,1:已撤回) ");
|
||||
|
||||
entity.HasOne(d => d.SenderNavigation).WithMany(p => p.Messages)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("messages_ibfk_1");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<Notification>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity.Property(e => e.Content).HasComment("通知内容");
|
||||
entity.Property(e => e.Created).HasComment("创建时间");
|
||||
entity.Property(e => e.Ntype).HasComment("通知类型(0:文本)");
|
||||
entity.Property(e => e.Title).HasComment("通知标题");
|
||||
entity.Property(e => e.Userld).HasComment("接收人(为空为全体通知)");
|
||||
|
||||
entity.HasOne(d => d.UserldNavigation).WithMany(p => p.Notifications)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("notifications_ibfk_1");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<Permission>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity.Property(e => e.Code).HasComment("权限编码 ");
|
||||
entity.Property(e => e.Created).HasComment("创建时间 ");
|
||||
entity.Property(e => e.Name).HasComment("权限名称 ");
|
||||
entity.Property(e => e.Ptype).HasComment("权限类型(0:增,1:删,2:改,3:查) ");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<Permissionarole>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity.Property(e => e.Id).ValueGeneratedNever();
|
||||
entity.Property(e => e.Permissionld).HasComment("权限 ");
|
||||
entity.Property(e => e.Roleld).HasComment("角色 ");
|
||||
|
||||
entity.HasOne(d => d.PermissionldNavigation).WithMany(p => p.Permissionaroles)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("permissionarole_ibfk_2");
|
||||
|
||||
entity.HasOne(d => d.RoleldNavigation).WithMany(p => p.Permissionaroles)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("permissionarole_ibfk_1");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<Role>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity.Property(e => e.Created).HasComment("创建时间 ");
|
||||
entity.Property(e => e.Description).HasComment("角色描述 ");
|
||||
entity.Property(e => e.Name).HasComment("角色名称 ");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<User>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity.Property(e => e.Created)
|
||||
.HasDefaultValueSql("'1970-01-01 00:00:00'")
|
||||
.HasComment("创建时间");
|
||||
entity.Property(e => e.IsDeleted).HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除");
|
||||
entity.Property(e => e.NickName).HasComment("用户昵称");
|
||||
entity.Property(e => e.OlineStatus).HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线");
|
||||
entity.Property(e => e.Password).HasComment("密码");
|
||||
entity.Property(e => e.Status)
|
||||
.HasDefaultValueSql("'1'")
|
||||
.HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)");
|
||||
entity.Property(e => e.Updated).HasComment("修改时间");
|
||||
entity.Property(e => e.Username).HasComment("唯一用户名");
|
||||
});
|
||||
|
||||
OnModelCreatingPartial(modelBuilder);
|
||||
}
|
||||
|
||||
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
|
||||
}
|
||||
724
backend/IM_API/Models/ImContext.cs
Normal file
724
backend/IM_API/Models/ImContext.cs
Normal file
@ -0,0 +1,724 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pomelo.EntityFrameworkCore.MySql.Scaffolding.Internal;
|
||||
|
||||
namespace IM_API.Models;
|
||||
|
||||
public partial class ImContext : DbContext
|
||||
{
|
||||
public ImContext()
|
||||
{
|
||||
}
|
||||
|
||||
public ImContext(DbContextOptions<ImContext> options)
|
||||
: base(options)
|
||||
{
|
||||
}
|
||||
|
||||
public virtual DbSet<Admin> Admins { get; set; }
|
||||
|
||||
public virtual DbSet<Conversation> Conversations { get; set; }
|
||||
|
||||
public virtual DbSet<Device> Devices { get; set; }
|
||||
|
||||
public virtual DbSet<File> Files { get; set; }
|
||||
|
||||
public virtual DbSet<Friend> Friends { get; set; }
|
||||
|
||||
public virtual DbSet<FriendRequest> FriendRequests { get; set; }
|
||||
|
||||
public virtual DbSet<Group> Groups { get; set; }
|
||||
|
||||
public virtual DbSet<GroupInvite> GroupInvites { get; set; }
|
||||
|
||||
public virtual DbSet<GroupMember> GroupMembers { get; set; }
|
||||
|
||||
public virtual DbSet<GroupRequest> GroupRequests { get; set; }
|
||||
|
||||
public virtual DbSet<LoginLog> LoginLogs { get; set; }
|
||||
|
||||
public virtual DbSet<Message> Messages { get; set; }
|
||||
|
||||
public virtual DbSet<Notification> Notifications { get; set; }
|
||||
|
||||
public virtual DbSet<Permission> Permissions { get; set; }
|
||||
|
||||
public virtual DbSet<Permissionarole> Permissionaroles { get; set; }
|
||||
|
||||
public virtual DbSet<Role> Roles { get; set; }
|
||||
|
||||
public virtual DbSet<User> Users { get; set; }
|
||||
|
||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||
#warning To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see https://go.microsoft.com/fwlink/?LinkId=723263.
|
||||
=> optionsBuilder.UseMySql("server=frp-era.com;port=26582;database=IM;user=product;password=12345678", Microsoft.EntityFrameworkCore.ServerVersion.Parse("5.7.44-mysql"));
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
modelBuilder
|
||||
.UseCollation("latin1_swedish_ci")
|
||||
.HasCharSet("latin1");
|
||||
|
||||
modelBuilder.Entity<Admin>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity
|
||||
.ToTable("admins")
|
||||
.HasCharSet("utf8mb4")
|
||||
.UseCollation("utf8mb4_general_ci");
|
||||
|
||||
entity.HasIndex(e => e.RoleId, "RoleId");
|
||||
|
||||
entity.Property(e => e.Id)
|
||||
.HasColumnType("int(11)")
|
||||
.HasColumnName("ID");
|
||||
entity.Property(e => e.Created)
|
||||
.HasComment("创建时间 ")
|
||||
.HasColumnType("datetime");
|
||||
entity.Property(e => e.Password)
|
||||
.HasMaxLength(50)
|
||||
.HasComment("密码");
|
||||
entity.Property(e => e.RoleId)
|
||||
.HasComment("角色")
|
||||
.HasColumnType("int(11)");
|
||||
entity.Property(e => e.State)
|
||||
.HasComment("状态(0:正常,2:封禁) ")
|
||||
.HasColumnType("tinyint(4)");
|
||||
entity.Property(e => e.Updated)
|
||||
.HasComment("更新时间 ")
|
||||
.HasColumnType("datetime");
|
||||
entity.Property(e => e.Username)
|
||||
.HasMaxLength(50)
|
||||
.HasComment("用户名");
|
||||
|
||||
entity.HasOne(d => d.Role).WithMany(p => p.Admins)
|
||||
.HasForeignKey(d => d.RoleId)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("admins_ibfk_1");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<Conversation>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity
|
||||
.ToTable("conversations")
|
||||
.HasCharSet("utf8mb4")
|
||||
.UseCollation("utf8mb4_general_ci");
|
||||
|
||||
entity.HasIndex(e => e.UserId, "Userid");
|
||||
|
||||
entity.HasIndex(e => e.LastMessageId, "lastMessageId");
|
||||
|
||||
entity.Property(e => e.Id)
|
||||
.HasColumnType("int(11)")
|
||||
.HasColumnName("ID");
|
||||
entity.Property(e => e.LastMessageId)
|
||||
.HasComment("最后一条消息ID ")
|
||||
.HasColumnType("int(11)")
|
||||
.HasColumnName("lastMessageId");
|
||||
entity.Property(e => e.MsgType)
|
||||
.HasComment("消息类型(同Messages.MsgType) ")
|
||||
.HasColumnType("int(11)");
|
||||
entity.Property(e => e.TargetId)
|
||||
.HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) ")
|
||||
.HasColumnType("int(11)");
|
||||
entity.Property(e => e.UnreadCount)
|
||||
.HasComment("未读消息数 ")
|
||||
.HasColumnType("int(11)");
|
||||
entity.Property(e => e.UserId)
|
||||
.HasComment("用户")
|
||||
.HasColumnType("int(11)");
|
||||
|
||||
entity.HasOne(d => d.LastMessage).WithMany(p => p.Conversations)
|
||||
.HasForeignKey(d => d.LastMessageId)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("conversations_ibfk_2");
|
||||
|
||||
entity.HasOne(d => d.User).WithMany(p => p.Conversations)
|
||||
.HasForeignKey(d => d.UserId)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("conversations_ibfk_1");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<Device>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity
|
||||
.ToTable("devices")
|
||||
.HasCharSet("utf8mb4")
|
||||
.UseCollation("utf8mb4_general_ci");
|
||||
|
||||
entity.HasIndex(e => e.UserId, "Userid");
|
||||
|
||||
entity.Property(e => e.Id)
|
||||
.HasColumnType("int(11)")
|
||||
.HasColumnName("ID");
|
||||
entity.Property(e => e.Dtype)
|
||||
.HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)")
|
||||
.HasColumnType("tinyint(4)")
|
||||
.HasColumnName("DType");
|
||||
entity.Property(e => e.LastLogin)
|
||||
.HasComment("最后一次登录 ")
|
||||
.HasColumnType("datetime");
|
||||
entity.Property(e => e.UserId)
|
||||
.HasComment("设备所属用户 ")
|
||||
.HasColumnType("int(11)");
|
||||
|
||||
entity.HasOne(d => d.User).WithMany(p => p.Devices)
|
||||
.HasForeignKey(d => d.UserId)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("devices_ibfk_1");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<File>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity
|
||||
.ToTable("files")
|
||||
.HasCharSet("utf8mb4")
|
||||
.UseCollation("utf8mb4_general_ci");
|
||||
|
||||
entity.HasIndex(e => e.MessageId, "Messageld");
|
||||
|
||||
entity.Property(e => e.Id)
|
||||
.HasColumnType("int(11)")
|
||||
.HasColumnName("ID");
|
||||
entity.Property(e => e.Created)
|
||||
.HasComment("创建时间 ")
|
||||
.HasColumnType("datetime");
|
||||
entity.Property(e => e.MessageId)
|
||||
.HasComment("关联消息ID ")
|
||||
.HasColumnType("int(11)");
|
||||
entity.Property(e => e.Name)
|
||||
.HasMaxLength(50)
|
||||
.HasComment("文件名 ");
|
||||
entity.Property(e => e.Size)
|
||||
.HasComment("文件大小(单位:KB) ")
|
||||
.HasColumnType("int(11)");
|
||||
entity.Property(e => e.Type)
|
||||
.HasMaxLength(10)
|
||||
.HasComment("文件类型 ");
|
||||
entity.Property(e => e.Url)
|
||||
.HasMaxLength(100)
|
||||
.HasComment("文件储存URL ")
|
||||
.HasColumnName("URL");
|
||||
|
||||
entity.HasOne(d => d.Message).WithMany(p => p.Files)
|
||||
.HasForeignKey(d => d.MessageId)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("files_ibfk_1");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<Friend>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity
|
||||
.ToTable("friends")
|
||||
.HasCharSet("utf8mb4")
|
||||
.UseCollation("utf8mb4_general_ci");
|
||||
|
||||
entity.HasIndex(e => e.Id, "ID");
|
||||
|
||||
entity.HasIndex(e => new { e.UserId, e.FriendId }, "Userld");
|
||||
|
||||
entity.HasIndex(e => e.FriendId, "用户2id");
|
||||
|
||||
entity.Property(e => e.Id)
|
||||
.HasColumnType("int(11)")
|
||||
.HasColumnName("ID");
|
||||
entity.Property(e => e.Created)
|
||||
.HasComment("好友关系创建时间")
|
||||
.HasColumnType("datetime");
|
||||
entity.Property(e => e.FriendId)
|
||||
.HasComment("用户2ID")
|
||||
.HasColumnType("int(11)");
|
||||
entity.Property(e => e.Status)
|
||||
.HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)")
|
||||
.HasColumnType("tinyint(4)");
|
||||
entity.Property(e => e.UserId)
|
||||
.HasComment("用户ID")
|
||||
.HasColumnType("int(11)");
|
||||
|
||||
entity.HasOne(d => d.FriendNavigation).WithMany(p => p.FriendFriendNavigations)
|
||||
.HasForeignKey(d => d.FriendId)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("用户2id");
|
||||
|
||||
entity.HasOne(d => d.User).WithMany(p => p.FriendUsers)
|
||||
.HasForeignKey(d => d.UserId)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("用户id");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<FriendRequest>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity
|
||||
.ToTable("friend_request")
|
||||
.HasCharSet("utf8mb4")
|
||||
.UseCollation("utf8mb4_general_ci");
|
||||
|
||||
entity.HasIndex(e => e.RequestUser, "RequestUser");
|
||||
|
||||
entity.HasIndex(e => e.ResponseUser, "ResponseUser");
|
||||
|
||||
entity.Property(e => e.Id)
|
||||
.HasColumnType("int(11)")
|
||||
.HasColumnName("ID");
|
||||
entity.Property(e => e.Created)
|
||||
.HasComment("申请时间 ")
|
||||
.HasColumnType("datetime");
|
||||
entity.Property(e => e.Description)
|
||||
.HasComment("申请附言 ")
|
||||
.HasColumnType("text");
|
||||
entity.Property(e => e.RequestUser)
|
||||
.HasComment("申请人 ")
|
||||
.HasColumnType("int(11)");
|
||||
entity.Property(e => e.ResponseUser)
|
||||
.HasComment("被申请人 ")
|
||||
.HasColumnType("int(11)");
|
||||
entity.Property(e => e.State)
|
||||
.HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) ")
|
||||
.HasColumnType("tinyint(4)");
|
||||
|
||||
entity.HasOne(d => d.RequestUserNavigation).WithMany(p => p.FriendRequestRequestUserNavigations)
|
||||
.HasForeignKey(d => d.RequestUser)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("friend_request_ibfk_1");
|
||||
|
||||
entity.HasOne(d => d.ResponseUserNavigation).WithMany(p => p.FriendRequestResponseUserNavigations)
|
||||
.HasForeignKey(d => d.ResponseUser)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("friend_request_ibfk_2");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<Group>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity
|
||||
.ToTable("groups")
|
||||
.HasCharSet("utf8mb4")
|
||||
.UseCollation("utf8mb4_general_ci");
|
||||
|
||||
entity.HasIndex(e => e.GroupMaster, "GroupMaster");
|
||||
|
||||
entity.HasIndex(e => e.Id, "ID");
|
||||
|
||||
entity.Property(e => e.Id)
|
||||
.HasColumnType("int(11)")
|
||||
.HasColumnName("ID");
|
||||
entity.Property(e => e.AllMembersBanned)
|
||||
.HasComment("全员禁言(0允许发言,2全员禁言)")
|
||||
.HasColumnType("tinyint(4)");
|
||||
entity.Property(e => e.Announcement)
|
||||
.HasComment("群公告")
|
||||
.HasColumnType("text");
|
||||
entity.Property(e => e.Auhority)
|
||||
.HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)")
|
||||
.HasColumnType("tinyint(4)");
|
||||
entity.Property(e => e.Created)
|
||||
.HasComment("群聊创建时间")
|
||||
.HasColumnType("datetime");
|
||||
entity.Property(e => e.GroupMaster)
|
||||
.HasComment("群主")
|
||||
.HasColumnType("int(11)");
|
||||
entity.Property(e => e.Name)
|
||||
.HasMaxLength(20)
|
||||
.HasComment("群聊名称");
|
||||
entity.Property(e => e.Status)
|
||||
.HasComment("群聊状态\r\n(1:正常,2:封禁)")
|
||||
.HasColumnType("tinyint(4)");
|
||||
|
||||
entity.HasOne(d => d.GroupMasterNavigation).WithMany(p => p.Groups)
|
||||
.HasForeignKey(d => d.GroupMaster)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("groups_ibfk_1");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<GroupInvite>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity
|
||||
.ToTable("group_invite")
|
||||
.HasCharSet("utf8mb4")
|
||||
.UseCollation("utf8mb4_general_ci");
|
||||
|
||||
entity.HasIndex(e => e.GroupId, "GroupId");
|
||||
|
||||
entity.HasIndex(e => e.InviteUser, "InviteUser");
|
||||
|
||||
entity.HasIndex(e => e.InvitedUser, "InvitedUser");
|
||||
|
||||
entity.Property(e => e.Id)
|
||||
.HasColumnType("int(11)")
|
||||
.HasColumnName("ID");
|
||||
entity.Property(e => e.Created)
|
||||
.HasComment("创建时间")
|
||||
.HasColumnType("datetime");
|
||||
entity.Property(e => e.GroupId)
|
||||
.HasComment("群聊编号")
|
||||
.HasColumnType("int(11)");
|
||||
entity.Property(e => e.InviteUser)
|
||||
.HasComment("邀请用户")
|
||||
.HasColumnType("int(11)");
|
||||
entity.Property(e => e.InvitedUser)
|
||||
.HasComment("被邀请用户")
|
||||
.HasColumnType("int(11)");
|
||||
entity.Property(e => e.State)
|
||||
.HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)")
|
||||
.HasColumnType("tinyint(4)");
|
||||
|
||||
entity.HasOne(d => d.Group).WithMany(p => p.GroupInvites)
|
||||
.HasForeignKey(d => d.GroupId)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("group_invite_ibfk_2");
|
||||
|
||||
entity.HasOne(d => d.InviteUserNavigation).WithMany(p => p.GroupInviteInviteUserNavigations)
|
||||
.HasForeignKey(d => d.InviteUser)
|
||||
.HasConstraintName("group_invite_ibfk_1");
|
||||
|
||||
entity.HasOne(d => d.InvitedUserNavigation).WithMany(p => p.GroupInviteInvitedUserNavigations)
|
||||
.HasForeignKey(d => d.InvitedUser)
|
||||
.HasConstraintName("group_invite_ibfk_3");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<GroupMember>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity
|
||||
.ToTable("group_member")
|
||||
.HasCharSet("utf8mb4")
|
||||
.UseCollation("utf8mb4_general_ci");
|
||||
|
||||
entity.HasIndex(e => e.GroupId, "Groupld");
|
||||
|
||||
entity.HasIndex(e => e.Id, "ID");
|
||||
|
||||
entity.HasIndex(e => e.UserId, "Userld");
|
||||
|
||||
entity.Property(e => e.Id)
|
||||
.HasColumnType("int(11)")
|
||||
.HasColumnName("ID");
|
||||
entity.Property(e => e.Created)
|
||||
.HasDefaultValueSql("'1970-01-01 00:00:00'")
|
||||
.HasComment("加入群聊时间")
|
||||
.HasColumnType("datetime");
|
||||
entity.Property(e => e.GroupId)
|
||||
.HasComment("群聊编号")
|
||||
.HasColumnType("int(11)");
|
||||
entity.Property(e => e.Role)
|
||||
.HasComment("成员角色(0:普通成员,1:管理员,2:群主)")
|
||||
.HasColumnType("tinyint(4)");
|
||||
entity.Property(e => e.UserId)
|
||||
.HasComment("用户编号")
|
||||
.HasColumnType("int(11)");
|
||||
|
||||
entity.HasOne(d => d.Group).WithMany(p => p.GroupMemberGroups)
|
||||
.HasForeignKey(d => d.GroupId)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("group_member_ibfk_2");
|
||||
|
||||
entity.HasOne(d => d.User).WithMany(p => p.GroupMemberUsers)
|
||||
.HasForeignKey(d => d.UserId)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("group_member_ibfk_1");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<GroupRequest>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity
|
||||
.ToTable("group_request")
|
||||
.HasCharSet("utf8mb4")
|
||||
.UseCollation("utf8mb4_general_ci");
|
||||
|
||||
entity.HasIndex(e => e.GroupId, "GroupId");
|
||||
|
||||
entity.Property(e => e.Id)
|
||||
.HasColumnType("int(11)")
|
||||
.HasColumnName("ID");
|
||||
entity.Property(e => e.Created)
|
||||
.HasComment("创建时间")
|
||||
.HasColumnType("datetime");
|
||||
entity.Property(e => e.Description)
|
||||
.HasComment("入群附言")
|
||||
.HasColumnType("text");
|
||||
entity.Property(e => e.GroupId)
|
||||
.HasComment("群聊编号\r\n")
|
||||
.HasColumnType("int(11)");
|
||||
entity.Property(e => e.State)
|
||||
.HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)")
|
||||
.HasColumnType("tinyint(4)");
|
||||
entity.Property(e => e.UserId)
|
||||
.HasComment("申请人 ")
|
||||
.HasColumnType("int(11)");
|
||||
|
||||
entity.HasOne(d => d.Group).WithMany(p => p.GroupRequests)
|
||||
.HasForeignKey(d => d.GroupId)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("group_request_ibfk_1");
|
||||
|
||||
entity.HasOne(d => d.GroupNavigation).WithMany(p => p.GroupRequests)
|
||||
.HasForeignKey(d => d.GroupId)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("group_request_ibfk_2");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<LoginLog>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity
|
||||
.ToTable("login_log")
|
||||
.HasCharSet("utf8mb4")
|
||||
.UseCollation("utf8mb4_general_ci");
|
||||
|
||||
entity.HasIndex(e => e.UserId, "Userld");
|
||||
|
||||
entity.Property(e => e.Id)
|
||||
.HasColumnType("int(11)")
|
||||
.HasColumnName("ID");
|
||||
entity.Property(e => e.Dtype)
|
||||
.HasComment("设备类型(通Devices/DType) ")
|
||||
.HasColumnType("tinyint(4)")
|
||||
.HasColumnName("DType");
|
||||
entity.Property(e => e.Logined)
|
||||
.HasComment("登录时间 ")
|
||||
.HasColumnType("datetime");
|
||||
entity.Property(e => e.State)
|
||||
.HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) ")
|
||||
.HasColumnType("tinyint(4)");
|
||||
entity.Property(e => e.UserId)
|
||||
.HasComment("登录用户 ")
|
||||
.HasColumnType("int(11)");
|
||||
|
||||
entity.HasOne(d => d.User).WithMany(p => p.LoginLogs)
|
||||
.HasForeignKey(d => d.UserId)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("login_log_ibfk_1");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<Message>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity
|
||||
.ToTable("messages")
|
||||
.HasCharSet("utf8mb4")
|
||||
.UseCollation("utf8mb4_general_ci");
|
||||
|
||||
entity.HasIndex(e => e.Sender, "Sender");
|
||||
|
||||
entity.Property(e => e.Id)
|
||||
.HasColumnType("int(11)")
|
||||
.HasColumnName("ID");
|
||||
entity.Property(e => e.ChatType)
|
||||
.HasComment("聊天类型\r\n(0:私聊,1:群聊)")
|
||||
.HasColumnType("tinyint(4)");
|
||||
entity.Property(e => e.Content)
|
||||
.HasComment("消息内容 ")
|
||||
.HasColumnType("text");
|
||||
entity.Property(e => e.Created)
|
||||
.HasComment("发送时间 ")
|
||||
.HasColumnType("datetime");
|
||||
entity.Property(e => e.MsgType)
|
||||
.HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)")
|
||||
.HasColumnType("tinyint(4)");
|
||||
entity.Property(e => e.Recipient)
|
||||
.HasComment("接收者(私聊为用户ID,群聊为群聊ID) ")
|
||||
.HasColumnType("int(11)");
|
||||
entity.Property(e => e.Sender)
|
||||
.HasComment("发送者 ")
|
||||
.HasColumnType("int(11)");
|
||||
entity.Property(e => e.State)
|
||||
.HasComment("消息状态(0:已发送,1:已撤回) ")
|
||||
.HasColumnType("tinyint(4)");
|
||||
|
||||
entity.HasOne(d => d.SenderNavigation).WithMany(p => p.Messages)
|
||||
.HasForeignKey(d => d.Sender)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("messages_ibfk_1");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<Notification>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity
|
||||
.ToTable("notifications")
|
||||
.HasCharSet("utf8mb4")
|
||||
.UseCollation("utf8mb4_general_ci");
|
||||
|
||||
entity.HasIndex(e => e.UserId, "Userld");
|
||||
|
||||
entity.Property(e => e.Id)
|
||||
.HasColumnType("int(11)")
|
||||
.HasColumnName("ID");
|
||||
entity.Property(e => e.Content)
|
||||
.HasComment("通知内容")
|
||||
.HasColumnType("text");
|
||||
entity.Property(e => e.Created)
|
||||
.HasComment("创建时间")
|
||||
.HasColumnType("datetime");
|
||||
entity.Property(e => e.Ntype)
|
||||
.HasComment("通知类型(0:文本)")
|
||||
.HasColumnType("tinyint(4)")
|
||||
.HasColumnName("NType");
|
||||
entity.Property(e => e.Title)
|
||||
.HasMaxLength(40)
|
||||
.HasComment("通知标题");
|
||||
entity.Property(e => e.UserId)
|
||||
.HasComment("接收人(为空为全体通知)")
|
||||
.HasColumnType("int(11)");
|
||||
|
||||
entity.HasOne(d => d.User).WithMany(p => p.Notifications)
|
||||
.HasForeignKey(d => d.UserId)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("notifications_ibfk_1");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<Permission>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity
|
||||
.ToTable("permissions")
|
||||
.HasCharSet("utf8mb4")
|
||||
.UseCollation("utf8mb4_general_ci");
|
||||
|
||||
entity.Property(e => e.Id)
|
||||
.HasColumnType("int(11)")
|
||||
.HasColumnName("ID");
|
||||
entity.Property(e => e.Code)
|
||||
.HasComment("权限编码 ")
|
||||
.HasColumnType("int(11)");
|
||||
entity.Property(e => e.Created)
|
||||
.HasComment("创建时间 ")
|
||||
.HasColumnType("datetime");
|
||||
entity.Property(e => e.Name)
|
||||
.HasMaxLength(50)
|
||||
.HasComment("权限名称 ");
|
||||
entity.Property(e => e.Ptype)
|
||||
.HasComment("权限类型(0:增,1:删,2:改,3:查) ")
|
||||
.HasColumnType("int(11)")
|
||||
.HasColumnName("PType");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<Permissionarole>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity
|
||||
.ToTable("permissionarole")
|
||||
.HasCharSet("utf8mb4")
|
||||
.UseCollation("utf8mb4_general_ci");
|
||||
|
||||
entity.HasIndex(e => e.PermissionId, "Permissionld");
|
||||
|
||||
entity.HasIndex(e => e.RoleId, "Roleld");
|
||||
|
||||
entity.Property(e => e.Id)
|
||||
.ValueGeneratedNever()
|
||||
.HasColumnType("int(11)")
|
||||
.HasColumnName("ID");
|
||||
entity.Property(e => e.PermissionId)
|
||||
.HasComment("权限 ")
|
||||
.HasColumnType("int(11)");
|
||||
entity.Property(e => e.RoleId)
|
||||
.HasComment("角色 ")
|
||||
.HasColumnType("int(11)");
|
||||
|
||||
entity.HasOne(d => d.Permission).WithMany(p => p.Permissionaroles)
|
||||
.HasForeignKey(d => d.PermissionId)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("permissionarole_ibfk_2");
|
||||
|
||||
entity.HasOne(d => d.Role).WithMany(p => p.Permissionaroles)
|
||||
.HasForeignKey(d => d.RoleId)
|
||||
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||
.HasConstraintName("permissionarole_ibfk_1");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<Role>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity
|
||||
.ToTable("roles")
|
||||
.HasCharSet("utf8mb4")
|
||||
.UseCollation("utf8mb4_general_ci");
|
||||
|
||||
entity.Property(e => e.Id)
|
||||
.HasColumnType("int(11)")
|
||||
.HasColumnName("ID");
|
||||
entity.Property(e => e.Created)
|
||||
.HasComment("创建时间 ")
|
||||
.HasColumnType("datetime");
|
||||
entity.Property(e => e.Description)
|
||||
.HasComment("角色描述 ")
|
||||
.HasColumnType("text");
|
||||
entity.Property(e => e.Name)
|
||||
.HasMaxLength(20)
|
||||
.HasComment("角色名称 ");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<User>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Id).HasName("PRIMARY");
|
||||
|
||||
entity
|
||||
.ToTable("users")
|
||||
.HasCharSet("utf8mb4")
|
||||
.UseCollation("utf8mb4_general_ci");
|
||||
|
||||
entity.HasIndex(e => e.Id, "ID");
|
||||
|
||||
entity.HasIndex(e => e.Username, "Username").IsUnique();
|
||||
|
||||
entity.Property(e => e.Id)
|
||||
.HasColumnType("int(11)")
|
||||
.HasColumnName("ID");
|
||||
entity.Property(e => e.Created)
|
||||
.HasDefaultValueSql("'1970-01-01 00:00:00'")
|
||||
.HasComment("创建时间")
|
||||
.HasColumnType("datetime");
|
||||
entity.Property(e => e.IsDeleted)
|
||||
.HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除")
|
||||
.HasColumnType("tinyint(4)");
|
||||
entity.Property(e => e.NickName)
|
||||
.HasMaxLength(50)
|
||||
.HasComment("用户昵称");
|
||||
entity.Property(e => e.OnlineStatus)
|
||||
.HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线")
|
||||
.HasColumnType("tinyint(4)");
|
||||
entity.Property(e => e.Password)
|
||||
.HasMaxLength(50)
|
||||
.HasComment("密码");
|
||||
entity.Property(e => e.Status)
|
||||
.HasDefaultValueSql("'1'")
|
||||
.HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)")
|
||||
.HasColumnType("tinyint(4)");
|
||||
entity.Property(e => e.Updated)
|
||||
.HasComment("修改时间")
|
||||
.HasColumnType("datetime");
|
||||
entity.Property(e => e.Username)
|
||||
.HasMaxLength(50)
|
||||
.HasComment("唯一用户名");
|
||||
});
|
||||
|
||||
OnModelCreatingPartial(modelBuilder);
|
||||
}
|
||||
|
||||
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
|
||||
}
|
||||
@ -1,46 +1,31 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace IM_API.Models;
|
||||
|
||||
[Table("login_log")]
|
||||
[Index("Userld", Name = "Userld")]
|
||||
[MySqlCharSet("utf8mb4")]
|
||||
[MySqlCollation("utf8mb4_general_ci")]
|
||||
public partial class LoginLog
|
||||
{
|
||||
[Key]
|
||||
[Column("ID", TypeName = "int(11)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 设备类型(通Devices/DType)
|
||||
/// </summary>
|
||||
[Column("DType", TypeName = "tinyint(4)")]
|
||||
public sbyte Dtype { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 登录时间
|
||||
/// </summary>
|
||||
[Column(TypeName = "datetime")]
|
||||
public DateTime Logined { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 登录用户
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int Userld { get; set; }
|
||||
public int UserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 登录状态(0:登陆成功,1:未验证,2:已被拒绝)
|
||||
/// </summary>
|
||||
[Column(TypeName = "tinyint(4)")]
|
||||
public sbyte State { get; set; }
|
||||
|
||||
[ForeignKey("Userld")]
|
||||
[InverseProperty("LoginLogs")]
|
||||
public virtual User UserldNavigation { get; set; } = null!;
|
||||
public virtual User User { get; set; } = null!;
|
||||
}
|
||||
|
||||
11
backend/IM_API/Models/LoginLogExt.cs
Normal file
11
backend/IM_API/Models/LoginLogExt.cs
Normal file
@ -0,0 +1,11 @@
|
||||
namespace IM_API.Models
|
||||
{
|
||||
public partial class LoginLog
|
||||
{
|
||||
public LoginState StateEnum
|
||||
{
|
||||
get => (LoginState)State;
|
||||
set => State = (sbyte)value;
|
||||
}
|
||||
}
|
||||
}
|
||||
18
backend/IM_API/Models/LoginState.cs
Normal file
18
backend/IM_API/Models/LoginState.cs
Normal file
@ -0,0 +1,18 @@
|
||||
namespace IM_API.Models
|
||||
{
|
||||
public enum LoginState
|
||||
{
|
||||
/// <summary>
|
||||
/// 登陆成功
|
||||
/// </summary>
|
||||
Success = 0,
|
||||
/// <summary>
|
||||
/// 未验证
|
||||
/// </summary>
|
||||
Unauthenticated = 1,
|
||||
/// <summary>
|
||||
/// 已拒绝
|
||||
/// </summary>
|
||||
Declined = 2
|
||||
}
|
||||
}
|
||||
@ -1,72 +1,52 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace IM_API.Models;
|
||||
|
||||
[Table("messages")]
|
||||
[Index("Sender", Name = "Sender")]
|
||||
[MySqlCharSet("utf8mb4")]
|
||||
[MySqlCollation("utf8mb4_general_ci")]
|
||||
public partial class Message
|
||||
{
|
||||
[Key]
|
||||
[Column("ID", TypeName = "int(11)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 聊天类型
|
||||
/// (0:私聊,1:群聊)
|
||||
/// </summary>
|
||||
[Column(TypeName = "tinyint(4)")]
|
||||
public sbyte ChatType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 消息类型
|
||||
/// (0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)
|
||||
/// </summary>
|
||||
[Column(TypeName = "tinyint(4)")]
|
||||
public sbyte MsgType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 消息内容
|
||||
/// </summary>
|
||||
[Column(TypeName = "text")]
|
||||
public string Content { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// 发送者
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int Sender { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 接收者(私聊为用户ID,群聊为群聊ID)
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int Recipient { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 消息状态(0:已发送,1:已撤回)
|
||||
/// </summary>
|
||||
[Column(TypeName = "tinyint(4)")]
|
||||
public sbyte State { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 发送时间
|
||||
/// </summary>
|
||||
[Column(TypeName = "datetime")]
|
||||
public DateTime Created { get; set; }
|
||||
|
||||
[InverseProperty("LastMessage")]
|
||||
public virtual ICollection<Conversation> Conversations { get; set; } = new List<Conversation>();
|
||||
|
||||
[InverseProperty("MessageldNavigation")]
|
||||
public virtual ICollection<File> Files { get; set; } = new List<File>();
|
||||
|
||||
[ForeignKey("Sender")]
|
||||
[InverseProperty("Messages")]
|
||||
public virtual User SenderNavigation { get; set; } = null!;
|
||||
}
|
||||
|
||||
16
backend/IM_API/Models/MessageExt.cs
Normal file
16
backend/IM_API/Models/MessageExt.cs
Normal file
@ -0,0 +1,16 @@
|
||||
namespace IM_API.Models
|
||||
{
|
||||
public partial class Message
|
||||
{
|
||||
public MessageMsgType MsgTypeEnum
|
||||
{
|
||||
get => (MessageMsgType)MsgType;
|
||||
set => MsgType = (sbyte) value;
|
||||
}
|
||||
public MessageState StateEnum
|
||||
{
|
||||
get => (MessageState)State;
|
||||
set => State = (sbyte) value;
|
||||
}
|
||||
}
|
||||
}
|
||||
13
backend/IM_API/Models/MessageMsgType.cs
Normal file
13
backend/IM_API/Models/MessageMsgType.cs
Normal file
@ -0,0 +1,13 @@
|
||||
namespace IM_API.Models
|
||||
{
|
||||
public enum MessageMsgType
|
||||
{
|
||||
Text = 0,
|
||||
Image = 1,
|
||||
Voice = 2,
|
||||
Video = 3,
|
||||
File = 4,
|
||||
VoiceChat = 5,
|
||||
VideoChat = 6
|
||||
}
|
||||
}
|
||||
14
backend/IM_API/Models/MessageState.cs
Normal file
14
backend/IM_API/Models/MessageState.cs
Normal file
@ -0,0 +1,14 @@
|
||||
namespace IM_API.Models
|
||||
{
|
||||
public enum MessageState
|
||||
{
|
||||
/// <summary>
|
||||
/// 已发送
|
||||
/// </summary>
|
||||
Sent = 0,
|
||||
/// <summary>
|
||||
/// 已撤回
|
||||
/// </summary>
|
||||
Withdrwan = 1
|
||||
}
|
||||
}
|
||||
@ -1,52 +1,36 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace IM_API.Models;
|
||||
|
||||
[Table("notifications")]
|
||||
[Index("Userld", Name = "Userld")]
|
||||
[MySqlCharSet("utf8mb4")]
|
||||
[MySqlCollation("utf8mb4_general_ci")]
|
||||
public partial class Notification
|
||||
{
|
||||
[Key]
|
||||
[Column("ID", TypeName = "int(11)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 接收人(为空为全体通知)
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int Userld { get; set; }
|
||||
public int UserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 通知类型(0:文本)
|
||||
/// </summary>
|
||||
[Column("NType", TypeName = "tinyint(4)")]
|
||||
public sbyte Ntype { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 通知标题
|
||||
/// </summary>
|
||||
[StringLength(40)]
|
||||
public string Title { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// 通知内容
|
||||
/// </summary>
|
||||
[Column(TypeName = "text")]
|
||||
public string Content { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
[Column(TypeName = "datetime")]
|
||||
public DateTime Created { get; set; }
|
||||
|
||||
[ForeignKey("Userld")]
|
||||
[InverseProperty("Notifications")]
|
||||
public virtual User UserldNavigation { get; set; } = null!;
|
||||
public virtual User User { get; set; } = null!;
|
||||
}
|
||||
|
||||
@ -1,44 +1,31 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace IM_API.Models;
|
||||
|
||||
[Table("permissions")]
|
||||
[MySqlCharSet("utf8mb4")]
|
||||
[MySqlCollation("utf8mb4_general_ci")]
|
||||
public partial class Permission
|
||||
{
|
||||
[Key]
|
||||
[Column("ID", TypeName = "int(11)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 权限类型(0:增,1:删,2:改,3:查)
|
||||
/// </summary>
|
||||
[Column("PType", TypeName = "int(11)")]
|
||||
public int Ptype { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 权限名称
|
||||
/// </summary>
|
||||
[StringLength(50)]
|
||||
public string Name { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// 权限编码
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int Code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
[Column(TypeName = "datetime")]
|
||||
public DateTime Created { get; set; }
|
||||
|
||||
[InverseProperty("PermissionldNavigation")]
|
||||
public virtual ICollection<Permissionarole> Permissionaroles { get; set; } = new List<Permissionarole>();
|
||||
}
|
||||
|
||||
@ -1,39 +1,23 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace IM_API.Models;
|
||||
|
||||
[Table("permissionarole")]
|
||||
[Index("Permissionld", Name = "Permissionld")]
|
||||
[Index("Roleld", Name = "Roleld")]
|
||||
[MySqlCharSet("utf8mb4")]
|
||||
[MySqlCollation("utf8mb4_general_ci")]
|
||||
public partial class Permissionarole
|
||||
{
|
||||
[Key]
|
||||
[Column("ID", TypeName = "int(11)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 角色
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int Roleld { get; set; }
|
||||
public int RoleId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 权限
|
||||
/// </summary>
|
||||
[Column(TypeName = "int(11)")]
|
||||
public int Permissionld { get; set; }
|
||||
public int PermissionId { get; set; }
|
||||
|
||||
[ForeignKey("Permissionld")]
|
||||
[InverseProperty("Permissionaroles")]
|
||||
public virtual Permission PermissionldNavigation { get; set; } = null!;
|
||||
public virtual Permission Permission { get; set; } = null!;
|
||||
|
||||
[ForeignKey("Roleld")]
|
||||
[InverseProperty("Permissionaroles")]
|
||||
public virtual Role RoleldNavigation { get; set; } = null!;
|
||||
public virtual Role Role { get; set; } = null!;
|
||||
}
|
||||
|
||||
@ -1,41 +1,28 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace IM_API.Models;
|
||||
|
||||
[Table("roles")]
|
||||
[MySqlCharSet("utf8mb4")]
|
||||
[MySqlCollation("utf8mb4_general_ci")]
|
||||
public partial class Role
|
||||
{
|
||||
[Key]
|
||||
[Column("ID", TypeName = "int(11)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 角色名称
|
||||
/// </summary>
|
||||
[StringLength(20)]
|
||||
public string Name { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// 角色描述
|
||||
/// </summary>
|
||||
[Column(TypeName = "text")]
|
||||
public string Description { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
[Column(TypeName = "datetime")]
|
||||
public DateTime Created { get; set; }
|
||||
|
||||
[InverseProperty("Role")]
|
||||
public virtual ICollection<Admin> Admins { get; set; } = new List<Admin>();
|
||||
|
||||
[InverseProperty("RoleldNavigation")]
|
||||
public virtual ICollection<Permissionarole> Permissionaroles { get; set; } = new List<Permissionarole>();
|
||||
}
|
||||
|
||||
@ -1,38 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace IM_API.Models;
|
||||
|
||||
[Table("users")]
|
||||
[Index("Id", Name = "ID")]
|
||||
[Index("Username", Name = "Username", IsUnique = true)]
|
||||
[MySqlCharSet("utf8mb4")]
|
||||
[MySqlCollation("utf8mb4_general_ci")]
|
||||
public partial class User
|
||||
{
|
||||
[Key]
|
||||
[Column("ID", TypeName = "int(11)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 唯一用户名
|
||||
/// </summary>
|
||||
[StringLength(50)]
|
||||
public string Username { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// 密码
|
||||
/// </summary>
|
||||
[StringLength(50)]
|
||||
public string Password { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// 用户昵称
|
||||
/// </summary>
|
||||
[StringLength(50)]
|
||||
public string NickName { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
@ -40,78 +27,58 @@ public partial class User
|
||||
/// 0(默认):不在线
|
||||
/// 1:在线
|
||||
/// </summary>
|
||||
[Column(TypeName = "tinyint(4)")]
|
||||
public UserOnlineStatus OlineStatus { get; set; }
|
||||
public sbyte OnlineStatus { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
[Column(TypeName = "datetime")]
|
||||
public DateTime Created { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改时间
|
||||
/// </summary>
|
||||
[Column(TypeName = "datetime")]
|
||||
public DateTime? Updated { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 账户状态
|
||||
/// (0:未激活,1:正常,2:封禁)
|
||||
/// </summary>
|
||||
[Column(TypeName = "tinyint(4)")]
|
||||
public UserStatus Status { get; set; }
|
||||
public sbyte Status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 软删除标识
|
||||
/// 0:账号正常
|
||||
/// 1:账号已删除
|
||||
/// </summary>
|
||||
[Column(TypeName = "tinyint(4)")]
|
||||
public sbyte IsDeleted { get; set; }
|
||||
|
||||
[InverseProperty("User")]
|
||||
public virtual ICollection<Conversation> Conversations { get; set; } = new List<Conversation>();
|
||||
|
||||
[InverseProperty("User")]
|
||||
public virtual ICollection<Device> Devices { get; set; } = new List<Device>();
|
||||
|
||||
[InverseProperty("FriendldNavigation")]
|
||||
public virtual ICollection<Friend> FriendFriendldNavigations { get; set; } = new List<Friend>();
|
||||
public virtual ICollection<Friend> FriendFriendNavigations { get; set; } = new List<Friend>();
|
||||
|
||||
[InverseProperty("UserldNavigation")]
|
||||
public virtual ICollection<Friend> FriendUserldNavigations { get; set; } = new List<Friend>();
|
||||
public virtual ICollection<FriendRequest> FriendRequestRequestUserNavigations { get; set; } = new List<FriendRequest>();
|
||||
|
||||
[InverseProperty("RequestUserNavigation")]
|
||||
public virtual ICollection<Friendrequest> FriendrequestRequestUserNavigations { get; set; } = new List<Friendrequest>();
|
||||
public virtual ICollection<FriendRequest> FriendRequestResponseUserNavigations { get; set; } = new List<FriendRequest>();
|
||||
|
||||
[InverseProperty("ResponseUserNavigation")]
|
||||
public virtual ICollection<Friendrequest> FriendrequestResponseUserNavigations { get; set; } = new List<Friendrequest>();
|
||||
public virtual ICollection<Friend> FriendUsers { get; set; } = new List<Friend>();
|
||||
|
||||
[InverseProperty("InviteUserNavigation")]
|
||||
public virtual ICollection<Groupinvite> GroupinviteInviteUserNavigations { get; set; } = new List<Groupinvite>();
|
||||
public virtual ICollection<GroupInvite> GroupInviteInviteUserNavigations { get; set; } = new List<GroupInvite>();
|
||||
|
||||
[InverseProperty("InvitedUserNavigation")]
|
||||
public virtual ICollection<Groupinvite> GroupinviteInvitedUserNavigations { get; set; } = new List<Groupinvite>();
|
||||
public virtual ICollection<GroupInvite> GroupInviteInvitedUserNavigations { get; set; } = new List<GroupInvite>();
|
||||
|
||||
[InverseProperty("GroupldNavigation")]
|
||||
public virtual ICollection<Groupmember> GroupmemberGroupldNavigations { get; set; } = new List<Groupmember>();
|
||||
public virtual ICollection<GroupMember> GroupMemberGroups { get; set; } = new List<GroupMember>();
|
||||
|
||||
[InverseProperty("UserldNavigation")]
|
||||
public virtual ICollection<Groupmember> GroupmemberUserldNavigations { get; set; } = new List<Groupmember>();
|
||||
public virtual ICollection<GroupMember> GroupMemberUsers { get; set; } = new List<GroupMember>();
|
||||
|
||||
[InverseProperty("GroupNavigation")]
|
||||
public virtual ICollection<Grouprequest> Grouprequests { get; set; } = new List<Grouprequest>();
|
||||
public virtual ICollection<GroupRequest> GroupRequests { get; set; } = new List<GroupRequest>();
|
||||
|
||||
[InverseProperty("GroupMasterNavigation")]
|
||||
public virtual ICollection<Group> Groups { get; set; } = new List<Group>();
|
||||
|
||||
[InverseProperty("UserldNavigation")]
|
||||
public virtual ICollection<LoginLog> LoginLogs { get; set; } = new List<LoginLog>();
|
||||
|
||||
[InverseProperty("SenderNavigation")]
|
||||
public virtual ICollection<Message> Messages { get; set; } = new List<Message>();
|
||||
|
||||
[InverseProperty("UserldNavigation")]
|
||||
public virtual ICollection<Notification> Notifications { get; set; } = new List<Notification>();
|
||||
}
|
||||
|
||||
16
backend/IM_API/Models/UserExt.cs
Normal file
16
backend/IM_API/Models/UserExt.cs
Normal file
@ -0,0 +1,16 @@
|
||||
namespace IM_API.Models
|
||||
{
|
||||
public partial class User
|
||||
{
|
||||
public UserOnlineStatus OnlineStatusEnum
|
||||
{
|
||||
get => (UserOnlineStatus)OnlineStatus;
|
||||
set => OnlineStatus = (sbyte)value;
|
||||
}
|
||||
public UserStatus StatusEnum
|
||||
{
|
||||
get => (UserStatus)Status;
|
||||
set => Status = (sbyte)value;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -17,11 +17,12 @@ namespace IM_API
|
||||
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
|
||||
.Build();
|
||||
string conStr = builder.Configuration.GetConnectionString("DefaultConnection")!;
|
||||
|
||||
builder.Services.AddDbContext<IMDbContext>(options =>
|
||||
|
||||
builder.Services.AddDbContext<ImContext>(options =>
|
||||
{
|
||||
options.UseMySql(conStr,ServerVersion.AutoDetect(conStr));
|
||||
});
|
||||
|
||||
builder.Services.AddAllService(configuration);
|
||||
builder.Services.AddControllers();
|
||||
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
|
||||
|
||||
6
backend/IM_API/Services/FriendService.cs
Normal file
6
backend/IM_API/Services/FriendService.cs
Normal file
@ -0,0 +1,6 @@
|
||||
namespace IM_API.Services
|
||||
{
|
||||
public class FriendService
|
||||
{
|
||||
}
|
||||
}
|
||||
@ -19,4 +19,3 @@ namespace IM_API.Tools
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user