diff --git a/app/src/main/java/com/idormy/sms/forwarder/database/dao/FrpcDao.kt b/app/src/main/java/com/idormy/sms/forwarder/database/dao/FrpcDao.kt index 0ced8bd7..2900d8c8 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/database/dao/FrpcDao.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/database/dao/FrpcDao.kt @@ -41,8 +41,10 @@ interface FrpcDao { fun getAutorun(): List //使用 ORDER BY 子句和 instr() 函数按照列表中 uid 的顺序返回结果 - @Query("SELECT * FROM Frpc WHERE uid IN (:uids) ORDER BY instr(:instr, uid)") - fun getByUids(uids: List, instr: String): List + //@Query("SELECT * FROM Frpc WHERE uid IN (:uids) ORDER BY instr(:instr, uid)") + //fun getByUids(uids: List, instr: String): List + @Query("SELECT * FROM Frpc WHERE uid IN (:uids)") + fun getByUids(uids: List): List @Query("SELECT * FROM Frpc ORDER BY time DESC") fun pagingSource(): PagingSource diff --git a/app/src/main/java/com/idormy/sms/forwarder/database/dao/SenderDao.kt b/app/src/main/java/com/idormy/sms/forwarder/database/dao/SenderDao.kt index bd96e02d..c27634be 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/database/dao/SenderDao.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/database/dao/SenderDao.kt @@ -42,8 +42,10 @@ interface SenderDao { fun getOne(id: Long): Sender //使用 ORDER BY 子句和 instr() 函数按照列表中 ID 的顺序返回结果 - @Query("SELECT * FROM Sender WHERE id IN (:ids) ORDER BY instr(:instr, id)") - fun getByIds(ids: List, instr: String): List + //@Query("SELECT * FROM Sender WHERE id IN (:ids) ORDER BY instr(:instr, id)") + //fun getByIds(ids: List, instr: String): List + @Query("SELECT * FROM Sender WHERE id IN (:ids)") + fun getByIds(ids: List): List @Query("SELECT count(*) FROM Sender where type=:type and status=:status") fun count(type: String, status: Int): Single diff --git a/app/src/main/java/com/idormy/sms/forwarder/database/repository/FrpcRepository.kt b/app/src/main/java/com/idormy/sms/forwarder/database/repository/FrpcRepository.kt index b38a517d..66b2dbef 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/database/repository/FrpcRepository.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/database/repository/FrpcRepository.kt @@ -31,6 +31,11 @@ class FrpcRepository(private val frpcDao: FrpcDao) { fun getAutorun(): List = frpcDao.getAutorun() - fun getByUids(uids: List, instr: String): List = frpcDao.getByUids(uids, instr) + fun getByUids(uids: List, instr: String): List { + val frpcs = frpcDao.getByUids(uids) + // 将结果按照 instr() 的顺序进行排序 + frpcs.sortedBy { instr.indexOf(it.uid) } + return frpcs + } } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/database/repository/SenderRepository.kt b/app/src/main/java/com/idormy/sms/forwarder/database/repository/SenderRepository.kt index 56e72183..c74a0f94 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/database/repository/SenderRepository.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/database/repository/SenderRepository.kt @@ -30,7 +30,12 @@ class SenderRepository(private val senderDao: SenderDao) { fun getOne(id: Long) = senderDao.getOne(id) - fun getByIds(ids: List, instr: String) = senderDao.getByIds(ids, instr) + fun getByIds(ids: List, instr: String): List { + val senders = senderDao.getByIds(ids) + // 将结果按照 instr() 的顺序进行排序 + senders.sortedBy { instr.indexOf(it.id.toString()) } + return senders + } fun getAllNonCache(): List { val query = SimpleSQLiteQuery("SELECT * FROM Sender ORDER BY id ASC")