From a3bc6aa4fa3bad787c9fc366d6904f60265eec3b Mon Sep 17 00:00:00 2001
From: lmw <125975490@qq.com>
Date: 星期三, 04 九月 2024 15:44:14 +0800
Subject: [PATCH] 登录、用户取餐

---
 app/src/main/java/com/lotaai/canguiayw/TakeActivity.java |  235 ++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 187 insertions(+), 48 deletions(-)

diff --git a/app/src/main/java/com/lotaai/canguiayw/TakeActivity.java b/app/src/main/java/com/lotaai/canguiayw/TakeActivity.java
index 8dfae03..9d1c59d 100644
--- a/app/src/main/java/com/lotaai/canguiayw/TakeActivity.java
+++ b/app/src/main/java/com/lotaai/canguiayw/TakeActivity.java
@@ -2,39 +2,44 @@
 
 import android.content.Context;
 import android.content.Intent;
-import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
+import android.os.Looper;
 import android.os.Message;
 import android.text.Editable;
 import android.text.InputType;
 import android.view.View;
 import android.widget.Button;
 import android.widget.EditText;
-import android.widget.Toast;
+
+import androidx.annotation.NonNull;
 import androidx.appcompat.app.AppCompatActivity;
 
 import com.alibaba.fastjson.JSONObject;
 import com.blankj.utilcode.util.CacheDiskUtils;
-import com.blankj.utilcode.util.DeviceUtils;
+import com.blankj.utilcode.util.GsonUtils;
 import com.blankj.utilcode.util.LogUtils;
 import com.lotaai.canguiayw.common.HttpLoggerInterceptor;
 import com.lotaai.canguiayw.common.HttpUrlDefine;
 import com.lotaai.canguiayw.common.SettingConfig;
+import com.lotaai.canguiayw.data.BaseDto;
+import com.lotaai.canguiayw.data.BoxInfoDto;
 import com.lotaai.canguiayw.device.CanGuiCommand;
 import com.lotaai.canguiayw.device.DeviceMessage;
 import com.lotaai.canguiayw.device.DeviceType;
 import com.lotaai.canguiayw.device.MessageType;
-import com.lotaai.canguiayw.mqtt.DeviceAction;
-import com.lotaai.canguiayw.sqllitedb.Order;
-import com.lotaai.canguiayw.sqllitedb.SqlliteDbManage;
+import com.lotaai.canguiayw.device.service.CanGuiService;
+import com.lotaai.canguiayw.view.AdBannerAdapter;
+import com.lotaai.canguiayw.view.TipDialog;
 import com.pranavpandey.android.dynamic.toasts.DynamicToast;
+import com.youth.banner.Banner;
+import com.youth.banner.indicator.CircleIndicator;
 
 import org.greenrobot.eventbus.EventBus;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.concurrent.TimeUnit;
-import java.util.logging.Logger;
 
 import okhttp3.Call;
 import okhttp3.Callback;
@@ -47,12 +52,32 @@
 public class TakeActivity extends AppCompatActivity {
     private Context context;
     private EditText editText;
+    private Banner banner;
+    private ArrayList<String> imgs = new ArrayList<String>();
+    private AdBannerAdapter adapter;
+    private Handler handler;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_take);
+
+
+        handler = new Handler(Looper.getMainLooper()){
+            @Override
+            public void handleMessage(@NonNull Message msg) {
+                super.handleMessage(msg);
+                if (msg.what == 0){
+                    adver();
+                }
+            }
+        };
+
         context = TakeActivity.this;
+
+        Intent startIntent = new Intent(context, CanGuiService.class);
+        startService(startIntent);
+
         editText = (EditText)findViewById(R.id.edt_borrow_case_number);
         editText.setInputType(InputType.TYPE_NULL); // 屏蔽软键盘
         DynamicToast.Config.getInstance().setTextSize(30).apply();
@@ -60,6 +85,7 @@
         View.OnClickListener clickListener = new View.OnClickListener() {
             @Override
             public void onClick(View v) {
+
                 int index = editText.getSelectionEnd();
                 Editable editable = editText.getText();
                 int key = v.getId();
@@ -71,24 +97,26 @@
                     // 调用后台
                     String gridNo = editable.toString();
                     if (null == gridNo || "".equals(gridNo.trim())) {
-                        DynamicToast.makeError(context, "取餐码不能为空。", 3).show();
+                        showResult("Please enter pickup code.");
                         return;
                     } else {
                         if (gridNo.length() !=6) {
                             editText.setText("");
-                            DynamicToast.makeError(context, "取餐码输入错误,请重试。", 3).show();
+                            showResult("The pickup code input is incorrect,\nplease try again.");
                             return;
                         }
                         //调用判断是否可以取餐
                         editText.setText("");
                         takeCheckCode(gridNo);
                     }
+
                 } else {
                     Button button = (Button) v;
                     editable.insert(index, button.getText());
                 }
             }
         };
