离线消息

This commit is contained in:
itgaojian163 2024-11-12 09:52:09 +08:00
parent e03d68e55f
commit dc85509a33
4 changed files with 27 additions and 12 deletions

View File

@ -22,7 +22,7 @@ interface MsgCategoryDao {
/** /**
* 根据发送人ID获取 * 根据发送人ID获取
*/ */
@Query("SELECT * FROM db_category WHERE senderId=:senderId OR receiverId=:senderId AND loginUserId != :userId") @Query("SELECT * FROM db_category WHERE loginUserId = :userId AND senderId=:senderId OR receiverId=:senderId")
suspend fun getCategoryBySenderId(userId: String, senderId: String): MsgCategoryBean? suspend fun getCategoryBySenderId(userId: String, senderId: String): MsgCategoryBean?
/** /**
@ -58,7 +58,7 @@ interface MsgCategoryDao {
/** /**
* 清空与某个人的聊天记录 * 清空与某个人的聊天记录
*/ */
@Query("DELETE FROM db_category WHERE loginUserId=:userId AND `senderId`=(:from) AND receiverId=(:to) OR `senderId`=(:to) AND receiverId=(:from)") @Query("DELETE FROM db_category WHERE loginUserId=:userId AND (senderId=:from AND receiverId=:to) OR (senderId=:to AND receiverId=:from)")
suspend fun delChatHistory(userId: String, from: String?, to: String?) suspend fun delChatHistory(userId: String, from: String?, to: String?)
//删除聊天 //删除聊天
@ -98,6 +98,7 @@ interface MsgCategoryDao {
* 根据发送人的ID插入或者更新 * 根据发送人的ID插入或者更新
*/ */
suspend fun updateOrInsert(senderId: String, msgBean: MsgBean) { suspend fun updateOrInsert(senderId: String, msgBean: MsgBean) {
//判断消息是否存在
val bean = getCategoryBySenderId(msgBean.loginUserId!!, senderId) val bean = getCategoryBySenderId(msgBean.loginUserId!!, senderId)
if (bean == null) { if (bean == null) {
//需要转换成MsgCategoryBean //需要转换成MsgCategoryBean
@ -127,6 +128,11 @@ interface MsgCategoryDao {
/** /**
* 根据messageId 更新头像和名称 * 根据messageId 更新头像和名称
*/ */
@Query("UPDATE db_category SET userNickName=:nickName,avatar=:avatar WHERE messageId=:messageId") @Query("UPDATE db_category SET userNickName=:nickName,avatar=:avatar WHERE messageId=:messageId AND loginUserId=:loginUserId")
suspend fun updateInfoByMessageId(nickName: String, avatar: String, messageId: String) suspend fun updateInfoByMessageId(
nickName: String,
avatar: String,
messageId: String,
loginUserId: String
)
} }

View File

@ -87,7 +87,7 @@ interface MsgDao {
/** /**
* 清空与某个人的聊天记录 * 清空与某个人的聊天记录
*/ */
@Query("DELETE FROM db_msg WHERE loginUserId=:userId AND senderId=:from AND receiverId=:to OR senderId=:from AND senderId=:to") @Query("DELETE FROM db_msg WHERE loginUserId=:userId AND (senderId=:from AND receiverId=:to) OR (senderId=:from AND senderId=:to)")
suspend fun delChatHistory(userId: String, from: String, to: String) suspend fun delChatHistory(userId: String, from: String, to: String)
/** /**
@ -128,8 +128,13 @@ interface MsgDao {
/** /**
* 更新 头像和名称 * 更新 头像和名称
*/ */
@Query("UPDATE db_msg SET userNickName=:nickName,avatar=:avatar WHERE messageId=:messageId") @Query("UPDATE db_msg SET userNickName=:nickName,avatar=:avatar WHERE messageId=:messageId AND loginUserId=:loginUserId")
suspend fun updateUserInfoByMessageId(nickName: String, avatar: String, messageId: String) suspend fun updateUserInfoByMessageId(
nickName: String,
avatar: String,
messageId: String,
loginUserId: String
)
/** /**
* 搜索聊天内容 * 搜索聊天内容

View File

@ -115,7 +115,7 @@ class ChatPageViewModel(
Log.e("ChatPageViewModel", "getList:${fromId}\n${toId}"); Log.e("ChatPageViewModel", "getList:${fromId}\n${toId}");
return withContext(Dispatchers.IO) { return withContext(Dispatchers.IO) {
val msgDao = DbManager.db.msgDao() val msgDao = DbManager.db.msgDao()
return@withContext msgDao.getMsgByFromOrToPage(SpUtils.getId(),fromId, toId) return@withContext msgDao.getMsgByFromOrToPage(SpUtils.getId(), fromId, toId)
} }
} }
@ -429,12 +429,14 @@ class ChatPageViewModel(
cDao.updateInfoByMessageId( cDao.updateInfoByMessageId(
userInfoBean.nickname, userInfoBean.nickname,
userInfoBean.avatar, userInfoBean.avatar,
messageId messageId,
SpUtils.getId()
) )
mDao.updateUserInfoByMessageId( mDao.updateUserInfoByMessageId(
userInfoBean.nickname, userInfoBean.nickname,
userInfoBean.avatar, userInfoBean.avatar,
messageId messageId,
SpUtils.getId()
) )
} }
refresh() refresh()

View File

@ -150,12 +150,14 @@ class MsgViewModel(val context: Context) : BaseViewModel() {
cDao.updateInfoByMessageId( cDao.updateInfoByMessageId(
userInfoBean.nickname, userInfoBean.nickname,
userInfoBean.avatar, userInfoBean.avatar,
messageId messageId,
SpUtils.getId()
) )
mDao.updateUserInfoByMessageId( mDao.updateUserInfoByMessageId(
userInfoBean.nickname, userInfoBean.nickname,
userInfoBean.avatar, userInfoBean.avatar,
messageId messageId,
SpUtils.getId()
) )
} }
refresh() refresh()