MTing 5 days ago
parent
commit
a4a5f33c96
  1. 489
      app/src/main/java/com/ouxuan/oxface/orderOX/OrderVerificationResultActivity.java

489
app/src/main/java/com/ouxuan/oxface/orderOX/OrderVerificationResultActivity.java

@ -10,8 +10,6 @@ import android.view.Window;
import android.view.WindowManager; import android.view.WindowManager;
import android.widget.Button; import android.widget.Button;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ScrollView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
@ -19,18 +17,6 @@ import androidx.appcompat.app.AppCompatActivity;
import com.ouxuan.oxface.R; import com.ouxuan.oxface.R;
import com.ouxuan.oxface.utils.LogManager; import com.ouxuan.oxface.utils.LogManager;
import com.ouxuan.oxface.data.LoginDataManager;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.CircleCrop;
import com.bumptech.glide.request.RequestOptions;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
/** /**
* 订单核销结果Activity * 订单核销结果Activity
@ -40,27 +26,15 @@ public class OrderVerificationResultActivity extends AppCompatActivity {
private static final String TAG = "OrderVerificationResultActivity"; private static final String TAG = "OrderVerificationResultActivity";
// UI组件
private ImageButton btnClose; private ImageButton btnClose;
private Button btnConfirm; private Button btnConfirm;
private TextView tvTitle, tvStoreName, tvWelcomeMessage;
private ImageView ivUserAvatar, ivStoreIcon;
private TextView tvUserName;
private ScrollView scrollViewDetails;
private TextView tvOrderDetails;
// 数据字段
private TextView tvTitle, tvOrderNo, tvVerificationCode, tvOrderType, tvCardNo, tvStatus;
private String orderNo, verificationCode, orderType, cardNo, status; private String orderNo, verificationCode, orderType, cardNo, status;
private String userName, userAvatar;
private int verificationType; // 1-验证码验证, 2-人脸验证, 3-扫码验证, 4-扫码器验证
private JsonObject orderResultData; // 完整的订单结果数据
private int verificationType; // 1-验证码验证, 4-扫码器验证
// 强制关闭广播接收器 // 强制关闭广播接收器
private BroadcastReceiver forceCloseReceiver; private BroadcastReceiver forceCloseReceiver;
// 登录数据管理器
private LoginDataManager loginDataManager;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -79,9 +53,7 @@ public class OrderVerificationResultActivity extends AppCompatActivity {
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
initViews(); initViews();
initLoginDataManager();
getIntentData(); getIntentData();
updateStoreInfo();
updateUI(); updateUI();
setupListeners(); setupListeners();
@ -101,24 +73,11 @@ public class OrderVerificationResultActivity extends AppCompatActivity {
// 初始化文本视图 // 初始化文本视图
tvTitle = findViewById(R.id.tv_result_title); tvTitle = findViewById(R.id.tv_result_title);
tvStoreName = findViewById(R.id.tv_store_name);
tvWelcomeMessage = findViewById(R.id.tv_welcome_message);
tvUserName = findViewById(R.id.tv_user_name);
tvOrderDetails = findViewById(R.id.tv_order_details);
// 初始化图片视图
ivUserAvatar = findViewById(R.id.iv_user_avatar);
ivStoreIcon = findViewById(R.id.iv_store_icon);
// 初始化滚动视图
scrollViewDetails = findViewById(R.id.scroll_view_details);
}
/**
* 初始化登录数据管理器
*/
private void initLoginDataManager() {
loginDataManager = LoginDataManager.getInstance(this);
tvOrderNo = findViewById(R.id.tv_order_no);
tvVerificationCode = findViewById(R.id.tv_verification_code);
tvOrderType = findViewById(R.id.tv_order_type);
tvCardNo = findViewById(R.id.tv_card_no);
tvStatus = findViewById(R.id.tv_status);
} }
private void getIntentData() { private void getIntentData() {
@ -131,19 +90,6 @@ public class OrderVerificationResultActivity extends AppCompatActivity {
orderType = String.valueOf(orderTypeInt); orderType = String.valueOf(orderTypeInt);
cardNo = intent.getStringExtra("card_no"); cardNo = intent.getStringExtra("card_no");
status = intent.getStringExtra("status"); status = intent.getStringExtra("status");
userName = intent.getStringExtra("user_name");
userAvatar = intent.getStringExtra("user_avatar");
// 获取完整的订单结果数据JSON字符串
String orderResultJson = intent.getStringExtra("order_result_data");
if (orderResultJson != null && !orderResultJson.isEmpty()) {
try {
orderResultData = JsonParser.parseString(orderResultJson).getAsJsonObject();
LogManager.logInfo(TAG, "成功解析订单结果数据");
} catch (Exception e) {
LogManager.logError(TAG, "解析订单结果数据失败", e);
}
}
} }
// 设置默认值 // 设置默认值
@ -152,428 +98,25 @@ public class OrderVerificationResultActivity extends AppCompatActivity {
if (orderType == null) orderType = ""; if (orderType == null) orderType = "";
if (cardNo == null) cardNo = ""; if (cardNo == null) cardNo = "";
if (status == null) status = "核销成功"; if (status == null) status = "核销成功";
if (userName == null) userName = "";
if (userAvatar == null) userAvatar = "";
}
/**
* 更新店铺信息店铺名称和Logo
*/
private void updateStoreInfo() {
try {
if (loginDataManager != null) {
String storeName = loginDataManager.getStoreName();
String logoUrl = loginDataManager.getStoreLogo();
// 更新店铺名称和欢迎信息
if (storeName != null && !storeName.isEmpty()) {
if (tvStoreName != null) {
tvStoreName.setText(storeName);
}
if (tvWelcomeMessage != null) {
tvWelcomeMessage.setText("您好,欢迎光临" + storeName + "!\n您的订单已验证成功!");
}
LogManager.logInfo(TAG, "成功更新店铺名称: " + storeName);
} else {
if (tvStoreName != null) {
tvStoreName.setText("Test门店");
}
if (tvWelcomeMessage != null) {
tvWelcomeMessage.setText("您好,欢迎光临Test门店!\n您的订单已验证成功!");
}
LogManager.logWarning(TAG, "未获取到店铺名称,使用默认名称");
}
// 更新店铺 Logo
if (logoUrl != null && !logoUrl.isEmpty() && ivStoreIcon != null) {
LogManager.logInfo(TAG, "加载店铺 Logo: " + logoUrl);
Glide.with(this)
.load(logoUrl)
.apply(RequestOptions.bitmapTransform(new CircleCrop()))
.placeholder(R.drawable.ic_warriors_logo)
.error(R.drawable.ic_warriors_logo)
.into(ivStoreIcon);
} else {
if (ivStoreIcon != null) {
ivStoreIcon.setImageResource(R.drawable.ic_warriors_logo);
}
}
}
} catch (Exception e) {
LogManager.logError(TAG, "更新店铺信息失败", e);
}
} }
private void updateUI() { private void updateUI() {
// 根据验证类型设置标题 // 根据验证类型设置标题
if (tvTitle != null) {
switch (verificationType) {
case 1:
if (verificationType == 1) {
tvTitle.setText("验证码核销结果"); tvTitle.setText("验证码核销结果");
break;
case 2:
tvTitle.setText("人脸验证结果");
break;
case 3:
tvTitle.setText("扫码验证结果");
break;
case 4:
} else if (verificationType == 4) {
tvTitle.setText("扫码器核销结果"); tvTitle.setText("扫码器核销结果");
break;
case 5:
tvTitle.setText("课程签到结果");
break;
default:
tvTitle.setText("订单核销结果");
break;
}
}
// 更新用户信息
updateUserInfo();
// 更新订单详情
updateOrderDetails();
// 播放成功提示音保留注释
// playSuccessAudio();
// 执行开门操作保留注释
// executeOpenDoor();
}
/**
* 更新用户信息头像和昵称
*/
private void updateUserInfo() {
try {
// 更新用户昵称
if (tvUserName != null) {
if (userName != null && !userName.isEmpty()) {
tvUserName.setText(userName);
} else {
tvUserName.setText("用户"); // 默认昵称
}
}
// 更新用户头像
if (ivUserAvatar != null) {
if (userAvatar != null && !userAvatar.isEmpty()) {
Glide.with(this)
.load(userAvatar)
.apply(RequestOptions.bitmapTransform(new CircleCrop()))
.placeholder(R.drawable.ic_default_avatar)
.error(R.drawable.ic_default_avatar)
.into(ivUserAvatar);
} else {
ivUserAvatar.setImageResource(R.drawable.ic_default_avatar);
}
}
} catch (Exception e) {
LogManager.logError(TAG, "更新用户信息失败", e);
}
}
/**
* 更新订单详情显示
*/
private void updateOrderDetails() {
try {
if (tvOrderDetails == null) {
return;
}
StringBuilder details = new StringBuilder();
if (orderResultData != null) {
// 根据订单类型显示不同内容
int orderTypeInt = getOrderTypeFromData();
String projectName = getStringFromData("project", "订单项目");
// 订单类型标签
String typeLabel = getOrderTypeLabel(orderTypeInt);
details.append(typeLabel).append(" ").append(projectName).append("\n\n");
switch (orderTypeInt) {
case 0: // 场次核销
appendFieldDetails(details);
break;
case 1: // 人次核销
appendPersonTimesDetails(details);
break;
case 3: // 年月卡
appendMembershipCardDetails(details);
break;
case 5: // 课程
appendCourseDetails(details);
break;
default:
appendBasicDetails(details);
break;
}
} else {
// 基本信息显示
appendBasicDetails(details);
}
// 添加提示信息
details.append("\n").append(getOrderTipMessage());
tvOrderDetails.setText(details.toString());
} catch (Exception e) {
LogManager.logError(TAG, "更新订单详情失败", e);
if (tvOrderDetails != null) {
tvOrderDetails.setText("订单信息加载失败");
}
}
}
/**
* 获取订单类型标签
*/
private String getOrderTypeLabel(int orderType) {
switch (orderType) {
case 0:
return "场次";
case 1:
return "人次";
case 3:
return "年月卡";
case 5:
return "课程";
default:
return "订单";
}
}
/**
* 从数据中获取订单类型
*/
private int getOrderTypeFromData() {
if (orderResultData != null && orderResultData.has("order_type")) {
return orderResultData.get("order_type").getAsInt();
}
return Integer.parseInt(orderType != null && !orderType.isEmpty() ? orderType : "0");
}
/**
* 从数据中获取字符串值
*/
private String getStringFromData(String key, String defaultValue) {
if (orderResultData != null && orderResultData.has(key)) {
JsonElement element = orderResultData.get(key);
if (!element.isJsonNull()) {
return element.getAsString();
}
}
return defaultValue;
}
/**
* 场次详情
*/
private void appendFieldDetails(StringBuilder details) {
try {
if (orderResultData != null && orderResultData.has("info")) {
JsonElement infoElement = orderResultData.get("info");
if (infoElement.isJsonArray()) {
for (JsonElement item : infoElement.getAsJsonArray()) {
if (item.isJsonObject()) {
JsonObject venue = item.getAsJsonObject();
String venueName = venue.has("venue_name") ? venue.get("venue_name").getAsString() : "-";
String startTime = venue.has("start") ? venue.get("start").getAsString() : "-";
details.append(venueName).append(" ").append(startTime).append("\n");
}
}
}
}
details.append("订单编号:").append(orderNo).append("\n");
} catch (Exception e) {
LogManager.logError(TAG, "显示场次详情失败", e);
}
}
/**
* 人次详情
*/
private void appendPersonTimesDetails(StringBuilder details) {
details.append("验证码:").append(formatVerificationCode(verificationCode, 1)).append("\n");
details.append("订单编号:").append(orderNo).append("\n");
if (orderResultData != null && orderResultData.has("pv_usage_duration")) {
int duration = orderResultData.get("pv_usage_duration").getAsInt();
String expireTime = getExpireTime(duration);
details.append("有效时间:").append(expireTime).append("到期\n");
}
String info = getStringFromData("info", "");
if (!info.isEmpty()) {
details.append("预订信息:").append(info).append("\n");
}
}
/**
* 年月卡详情
*/
private void appendMembershipCardDetails(StringBuilder details) {
details.append("验证码:").append(formatVerificationCode(verificationCode, 3)).append("\n");
details.append("名称:").append(getStringFromData("project", "")).append("\n");
details.append("卡号:NO.").append(cardNo).append("\n");
if (orderResultData != null && orderResultData.has("info")) {
JsonObject info = orderResultData.getAsJsonObject("info");
if (info.has("verify_desc")) {
details.append("核销方式:").append(info.get("verify_desc").getAsString()).append("\n");
}
if (info.has("verify_time")) {
details.append("核销时间:").append(info.get("verify_time").getAsString()).append("\n");
}
}
}
/**
* 课程详情
*/
private void appendCourseDetails(StringBuilder details) {
if (orderResultData != null && orderResultData.has("info")) {
JsonObject info = orderResultData.getAsJsonObject("info");
if (info.has("time")) {
details.append("上课时间:").append(info.get("time").getAsString()).append("\n");
}
if (info.has("coach")) {
details.append("上课教练:").append(info.get("coach").getAsString()).append("\n");
}
if (info.has("addr")) {
details.append("上课地点:").append(info.get("addr").getAsString()).append("\n");
}
}
details.append("课程名称:").append(getStringFromData("project", "")).append("\n");
details.append("订单编号:").append(orderNo).append("\n");
if (orderResultData != null && orderResultData.has("info")) {
JsonObject info = orderResultData.getAsJsonObject("info");
if (info.has("verify_desc")) {
details.append("签到方式:").append(info.get("verify_desc").getAsString()).append("\n");
}
if (info.has("verify_time")) {
details.append("签到时间:").append(info.get("verify_time").getAsString()).append("\n");
}
}
}
/**
* 基本详情
*/
private void appendBasicDetails(StringBuilder details) {
details.append("订单编号:").append(orderNo).append("\n");
if (!verificationCode.isEmpty()) {
details.append("验证码:").append(verificationCode).append("\n");
}
if (!cardNo.isEmpty()) {
details.append("卡号:").append(cardNo).append("\n");
}
details.append("状态:").append(status).append("\n");
}
/**
* 格式化验证码显示
*/
private String formatVerificationCode(String code, int type) {
if (code == null || code.isEmpty()) {
return "-";
}
try {
if (type == 1) { // 人次类型每4位分隔
return code.replaceAll("(\\d)(?=(?:\\d{4})+$)", "$1 ");
} else if (type == 3) { // 年月卡类型每5位分隔
return code.replaceAll("(\\d)(?=(?:\\d{5})+$)", "$1 ");
}
} catch (Exception e) {
LogManager.logError(TAG, "格式化验证码失败", e);
}
return code;
}
/**
* 获取过期时间
*/
private String getExpireTime(int hours) {
try {
long expireTimeMillis = System.currentTimeMillis() + (hours * 3600000L);
Date expireDate = new Date(expireTimeMillis);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.getDefault());
return sdf.format(expireDate);
} catch (Exception e) {
LogManager.logError(TAG, "计算过期时间失败", e);
return "-";
}
}
/**
* 获取提示信息
*/
private String getOrderTipMessage() {
int orderTypeInt = getOrderTypeFromData();
if (orderTypeInt == 0) {
return "系统会根据场馆及订单情况自动为您开启及关闭灯光、空调,届时请留意!\n祝您有个愉快的体验!";
}
return "祝您有个愉快的体验!";
}
/**
* 播放成功提示音保留注释
*/
/*
private void playSuccessAudio() {
try {
// 根据订单类型播放不同提示音
int orderTypeInt = getOrderTypeFromData();
if (orderTypeInt == 5) {
// 课程签到成功提示
// plug_face.playAudio({'audio_type': '课程签到成功'}, ret -> {});
} else { } else {
// 订单核销成功提示
// plug_face.playAudio({'audio_type': '订单核销成功'}, ret -> {});
}
} catch (Exception e) {
LogManager.logError(TAG, "播放提示音失败", e);
}
tvTitle.setText("订单核销结果");
} }
*/
/**
* 执行开门操作保留注释
*/
/*
private void executeOpenDoor() {
try {
// GPIO继电器开门
// if (get_gate_ab_gpio()) {
// LogManager.logInfo(TAG, "执行继电器开门");
// app.openDoorGpio();
// }
// UDP中控开门
// if (get_gate_ab_udp()) {
// LogManager.logInfo(TAG, "执行UDP中控开门");
// openDoorUdp();
// }
// AB门开门
// if (get_gate_ab_enable()) {
// LogManager.logInfo(TAG, "执行AB门开门");
// openGateAB();
// }
} catch (Exception e) {
LogManager.logError(TAG, "执行开门操作失败", e);
// 更新UI内容
tvOrderNo.setText(orderNo);
tvVerificationCode.setText(verificationCode);
tvOrderType.setText(orderType);
tvCardNo.setText(cardNo);
tvStatus.setText(status);
} }
}
*/
private void setupListeners() { private void setupListeners() {
// 确认按钮 // 确认按钮

Loading…
Cancel
Save