From 93775e1f3d79a1e11b839abbf24201dafcd9e646 Mon Sep 17 00:00:00 2001 From: tj <1378534974@qq.com> Date: 星期五, 25 四月 2025 13:45:56 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt | 119 ++++++++++++++++++++++++++++++++--------------------------- 1 files changed, 64 insertions(+), 55 deletions(-) diff --git a/app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt b/app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt index 3d732b4..fc12fec 100644 --- a/app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt +++ b/app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt @@ -13,6 +13,7 @@ import com.example.firstapp.database.entity.Code import com.example.firstapp.database.entity.Msg import com.example.firstapp.database.service.RetrofitClient +import com.example.firstapp.database.service.RetrofitModelClient import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -21,6 +22,7 @@ import java.time.ZoneId import java.util.Date import java.util.Locale +import com.example.firstapp.utils.CodeUtils class SmsReceiver : BroadcastReceiver() { @@ -37,9 +39,15 @@ val messages = arrayOfNulls<SmsMessage>(pdus.size) val messageBody = StringBuilder() + // 获取短信时间戳(使用第一条短信的时间戳) + var timestamp: Long = 0 + for (i in pdus.indices) { messages[i] = SmsMessage.createFromPdu(pdus[i] as ByteArray) messageBody.append(messages[i]?.messageBody) + if (i == 0) { + timestamp = messages[i]?.timestampMillis ?: System.currentTimeMillis() + } } // 保存原始短信 @@ -58,7 +66,7 @@ CoroutineScope(Dispatchers.IO).launch { try { val response = - RetrofitClient.apiService.processSms(mapOf("content" to messageBody.toString())) + RetrofitModelClient.modelService.processSms(mapOf("content" to messageBody.toString())) if (response.status == "success") { // 获取当前时间 @@ -71,75 +79,76 @@ // 根据不同类型处理数据 when (response.data.category) { "快递" -> { - val code = Code( - id = 0, - category = response.data.category, - categoryId = 1, // 1-快递类型 - typeId = 1, //暂时没有根据type分类 - ruleId = 1, //1-快递类型 + val code = CodeUtils.createExpressCode( msgId = msgId, createTime = createtime, - oneLevel = response.data.details.post ?: "", - secondLevel = response.data.details.company ?: "", - code = response.data.details.pickupCode ?: "", - pickup = 0, // 0-未取件,1-已取件 - pickupTime = "", // 取件时间为空 - overTime = "", // 超时时间为空,暂时没有这块处理逻辑 - address = response.data.details.address ?: "", - remarks = response.data.details.time ?: "", + post = response.data.details.post, + company = response.data.details.company, + pickupCode = response.data.details.pickupCode, + address = response.data.details.address, + time = response.data.details.time, + smsTimestamp = timestamp // 添加短信时间戳 ) - if(code.oneLevel!="" && code.secondLevel!="" && code.code!="") { - Core.code.insert(code) - } + CodeUtils.saveCode(code) } "还款" -> { - val code = Code( - id = 0, - category = response.data.category, - categoryId = 2, // 2-还款类型 - typeId = 1, //暂时没有根据type分类 - ruleId = 2, //1-还款类型 + val code = CodeUtils.createRepaymentCode( msgId = msgId, createTime = createtime, - oneLevel = response.data.details.type ?: "", - secondLevel = response.data.details.bank ?: "", - code = response.data.details.amount ?: "", - pickup = 0, // 0-未取件,1-已取件 - pickupTime = "", // 取件时间为空 - overTime = response.data.details.date - ?: "", // 超时时间为空,暂时没有这块处理逻辑 - address = response.data.details.address ?: "", - remarks = "最小还款金额" + response.data.details.min_amount + "还款卡号" + response.data.details.number - ?: "", + type = response.data.details.type, + bank = response.data.details.bank, + amount = response.data.details.amount, + date = response.data.details.date, + address = response.data.details.address, + minAmount = response.data.details.min_amount, + number = response.data.details.number, + smsTimestamp = timestamp // 添加短信时间戳 ) - if(code.oneLevel!="" && code.secondLevel!="" && code.code!="") { - Core.code.insert(code) - } + CodeUtils.saveCode(code) } "收入" -> { - val code = Code( - id = 0, - category = response.data.category, - categoryId = 3, // 3-收入类型 - typeId = 1, //暂时没有根据type分类 - ruleId = 2, //1-还款类型 + val code = CodeUtils.createIncomeCode( msgId = msgId, createTime = createtime, - oneLevel = response.data.details.bank ?: "", - secondLevel = response.data.details.bank ?: "", - code = response.data.details.amount ?: "", - pickup = 0, // 0-未取件,1-已取件 - pickupTime = "", // 取件时间为空 - overTime = response.data.details.datetime - ?: "", // 超时时间为空,暂时没有这块处理逻辑 - address = response.data.details.address ?: "", - remarks = "余额" + response.data.details.balance ?: "", + bank = response.data.details.bank, + amount = response.data.details.amount, + datetime = response.data.details.datetime, + address = response.data.details.address, + balance = response.data.details.balance, + smsTimestamp = timestamp // 添加短信时间戳 ) - if(code.oneLevel!="" && code.secondLevel!="" && code.code!="") { - Core.code.insert(code) - } + CodeUtils.saveCode(code) + } + + "航班" -> { + val code = CodeUtils.createFlightCode( + msgId = msgId, + createTime = createtime, + company = response.data.details.company, + start = response.data.details.start, + end = response.data.details.end, + seat = response.data.details.seat, + time = response.data.details.time, + address = response.data.details.address, + smsTimestamp = timestamp // 添加短信时间戳 + ) + CodeUtils.saveCode(code) + } + + "火车票" -> { + val code = CodeUtils.createTrainTicketCode( + msgId = msgId, + createTime = createtime, + company = response.data.details.company, + seat = response.data.details.seat, + time = response.data.details.time, + address = response.data.details.address, + trips = response.data.details.trips, + smsTimestamp = timestamp // 添加短信时间戳 + ) + CodeUtils.saveCode(code) } } -- Gitblit v1.9.3