From 0d26a0de703dba9852ccf0af9caae744699aea75 Mon Sep 17 00:00:00 2001 From: pppscn <35696959@qq.com> Date: Mon, 15 Jan 2024 14:32:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=20=E9=83=A8?= =?UTF-8?q?=E5=88=86=20Android=204.4=20=E7=B3=BB=E7=BB=9F=EF=BC=88?= =?UTF-8?q?=E9=9A=8F=E8=BA=ABWiFi=EF=BC=89=E4=B8=8D=E6=94=AF=E6=8C=81=20`i?= =?UTF-8?q?nstr()`=20=E5=87=BD=E6=95=B0=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/idormy/sms/forwarder/database/dao/FrpcDao.kt | 6 ++++-- .../com/idormy/sms/forwarder/database/dao/SenderDao.kt | 6 ++++-- .../sms/forwarder/database/repository/FrpcRepository.kt | 7 ++++++- .../sms/forwarder/database/repository/SenderRepository.kt | 7 ++++++- 4 files changed, 20 insertions(+), 6 deletions(-) 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")