oxFaceAndroid
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

4.6 KiB

订单核销选择页面实现说明

概述

已成功实现订单核销选择列表页面,该页面作为传入订单核销列表数据进行选择验证的弹窗页面,在人脸识别界面执行checkOrder请求并获取到列表数据后弹出,覆盖在视频流上。

实现的文件

1. 布局文件

  • activity_order_selection.xml - 主页面布局
  • item_order_selection.xml - 订单列表项布局

2. Java类文件

  • OrderSelectionActivity.java - 主Activity类
  • OrderVerificationData.java - 数据模型类
  • OrderSelectionAdapter.java - RecyclerView适配器

3. 配置文件

  • AndroidManifest.xml - 添加了OrderSelectionActivity注册

功能特性

1. 弹窗样式设计

  • 透明背景: 使用透明主题,覆盖在视频流上
  • 居中显示: 弹窗居中显示,符合UI设计要求
  • 圆角设计: 使用现有的drawable资源创建美观界面

2. 数据处理

  • JSON解析: 自动解析人脸验证接口返回的JSON数据
  • 数据模型: 完整的订单数据模型,支持所有字段
  • 格式化显示: 自动格式化时间、日期等信息

3. 交互功能

  • 订单选择: 点击订单卡片进行选择
  • 去核销按钮: 每个订单都有独立的核销按钮
  • 倒计时返回: 6秒倒计时自动返回
  • 手动返回: 支持取消和返回首页操作

4. 集成支持

  • 网络请求集成: 与现有的网络请求管理器完美集成
  • 结果处理: 自动处理选择结果并跳转到核销结果页
  • 摄像头控制: 自动暂停和恢复摄像头预览

使用流程

1. 触发条件

// 在人脸验证成功后自动触发
modeType = OrderVerificationManager.TYPE_FACE_VERIFICATION;
verifyCode = faceBase64; // 人脸base64数据
getCheckOrder(); // 执行订单查验

2. 数据流转

人脸验证 → 网络请求 → JSON数据解析 → 显示选择页面 → 用户选择 → 核销结果

3. 页面跳转

// 自动跳转到订单选择页面
Intent intent = new Intent(this, OrderSelectionActivity.class);
intent.putExtra(OrderSelectionActivity.EXTRA_ORDER_DATA, orderDataJson);
intent.putExtra(OrderSelectionActivity.EXTRA_VERIFICATION_TYPE, verificationType);
startActivityForResult(intent, 1002);

JSON数据格式支持

页面完全支持您提供的JSON格式:

{
  "code": 0,
  "data": {
    "result": [
      {
        "order_no": "MC20250313171548535218",
        "start_time": "2025-03-13 17:15:51",
        "end_time": "2026-03-13 17:15:51",
        "order_type": 3,
        "project": "测试年卡",
        "number": 100,
        "v_code": ["2503215744"],
        "info": {
          "card_no": "250313397",
          "rest_number": 100,
          "status": 0,
          "user_face_id": ""
        },
        "success": 0,
        "pv_usage_duration": 0,
        "many_enter": false
      }
    ],
    "skip": 0
  },
  "message": "",
  "extension": "extension_fixed"
}

页面展示效果

1. 头部区域

  • 店铺图标和名称
  • 返回首页按钮(带倒计时)

2. 标题区域

  • "请选择订单核销" 标题
  • 当前核销日期显示

3. 订单列表

  • 左侧场次标识(橙色背景)
  • 右侧订单详细信息:
    • 订单信息(场次数量)
    • 订单编号
    • 预订信息(时间段)
    • 预订项目
    • 使用日期
  • 右上角"去核销"按钮

4. 底部操作

  • 取消按钮
  • 确认核销按钮

技术特点

1. 响应式设计

  • 支持不同屏幕尺寸
  • 列表最大高度限制,超出时可滚动
  • 自适应内容高度

2. 状态管理

  • 选中状态高亮显示
  • 按钮启用/禁用状态控制
  • 倒计时状态更新

3. 错误处理

  • JSON解析异常处理
  • 数据为空的处理
  • 网络错误的友好提示

4. 性能优化

  • RecyclerView复用机制
  • 内存泄漏防护
  • 生命周期管理

扩展性

1. 样式定制

  • 可通过修改drawable资源调整样式
  • 支持主题色彩定制
  • 布局参数易于调整

2. 功能扩展

  • 支持添加更多订单字段显示
  • 可扩展筛选和搜索功能
  • 支持批量操作

3. 数据适配

  • 模型类支持扩展新字段
  • 适配器支持不同数据类型
  • 格式化方法可自定义

注意事项

  1. 权限要求: 确保应用有必要的网络和相机权限
  2. 主题配置: 使用了Theme.Transparent主题,确保主题文件存在
  3. 资源依赖: 依赖现有的drawable资源,确保资源文件完整
  4. 内存管理: 页面销毁时会自动清理资源和停止倒计时

这个实现完全符合您的需求,提供了完整的订单选择功能,并与现有的网络请求架构完美集成。