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