+        banner = findViewById(R.id.banner);
         View view1 = findViewById(R.id.borrow_bt1);
         View view2 = findViewById(R.id.borrow_bt2);
         View view3 = findViewById(R.id.borrow_bt3);
@@ -113,14 +141,12 @@
         view0.setOnClickListener(clickListener);
         view11.setOnClickListener(clickListener);
         view12.setOnClickListener(clickListener);
+        adapter = new AdBannerAdapter(this,imgs);
+        banner.setAdapter(adapter);
+        banner.setIndicator(new CircleIndicator(this));
+        handler.sendEmptyMessage(0);
     }
 
-    public void backMian(View view){
-        DeviceMessage message = new DeviceMessage();
-        message.setMessageType(MessageType.FANHUI.ordinal());
-        EventBus.getDefault().post(message);
-        finish();
-    }
 
     public void takeCheckCode(String code) {
         HttpLoggerInterceptor loggingInterceptor = new HttpLoggerInterceptor(true);
@@ -131,52 +157,165 @@
                 .addInterceptor(loggingInterceptor)//添加日志拦截器
                 .build();
 
-        LogUtils.i(CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code),code);
+        LogUtils.i(CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code), code);
         RequestBody body = new FormBody.Builder()
-                .add("equipmentCode", CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code))
-                .add("takeCode", code).build();
+                .build();
+
         final Request request = new Request.Builder()
