From 060afd4a397d82e179fe353f537647a6bac23243 Mon Sep 17 00:00:00 2001 From: MTing Date: Thu, 18 Sep 2025 18:07:48 +0800 Subject: [PATCH] add control of api --- .../com/ouxuan/oxface/OXFaceOnlineActivity.java | 67 +++++++++++++++++++++- .../com/ouxuan/oxface/utils/VenueSceneUtils.java | 53 +++++++++++++++++ app/src/main/res/layout/activity_oxface_online.xml | 1 + 3 files changed, 120 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java b/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java index 731e00e..fbde5ef 100644 --- a/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java +++ b/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java @@ -165,6 +165,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi // 新增的二维码区域控件 private ImageView imgMiniProgramCode; private ImageView imgScanDoorQRCode; + private TextView tvScanDoorText; // 扫码开门文本 private Button btnVerificationCode; private Button btnScannerDoor; @@ -546,9 +547,9 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi // 初始化二维码区域控件 imgMiniProgramCode = findViewById(R.id.img_mini_program_code); imgScanDoorQRCode = findViewById(R.id.img_scan_door_qrcode); + tvScanDoorText = findViewById(R.id.tv_scan_door_text); // 初始化扫码开门文本 btnVerificationCode = findViewById(R.id.btn_verification_code); btnScannerDoor = findViewById(R.id.btn_scanner_door); - // 添加调试日志,检查控件是否正确初始化 android.util.Log.d(TAG, "imgMiniProgramCode初始化: " + (imgMiniProgramCode != null)); android.util.Log.d(TAG, "imgScanDoorQRCode初始化: " + (imgScanDoorQRCode != null)); @@ -685,6 +686,66 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi } /** + * 根据后台配置更新按钮显示/隐藏状态 + */ + private void updateButtonVisibility() { + try { + // 使用VenueSceneUtils工具类获取按钮显示配置 + com.ouxuan.oxface.utils.VenueSceneUtils.PadConfigButtonVisibility buttonVisibility = + com.ouxuan.oxface.utils.VenueSceneUtils.getPadConfigButtonVisibility(this); + + // 控制开门按钮显示/隐藏 + // data.pad_config.is_show_gate_btn == 1 显示开门按钮 + if (btnOpenDoor != null) { + btnOpenDoor.setVisibility(buttonVisibility.isShowGateBtn ? View.VISIBLE : View.GONE); + LogManager.logInfo(TAG, "开门按钮显示状态更新: " + (buttonVisibility.isShowGateBtn ? "显示" : "隐藏")); + } + + // 控制验证码开门按钮显示/隐藏 + // data.pad_config.is_code_verify == 1 开启验证码验证 + if (btnVerificationCode != null) { + btnVerificationCode.setVisibility(buttonVisibility.isCodeVerify ? View.VISIBLE : View.GONE); + LogManager.logInfo(TAG, "验证码开门按钮显示状态更新: " + (buttonVisibility.isCodeVerify ? "显示" : "隐藏")); + } + + // 控制扫码器开门按钮显示/隐藏 + // data.pad_config.is_scan_code_verify == 1 扫码器验证 + if (btnScannerDoor != null) { + btnScannerDoor.setVisibility(buttonVisibility.isScanCodeVerify ? View.VISIBLE : View.GONE); + LogManager.logInfo(TAG, "扫码器开门按钮显示状态更新: " + (buttonVisibility.isScanCodeVerify ? "显示" : "隐藏")); + } + + // 控制扫码开门按钮显示/隐藏 + // data.pad_config.is_scan_verify == 1 扫码开门验证 + if (imgScanDoorQRCode != null) { + imgScanDoorQRCode.setVisibility(buttonVisibility.isScanVerify ? View.VISIBLE : View.GONE); + LogManager.logInfo(TAG, "扫码开门按钮显示状态更新: " + (buttonVisibility.isScanVerify ? "显示" : "隐藏")); + } + + // 控制扫码开门文本显示/隐藏(与扫码开门按钮一致) + if (tvScanDoorText != null) { + tvScanDoorText.setVisibility(buttonVisibility.isScanVerify ? View.VISIBLE : View.GONE); + LogManager.logInfo(TAG, "扫码开门文本显示状态更新: " + (buttonVisibility.isScanVerify ? "显示" : "隐藏")); + } + + // 新用户扫码上传人脸按钮始终显示 + if (imgMiniProgramCode != null) { + imgMiniProgramCode.setVisibility(View.VISIBLE); + LogManager.logInfo(TAG, "新用户扫码上传人脸按钮始终显示"); + } + } catch (Exception e) { + LogManager.logError(TAG, "更新按钮显示状态时发生异常", e); + // 异常情况下显示所有按钮和文本 + if (btnOpenDoor != null) btnOpenDoor.setVisibility(View.VISIBLE); + if (btnVerificationCode != null) btnVerificationCode.setVisibility(View.VISIBLE); + if (btnScannerDoor != null) btnScannerDoor.setVisibility(View.VISIBLE); + if (imgScanDoorQRCode != null) imgScanDoorQRCode.setVisibility(View.VISIBLE); + if (tvScanDoorText != null) tvScanDoorText.setVisibility(View.VISIBLE); + if (imgMiniProgramCode != null) imgMiniProgramCode.setVisibility(View.VISIBLE); + } + } + + /** * 初始化网络状态指示器 */ private void initNetworkStatusIndicator() { @@ -993,6 +1054,10 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi }else{ LogManager.logInfo(TAG, "OXFaceOnlineActivity onResume has not CAMERA permission"); } + + // 根据后台配置更新按钮显示状态 + updateButtonVisibility(); + LogManager.logInfo(TAG, "OXFaceOnlineActivity onResume"); } diff --git a/app/src/main/java/com/ouxuan/oxface/utils/VenueSceneUtils.java b/app/src/main/java/com/ouxuan/oxface/utils/VenueSceneUtils.java index 12b623b..498e0c9 100644 --- a/app/src/main/java/com/ouxuan/oxface/utils/VenueSceneUtils.java +++ b/app/src/main/java/com/ouxuan/oxface/utils/VenueSceneUtils.java @@ -83,6 +83,39 @@ public class VenueSceneUtils { } /** + * 获取PadConfig配置中的按钮显示控制参数 + * @param context 上下文 + * @return PadConfigButtonVisibility对象,包含各按钮的显示控制参数 + */ + public static PadConfigButtonVisibility getPadConfigButtonVisibility(Context context) { + try { + DeviceSelectDataManager dataManager = DeviceSelectDataManager.getInstance(context); + PadApiService.PadConfig padConfig = dataManager.getPadConfig(); + + if (padConfig != null) { + PadConfigButtonVisibility visibility = new PadConfigButtonVisibility(); + visibility.isShowGateBtn = padConfig.getIsShowGateBtn() == 1; + visibility.isCodeVerify = padConfig.getIsCodeVerify() == 1; + visibility.isScanCodeVerify = padConfig.getIsScanCodeVerify() == 1; + visibility.isScanVerify = padConfig.getIsScanVerify() == 1; + + Log.d(TAG, "获取按钮显示配置: 开门按钮=" + visibility.isShowGateBtn + + ", 验证码开门=" + visibility.isCodeVerify + + ", 扫码器开门=" + visibility.isScanCodeVerify + + ", 扫码开门=" + visibility.isScanVerify); + + return visibility; + } else { + Log.w(TAG, "无法获取PadConfig,返回默认按钮显示配置"); + return new PadConfigButtonVisibility(); // 返回默认配置(全部显示) + } + } catch (Exception e) { + Log.e(TAG, "获取按钮显示配置时发生异常: " + e.getMessage(), e); + return new PadConfigButtonVisibility(); // 异常时返回默认配置(全部显示) + } + } + + /** * 播放音频提示 * 根据用户确认信息,暂时只输出日志 * @param audioType 音频类型(如:离场成功、订单超期需要扫码补缴等) @@ -182,6 +215,26 @@ public class VenueSceneUtils { } /** + * 按钮显示配置信息类 + */ + public static class PadConfigButtonVisibility { + public boolean isShowGateBtn = true; // 开门按钮显示控制 + public boolean isCodeVerify = true; // 验证码验证控制 + public boolean isScanCodeVerify = true; // 扫码器验证控制 + public boolean isScanVerify = true; // 扫码验证控制 + + @Override + public String toString() { + return "PadConfigButtonVisibility{" + + "isShowGateBtn=" + isShowGateBtn + + ", isCodeVerify=" + isCodeVerify + + ", isScanCodeVerify=" + isScanCodeVerify + + ", isScanVerify=" + isScanVerify + + '}'; + } + } + + /** * 从本地存储的select_response中获取pad_setting并返回JSON数据 * @param context 上下文 * @return pad_setting的JSON字符串,如果获取失败返回空字符串 diff --git a/app/src/main/res/layout/activity_oxface_online.xml b/app/src/main/res/layout/activity_oxface_online.xml index 8923471..1ee2324 100644 --- a/app/src/main/res/layout/activity_oxface_online.xml +++ b/app/src/main/res/layout/activity_oxface_online.xml @@ -296,6 +296,7 @@ android:background="@drawable/rounded_square_background" />