From e96eba36176c5bd4d9ee622e71d946dd74403edf Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期一, 21 四月 2025 17:02:00 +0800 Subject: [PATCH] fix : 优化 --- app/src/main/java/com/example/firstapp/ui/home/HomeFragment.kt | 32 +++ app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt | 131 +++++----------- app/src/main/java/com/example/firstapp/MainActivity.kt | 266 ++++++-------------------------- 3 files changed, 126 insertions(+), 303 deletions(-) diff --git a/app/src/main/java/com/example/firstapp/MainActivity.kt b/app/src/main/java/com/example/firstapp/MainActivity.kt index 585212b..a099d9a 100644 --- a/app/src/main/java/com/example/firstapp/MainActivity.kt +++ b/app/src/main/java/com/example/firstapp/MainActivity.kt @@ -33,6 +33,7 @@ import java.util.Date import java.util.Locale import android.app.AlertDialog +import com.example.firstapp.utils.CodeUtils class MainActivity : AppCompatActivity() { // 安全防护关键词数组 @@ -286,12 +287,6 @@ val msg = Msg(0, "1111", "111111", messageBody, 1, "111", 1, 1) val msgId = Core.msg.insert(msg) - // 禁用关键词拦截 -// if (securityKeywordsList.any { it in messageBody }) { -// android.util.Log.d("MainActivity", "历史短信含有禁用关键词,跳过处理") -// continue -// } - // 使用协程处理API调用和数据库操作 CoroutineScope(Dispatchers.IO).launch { try { @@ -302,224 +297,71 @@ if (response.status == "success") { when (response.data.category) { "快递" -> { - val pickupCode = response.data.details.pickupCode ?: "" - if (pickupCode.isNotEmpty()) { - val existingCode = - Core.code.queryByTypeAndCodeAndDate( - response.data.category, - pickupCode, - dateString - ) - - if (existingCode == null) { - val code = Code( - id = 0, - category = response.data.category, - categoryId = 1, - typeId = 1, - ruleId = 1, - msgId = msgId, - createTime = dateString, - oneLevel = response.data.details.post ?: "", - secondLevel = response.data.details.company - ?: "未知", - code = pickupCode, - pickup = 0, - pickupTime = "", - overTime = "", - address = response.data.details.address - ?: "", - remarks = response.data.details.time ?: "", - ) -// if(code.oneLevel.isNotEmpty() && code.secondLevel.isNotEmpty() && code.code.isNotEmpty()) { - if (code.oneLevel.isNotEmpty() && code.code.isNotEmpty()) { - Core.code.insert(code) - android.util.Log.d( - "MainActivity", - "历史快递短信已保存: $pickupCode" - ) - } - } else { - android.util.Log.d( - "MainActivity", - "发现重复快递短信,跳过保存: $pickupCode" - ) - } - } + val code = CodeUtils.createExpressCode( + msgId = msgId, + createTime = dateString, + 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 amount = response.data.details.amount ?: "" - if (amount.isNotEmpty()) { - val existingCode = - Core.code.queryByTypeAndCodeAndDate( - response.data.category, amount, dateString - ) - - if (existingCode == null) { - val code = Code( - id = 0, - category = response.data.category, - categoryId = 2, - typeId = 1, - ruleId = 2, - msgId = msgId, - createTime = dateString, - oneLevel = response.data.details.type ?: "", - secondLevel = response.data.details.bank - ?: "未知", - code = amount, - pickup = 0, - pickupTime = "", - overTime = response.data.details.date ?: "", - address = response.data.details.address - ?: "", - remarks = "最小还款金额${response.data.details.min_amount}还款卡号${response.data.details.number}" - ) - if (code.oneLevel.isNotEmpty() && code.secondLevel.isNotEmpty() && code.code.isNotEmpty()) { - Core.code.insert(code) - android.util.Log.d( - "MainActivity", - "历史还款短信已保存: $amount" - ) - } - } else { - android.util.Log.d( - "MainActivity", - "发现重复还款短信,跳过保存: $amount" - ) - } - } + val code = CodeUtils.createRepaymentCode( + msgId = msgId, + createTime = dateString, + 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 amount = response.data.details.amount ?: "" - if (amount.isNotEmpty()) { - val existingCode = - Core.code.queryByTypeAndCodeAndDate( - response.data.category, amount, dateString - ) - - if (existingCode == null) { - val code = Code( - id = 0, - category = response.data.category, - categoryId = 3, // 3-收入类型 - typeId = 1, //暂时没有根据type分类 - ruleId = 2, //1-还款类型 - msgId = msgId, - createTime = dateString, - oneLevel = response.data.details.bank ?: "", - secondLevel = response.data.details.bank - ?: "未知", - code = amount, - pickup = 0, // 0-未取件,1-已取件 - pickupTime = "", // 取件时间为空 - overTime = response.data.details.datetime - ?: "", // 超时时间为空,暂时没有这块处理逻辑 - address = response.data.details.address - ?: "", - remarks = "余额" + response.data.details.balance - ?: "", - ) - if (code.oneLevel.isNotEmpty() && code.secondLevel.isNotEmpty() && code.code.isNotEmpty()) { - Core.code.insert(code) - android.util.Log.d( - "MainActivity", - "历史还款短信已保存: $amount" - ) - } - } else { - android.util.Log.d( - "MainActivity", - "发现重复还款短信,跳过保存: $amount" - ) - } - } + val code = CodeUtils.createIncomeCode( + msgId = msgId, + createTime = dateString, + 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 flight = response.data.details.flight ?: "" - if (flight.isNotEmpty()) { - val existingCode = - Core.code.queryByTypeAndCodeAndDate( - response.data.category, flight, dateString - ) - - if (existingCode == null) { - val code = Code( - id = 0, - category = response.data.category, - categoryId = 4, // 4-航班类型 - typeId = 1, //暂时没有根据type分类 - ruleId = 2, //1-还款类型 - msgId = msgId, - createTime = dateString, - oneLevel = response.data.details.company - ?: "未知", - secondLevel = response.data.details.start + response.data.details.end - ?: "", - code = flight, - 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) - } - } else { - android.util.Log.d( - "MainActivity", - "发现重复还款短信,跳过保存: $flight" - ) - } - } + val code = CodeUtils.createFlightCode( + msgId = msgId, + createTime = dateString, + 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 seat = response.data.details.seat ?: "" - if (seat.isNotEmpty()) { - val existingCode = - Core.code.queryByTypeAndCodeAndDate( - response.data.category, seat, dateString - ) - - if (existingCode == null) { - val code = Code( - id = 0, - category = response.data.category, - categoryId = 5, // 5-火车票类型 - typeId = 1, //暂时没有根据type分类 - ruleId = 2, //1-还款类型 - msgId = msgId, - createTime = dateString, - oneLevel = response.data.details.company - ?: "", - secondLevel = response.data.details.company - ?: "未知", - code = 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) - } - } else { - android.util.Log.d( - "MainActivity", - "发现重复还款短信,跳过保存: $seat" - ) - } - } + val code = CodeUtils.createTrainTicketCode( + msgId = msgId, + createTime = dateString, + 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) } } 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..8cbd3f3 100644 --- a/app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt +++ b/app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt @@ -22,6 +22,7 @@ import java.time.ZoneId import java.util.Date import java.util.Locale +import com.example.firstapp.utils.CodeUtils class SmsReceiver : BroadcastReceiver() { @@ -72,121 +73,71 @@ // 根据不同类型处理数据 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 ) - 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 ) - 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 ) - if(code.oneLevel!="" && code.secondLevel!="" && code.code!="") { - Core.code.insert(code) - } + CodeUtils.saveCode(code) } + "航班" -> { - val code = Code( - id = 0, - category = response.data.category, - categoryId = 4, // 4-航班类型 - typeId = 1, //暂时没有根据type分类 - ruleId = 2, //1-还款类型 + val code = CodeUtils.createFlightCode( 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 ?: "", + 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 ) - if(code.oneLevel!="" && code.secondLevel!="" && code.code!="") { - Core.code.insert(code) - } + CodeUtils.saveCode(code) } + "火车票" -> { - val code = Code( - id = 0, - category = response.data.category, - categoryId = 5, // 5-火车票类型 - typeId = 1, //暂时没有根据type分类 - ruleId = 2, //1-还款类型 + val code = CodeUtils.createTrainTicketCode( 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 ?: "", + 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 ) - if(code.oneLevel!="" && code.secondLevel!="" && code.code!="") { - Core.code.insert(code) - } + CodeUtils.saveCode(code) } } diff --git a/app/src/main/java/com/example/firstapp/ui/home/HomeFragment.kt b/app/src/main/java/com/example/firstapp/ui/home/HomeFragment.kt index 743a5ab..db81d86 100644 --- a/app/src/main/java/com/example/firstapp/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/example/firstapp/ui/home/HomeFragment.kt @@ -596,7 +596,37 @@ if (isMember) { // 会员可以看到所有分类 - adapter.setCategories(categories) + val serverCategories = RetrofitClient.apiService.getUserCategories(response.data?.id.toString()) + if(serverCategories.size==2 && serverCategories[0].name=="快递"&&serverCategories[1].name=="还款"){ + // 将 serverCategories 转换为可变列表 + val mutableServerCategories = serverCategories.toMutableList() + + // 添加多个新分类 + mutableServerCategories.add(CategoryConfig( + id = 5, + name = "火车票", + order = 4, + isEnabled = false + )) + mutableServerCategories.add(CategoryConfig( + id = 4, + name = "航班", + order = 3, + isEnabled = false + )) + mutableServerCategories.add(CategoryConfig( + id = 3, + name = "收入", + order = 2, + isEnabled = false + )) + + // 设置适配器的分类列表 + adapter.setCategories(mutableServerCategories) + + }else { + adapter.setCategories(serverCategories) + } } else { // 非会员只能看到快递和还款 val limitedCategories = categories.filter { -- Gitblit v1.9.3