完善实名认证、钱包与打卡点模块 UI 与业务逻辑。

对齐 Android 实名认证流程与审核页、钱包提现/积分兑换界面,优化打卡点列表与详情交互,并补充相关资源、主题 token 与单元测试。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-13 16:28:10 +08:00
parent 07b2b9d459
commit 5138c1c11a
63 changed files with 3101 additions and 745 deletions

View File

@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,5 @@
{
"images" : [{ "filename" : "punch_point_delete.svg", "idiom" : "universal" }],
"info" : { "author" : "xcode", "version" : 1 },
"properties" : { "preserves-vector-representation" : true }
}

View File

@ -0,0 +1 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.208 3.002H11.992C11.98 2.918 11.953 2.834 11.913 2.751L11.367 1.63C11.183 1.251 10.742 1.004 10.253 1.004H5.753C5.264 1.004 4.824 1.251 4.639 1.63L4.092 2.751C4.052 2.835 4.025 2.92 4.011 3.002H1.771C1.341 3.002 .989 3.354 .989 3.784V4.215C.989 4.645 1.341 4.996 1.771 4.996H2.986V14.212C2.986 14.641 3.338 14.993 3.767 14.993H12.199C12.628 14.993 12.98 14.641 12.98 14.212V4.995H14.21C14.639 4.995 14.991 4.643 14.991 4.213V3.782C14.989 3.354 14.638 3.002 14.208 3.002ZM6.031 12.487C6.031 12.766 5.803 12.995 5.524 12.995C5.244 12.995 5.016 12.766 5.016 12.487V6.504C5.016 6.224 5.244 5.996 5.524 5.996C5.803 5.996 6.031 6.224 6.031 6.504V12.487ZM8.546 12.487C8.546 12.766 8.317 12.995 8.038 12.995C7.758 12.995 7.53 12.766 7.53 12.487V6.504C7.53 6.224 7.758 5.996 8.038 5.996C8.317 5.996 8.546 6.224 8.546 6.504V12.487ZM11.049 12.487C11.049 12.766 10.821 12.995 10.541 12.995C10.261 12.995 10.033 12.766 10.033 12.487V6.504C10.033 6.224 10.261 5.996 10.541 5.996C10.821 5.996 11.049 6.224 11.049 6.504V12.487Z" fill="#EF4444"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,15 @@
{
"images" : [
{
"filename" : "punch_point_dropdown.svg",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"preserves-vector-representation" : true
}
}

View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path d="M7 10L12 15L17 10H7Z" fill="#4B5563"/>
</svg>

After

Width:  |  Height:  |  Size: 141 B

View File

@ -0,0 +1,15 @@
{
"images" : [
{
"filename" : "punch_point_image_add.svg",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"preserves-vector-representation" : true
}
}

View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path d="M19 13H13V19H11V13H5V11H11V5H13V11H19V13Z" fill="#B6BECA"/>
</svg>

After

Width:  |  Height:  |  Size: 162 B

View File

@ -0,0 +1,5 @@
{
"images" : [{ "filename" : "punch_point_image_delete.svg", "idiom" : "universal" }],
"info" : { "author" : "xcode", "version" : 1 },
"properties" : { "preserves-vector-representation" : true }
}

View File

@ -0,0 +1 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="10" fill="black" fill-opacity=".5"/><path d="M8 8L16 16M16 8L8 16" stroke="white" stroke-width="1.5" stroke-linecap="round"/></svg>

After

Width:  |  Height:  |  Size: 254 B

View File

@ -0,0 +1,5 @@
{
"images" : [{ "filename" : "punch_point_location.svg", "idiom" : "universal" }],
"info" : { "author" : "xcode", "version" : 1 },
"properties" : { "preserves-vector-representation" : true }
}

View File

@ -0,0 +1 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.625 13.695C9.094 13.135 9.667 12.38 10.344 11.431C11.021 10.498 11.628 9.531 12.167 8.53C12.688 7.529 12.965 6.647 13 5.885C12.965 4.494 12.479 3.341 11.542 2.425C10.604 1.508 9.424 1.034 8 1C6.576 1.034 5.396 1.508 4.458 2.425C3.521 3.341 3.035 4.494 3 5.885C3.035 6.647 3.312 7.529 3.833 8.53C4.372 9.531 4.979 10.498 5.656 11.431C6.333 12.38 6.906 13.135 7.375 13.695C7.548 13.898 7.757 14 8 14C8.243 14 8.452 13.898 8.625 13.695ZM8 4.256C8.625 4.273 9.102 4.544 9.432 5.07C9.745 5.613 9.745 6.156 9.432 6.699C9.102 7.225 8.625 7.496 8 7.513C7.375 7.496 6.898 7.225 6.568 6.699C6.255 6.156 6.255 5.613 6.568 5.07C6.898 4.544 7.375 4.273 8 4.256Z" fill="#4B5563"/></svg>

After

Width:  |  Height:  |  Size: 780 B

View File

@ -0,0 +1,5 @@
{
"images" : [{ "filename" : "punch_point_map_location.svg", "idiom" : "universal" }],
"info" : { "author" : "xcode", "version" : 1 },
"properties" : { "preserves-vector-representation" : true }
}

View File

@ -0,0 +1 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="7" stroke="#0073FF" stroke-width="1.25"/><circle cx="12" cy="12" r="4" fill="#0073FF"/><path d="M12 3V5M12 19V21M3 12H5M19 12H21" stroke="#0073FF" stroke-width="1.25" stroke-linecap="round"/></svg>

After

Width:  |  Height:  |  Size: 320 B

View File

@ -0,0 +1,5 @@
{
"images" : [{ "filename" : "punch_point_marker.svg", "idiom" : "universal" }],
"info" : { "author" : "xcode", "version" : 1 },
"properties" : { "preserves-vector-representation" : true }
}

View File

@ -0,0 +1 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 1C6.477 1 2 5.477 2 11C2 17.2 8.67 22.2 11.1 23.73C11.65 24.08 12.35 24.08 12.9 23.73C15.33 22.2 22 17.2 22 11C22 5.477 17.523 1 12 1Z" fill="#FF4D4F"/><circle cx="12" cy="10" r="3" fill="#111111"/></svg>

After

Width:  |  Height:  |  Size: 313 B

View File

@ -0,0 +1,5 @@
{
"images" : [{ "filename" : "punch_point_qr.svg", "idiom" : "universal" }],
"info" : { "author" : "xcode", "version" : 1 },
"properties" : { "preserves-vector-representation" : true }
}

View File

@ -0,0 +1 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10.692 10.692H12.846V8.538H15V11.769H12.846V12.846H10.692V11.769H8.538V8.538H10.692V10.692ZM1 8.538H7.462V15H1V8.538ZM3.154 10.692V12.846H5.308V10.692H3.154ZM1 1H7.462V7.462H1V1ZM3.154 3.154V5.308H5.308V3.154H3.154ZM8.538 1H15V7.462H8.538V1ZM10.692 3.154V5.308H12.846V3.154H10.692ZM12.846 12.846H15V15H12.846V12.846ZM8.538 12.846H10.692V15H8.538V12.846Z" fill="#4B5563"/></svg>

After

Width:  |  Height:  |  Size: 483 B

View File

@ -0,0 +1,5 @@
{
"images" : [{ "filename" : "punch_point_zoom_in.svg", "idiom" : "universal" }],
"info" : { "author" : "xcode", "version" : 1 },
"properties" : { "preserves-vector-representation" : true }
}

View File

@ -0,0 +1 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="4" y="10.5" width="16" height="3" rx="1.5" fill="#0073FF"/><rect x="10.5" y="4" width="3" height="16" rx="1.5" fill="#0073FF"/></svg>

After

Width:  |  Height:  |  Size: 238 B

View File

@ -0,0 +1,5 @@
{
"images" : [{ "filename" : "punch_point_zoom_out.svg", "idiom" : "universal" }],
"info" : { "author" : "xcode", "version" : 1 },
"properties" : { "preserves-vector-representation" : true }
}

View File

@ -0,0 +1 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="4.5" y="10.5" width="16" height="3" rx="1.5" fill="#0073FF"/></svg>

After

Width:  |  Height:  |  Size: 172 B

View File

@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,7 @@
{
"images" : [
{ "filename" : "ic_accept_orders.svg", "idiom" : "universal" }
],
"info" : { "author" : "xcode", "version" : 1 },
"properties" : { "preserves-vector-representation" : true, "template-rendering-intent" : "template" }
}

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<path fill="#0073FF" d="M8 15c1.276-.018 2.443-.328 3.5-.93 1.057-.619 1.914-1.475 2.57-2.57.62-1.112.93-2.279.93-3.5s-.31-2.388-.93-3.5c-.656-1.094-1.513-1.951-2.57-2.57C10.443 1.328 9.276 1.018 8 1 6.724 1.018 5.557 1.328 4.5 1.93 3.443 2.549 2.586 3.406 1.93 4.5 1.31 5.612 1 6.779 1 8s.31 2.388.93 3.5c.656 1.095 1.513 1.951 2.57 2.57 1.057.602 2.224.912 3.5.93Zm3.09-8.285-3.5 3.5c-.31.255-.62.255-.93 0l-1.75-1.75c-.255-.31-.255-.62 0-.93.31-.255.62-.255.93 0l1.285 1.285 3.035-3.035c.31-.255.62-.255.93 0 .255.31.255.62 0 .93Z"/>
</svg>

After

Width:  |  Height:  |  Size: 630 B

View File

@ -0,0 +1,7 @@
{
"images" : [
{ "filename" : "ic_area_authority.svg", "idiom" : "universal" }
],
"info" : { "author" : "xcode", "version" : 1 },
"properties" : { "preserves-vector-representation" : true, "template-rendering-intent" : "template" }
}

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<path fill="#0073FF" d="M11.333 4.33c-.018.518-.203 1.119-.555 1.804-.352.685-.759 1.351-1.222 1.998-.445.629-.825 1.138-1.139 1.527a.536.536 0 0 1-.417.194.536.536 0 0 1-.417-.194 28.23 28.23 0 0 1-1.139-1.527c-.463-.647-.87-1.313-1.222-1.998-.352-.685-.537-1.286-.555-1.804.018-.943.333-1.729.972-2.359C6.278 1.342 7.065 1.019 8 1c.935.019 1.722.342 2.361.971.639.63.954 1.416.972 2.359Zm.223 2.221.277-.556c0-.018 0-.036.028-.055l3.222-1.332c.241-.093.444-.075.611.055.185.13.287.315.306.555v7.521c-.019.296-.157.5-.417.611l-4.027 1.61V6.551ZM3.833 4.83c.074.407.185.795.334 1.165l.277.556v6.993L.917 14.96c-.241.074-.444.046-.611-.084C.121 14.766.019 14.581 0 14.321V6.828c.019-.296.157-.509.417-.638L3.833 4.83Zm5.278 5.384c.426-.518.945-1.23 1.556-2.137v6.91l-5.334-1.526V8.077c.611.907 1.13 1.619 1.556 2.137.315.351.685.527 1.111.527.426 0 .796-.176 1.111-.527ZM8 5.218c.426-.018.75-.203.972-.555.185-.37.185-.74 0-1.11C8.75 3.201 8.426 3.017 8 2.998c-.426.019-.75.203-.972.555-.185.37-.185.74 0 1.11.222.352.546.537.972.555Z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,7 @@
{
"images" : [
{ "filename" : "ic_checked.svg", "idiom" : "universal" }
],
"info" : { "author" : "xcode", "version" : 1 },
"properties" : { "preserves-vector-representation" : true }
}

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18">
<path fill="#0073FF" d="M9 1a8 8 0 1 0 0 16A8 8 0 0 0 9 1Zm-.603 11.016L4.778 8.698l.603-.301 2.812 1.969 4.124-4.382h.905l-4.825 6.032Z"/>
</svg>

After

Width:  |  Height:  |  Size: 233 B

View File

@ -0,0 +1,7 @@
{
"images" : [
{ "filename" : "ic_marketing.svg", "idiom" : "universal" }
],
"info" : { "author" : "xcode", "version" : 1 },
"properties" : { "preserves-vector-representation" : true, "template-rendering-intent" : "template" }
}

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<path fill="#0073FF" d="M3.6 2c.75.017 1.325.356 1.725 1.016.367.677.367 1.354 0 2.031-.4.66-.975.99-1.725 1.016-.75-.026-1.325-.356-1.725-1.016-.367-.677-.367-1.354 0-2.031C2.275 2.356 2.85 2.017 3.6 2Zm9.2 0c.75.017 1.325.356 1.725 1.016.367.677.367 1.354 0 2.031-.4.66-.975.99-1.725 1.016-.75-.026-1.325-.356-1.725-1.016-.367-.677-.367-1.354 0-2.031C11.475 2.356 12.05 2.017 12.8 2ZM0 9.592c.017-.779.275-1.422.775-1.93.5-.508 1.133-.77 1.9-.787h1.05c.4 0 .775.085 1.125.254a3.96 3.96 0 0 0-.05.559c.033.998.392 1.81 1.075 2.437H.525C.208 10.091.033 9.913 0 9.592Zm10.125.533c.683-.627 1.042-1.439 1.075-2.437 0-.187-.017-.373-.05-.559.35-.169.725-.254 1.125-.254h1.05c.767.017 1.4.279 1.9.787.5.508.758 1.151.775 1.93-.033.321-.208.499-.525.533h-5.35ZM5.6 7.688c0-.44.108-.847.325-1.219.217-.373.508-.669.875-.889A2.36 2.36 0 0 1 8 5.25c.417 0 .817.11 1.2.33.367.22.658.516.875.889.217.372.325.779.325 1.219 0 .44-.108.847-.325 1.218-.217.373-.508.669-.875.889-.383.22-.783.33-1.2.33-.417 0-.817-.11-1.2-.33a2.445 2.445 0 0 1-.875-.889A2.38 2.38 0 0 1 5.6 7.688ZM3.2 14.314c.017-.947.342-1.742.975-2.386.633-.643 1.417-.965 2.35-.99h2.95c.933.025 1.717.347 2.35.99.633.644.958 1.439.975 2.386-.033.423-.258.652-.675.686h-8.25c-.417-.034-.642-.263-.675-.686Z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,7 @@
{
"images" : [
{ "filename" : "ic_unchecked.svg", "idiom" : "universal" }
],
"info" : { "author" : "xcode", "version" : 1 },
"properties" : { "preserves-vector-representation" : true }
}

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18">
<circle cx="9" cy="9" r="7.5" fill="none" stroke="#0073FF" stroke-width="1"/>
</svg>

After

Width:  |  Height:  |  Size: 171 B

View File

@ -0,0 +1,5 @@
{
"images" : [{ "filename" : "home_menu_punch_point.svg", "idiom" : "universal" }],
"info" : { "author" : "xcode", "version" : 1 },
"properties" : { "preserves-vector-representation" : true }
}

View File

@ -0,0 +1 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 2C6.477 2 2 6.477 2 12C2 17.523 6.477 22 12 22C17.523 22 22 17.523 22 12C22 6.477 17.523 2 12 2ZM16.91 9.79L11.593 15.107C11.318 15.4 10.848 15.397 10.578 15.127L7.597 12.146C7.324 11.873 7.324 11.426 7.597 11.152C7.871 10.879 8.318 10.879 8.592 11.152L11.076 13.636L15.916 8.795C16.189 8.522 16.637 8.522 16.91 8.795C17.184 9.069 17.184 9.516 16.91 9.79Z" fill="#0073FF"/></svg>

After

Width:  |  Height:  |  Size: 488 B

View File

@ -0,0 +1,15 @@
{
"images" : [
{
"filename" : "home_menu_wallet.svg",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"preserves-vector-representation" : true
}
}

View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M22,19.924 Q22,20.357 21.857,20.734 Q21.714,21.11 21.449,21.395 Q21.185,21.681 20.833,21.84 Q20.48,22 20.062,22 L4.07,22 Q3.652,22 3.278,21.84 Q2.903,21.681 2.617,21.395 Q2.33,21.11 2.165,20.734 Q2,20.357 2,19.924 L2,8.539 Q2,7.672 2.584,7.067 Q3.167,6.463 4.004,6.463 L19.996,6.463 Q20.833,6.463 21.416,7.067 Q22,7.672 22,8.539 L22,11.642 L17,11.642 Q16.163,11.642 15.579,12.235 Q14.996,12.828 14.996,13.695 Q15.018,14.288 15.238,14.745 Q15.414,15.133 15.822,15.452 Q16.229,15.771 17,15.771 L22,15.771 L22,19.924 Z M19.004,5.413 L9.004,5.413 Q10.194,4.775 11.251,4.181 Q12.176,3.679 13.079,3.177 Q13.982,2.676 14.489,2.402 Q15.26,1.968 15.866,2.003 Q16.471,2.037 16.89,2.219 Q17.374,2.47 17.727,2.881 L19.004,5.413 Z M16.009,13.695 Q16.009,13.262 16.295,12.965 Q16.581,12.669 17,12.669 Q17.419,12.669 17.705,12.965 Q17.991,13.262 17.991,13.695 Q17.991,14.129 17.705,14.437 Q17.419,14.745 17,14.745 Q16.581,14.745 16.295,14.437 Q16.009,14.129 16.009,13.695 Z" fill="#0073FF"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB