From dec654096c63d7584025e6ea865a6809c7380311 Mon Sep 17 00:00:00 2001 From: jjLv <1981429112@qq.com> Date: Tue, 6 May 2025 16:25:55 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=BA=8C=E7=89=88=E5=8F=AF=E9=83=A8?= =?UTF-8?q?=E7=BD=B2=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../canteen/activity/OperationActivity.java | 56 +++++++++++++--- .../setting/ParamSettingsActivity.java | 4 +- .../canteen/adapter/order/OrderAdapter.java | 2 +- .../presentation/SecondPresentation.java | 7 +- .../service/upload/UpLoadDataService.java | 66 +++++++++++++++++-- .../canteen/utils/SimplePopupWindow.java | 9 +-- .../com/bonus/canteen/utils/WorkConfig.java | 4 +- .../res/layout/machine_sale_order_main.xml | 3 +- 8 files changed, 123 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/com/bonus/canteen/activity/OperationActivity.java b/app/src/main/java/com/bonus/canteen/activity/OperationActivity.java index 6e09446..3998ee1 100644 --- a/app/src/main/java/com/bonus/canteen/activity/OperationActivity.java +++ b/app/src/main/java/com/bonus/canteen/activity/OperationActivity.java @@ -28,6 +28,7 @@ import android.widget.GridView; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; +import android.widget.PopupWindow; import android.widget.ProgressBar; import android.widget.TextView; @@ -94,6 +95,7 @@ import org.easydarwin.easypusher.R; import org.easydarwin.easypusher.databinding.ActivityCanteenOperationBinding; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; @@ -136,6 +138,7 @@ public class OperationActivity extends BaseActivity { @@ -269,8 +276,8 @@ public class OperationActivity extends BaseActivity { closePayWay(); AppDatabase.getDatabase(this).businessDataDao().update(businessDataInfo); + SoundManager.getInstance().play(Sound.createSimpleSound(R.raw.pay_success_new)); + runOnUiThread(() -> { + salesMenuEntityList.clear(); + setViewData(salesMenuEntityList, false); + mSalesMenuAdapter.notifyDataSetChanged(); + XToastUtils.success("支付成功"); + }); }); } } catch (Exception e) { @@ -423,7 +437,9 @@ public class OperationActivity extends BaseActivity orderList, String orderId, List orderDetailsInfoList) { + private BigDecimal getOrderData(int identityVerification, List< + OrderPayAndroidDTO> orderList, String + orderId, List orderDetailsInfoList) { int num = 0; DeviceInfo deviceInfo = AppDatabase.getDatabase(this).deviceInfoDao().getDeviceInfoOne(); //获取当前餐次 @@ -559,6 +575,8 @@ public class OperationActivity extends BaseActivity openBalanceResultDialog(userInfo, custPhotoFulInfo), 500); @@ -961,12 +979,14 @@ public class OperationActivity extends BaseActivity { + mPopupWindow = popupWindow; TextView setting = view.findViewById(R.id.setting); setting.setOnClickListener(v1 -> { if (binding.loginName.getText().toString().equals("未登录")) { SoundManager.getInstance().play(Sound.createSimpleSound(R.raw.please_login)); XToastUtils.warning("请先登录!"); - popupWindow.dismiss(); + mPopupWindow.dismiss(); + mPopupWindow = null; } else { Intent intent = new Intent(OperationActivity.this, SettingsActivity.class); startActivity(intent); @@ -1014,6 +1034,8 @@ public class OperationActivity extends BaseActivity combineData(2, finalUserId, Long.valueOf(finalUserId))); + String type = intent.getStringExtra("type"); + Log.d(TAG, "onReceive type: " + type); + if (ObjectUtil.isEmpty(type) || "null".equals(type) || "".equals(type)) { + String finalUserId = userId; + ThreadPoolManager.getExecutor().execute(() -> combineData(2, finalUserId, Long.valueOf(finalUserId))); + } else if ("balance".equals(type)) { + String finalUserId1 = userId; + Log.e("Dialog", "balanceDialog: "); + balanceDialog.dismiss(); + balanceDialog = null; + mPopupWindow.dismiss(); + mPopupWindow = null; + FaceScanUtil.stopReadMealCard(OperationActivity.this); + myPresentation.closeScan(); + ThreadPoolManager.getExecutor().execute(() -> { + UserInfo userInfo = AppDatabase.getDatabase(context).userDao().getUserInfoById(finalUserId1); + CustPhotoFulInfo custPhotoFulInfo = AppDatabase.getDatabase(context).custPhotoFulDao().getCustPhotoById(Integer.parseInt(finalUserId1)); + runOnUiThread(() -> new Handler().postDelayed(() -> openBalanceResultDialog(userInfo, custPhotoFulInfo), 500)); + }); + } } } }; diff --git a/app/src/main/java/com/bonus/canteen/activity/setting/ParamSettingsActivity.java b/app/src/main/java/com/bonus/canteen/activity/setting/ParamSettingsActivity.java index 7cbb698..f082720 100644 --- a/app/src/main/java/com/bonus/canteen/activity/setting/ParamSettingsActivity.java +++ b/app/src/main/java/com/bonus/canteen/activity/setting/ParamSettingsActivity.java @@ -128,7 +128,7 @@ public class ParamSettingsActivity extends BaseActivity openDialog("MQTT密码", "mqttPassWord", paramSettingInfo.getMqttPassword(),1)); binding.appId.setOnClickListener(v -> openDialog("AppId", "appId", paramSettingInfo.getAppId(),1)); binding.appKey.setOnClickListener(v -> openDialog("AppKey", "appKey", paramSettingInfo.getAppKey(),1)); - binding.facePassRate.setOnClickListener(v -> openDialog("人脸识别通过率(请输入0-1之间的数字)", "facePassRate", paramSettingInfo.getFacePassRate(),2)); + binding.facePassRate.setOnClickListener(v -> openDialog("人脸识别通过率\n提示:请输入 0.8 - 1 之间的数字", "facePassRate", paramSettingInfo.getFacePassRate(),2)); binding.photoPrefix.setOnClickListener(v -> openDialog("图片前缀", "photoPrefix", paramSettingInfo.getPhotoPrefixes(),1)); } @@ -192,7 +192,7 @@ public class ParamSettingsActivity extends BaseActivity 1 || Float.parseFloat(input.toString()) < 0){ + if (Float.parseFloat(input.toString()) > 1 || Float.parseFloat(input.toString()) < 0.8){ SoundManager.getInstance().play(Sound.createSimpleSound(R.raw.please_input_correct_param)); XToastUtils.warning("请输入正确的参数!"); return; diff --git a/app/src/main/java/com/bonus/canteen/adapter/order/OrderAdapter.java b/app/src/main/java/com/bonus/canteen/adapter/order/OrderAdapter.java index 77f7e0e..2a2ffce 100644 --- a/app/src/main/java/com/bonus/canteen/adapter/order/OrderAdapter.java +++ b/app/src/main/java/com/bonus/canteen/adapter/order/OrderAdapter.java @@ -117,7 +117,6 @@ public class OrderAdapter extends BaseAdapter { holder.machineRefund.setVisibility(View.GONE); } holder.machineRefund.setOnClickListener(v -> { - v.setVisibility(View.GONE); ThreadPoolManager.getExecutor().execute(() -> { LoginInfo loginInfo = AppDatabase.getDatabase(context).loginInfoDao().getLoginInfoOne(); if (ObjectUtil.isNull(loginInfo)) { @@ -127,6 +126,7 @@ public class OrderAdapter extends BaseAdapter { }); return; } + runOnUiThread(() -> v.setVisibility(View.GONE)); OfflineOrderInfo offlineOrderInfo = AppDatabase.getDatabase(context).offlineOrderDao().getOfflineOrderById(bean.getOrderId()); String money = new BigDecimal(offlineOrderInfo.getAmountDue()).divide(new BigDecimal(100)) + ""; if ("0".equals(offlineOrderInfo.getIsOnline())) { diff --git a/app/src/main/java/com/bonus/canteen/presentation/SecondPresentation.java b/app/src/main/java/com/bonus/canteen/presentation/SecondPresentation.java index 001c535..2765b0d 100644 --- a/app/src/main/java/com/bonus/canteen/presentation/SecondPresentation.java +++ b/app/src/main/java/com/bonus/canteen/presentation/SecondPresentation.java @@ -196,7 +196,7 @@ public class SecondPresentation extends Presentation { private RelativeLayout personBalancePresentation; - private String type; + private String faceScanType; public void setSalesData(List rawData) { this.salesMenuEntityList = rawData; // 更新列表 @@ -624,7 +624,7 @@ public class SecondPresentation extends Presentation { } public void openScan(String type) { - this.type = type; + this.faceScanType = type; runOnUiThread(() -> { faceImg.setVisibility(View.GONE); faceScan.setVisibility(View.VISIBLE); @@ -868,6 +868,9 @@ public class SecondPresentation extends Presentation { } Intent intent = new Intent("FACE_SCAN_SUCCESS"); intent.putExtra("userId", compareResult.getCustId()); + if ("balance".equals(faceScanType)){ + intent.putExtra("type", "balance"); + } context.sendBroadcast(intent); }); } diff --git a/app/src/main/java/com/bonus/canteen/service/upload/UpLoadDataService.java b/app/src/main/java/com/bonus/canteen/service/upload/UpLoadDataService.java index 57903d1..9651c04 100644 --- a/app/src/main/java/com/bonus/canteen/service/upload/UpLoadDataService.java +++ b/app/src/main/java/com/bonus/canteen/service/upload/UpLoadDataService.java @@ -64,6 +64,7 @@ public class UpLoadDataService extends Service { private UploadThread uploadThread; public boolean isRunning; public OkHttpService service = new OkHttpService(); + @Nullable @Override public IBinder onBind(Intent intent) { @@ -76,11 +77,11 @@ public class UpLoadDataService extends Service { super.onCreate(); notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); //创建NotificationChannel - if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){ + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationChannel channel = new NotificationChannel(notificationId, notificationName, NotificationManager.IMPORTANCE_LOW); notificationManager.createNotificationChannel(channel); } - startForeground(1,getNotification()); + startForeground(1, getNotification()); PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, UpLoadDataService.class.getName()); wakeLock.acquire(); @@ -121,7 +122,7 @@ public class UpLoadDataService extends Service { boolean netTf = NetworkUtils.isNetworkConnected(UpLoadDataService.this); Log.e(TAG, "netTf:" + netTf); if (netTf) { - Log.e("服务:","UpLoadDataService"); + Log.e("服务:", "UpLoadDataService"); uploadData(); } Thread.sleep(1000 * 300); @@ -131,6 +132,7 @@ public class UpLoadDataService extends Service { } } } + @Override public void onDestroy() { Log.e(TAG, "onDestroy:"); @@ -146,7 +148,7 @@ public class UpLoadDataService extends Service { super.onDestroy(); } - public synchronized void uploadData(){ + public synchronized void uploadData() { uploadOrder();//上传订单 } @@ -157,12 +159,64 @@ public class UpLoadDataService extends Service { return; } for (OfflineOrderInfo orderInfo : orderList) { - uploadOrderInfo(orderInfo); + //判断是否有订单 + int code = checkIsExistOrder(orderInfo); + if (code == 1) { + //订单已存在 + uploadOrderToPay(orderInfo); + } + if (code == 0) { + //订单不存在 + uploadOrderInfo(orderInfo); + } } stopSelf(); stopService(new Intent(this, UpLoadDataService.class)); } + private void uploadOrderToPay(OfflineOrderInfo orderInfo) { + MediaType JSON = MediaType.parse("application/json; charset=utf-8"); + JSONObject json = new JSONObject(); + String jsonString = json.toString(); + RequestBody body = RequestBody.create(JSON, jsonString); + String url = WorkConfig.getBaseUrl() + "/order/device/pay/" + orderInfo.getOrderId(); + Request request = new Request.Builder().url(url) + .post(body).build(); + String result = service.httpPost(url, body, this, request); + Log.d("uploadOrderToPay", "result:" + result); + if (!StringHelper.isEmptyAndNull(result)) { + JSONObject firstJson = JSONObject.parseObject(result); + String code = firstJson.getString("code"); + if (code.equals("200")) { + ThreadPoolManager.getExecutor().execute(() -> AppDatabase.getDatabase(this).offlineOrderDao().updateIsOnline("1", orderInfo.getOrderId())); + } + } + } + + private int checkIsExistOrder(OfflineOrderInfo orderInfo) { + MediaType JSON = MediaType.parse("application/json; charset=utf-8"); + JSONObject json = new JSONObject(); + String jsonString = json.toString(); + RequestBody body = RequestBody.create(JSON, jsonString); + String url = WorkConfig.getBaseUrl() + "/order/device/" + orderInfo.getOrderId(); + Request request = new Request.Builder().url(url) + .post(body).build(); + String result = service.httpPost(url, body, this, request); + Log.d("checkIsExistOrder checkIsExistOrder", "result:" + result); + if (StringHelper.isEmptyAndNull(result)) { + return -1; + } + JSONObject firstJson = JSONObject.parseObject(result); + String code = firstJson.getString("code"); + String msg = firstJson.getString("msg"); + if (code.equals("200")) { + return 1; + } + if (code.equals("500") && "订单不存在".equals(msg)) { + return 0; + } + return -1; + } private void uploadOrderInfo(OfflineOrderInfo orderInfo) { String jsonString = orderInfo.getJsonStr().toString(); Log.d("combineData jsonString", jsonString); @@ -177,7 +231,7 @@ public class UpLoadDataService extends Service { .addHeader("MERCHANT-ID", AppDatabase.getDatabase(this).deviceInfoDao().getDeviceInfoOne().getTenantId()) .addHeader("source-type", "20") .post(body).build(); - String result = service.httpPost(url, body,this, request); + String result = service.httpPost(url, body, this, request); Log.i("getPersonMessage result", result); if (!StringHelper.isEmptyAndNull(result)) { JSONObject firstJson = JSONObject.parseObject(result); diff --git a/app/src/main/java/com/bonus/canteen/utils/SimplePopupWindow.java b/app/src/main/java/com/bonus/canteen/utils/SimplePopupWindow.java index d4a17d3..41e4456 100644 --- a/app/src/main/java/com/bonus/canteen/utils/SimplePopupWindow.java +++ b/app/src/main/java/com/bonus/canteen/utils/SimplePopupWindow.java @@ -120,12 +120,9 @@ public class SimplePopupWindow { //显示软键盘 private void showInPut() { if (mIsShowInput) { - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - InputMethodManager imm = (InputMethodManager) mActivity.getSystemService(Context.INPUT_METHOD_SERVICE); - imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); - } + new Handler().postDelayed(() -> { + InputMethodManager imm = (InputMethodManager) mActivity.getSystemService(Context.INPUT_METHOD_SERVICE); + imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); }, 0); } } diff --git a/app/src/main/java/com/bonus/canteen/utils/WorkConfig.java b/app/src/main/java/com/bonus/canteen/utils/WorkConfig.java index 0277508..a41f785 100644 --- a/app/src/main/java/com/bonus/canteen/utils/WorkConfig.java +++ b/app/src/main/java/com/bonus/canteen/utils/WorkConfig.java @@ -26,8 +26,8 @@ import com.bonus.canteen.db.entity.base.ParamSettingInfo; public class WorkConfig { //本地 - protected static String baseUrl = "http://192.168.0.34:48380/smart-canteen"; - protected static String prefixesUrl = "http://192.168.0.34:48380"; + protected static String baseUrl = "http://36.33.26.201:48380/smart-canteen"; + protected static String prefixesUrl = "http://36.33.26.201:48380"; protected static String fileUrl = "http://192.168.0.14:9090/lnyst/"; diff --git a/app/src/main/res/layout/machine_sale_order_main.xml b/app/src/main/res/layout/machine_sale_order_main.xml index 136e88b..23a9509 100644 --- a/app/src/main/res/layout/machine_sale_order_main.xml +++ b/app/src/main/res/layout/machine_sale_order_main.xml @@ -19,7 +19,8 @@ android:layout_height="50dp" android:layout_marginLeft="@dimen/config_margin_20dp" android:layout_marginTop="@dimen/config_margin_10dp" - android:background="@drawable/btn_border_no_bg" + android:textColor="@color/black" + android:background="@drawable/btn_login_border_bg" android:text="返回"/>