diff --git a/app/src/main/java/com/tenlionsoft/aimz_k/dao/MsgCategoryDao.kt b/app/src/main/java/com/tenlionsoft/aimz_k/dao/MsgCategoryDao.kt index 62d9365..dcf39d3 100644 --- a/app/src/main/java/com/tenlionsoft/aimz_k/dao/MsgCategoryDao.kt +++ b/app/src/main/java/com/tenlionsoft/aimz_k/dao/MsgCategoryDao.kt @@ -22,7 +22,7 @@ interface MsgCategoryDao { /** * 根据发送人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? /** @@ -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?) //删除聊天 @@ -98,6 +98,7 @@ interface MsgCategoryDao { * 根据发送人的ID插入或者更新 */ suspend fun updateOrInsert(senderId: String, msgBean: MsgBean) { + //判断消息是否存在 val bean = getCategoryBySenderId(msgBean.loginUserId!!, senderId) if (bean == null) { //需要转换成MsgCategoryBean @@ -127,6 +128,11 @@ interface MsgCategoryDao { /** * 根据messageId 更新头像和名称 */ - @Query("UPDATE db_category SET userNickName=:nickName,avatar=:avatar WHERE messageId=:messageId") - suspend fun updateInfoByMessageId(nickName: String, avatar: String, messageId: String) + @Query("UPDATE db_category SET userNickName=:nickName,avatar=:avatar WHERE messageId=:messageId AND loginUserId=:loginUserId") + suspend fun updateInfoByMessageId( + nickName: String, + avatar: String, + messageId: String, + loginUserId: String + ) } \ No newline at end of file diff --git a/app/src/main/java/com/tenlionsoft/aimz_k/dao/MsgDao.kt b/app/src/main/java/com/tenlionsoft/aimz_k/dao/MsgDao.kt index f0107ac..a5fc099 100644 --- a/app/src/main/java/com/tenlionsoft/aimz_k/dao/MsgDao.kt +++ b/app/src/main/java/com/tenlionsoft/aimz_k/dao/MsgDao.kt @@ -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) /** @@ -128,8 +128,13 @@ interface MsgDao { /** * 更新 头像和名称 */ - @Query("UPDATE db_msg SET userNickName=:nickName,avatar=:avatar WHERE messageId=:messageId") - suspend fun updateUserInfoByMessageId(nickName: String, avatar: String, messageId: String) + @Query("UPDATE db_msg SET userNickName=:nickName,avatar=:avatar WHERE messageId=:messageId AND loginUserId=:loginUserId") + suspend fun updateUserInfoByMessageId( + nickName: String, + avatar: String, + messageId: String, + loginUserId: String + ) /** * 搜索聊天内容 diff --git a/app/src/main/java/com/tenlionsoft/aimz_k/viewmodel/ChatPageViewModel.kt b/app/src/main/java/com/tenlionsoft/aimz_k/viewmodel/ChatPageViewModel.kt index 0e33765..9601796 100644 --- a/app/src/main/java/com/tenlionsoft/aimz_k/viewmodel/ChatPageViewModel.kt +++ b/app/src/main/java/com/tenlionsoft/aimz_k/viewmodel/ChatPageViewModel.kt @@ -115,7 +115,7 @@ class ChatPageViewModel( Log.e("ChatPageViewModel", "getList:${fromId}\n${toId}"); return withContext(Dispatchers.IO) { 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( userInfoBean.nickname, userInfoBean.avatar, - messageId + messageId, + SpUtils.getId() ) mDao.updateUserInfoByMessageId( userInfoBean.nickname, userInfoBean.avatar, - messageId + messageId, + SpUtils.getId() ) } refresh() diff --git a/app/src/main/java/com/tenlionsoft/aimz_k/viewmodel/MsgViewModel.kt b/app/src/main/java/com/tenlionsoft/aimz_k/viewmodel/MsgViewModel.kt index e296447..3378963 100644 --- a/app/src/main/java/com/tenlionsoft/aimz_k/viewmodel/MsgViewModel.kt +++ b/app/src/main/java/com/tenlionsoft/aimz_k/viewmodel/MsgViewModel.kt @@ -150,12 +150,14 @@ class MsgViewModel(val context: Context) : BaseViewModel() { cDao.updateInfoByMessageId( userInfoBean.nickname, userInfoBean.avatar, - messageId + messageId, + SpUtils.getId() ) mDao.updateUserInfoByMessageId( userInfoBean.nickname, userInfoBean.avatar, - messageId + messageId, + SpUtils.getId() ) } refresh()