-                .url(HttpUrlDefine.equipmentTakeOut)
-                .addHeader("language", "zh-CN")
+                .url(HttpUrlDefine.pickOrder+"?pickNum="+code)
+                /*  .addHeader("language", "zh-CN")*/
                 .post(body)
                 .build();
         client.newCall(request).enqueue(new Callback() {
             @Override
             public void onFailure(Call call, IOException e) {
-                DynamicToast.makeError(context, "取餐失败!", 3).show();
+                runOnUiThread(new Runnable() {
+                    @Override
+                    public void run() {
+                        DynamicToast.makeError(context, "请求失败!", 3).show();
+                    }
+                });
+
             }
 
             @Override
             public void onResponse(Call call, Response response) throws IOException {
                 String result = response.body().string();
-                LogUtils.i("获取到的数据:"+result);
+
+                LogUtils.i("获取到的数据:" + result);
+                final BoxInfoDto baseDto = GsonUtils.fromJson(result, BoxInfoDto.class);
+                runOnUiThread(new Runnable() {
+                    @Override
+                    public void run() {
+                        if (baseDto.getCode()==200) {
+                            byte[] command = CanGuiCommand.getInstance().controlGridCommand(baseDto.getData().getBoxNum(),
+                                    baseDto.getData().getCartNum(), 1, 255, 0, 0, 0, 0);
+                            DeviceMessage message = new DeviceMessage();
+                            message.setMessageType(MessageType.SENDMESSAGE.ordinal());
+                            message.setDeviceType(DeviceType.CANGUI.ordinal());
+                            message.setMessageByte(command);
+                            EventBus.getDefault().post(message);
+                            showResult("Door opened succcessfully! \n" +
+                                    "Please pickup your meal.");
+                        }else{
+                            showResult(baseDto.getMsg());
+                        }
+                    }
+                });
+            }
+        });
+    }
+
+    public void showResult(String msg){
+        TipDialog tipDialog = new TipDialog();
+        Bundle bundle = new Bundle();
+        bundle.putString("msg",msg);
+        tipDialog.setArguments(bundle);
+        tipDialog.show(getSupportFragmentManager(),"res");
+    }
+
+
+    public void pickOrder(String code) {
+        HttpLoggerInterceptor loggingInterceptor = new HttpLoggerInterceptor(true);
+        OkHttpClient client = new OkHttpClient.Builder()
+                .connectTimeout(20, TimeUnit.SECONDS)//响应时间,读取时间
+                .readTimeout(20, TimeUnit.SECONDS)
+                .callTimeout(20, TimeUnit.SECONDS)
+                .addInterceptor(loggingInterceptor)//添加日志拦截器
+                .build();
+
+        LogUtils.i(CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code), code);
+        RequestBody body = new FormBody.Builder()
+                .build();
+
+        final Request request = new Request.Builder()
+                .url(HttpUrlDefine.pickOrder+"?pickNum="+code)
+                /*  .addHeader("language", "zh-CN")*/
+                .post(body)
+                .build();
+        client.newCall(request).enqueue(new Callback() {
+            @Override
+            public void onFailure(Call call, IOException e) {
+                runOnUiThread(new Runnable() {
+                    @Override
+                    public void run() {
+                        DynamicToast.makeError(context, "请求失败!", 3).show();
+                    }
+                });
+
+            }
+
+            @Override
+            public void onResponse(Call call, Response response) throws IOException {
+                String result = response.body().string();
+                LogUtils.i("获取到的数据:" + result);
+                final BaseDto baseDto = GsonUtils.fromJson(result, BaseDto.class);
+                runOnUiThread(new Runnable() {
+                    @Override
+                    public void run() {
+                        if (baseDto.isData()) {
+                            DynamicToast.makeSuccess(context, "验证成功!", 3).show();
+                        }else{
+                            DynamicToast.makeError(context, "验证失败!", 3).show();
+                        }
+                    }
+                });
+
+
+            }
+        });
+    }
+
+
+    public void adver() {
+        HttpLoggerInterceptor loggingInterceptor = new HttpLoggerInterceptor(true);
+        OkHttpClient client = new OkHttpClient.Builder()
+                .connectTimeout(20, TimeUnit.SECONDS)//响应时间,读取时间
+                .readTimeout(20, TimeUnit.SECONDS)
+                .callTimeout(20, TimeUnit.SECONDS)
+                .addInterceptor(loggingInterceptor)//添加日志拦截器
+                .build();
+
+        String code = CacheDiskUtils.getInstance().getString(SettingConfig.getInstance().Cache_Device_Code);
+        RequestBody body = new FormBody.Builder()
+                .build();
+        final Request request = new Request.Builder()
+                .url(HttpUrlDefine.adver+"?sn="+code)
+                /*  .addHeader("language", "zh-CN")*/
+                .post(body)
+                .build();
+        client.newCall(request).enqueue(new Callback() {
+            @Override
+            public void onFailure(Call call, IOException e) {
+                runOnUiThread(new Runnable() {
+                    @Override
+                    public void run() {
+                    }
+                });
+            }
+
+            @Override
+            public void onResponse(Call call, Response response) throws IOException {
+                String result = response.body().string();
+                LogUtils.i("获取到的数据:" + result);
                 JSONObject obj = JSONObject.parseObject(result);
-                if ("0".equals(obj.getString("code"))) {
-                 String g = obj.getString("data");
-                 //发送mqtt 进行开门
-                    JSONObject json = new JSONObject();
-                    json.put("action", DeviceAction.CONTROLDEVICE.name());
-                    json.put(DeviceAction.doorIsOpen.name(), "1");
-                    json.put(DeviceAction.xiaoDuIsOpen.name(), "0");
-                    json.put(DeviceAction.jiareIsOpen.name(), "0");
-                    json.put(DeviceAction.dengGuangIsOpen.name(), "0");
-                    json.put("gridNo", g);
-                    json.put("qucan","1");
-                    DeviceMessage deviceMessage = new DeviceMessage();
-                    deviceMessage.setMessageType(MessageType.MQTT.ordinal());
-                    deviceMessage.setMsgString(json.toJSONString());
-                    EventBus.getDefault().post(deviceMessage);
-                    String string = obj.getString("msg");
-                    Message msg = new Message();
-                    msg.what = 1;
-                    msg.obj = "取餐格口:" + g;
-                    showHandler.sendMessage(msg);
-                } else {
-                    String string = obj.getString("msg");
-                    Message msg = new Message();
-                    msg.what = 0;
-                    msg.obj = "取餐失败:" + string;
-                    showHandler.sendMessage(msg);
+                if ("200".equals(obj.getString("code"))) {
+                    String imgs = obj.getString("data");
+                    TakeActivity.this.imgs.clear();
+                    String[] split = imgs.split(",");
+                    for (int i = 0;i< split.length;i++){
+                        if (!split[i].isEmpty()){
+                            TakeActivity.this.imgs.add(split[i]);
+                        }
+                    }
+                    runOnUiThread(new Runnable() {
+                        @Override
+                        public void run() {
+                            adapter.notifyDataSetChanged();
+                            banner.setCurrentItem(1);
+                        }
+                    });
+                    handler.sendEmptyMessageDelayed(0,60000);
                 }
             }
         });

--
Gitblit v1.7.1