From 4cb9946eff3626389ae93feef4250dd3d45fb694 Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期一, 03 三月 2025 16:00:50 +0800
Subject: [PATCH] fix: 取件相关逻辑
---
app/src/main/java/com/example/firstapp/activity/PickupActivity.kt | 7 +-
.idea/deploymentTargetSelector.xml | 4
app/src/main/java/com/example/firstapp/adapter/ExpressAdapter.kt | 9 ++
app/src/main/java/com/example/firstapp/database/repository/CodeRepository.kt | 2
app/src/main/java/com/example/firstapp/model/ExpressGroup.kt | 4
app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt | 6 +-
app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt | 7 ++
app/src/main/res/layout/activity_pickup.xml | 15 ++--
app/src/main/java/com/example/firstapp/database/entity/Code.kt | 4 +
.idea/misc.xml | 3
app/src/main/java/com/example/firstapp/ui/home/HomeViewModel.kt | 4
gradle.properties | 2
.idea/vcs.xml | 2
app/src/main/res/layout/item_package.xml | 46 +++++++++++++-
app/src/main/java/com/example/firstapp/adapter/MyAdapter.kt | 4
.idea/gradle.xml | 3
app/src/main/java/com/example/firstapp/MainActivity.kt | 2
app/src/main/res/layout/item_express_package_home.xml | 41 ++++++++++++-
18 files changed, 124 insertions(+), 41 deletions(-)
diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
index 31c1a01..3b8cd93 100644
--- a/.idea/deploymentTargetSelector.xml
+++ b/.idea/deploymentTargetSelector.xml
@@ -4,10 +4,10 @@
<selectionStates>
<SelectionState runConfigName="app">
<option name="selectionMode" value="DROPDOWN" />
- <DropdownSelection timestamp="2025-02-25T05:56:30.000685300Z">
+ <DropdownSelection timestamp="2025-02-25T09:44:45.437232500Z">
<Target type="DEFAULT_BOOT">
<handle>
- <DeviceId pluginId="PhysicalDevice" identifier="serial=HMQNW19A24001406" />
+ <DeviceId pluginId="PhysicalDevice" identifier="serial=88Y5T19C14010323" />
</handle>
</Target>
</DropdownSelection>
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index c29b364..ad84da2 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -4,8 +4,9 @@
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
+ <option name="testRunner" value="CHOOSE_PER_TEST" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
- <option name="gradleJvm" />
+ <option name="gradleJvm" value="17" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 0ad17cb..d7916a5 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,7 +1,6 @@
-<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
- <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
+ <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 35eb1dd..94a25f7 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
- <mapping directory="" vcs="Git" />
+ <mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
diff --git a/app/src/main/java/com/example/firstapp/MainActivity.kt b/app/src/main/java/com/example/firstapp/MainActivity.kt
index bbb32a4..bd37767 100644
--- a/app/src/main/java/com/example/firstapp/MainActivity.kt
+++ b/app/src/main/java/com/example/firstapp/MainActivity.kt
@@ -232,7 +232,7 @@
android.util.Log.d("SmsReceiver", "Received SMS code: ${code}")
val msg = Msg(0, "1111", "111111", messageBody.toString(), 1, "111", 1, 1)
val msgId = Core.msg.insert(msg)
- val code = Code(0, rule.type, 1, rule.content, 1, 1, msgId, code, dateString, "中通")
+ val code = Code(0, rule.type, 1, rule.content, 1, 1, msgId, code, dateString, "中通",0)
Core.code.insert(code)
android.util.Log.d("SMS_DEBUG", "历史短信已保存到数据库")
}else{
diff --git a/app/src/main/java/com/example/firstapp/activity/PickupActivity.kt b/app/src/main/java/com/example/firstapp/activity/PickupActivity.kt
index 9713e2c..2ba9cd2 100644
--- a/app/src/main/java/com/example/firstapp/activity/PickupActivity.kt
+++ b/app/src/main/java/com/example/firstapp/activity/PickupActivity.kt
@@ -61,7 +61,7 @@
lifecycleScope.launch {
try {
// 处理单个包裹取件
-// Core.code.pickup(pack.trackingNumber)
+ Core.code.pickup(pack.id)
// 重新加载数据
loadData()
// 通知MainActivity刷新
@@ -79,7 +79,7 @@
val packages = expressAdapter.currentList
// 批量处理取件
packages.forEach { pack ->
-// Core.code.pickup(pack.trackingNumber)
+ Core.code.pickup(pack.id)
}
// 清空列表
expressAdapter.submitList(emptyList())
@@ -103,9 +103,10 @@
val codes = Core.code.getByKeyword(stationName)
val packages = codes.map { code ->
ExpressPackage(
+ id = code.id,
company = code.name ?: company,
trackingNumber = code.code,
- date = code.overtime
+ createTime = code.createtime
)
}
diff --git a/app/src/main/java/com/example/firstapp/adapter/ExpressAdapter.kt b/app/src/main/java/com/example/firstapp/adapter/ExpressAdapter.kt
index dafbba4..6bffe16 100644
--- a/app/src/main/java/com/example/firstapp/adapter/ExpressAdapter.kt
+++ b/app/src/main/java/com/example/firstapp/adapter/ExpressAdapter.kt
@@ -91,7 +91,9 @@
}
fun bind(pack: ExpressPackage) {
- binding.tvPackageInfo.text = "${pack.company} - ${pack.trackingNumber}"
+ binding.tvCompany.text = pack.company
+ binding.tvCreateTime.text = pack.createTime
+ binding.tvTrackingNumber.text = pack.trackingNumber
}
}
}
@@ -136,7 +138,10 @@
}
fun bind(pack: ExpressPackage) {
- binding.tvPackageInfo.text = "${pack.company} - ${pack.trackingNumber}"
+ binding.tvPackageId.text = pack.id.toString()
+ binding.tvCompany.text = pack.company
+ binding.tvCreateTime.text = pack.createTime
+ binding.tvTrackingNumber.text = pack.trackingNumber
binding.ivPackageStatus.setImageResource(
// if (pack.isPickedUp) R.drawable.circle_checked
// else R.drawable.circle
diff --git a/app/src/main/java/com/example/firstapp/adapter/MyAdapter.kt b/app/src/main/java/com/example/firstapp/adapter/MyAdapter.kt
index 8c107fe..6bc68f0 100644
--- a/app/src/main/java/com/example/firstapp/adapter/MyAdapter.kt
+++ b/app/src/main/java/com/example/firstapp/adapter/MyAdapter.kt
@@ -28,8 +28,8 @@
val item = getItem(position) // 使用 getItem 来获取当前位置的 item
holder.tvTitle.text = item.type // 假设 Code 类有一个 `type` 属性
holder.tvDescription.text = item.code // 假设 Code 类有一个 `code` 属性
- var overtime = "请注意:当前取件免费截止时间是"+item.overtime+",超时会收取额外费用"
- holder.overTimeMsg.text = overtime
+ var createtime = "请注意:当前取件免费截止时间是"+item.createtime+",超时会收取额外费用"
+ holder.overTimeMsg.text = createtime
println("打印......")
}
diff --git a/app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt b/app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt
index a3c0bca..b27f1dd 100644
--- a/app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt
+++ b/app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt
@@ -45,10 +45,15 @@
@Query("""
SELECT * FROM Code
WHERE type LIKE '%' || :keyword || '%'
+ AND pickup = '0'
ORDER BY time DESC
""")
fun getByKeyword(keyword: String): List<Code>
- @Query("SELECT * FROM Code WHERE type = :content and code= :code and overtime = :dateString LIMIT 1")
+ @Query("SELECT * FROM Code WHERE type = :content and code= :code and createtime = :dateString LIMIT 1")
fun queryByTypeAndCodeAndDate(content: String, code: String, dateString: String): Code
+
+
+ @Query("update Code set pickup = '1' where id=:id")
+ fun pickup(id: Long)
}
diff --git a/app/src/main/java/com/example/firstapp/database/entity/Code.kt b/app/src/main/java/com/example/firstapp/database/entity/Code.kt
index ac1f130..30dff0a 100644
--- a/app/src/main/java/com/example/firstapp/database/entity/Code.kt
+++ b/app/src/main/java/com/example/firstapp/database/entity/Code.kt
@@ -14,8 +14,10 @@
val ruleId: Long,
val msgId: Long,
val code: String,
- var overtime: String,
+ var createtime: String,
var name: String,
+ var pickup: Int,
var time: Date = Date(),
+// var overtime: String,
)
diff --git a/app/src/main/java/com/example/firstapp/database/repository/CodeRepository.kt b/app/src/main/java/com/example/firstapp/database/repository/CodeRepository.kt
index e30fe19..bd77948 100644
--- a/app/src/main/java/com/example/firstapp/database/repository/CodeRepository.kt
+++ b/app/src/main/java/com/example/firstapp/database/repository/CodeRepository.kt
@@ -26,4 +26,6 @@
return codeDao.queryByTypeAndCodeAndDate(content,code,dateString)
}
+ @WorkerThread
+ fun pickup(id: Long) = codeDao.pickup(id)
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/firstapp/model/ExpressGroup.kt b/app/src/main/java/com/example/firstapp/model/ExpressGroup.kt
index 994245a..82a23c5 100644
--- a/app/src/main/java/com/example/firstapp/model/ExpressGroup.kt
+++ b/app/src/main/java/com/example/firstapp/model/ExpressGroup.kt
@@ -6,8 +6,8 @@
)
data class ExpressPackage(
-// var id: Long,
+ var id: Long,
val company: String,
val trackingNumber: String,
- val date: String
+ val createTime: String
)
\ No newline at end of file
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 3ee32a5..f45812a 100644
--- a/app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt
+++ b/app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt
@@ -82,10 +82,10 @@
val date = Date.from(currentTime.atZone(ZoneId.systemDefault()).toInstant())
// 如果需要格式化显示
val sdf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault())
- val overtime = sdf.format(date)
- val existingCode = Core.code.queryByTypeAndCodeAndDate(rule.content, code, overtime)
+ val createtime = sdf.format(date)
+ val existingCode = Core.code.queryByTypeAndCodeAndDate(rule.content, code, createtime)
if (existingCode == null) {
- val code = Code(0, rule.type, 1, rule.content, 1, 1, msgId, code, overtime, "中通")
+ val code = Code(0, rule.type, 1, rule.content, 1, 1, msgId, code, createtime, "中通",0)
Core.code.insert(code)
Log.d("SMS_DEBUG", "新短信已保存到数据库")
diff --git a/app/src/main/java/com/example/firstapp/ui/home/HomeViewModel.kt b/app/src/main/java/com/example/firstapp/ui/home/HomeViewModel.kt
index 86c20bb..9c065a5 100644
--- a/app/src/main/java/com/example/firstapp/ui/home/HomeViewModel.kt
+++ b/app/src/main/java/com/example/firstapp/ui/home/HomeViewModel.kt
@@ -50,10 +50,10 @@
val groups = stations.map { station ->
val packages = Core.code.getByKeyword(station.nickname).map { code ->
ExpressPackage(
-// id = code.id, //ID
+ id = code.id, //ID
company = code.name, //快递公司
trackingNumber = code.code, // 取件码
- date = code.overtime //时间
+ createTime = code.createtime //快递时间
)
}
ExpressGroup(
diff --git a/app/src/main/res/layout/activity_pickup.xml b/app/src/main/res/layout/activity_pickup.xml
index 9685121..28abdda 100644
--- a/app/src/main/res/layout/activity_pickup.xml
+++ b/app/src/main/res/layout/activity_pickup.xml
@@ -16,27 +16,28 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
- android:gravity="center_vertical">
+ android:layout_marginBottom="12dp">
<ImageView
android:id="@+id/iv_back"
- android:layout_width="24dp"
- android:layout_height="24dp"
+ android:layout_width="20dp"
+ android:layout_height="20dp"
+ android:layout_gravity="center_vertical"
android:src="@drawable/location"/>
<TextView
android:id="@+id/tv_station_name"
- android:layout_width="wrap_content"
+ android:layout_width="0dp"
android:layout_height="wrap_content"
- android:layout_marginStart="16dp"
+ android:layout_weight="1"
+ android:layout_marginStart="8dp"
android:textSize="18sp"
android:textColor="#333333"/>
<TextView
android:id="@+id/tv_package_count"
android:layout_width="wrap_content"
- android:layout_height="24dp"
- android:layout_marginStart="8dp"
+ android:layout_height="wrap_content"
android:textColor="#666666"
android:textSize="14sp" />
</LinearLayout>
diff --git a/app/src/main/res/layout/item_express_package_home.xml b/app/src/main/res/layout/item_express_package_home.xml
index f91a6a1..a172550 100644
--- a/app/src/main/res/layout/item_express_package_home.xml
+++ b/app/src/main/res/layout/item_express_package_home.xml
@@ -6,11 +6,42 @@
android:padding="12dp"
android:gravity="center_vertical">
- <TextView
- android:id="@+id/tv_package_info"
- android:layout_width="match_parent"
+ <ImageView
+ android:id="@+id/iv_company_logo"
+ android:layout_width="20dp"
+ android:layout_height="20dp"
+ android:layout_marginEnd="6dp"/>
+
+ <LinearLayout
+ android:layout_width="0dp"
android:layout_height="wrap_content"
- android:textSize="16sp"
- android:textColor="#333333"/>
+ android:layout_weight="1"
+ android:orientation="vertical">
+
+ <TextView
+ android:id="@+id/tv_company"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textSize="12sp"
+ android:textColor="#333333"
+ android:textStyle="bold"/>
+
+ <TextView
+ android:id="@+id/tv_create_time"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textSize="12sp"
+ android:textColor="#666666"
+ android:layout_marginTop="4dp"/>
+ </LinearLayout>
+
+ <TextView
+ android:id="@+id/tv_tracking_number"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textSize="25sp"
+ android:textColor="#333333"
+ android:layout_marginStart="12dp"
+ android:textStyle="bold"/>
</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_package.xml b/app/src/main/res/layout/item_package.xml
index 6748f7b..6c4e6cb 100644
--- a/app/src/main/res/layout/item_package.xml
+++ b/app/src/main/res/layout/item_package.xml
@@ -13,11 +13,47 @@
android:src="@drawable/circle"/>
<TextView
- android:id="@+id/tv_package_info"
- android:layout_width="match_parent"
+ android:id="@+id/tv_package_id"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:visibility="gone"/>
+
+ <ImageView
+ android:id="@+id/iv_company_logo"
+ android:layout_width="20dp"
+ android:layout_height="20dp"
+ android:layout_marginEnd="6dp"/>
+
+ <LinearLayout
+ android:layout_width="0dp"
android:layout_height="wrap_content"
- android:layout_marginStart="16dp"
- android:textSize="16sp"
- android:textColor="#333333"/>
+ android:layout_weight="1"
+ android:orientation="vertical">
+
+ <TextView
+ android:id="@+id/tv_company"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textSize="12sp"
+ android:textColor="#333333"
+ android:textStyle="bold"/>
+
+ <TextView
+ android:id="@+id/tv_create_time"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textSize="12sp"
+ android:textColor="#666666"
+ android:layout_marginTop="4dp"/>
+ </LinearLayout>
+
+ <TextView
+ android:id="@+id/tv_tracking_number"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textSize="25sp"
+ android:textColor="#333333"
+ android:layout_marginStart="12dp"
+ android:textStyle="bold"/>
</LinearLayout>
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index ec48926..15a3aae 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -35,5 +35,5 @@
android.precompileDependenciesResources=false
android.enableJetifier=true
#android.enableD8=true
-org.gradle.java.home=D\:\\devInstall\\java\\jdk-17.0.12
+org.gradle.java.home=D\:\\tanjiyaun\\jdk\\jdk1.8\\jdk-17.0.12
--
Gitblit v1.9.3