From e7dbb651a25451108d92b00f1e4bd3ac4cb3f300 Mon Sep 17 00:00:00 2001 From: nanxun Date: Sun, 18 Jan 2026 22:32:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E7=AB=AF=EF=BC=9A=201=E3=80=81?= =?UTF-8?q?=E4=BC=9A=E8=AF=9D=E5=88=97=E8=A1=A8=E3=80=81=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E5=B1=95=E7=A4=BA=E4=B8=8E=E5=90=8E=E7=AB=AF?= =?UTF-8?q?=E6=89=93=E9=80=9A=20=E5=90=8E=E7=AB=AF=EF=BC=9A=201=E3=80=81?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BC=9A=E8=AF=9D=E5=92=8C=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E7=8E=B0=E5=AD=98=E9=97=AE=E9=A2=98=202?= =?UTF-8?q?=E3=80=81=E4=BC=9A=E8=AF=9D=E5=AF=B9=E8=B1=A1=E4=B8=8D=E5=86=8D?= =?UTF-8?q?=E8=BF=94=E5=9B=9EMessage=E5=AF=B9=E8=B1=A1=EF=BC=8C=E8=80=8C?= =?UTF-8?q?=E6=98=AF=E4=BD=BF=E7=94=A8MessageBaseDto=E6=9B=BF=E4=BB=A3=203?= =?UTF-8?q?=E3=80=81=E4=BF=AE=E6=94=B9=E6=9F=A5=E8=AF=A2=E4=BC=9A=E8=AF=9D?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=92=8C=E4=BC=9A=E8=AF=9D=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E7=9A=84=E9=80=BB=E8=BE=91=204=E3=80=81=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E5=88=97=E8=A1=A8=E6=9F=A5=E8=AF=A2=20?= =?UTF-8?q?=E6=96=87=E6=A1=A3=EF=BC=9A=20=E5=90=8E=E7=AB=AF=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E8=A7=84=E8=8C=83=E6=96=87=E6=A1=A3=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E4=BB=8E=E6=95=B0=E6=8D=AE=E5=BA=93=E5=90=8C=E6=AD=A5=E5=88=B0?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E7=9A=84=E5=91=BD=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/IMTest/bin/Debug/net8.0/IMTest.dll | Bin 43008 -> 43008 bytes backend/IMTest/bin/Debug/net8.0/IMTest.pdb | Bin 30352 -> 30352 bytes backend/IMTest/bin/Debug/net8.0/IM_API.dll | Bin 224256 -> 217600 bytes backend/IMTest/bin/Debug/net8.0/IM_API.exe | Bin 150016 -> 150016 bytes backend/IMTest/bin/Debug/net8.0/IM_API.pdb | Bin 73532 -> 72400 bytes .../obj/Debug/net8.0/IMTest.AssemblyInfo.cs | 2 +- .../net8.0/IMTest.AssemblyInfoInputs.cache | 2 +- .../IMTest.csproj.AssemblyReference.cache | Bin 32670 -> 32670 bytes backend/IMTest/obj/Debug/net8.0/IMTest.dll | Bin 43008 -> 43008 bytes backend/IMTest/obj/Debug/net8.0/IMTest.pdb | Bin 30352 -> 30352 bytes .../IMTest/obj/Debug/net8.0/ref/IMTest.dll | Bin 16896 -> 16896 bytes .../IMTest/obj/Debug/net8.0/refint/IMTest.dll | Bin 16896 -> 16896 bytes backend/IM_API/Configs/MapperConfig.cs | 23 + .../Controllers/ConversationController.cs | 8 + .../IM_API/Controllers/MessageController.cs | 9 + backend/IM_API/Dtos/ConversationDto.cs | 2 +- backend/IM_API/Dtos/MessageDto.cs | 15 +- .../Services/IConversationService.cs | 6 + .../Interface/Services/IMessageSevice.cs | 20 +- backend/IM_API/Models/ImContext.cs | 12 +- backend/IM_API/Models/ImDbContext.cs | 732 ------------------ backend/IM_API/Models/Message.cs | 5 + .../IM_API/Services/ConversationService.cs | 112 ++- backend/IM_API/Services/MessageService.cs | 38 +- docs/后端代码规范文档.md | 9 + frontend/web/src/router/index.js | 16 +- frontend/web/src/services/message.js | 22 +- frontend/web/src/utils/codeHelper.js | 10 + frontend/web/src/utils/formatDate.js | 18 + .../web/src/views/contact/ContactList.vue | 1 - .../web/src/views/messages/MessageContent.vue | 35 +- .../web/src/views/messages/MessageList.vue | 34 +- 32 files changed, 294 insertions(+), 837 deletions(-) delete mode 100644 backend/IM_API/Models/ImDbContext.cs create mode 100644 frontend/web/src/utils/codeHelper.js create mode 100644 frontend/web/src/utils/formatDate.js diff --git a/backend/IMTest/bin/Debug/net8.0/IMTest.dll b/backend/IMTest/bin/Debug/net8.0/IMTest.dll index 4c5461c0ccfcaa4f8d8a403582b542cde87c5226..a4a782767011b340e2df45f9358228a91c56c295 100644 GIT binary patch delta 238 zcmZp;z|?SoX+j6f-Hq`L8+%T)36#E3K35)E>a|?!_SehDOs;QEY2VDNkz!$Lnrx9~ zk(OkUnv!f{kz|%^YMN$Xk(z3hnv`a4Vq$2ToNSt!xY>THDkqCmS;Ec98S?@J%3kU3 zYm(gQ(NzDc%ctk--pMEC1uH-We;k4e0#!%ubZGlqd8FfXo20MsX6yMUnf+53EEr6I zFd0avfpHR$Ol3#`ikJXdNepH{7Dz=Jg8^73mB9!op9JKa167zX7=m?!)TA;bZVq0& GmIVM%T2rt9 delta 238 zcmZp;z|?SoX+j6f)*Ht^ZR|PGCUA<^j$Of4&cAV;>Sfn^MNc-Tv~T9sFf}qaNi#?> zGDC5X8S?@JEY(FO zh{;d)U*PwpxA=9M!sHY4f)${G{4hbFYRNORiiN*xm(KaxnRj!u_572}{-z8@4CV|b z3~3Ao3@Jdi5s(D&QW?yEv>A|Rz+lXf2*gPY$v}20kZlHpMhu2v^_C2lKv9qh7C;fR K&B2S;vH$>{w@B~+ diff --git a/backend/IMTest/bin/Debug/net8.0/IMTest.pdb b/backend/IMTest/bin/Debug/net8.0/IMTest.pdb index a90a420a2c0595cb831008ba92e5193ca3d78ce4..d7f873dc285737ae5634521ac3221753acf072bd 100644 GIT binary patch delta 105 zcmV-v0G9ud?E#SO0g!wYcIq#_f*H9;f`96YOpNutLUv%;v5-s=ARPex8_uj#ZB!z( zL(0EgqxTRQ= L0T>mt{uGj7e`7K5 delta 105 zcmV-v0G9ud?E#SO0g!wYIVTj579W>SpicCSbL(axmm^@Av5-s=AjagXIleuCMf#02 zpY2p=DG&2Q<-!@D8^un~@+?UNYqR_j)dCpG58kc-fB^sz?v@+CE)hnwa0pVqJDlQ^ L0T>mt{uGj7rp_(u diff --git a/backend/IMTest/bin/Debug/net8.0/IM_API.dll b/backend/IMTest/bin/Debug/net8.0/IM_API.dll index 16a00edb75942bc8bb6b210e0d3940890c2ff7e2..562d8b561a056a1ae6bd7e23a5e1b1c1bf100f39 100644 GIT binary patch literal 217600 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 U9WzuNYK>#F;9vgz^V7ip0angdcK`qY literal 224256 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�yf|d7Zuz7c@!63G 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 diff --git a/backend/IMTest/bin/Debug/net8.0/IM_API.exe b/backend/IMTest/bin/Debug/net8.0/IM_API.exe index fd67847dc0d6560034d767d1e4fc0b186cc6d9a4..1292e00a205f96953a23e378989fd4f9cb4bd5be 100644 GIT binary patch delta 99 zcmZpe!r1^sEsR^3zPS0PFjz2{0%0F&HqU0NF-B62wboFay$NK%N1EF+(B{Cov=g h*{MLb84wyV7=qPXGFSpdK_*xLMa;H4yEE-&0s!rU5!(O& diff --git a/backend/IMTest/bin/Debug/net8.0/IM_API.pdb b/backend/IMTest/bin/Debug/net8.0/IM_API.pdb index 6fb8b0191bfdf0b0478e6f52dfd288abc9157b12..632c921287b596f7912ccac4864e818939369b47 100644 GIT binary patch delta 28450 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 delta 28575 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 diff --git a/backend/IMTest/obj/Debug/net8.0/IMTest.AssemblyInfo.cs b/backend/IMTest/obj/Debug/net8.0/IMTest.AssemblyInfo.cs index ff595c8..1a591d3 100644 --- a/backend/IMTest/obj/Debug/net8.0/IMTest.AssemblyInfo.cs +++ b/backend/IMTest/obj/Debug/net8.0/IMTest.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("IMTest")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5274f0d22d4fe646d03a3bc0ea6621d299074816")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+d855c8f8fb8edc48b6c55f08ee2ebf74415cc5ea")] [assembly: System.Reflection.AssemblyProductAttribute("IMTest")] [assembly: System.Reflection.AssemblyTitleAttribute("IMTest")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/backend/IMTest/obj/Debug/net8.0/IMTest.AssemblyInfoInputs.cache b/backend/IMTest/obj/Debug/net8.0/IMTest.AssemblyInfoInputs.cache index 815557e..4506613 100644 --- a/backend/IMTest/obj/Debug/net8.0/IMTest.AssemblyInfoInputs.cache +++ b/backend/IMTest/obj/Debug/net8.0/IMTest.AssemblyInfoInputs.cache @@ -1 +1 @@ -7390b702e3c578dad3a8fa4fa4cc93b25ccd34a9b353beca60372a7182717d73 +0e2c3a5367325662a3e7db912bec1cd772d661d101def6cb95abbceb77be09ff diff --git a/backend/IMTest/obj/Debug/net8.0/IMTest.csproj.AssemblyReference.cache b/backend/IMTest/obj/Debug/net8.0/IMTest.csproj.AssemblyReference.cache index a6386cfdae49ea05bec55ce232fceca3ef9417e3..033c9f3bc0982b30037779d4e3c5d09c76de1e73 100644 GIT binary patch delta 33 rcmV++0N($e{{f!=0gzM%8I#SgnpUw|k`t2+6-%?~6CnY!SQSQU{-F(# delta 33 pcmbRDpK;!Q#t9*876EMP7riz{O%mR0DI(7}`IWHm<_J-@ECAxs40Heh diff --git a/backend/IMTest/obj/Debug/net8.0/IMTest.dll b/backend/IMTest/obj/Debug/net8.0/IMTest.dll index 4c5461c0ccfcaa4f8d8a403582b542cde87c5226..a4a782767011b340e2df45f9358228a91c56c295 100644 GIT binary patch delta 238 zcmZp;z|?SoX+j6f-Hq`L8+%T)36#E3K35)E>a|?!_SehDOs;QEY2VDNkz!$Lnrx9~ zk(OkUnv!f{kz|%^YMN$Xk(z3hnv`a4Vq$2ToNSt!xY>THDkqCmS;Ec98S?@J%3kU3 zYm(gQ(NzDc%ctk--pMEC1uH-We;k4e0#!%ubZGlqd8FfXo20MsX6yMUnf+53EEr6I zFd0avfpHR$Ol3#`ikJXdNepH{7Dz=Jg8^73mB9!op9JKa167zX7=m?!)TA;bZVq0& GmIVM%T2rt9 delta 238 zcmZp;z|?SoX+j6f)*Ht^ZR|PGCUA<^j$Of4&cAV;>Sfn^MNc-Tv~T9sFf}qaNi#?> zGDC5X8S?@JEY(FO zh{;d)U*PwpxA=9M!sHY4f)${G{4hbFYRNORiiN*xm(KaxnRj!u_572}{-z8@4CV|b z3~3Ao3@Jdi5s(D&QW?yEv>A|Rz+lXf2*gPY$v}20kZlHpMhu2v^_C2lKv9qh7C;fR K&B2S;vH$>{w@B~+ diff --git a/backend/IMTest/obj/Debug/net8.0/IMTest.pdb b/backend/IMTest/obj/Debug/net8.0/IMTest.pdb index a90a420a2c0595cb831008ba92e5193ca3d78ce4..d7f873dc285737ae5634521ac3221753acf072bd 100644 GIT binary patch delta 105 zcmV-v0G9ud?E#SO0g!wYcIq#_f*H9;f`96YOpNutLUv%;v5-s=ARPex8_uj#ZB!z( zL(0EgqxTRQ= L0T>mt{uGj7e`7K5 delta 105 zcmV-v0G9ud?E#SO0g!wYIVTj579W>SpicCSbL(axmm^@Av5-s=AjagXIleuCMf#02 zpY2p=DG&2Q<-!@D8^un~@+?UNYqR_j)dCpG58kc-fB^sz?v@+CE)hnwa0pVqJDlQ^ L0T>mt{uGj7rp_(u diff --git a/backend/IMTest/obj/Debug/net8.0/ref/IMTest.dll b/backend/IMTest/obj/Debug/net8.0/ref/IMTest.dll index 5f6f5ea4fda07a040664ef2dc172a90c8964024a..79b018757ad4b0ecd531993b3db1f00bff5c63f2 100644 GIT binary patch delta 197 zcmZo@VQgq&oY28??9ZLG8+%Ha1-cjWx=hnD^PZxpRr>!`;PK6ZEbkdN|7ZQGi7CZm z(9WolVqt2UY>{S>mSmBdl5Ap;WR`4dnr2{;nrf7qlxA*XVrZJ2Y?_+5d9z_4w|@$Q z1%oLNCIjg-FirxJsSGJV5fdOQiNOrW0;x!2FaXP>G8h5nlYo44pb8TPL$Gd;npB3w J&B3;7Spa?gIJ^J= delta 197 zcmZo@VQgq&oY28?OX2acjXfpI0v(KRMasOkxGdwFyKVoAg!`;PK6ZEbkdN|7ZQGi7CZm z(9WolVqt2UY>{S>mSmBdl5Ap;WR`4dnr2{;nrf7qlxA*XVrZJ2Y?_+5d9z_4w|@$Q z1%oLNCIjg-FirxJsSGJV5fdOQiNOrW0;x!2FaXP>G8h5nlYo44pb8TPL$Gd;npB3w J&B3;7Spa?gIJ^J= delta 197 zcmZo@VQgq&oY28?OX2acjXfpI0v(KRMasOkxGdwFyKVoAg dest.ReceiverId, opt => opt.MapFrom(src => src.Recipient)) .ForMember(dest => dest.Content, opt => opt.MapFrom(src => src.Content)) .ForMember(dest => dest.TimeStamp, opt => opt.MapFrom(src => src.Created)) + .ForMember(dest => dest.GroupMemberId , opt => opt.MapFrom(src => src.GroupMemberId)) ; CreateMap() .ForMember(dest => dest.Sender, opt => opt.MapFrom(src => src.SenderId)) @@ -64,6 +65,7 @@ namespace IM_API.Configs .ForMember(dest => dest.Recipient, opt => opt.MapFrom(src => src.ReceiverId)) .ForMember(dest => dest.StreamKey, opt => opt.Ignore() ) .ForMember(dest => dest.StateEnum, opt => opt.MapFrom(src => MessageState.Sent)) + .ForMember(dest => dest.GroupMemberId, opt => opt.MapFrom(src => src.GroupMemberId)) .ForMember(dest => dest.ChatType, opt => opt.Ignore()) .ForMember(dest => dest.MsgType, opt => opt.Ignore()) ; @@ -102,6 +104,27 @@ namespace IM_API.Configs .ForMember(dest => dest.LastMessageTime, opt => opt.MapFrom(src => DateTime.Now)) ; + //创建会话对象 + CreateMap() + .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id)) + .ForMember(dest => dest.LastMessage, opt => opt.MapFrom(src => src.LastMessage)) + .ForMember(dest => dest.LastReadMessage, opt => opt.MapFrom(src => src.LastReadMessage)) + .ForMember(dest => dest.LastReadMessageId, opt => opt.MapFrom(src => src.LastReadMessageId)) + .ForMember(dest => dest.ChatType, opt => opt.MapFrom(src => src.ChatType)) + .ForMember(dest => dest.DateTime, opt => opt.MapFrom(src => src.LastMessageTime)) + .ForMember(dest => dest.TargetId, opt => opt.MapFrom(src => src.TargetId)) + .ForMember(dest => dest.UnreadCount, opt => opt.MapFrom(src => src.UnreadCount)) + .ForMember(dest => dest.UserId, opt => opt.MapFrom(src => src.UserId)); + + CreateMap() + .ForMember(dest => dest.TargetAvatar, opt => opt.MapFrom(src => src.Avatar)) + .ForMember(dest => dest.TargetName, opt => opt.MapFrom(src => src.RemarkName)); + + CreateMap() + .ForMember(dest => dest.TargetAvatar, opt => opt.MapFrom(src => src.Avatar)) + .ForMember(dest => dest.TargetName, opt => opt.MapFrom(src => src.Name)); + + } } } diff --git a/backend/IM_API/Controllers/ConversationController.cs b/backend/IM_API/Controllers/ConversationController.cs index bca8f94..61c98fd 100644 --- a/backend/IM_API/Controllers/ConversationController.cs +++ b/backend/IM_API/Controllers/ConversationController.cs @@ -28,6 +28,14 @@ namespace IM_API.Controllers var res = new BaseResponse>(list); return Ok(res); } + [HttpGet] + public async Task Get([FromQuery]int conversationId) + { + var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); + var conversation = await _conversationSerivice.GetConversationByIdAsync(int.Parse(userIdStr), conversationId); + var res = new BaseResponse(conversation); + return Ok(res); + } [HttpPost] public async Task Clear() { diff --git a/backend/IM_API/Controllers/MessageController.cs b/backend/IM_API/Controllers/MessageController.cs index bb12e65..bfc40b6 100644 --- a/backend/IM_API/Controllers/MessageController.cs +++ b/backend/IM_API/Controllers/MessageController.cs @@ -3,6 +3,7 @@ using IM_API.Interface.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using System.ComponentModel.DataAnnotations; using System.Security.Claims; namespace IM_API.Controllers @@ -33,5 +34,13 @@ namespace IM_API.Controllers await _messageService.SendGroupMessageAsync(int.Parse(userIdstr), dto.ReceiverId, dto); return Ok(new BaseResponse()); } + [HttpGet] + public async Task GetMessageList([Required]int conversationId, int? msgId, int? pageSize) + { + var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier); + var msgList = await _messageService.GetMessagesAsync(int.Parse(userIdStr), conversationId, msgId, pageSize, false); + var res = new BaseResponse>(msgList); + return Ok(res); + } } } diff --git a/backend/IM_API/Dtos/ConversationDto.cs b/backend/IM_API/Dtos/ConversationDto.cs index 6d7842f..585bde6 100644 --- a/backend/IM_API/Dtos/ConversationDto.cs +++ b/backend/IM_API/Dtos/ConversationDto.cs @@ -46,6 +46,6 @@ namespace IM_API.Dtos /// 对方头像 /// public string? TargetAvatar { get; set; } - public virtual Message? LastReadMessage { get; set; } + public MessageBaseDto? LastReadMessage { get; set; } } } diff --git a/backend/IM_API/Dtos/MessageDto.cs b/backend/IM_API/Dtos/MessageDto.cs index 5953a7c..c7bcac6 100644 --- a/backend/IM_API/Dtos/MessageDto.cs +++ b/backend/IM_API/Dtos/MessageDto.cs @@ -1,5 +1,16 @@ namespace IM_API.Dtos { - public record MessageBaseDto( - string Type,string ChatType, string? MsgId,int SenderId,int ReceiverId,string Content,DateTime TimeStamp); + public record MessageBaseDto + { + // 使用 { get; init; } 确保对象创建后不可修改,且支持无参构造 + public string Type { get; init; } = default!; + public string ChatType { get; init; } = default!; + public string? MsgId { get; init; } + public int SenderId { get; init; } + public int ReceiverId { get; init; } + public int? GroupMemberId { get; init; } + public string Content { get; init; } = default!; + public DateTime TimeStamp { get; init; } + public MessageBaseDto() { } + } } diff --git a/backend/IM_API/Interface/Services/IConversationService.cs b/backend/IM_API/Interface/Services/IConversationService.cs index 10fb99d..228bbcb 100644 --- a/backend/IM_API/Interface/Services/IConversationService.cs +++ b/backend/IM_API/Interface/Services/IConversationService.cs @@ -29,5 +29,11 @@ namespace IM_API.Interface.Services /// /// Task> GetUserAllStreamKeyAsync(int userId); + /// + /// 获取单个conversation信息 + /// + /// + /// + Task GetConversationByIdAsync(int userId, int conversationId); } } diff --git a/backend/IM_API/Interface/Services/IMessageSevice.cs b/backend/IM_API/Interface/Services/IMessageSevice.cs index b42eed9..c49a949 100644 --- a/backend/IM_API/Interface/Services/IMessageSevice.cs +++ b/backend/IM_API/Interface/Services/IMessageSevice.cs @@ -21,24 +21,14 @@ namespace IM_API.Interface.Services /// Task SendGroupMessageAsync(int senderId,int groupId,MessageBaseDto dto); /// - /// 获取私聊消息列表 + /// 获取消息列表 /// - /// - /// - /// - /// + /// 会话id(用于获取指定用户间聊天消息) + /// 消息id + /// 获取消息数量 /// /// - Task> GetPrivateMessagesAsync(int userAId,int userBId,int page,int pageSize,bool desc); - /// - /// 获取群聊消息列表 - /// - /// - /// - /// - /// - /// - Task> GetGroupMessagesAsync(int groupId, int page, int pageSize, bool desc); + Task> GetMessagesAsync(int userId, int conversationId,int? msgId,int? pageSize,bool desc); /// /// 获取未读消息数 /// diff --git a/backend/IM_API/Models/ImContext.cs b/backend/IM_API/Models/ImContext.cs index 6d796cd..eac2179 100644 --- a/backend/IM_API/Models/ImContext.cs +++ b/backend/IM_API/Models/ImContext.cs @@ -1,16 +1,11 @@ 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 options) : base(options) { @@ -50,10 +45,6 @@ public partial class ImContext : DbContext public virtual DbSet 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 @@ -547,6 +538,9 @@ public partial class ImContext : DbContext entity.Property(e => e.Created) .HasComment("发送时间 ") .HasColumnType("datetime"); + entity.Property(e => e.GroupMemberId) + .HasComment("若为群消息则表示具体的成员id") + .HasColumnType("int(11)"); entity.Property(e => e.MsgType) .HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)") .HasColumnType("tinyint(4)"); diff --git a/backend/IM_API/Models/ImDbContext.cs b/backend/IM_API/Models/ImDbContext.cs deleted file mode 100644 index 67a195e..0000000 --- a/backend/IM_API/Models/ImDbContext.cs +++ /dev/null @@ -1,732 +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 options) - : base(options) - { - } - - public virtual DbSet Admins { get; set; } - - public virtual DbSet Conversations { get; set; } - - public virtual DbSet Devices { get; set; } - - public virtual DbSet Files { get; set; } - - public virtual DbSet Friends { get; set; } - - public virtual DbSet FriendRequests { get; set; } - - public virtual DbSet Groups { get; set; } - - public virtual DbSet GroupInvites { get; set; } - - public virtual DbSet GroupMembers { get; set; } - - public virtual DbSet GroupRequests { get; set; } - - public virtual DbSet LoginLogs { get; set; } - - public virtual DbSet Messages { get; set; } - - public virtual DbSet Notifications { get; set; } - - public virtual DbSet Permissions { get; set; } - - public virtual DbSet Permissionaroles { get; set; } - - public virtual DbSet Roles { get; set; } - - public virtual DbSet 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(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(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.LastReadMessageId, "lastReadMessageId"); - - entity.Property(e => e.Id) - .HasColumnType("int(11)") - .HasColumnName("ID"); - entity.Property(e => e.ChatType).HasColumnType("int(11)"); - entity.Property(e => e.LastReadMessageId) - .HasComment("最后一条已读消息ID ") - .HasColumnType("int(11)") - .HasColumnName("lastMessageId"); - entity.Property(e => e.StreamKey) - .HasMaxLength(255) - .HasComment("消息推送唯一标识符"); - 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.User).WithMany(p => p.Conversations) - .HasForeignKey(d => d.UserId) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("conversations_ibfk_1"); - }); - - modelBuilder.Entity(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(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(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.Avatar) - .HasMaxLength(255) - .HasComment("好友头像"); - entity.Property(e => e.Created) - .HasComment("好友关系创建时间") - .HasColumnType("datetime"); - entity.Property(e => e.FriendId) - .HasComment("用户2ID") - .HasColumnType("int(11)"); - entity.Property(e => e.RemarkName) - .HasMaxLength(20) - .HasComment("好友备注名"); - 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(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(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(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(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(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(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(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.Property(e => e.StreamKey) - .HasMaxLength(255) - .HasComment("消息推送唯一标识符"); - - entity.HasOne(d => d.SenderNavigation).WithMany(p => p.Messages) - .HasForeignKey(d => d.Sender) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("messages_ibfk_1"); - }); - - modelBuilder.Entity(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(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(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(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(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.Avatar) - .HasMaxLength(255) - .HasComment("用户头像链接"); - 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); -} diff --git a/backend/IM_API/Models/Message.cs b/backend/IM_API/Models/Message.cs index fcd7e9f..49d7839 100644 --- a/backend/IM_API/Models/Message.cs +++ b/backend/IM_API/Models/Message.cs @@ -49,6 +49,11 @@ public partial class Message /// public string StreamKey { get; set; } = null!; + /// + /// 若为群消息则表示具体的成员id + /// + public int? GroupMemberId { get; set; } + public virtual ICollection Conversations { get; set; } = new List(); public virtual ICollection Files { get; set; } = new List(); diff --git a/backend/IM_API/Services/ConversationService.cs b/backend/IM_API/Services/ConversationService.cs index 41ae75f..8a24272 100644 --- a/backend/IM_API/Services/ConversationService.cs +++ b/backend/IM_API/Services/ConversationService.cs @@ -1,4 +1,5 @@ -using IM_API.Dtos; +using AutoMapper; +using IM_API.Dtos; using IM_API.Exceptions; using IM_API.Interface.Services; using IM_API.Models; @@ -10,9 +11,11 @@ namespace IM_API.Services public class ConversationService : IConversationService { private readonly ImContext _context; - public ConversationService(ImContext context) + private readonly IMapper _mapper; + public ConversationService(ImContext context, IMapper mapper) { _context = context; + _mapper = mapper; } #region 删除用户会话 public async Task ClearConversationsAsync(int userId) @@ -26,47 +29,41 @@ namespace IM_API.Services #region 获取用户会话列表 public async Task> GetConversationsAsync(int userId) { - var privateQuery = from c in _context.Conversations - join f in _context.Friends on new { c.UserId, c.TargetId} - equals new { UserId = f.UserId, TargetId = f.FriendId} - where c.UserId == userId && c.ChatType == (int)ChatType.PRIVATE - select new ConversationDto - { - Id = c.Id, - UserId = c.UserId, - TargetId = c.TargetId, - LastReadMessageId = c.LastReadMessageId, - LastReadMessage = c.LastReadMessage, - UnreadCount = c.UnreadCount, - ChatType = c.ChatType, - LastMessage = c.LastMessage, - TargetAvatar = f.Avatar, - TargetName = f.RemarkName, - DateTime = c.LastMessageTime + // 1. 获取私聊会话 + var privateList = await (from c in _context.Conversations + join f in _context.Friends on new { c.UserId, c.TargetId } + equals new { UserId = f.UserId, TargetId = f.FriendId } + where c.UserId == userId && c.ChatType == (int)ChatType.PRIVATE + select new { c, f.Avatar, f.RemarkName }) + .ToListAsync(); - }; + // 2. 获取群聊会话 + var groupList = await (from c in _context.Conversations + join g in _context.Groups on c.TargetId equals g.Id + where c.UserId == userId && c.ChatType == (int)ChatType.GROUP + select new { c, g.Avatar, g.Name }) + .ToListAsync(); - var groupQuery = from c in _context.Conversations - join g in _context.Groups on c.TargetId equals g.Id - where c.UserId == userId && c.ChatType == (int)ChatType.GROUP - select new ConversationDto - { - Id = c.Id, - UserId = c.UserId, - TargetId = c.TargetId, - LastReadMessageId = c.LastReadMessageId, - LastReadMessage = c.LastReadMessage, - UnreadCount = c.UnreadCount, - ChatType = c.ChatType, - LastMessage = c.LastMessage, - TargetAvatar = g.Avatar, - TargetName = g.Name, - DateTime = c.LastMessageTime - }; - return await privateQuery - .Concat(groupQuery) - .OrderByDescending(x => x.DateTime) - .ToListAsync(); + var privateDtos = privateList.Select(x => + { + var dto = _mapper.Map(x.c); + dto.TargetAvatar = x.Avatar; + dto.TargetName = x.RemarkName; + return dto; + }); + + var groupDtos = groupList.Select(x => + { + var dto = _mapper.Map(x.c); + dto.TargetAvatar = x.Avatar; + dto.TargetName = x.Name; + return dto; + }); + + // 4. 合并并排序 + return privateDtos.Concat(groupDtos) + .OrderByDescending(x => x.DateTime) + .ToList(); } #endregion #region 删除单个会话 @@ -81,6 +78,7 @@ namespace IM_API.Services #endregion + #region 获取用户所有统一聊天凭证 public async Task> GetUserAllStreamKeyAsync(int userId) { return await _context.Conversations.Where(x => x.UserId == userId) @@ -88,5 +86,37 @@ namespace IM_API.Services .Distinct() .ToListAsync(); } + #endregion + + #region 获取单个会话信息 + public async Task GetConversationByIdAsync(int userId, int conversationId) + { + var conversation = await _context.Conversations + .Include(x => x.LastReadMessage) + .FirstOrDefaultAsync( + x => x.UserId == userId && x.Id == conversationId + ); + if (conversation is null) throw new BaseException(CodeDefine.CONVERSATION_NOT_FOUND); + var dto = _mapper.Map(conversation); + //dto.LastReadMessage = _mapper.Map(conversation); + if(conversation.ChatType == (int)ChatType.PRIVATE) + { + var friendInfo = await _context.Friends.FirstOrDefaultAsync( + x => x.UserId == userId && x.FriendId == conversation.TargetId + ); + if (friendInfo is null) throw new BaseException(CodeDefine.FRIEND_RELATION_NOT_FOUND); + _mapper.Map(friendInfo,dto); + } + if(conversation.ChatType == (int)ChatType.GROUP) + { + var groupInfo = await _context.Groups.FirstOrDefaultAsync( + x => x.Id == conversation.TargetId + ); + if (groupInfo is null) throw new BaseException(CodeDefine.GROUP_NOT_FOUND); + _mapper.Map(groupInfo, dto); + } + return dto; + } + #endregion } } \ No newline at end of file diff --git a/backend/IM_API/Services/MessageService.cs b/backend/IM_API/Services/MessageService.cs index 2c13695..6f4c41f 100644 --- a/backend/IM_API/Services/MessageService.cs +++ b/backend/IM_API/Services/MessageService.cs @@ -20,14 +20,38 @@ namespace IM_API.Services _mapper = mapper; } - public Task> GetGroupMessagesAsync(int groupId, int page, int pageSize, bool desc) + public async Task> GetMessagesAsync(int userId, int conversationId, int? msgId, int? pageSize, bool desc) { - throw new NotImplementedException(); - } - - public Task> GetPrivateMessagesAsync(int userAId, int userBId, int page, int pageSize, bool desc) - { - throw new NotImplementedException(); + //获取会话信息,用于获取双方聊天的唯一标识streamkey + Conversation? conversation = await _context.Conversations.FirstOrDefaultAsync( + x => x.Id == conversationId && x.UserId == userId + ); + if (conversation is null) throw new BaseException(CodeDefine.CONVERSATION_NOT_FOUND); + var query = _context.Messages.AsQueryable(); + if(msgId != null) + { + query = query.Where( + x => x.StreamKey == conversation.StreamKey && x.Id < msgId.Value + ) + .OrderByDescending(x => x.Id); + } + else + { + query = query.Where( + x => x.StreamKey == conversation.StreamKey && x.Id > conversation.LastReadMessageId + ); + } + if(pageSize != null) + { + query = query.Take(pageSize.Value); + } + var msgList = await query + .ToListAsync(); + msgList = msgList + .OrderBy(x => x.Created) + .ThenBy(t => t.Id) + .ToList(); + return _mapper.Map>(msgList); } public Task GetUnreadCountAsync(int userId) diff --git a/docs/后端代码规范文档.md b/docs/后端代码规范文档.md index 69fd33b..aba6311 100644 --- a/docs/后端代码规范文档.md +++ b/docs/后端代码规范文档.md @@ -71,3 +71,12 @@ public WeatherForecastController(IDemo demo) ## 4. 模型类字段使用规范 ### 4.1 类中状态相关字段,例如:Status,返回值为sbyte。若类中有同名字段+后缀Enum,则优先使用后者,StatusEnum。 + +## 5.数据库相关 + +### 5.1 若数据库表结构更新,请在软件包控制台执行如下命令: + +```cmd +Scaffold-DbContext "Name=ConnectionStrings:DefaultConnection" Pomelo.EntityFrameworkCore.MySql -OutputDir Models -Context ImContext -Force -NoOnConfiguring +``` + diff --git a/frontend/web/src/router/index.js b/frontend/web/src/router/index.js index 6a254fb..a4fa55d 100644 --- a/frontend/web/src/router/index.js +++ b/frontend/web/src/router/index.js @@ -11,7 +11,10 @@ const routes = [ { path: '/', component: MainView, - + redirect: '/messages', + meta: { + requiresAuth: true + }, children: [ { path: '/messages', @@ -42,6 +45,7 @@ const routes = [ { path: '/index', component: MainView, + redirect: '/messages', meta: { requiresAuth: true } @@ -56,10 +60,18 @@ const router = createRouter({ router.beforeEach((to, from, next) => { const authStore = useAuthStore(); + if (to.path == '/auth/login') { + if (authStore.isLoggedIn) { + message.info('已登录,即将跳转...'); + next('/'); + } + next(); + } if (to.meta.requiresAuth && !authStore.isLoggedIn) { message.info('未登录,即将跳转...'); next('auth/login'); - } else { + } + else { next(); } }) diff --git a/frontend/web/src/services/message.js b/frontend/web/src/services/message.js index 491e7f6..9949563 100644 --- a/frontend/web/src/services/message.js +++ b/frontend/web/src/services/message.js @@ -11,5 +11,25 @@ export const messageService = { * 清空所有会话消息 * @returns */ - clearConversation: () => request.post('') + clearConversation: () => request.post(''), + /** + * 获取单个会话信息 + * @param {*} conversationId + * @returns + */ + getConversationById: (conversationId) => request.get(`/conversation/get?conversationId=${conversationId}`), + /** + * 获取历史消息列表 + * @param {*} conversationId 指定会话 + * @param {*} msgId + * @param {*} pageSize + * @returns + */ + getHistoryMessages: (conversationId, msgId, pageSize = 10) => request.get(`/message/getmessageList?conversationId=${conversationId}&msgId=${msgId}&pageSize=${pageSize}`), + /** + * 获取最新消息 + * @param {*} conversationId + * @returns + */ + getMessages: (conversationId) => request.get(`/message/getmessageList?conversationId=${conversationId}`) } \ No newline at end of file diff --git a/frontend/web/src/utils/codeHelper.js b/frontend/web/src/utils/codeHelper.js new file mode 100644 index 0000000..9428a61 --- /dev/null +++ b/frontend/web/src/utils/codeHelper.js @@ -0,0 +1,10 @@ +export function getChatCodeStr(code) { + switch (code) { + case 0: + return '私聊' + case 1: + return '群聊' + default: + return '未知类型' + } +} \ No newline at end of file diff --git a/frontend/web/src/utils/formatDate.js b/frontend/web/src/utils/formatDate.js new file mode 100644 index 0000000..6ac814e --- /dev/null +++ b/frontend/web/src/utils/formatDate.js @@ -0,0 +1,18 @@ +export function formatDate(dateStr) { + const date = new Date(dateStr); + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, '0'); // 补零 + const day = String(date.getDate()).padStart(2, '0'); + const hours = String(date.getHours()).padStart(2, '0'); + const minutes = String(date.getMinutes()).padStart(2, '0'); + const seconds = String(date.getSeconds()).padStart(2, '0'); + const nowDate = new Date(); + if (year == nowDate.getFullYear() && month == String(nowDate.getMonth() + 1).padStart(2, '0') && day == String(nowDate.getDate()).padStart(2, '0')) { + return `${hours}:${minutes}:${seconds}`; + } + if (year == nowDate.getFullYear()) { + return `${month}/${day} ${hours}:${minutes}:${seconds}`; + } + + return `${year}/${month}/${day} ${hours}:${minutes}:${seconds}`; +} \ No newline at end of file diff --git a/frontend/web/src/views/contact/ContactList.vue b/frontend/web/src/views/contact/ContactList.vue index e9ebd99..1ffb39d 100644 --- a/frontend/web/src/views/contact/ContactList.vue +++ b/frontend/web/src/views/contact/ContactList.vue @@ -126,7 +126,6 @@ function handleGoToChat() { const loadContactList = async (page = 1,limit = 100) => { const res = await friendService.getFriendList(page,limit); contacts.value = res.data; - console.log(contacts.value) } diff --git a/frontend/web/src/views/messages/MessageContent.vue b/frontend/web/src/views/messages/MessageContent.vue index 8b5293a..eb97f96 100644 --- a/frontend/web/src/views/messages/MessageContent.vue +++ b/frontend/web/src/views/messages/MessageContent.vue @@ -1,7 +1,7 @@