| | |
| | | import java.util.Date |
| | | import java.util.Locale |
| | | import android.app.AlertDialog |
| | | import com.example.firstapp.utils.CodeUtils |
| | | |
| | | class MainActivity : AppCompatActivity() { |
| | | // 安全防护关键词数组 |
| | |
| | | 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 { |
| | |
| | | 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) |
| | | } |
| | | } |
| | | |
| | |
| | | import java.time.ZoneId |
| | | import java.util.Date |
| | | import java.util.Locale |
| | | import com.example.firstapp.utils.CodeUtils |
| | | |
| | | |
| | | class SmsReceiver : BroadcastReceiver() { |
| | |
| | | // 根据不同类型处理数据 |
| | | 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) |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | 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 { |