From 9755d9eefb12f95fa45c785e526038e10c9c7115 Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期五, 25 四月 2025 18:15:51 +0800 Subject: [PATCH] 短信fix --- app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt | 184 +++++++++++++++++---------------------------- 1 files changed, 71 insertions(+), 113 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 3a274b8..dd3f62c 100644 --- a/app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt +++ b/app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt @@ -22,10 +22,14 @@ import java.time.ZoneId import java.util.Date import java.util.Locale +import com.example.firstapp.utils.CodeUtils class SmsReceiver : BroadcastReceiver() { - + // 添加一个静态同步锁对象 + companion object { + private val syncLock = Any() + } // 安全防护关键词数组 private var securityKeywordsList = emptyList<String>() @@ -69,127 +73,81 @@ val sdf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()) val createtime = sdf.format(date) - // 根据不同类型处理数据 - when (response.data.category) { - "快递" -> { - val code = Code( - id = 0, - category = response.data.category, - categoryId = 1, // 1-快递类型 - typeId = 1, //暂时没有根据type分类 - ruleId = 1, //1-快递类型 - 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 ?: "", - ) - if(code.oneLevel!="" && code.secondLevel!="" && code.code!="") { - Core.code.insert(code) + // 使用同步块处理保存操作 + synchronized(syncLock) { + // 根据不同类型处理数据 + when (response.data.category) { + "快递" -> { + val code = CodeUtils.createExpressCode( + msgId = msgId, + createTime = createtime, + 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 + ) + CodeUtils.saveCode(code) } - } - "还款" -> { - val code = Code( - id = 0, - category = response.data.category, - categoryId = 2, // 2-还款类型 - typeId = 1, //暂时没有根据type分类 - ruleId = 2, //1-还款类型 - 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 - ?: "", - ) - if(code.oneLevel!="" && code.secondLevel!="" && code.code!="") { - Core.code.insert(code) + "还款" -> { + val code = CodeUtils.createRepaymentCode( + msgId = msgId, + createTime = createtime, + 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 + ) + CodeUtils.saveCode(code) } - } - "收入" -> { - val code = Code( - id = 0, - category = response.data.category, - categoryId = 3, // 3-收入类型 - typeId = 1, //暂时没有根据type分类 - ruleId = 2, //1-还款类型 - 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 ?: "", - ) - if(code.oneLevel!="" && code.secondLevel!="" && code.code!="") { - Core.code.insert(code) + "收入" -> { + val code = CodeUtils.createIncomeCode( + msgId = msgId, + createTime = createtime, + 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 + ) + CodeUtils.saveCode(code) } - } - "航班" -> { - val code = Code( - id = 0, - category = response.data.category, - categoryId = 4, // 4-航班类型 - typeId = 1, //暂时没有根据type分类 - ruleId = 2, //1-还款类型 - msgId = msgId, - createTime = createtime, - oneLevel = response.data.details.company ?: "", - secondLevel = response.data.details.start +response.data.details.end?: "未知", - code = response.data.details.seat ?: "", - pickup = 0, // 0-未取件,1-已取件 - pickupTime = "", // 取件时间为空 - overTime = response.data.details.time - ?: "", // 超时时间为空,暂时没有这块处理逻辑 - address = response.data.details.address ?: "", - remarks = response.data.details.seat ?: "", - ) - if(code.oneLevel!="" && code.secondLevel!="" && code.code!="") { - Core.code.insert(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 + ) + CodeUtils.saveCode(code) } - } - "火车票" -> { - val code = Code( - id = 0, - category = response.data.category, - categoryId = 5, // 5-火车票类型 - typeId = 1, //暂时没有根据type分类 - ruleId = 2, //1-还款类型 - msgId = msgId, - createTime = createtime, - oneLevel = response.data.details.company ?: "", - secondLevel = response.data.details.company ?: "未知", - code = response.data.details.seat ?: "", - pickup = 0, // 0-未取件,1-已取件 - pickupTime = "", // 取件时间为空 - overTime = response.data.details.time - ?: "", // 超时时间为空,暂时没有这块处理逻辑 - address = response.data.details.address ?: "", - remarks = response.data.details.trips ?: "", - ) - if(code.oneLevel!="" && code.secondLevel!="" && code.code!="") { - Core.code.insert(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 + ) + CodeUtils.saveCode(code) } + + else -> {} } } - // 发送广播通知数据已更新 val updateIntent = Intent("com.example.firstapp.DATA_UPDATED") context.sendBroadcast(updateIntent) -- Gitblit v1.9.3