From c7376f8d1091b70597ba4430a281496b585b386e Mon Sep 17 00:00:00 2001
From: weimingfei <fei_gaming@sina.com>
Date: 星期四, 23 十月 2025 21:58:26 +0800
Subject: [PATCH] 钥匙柜

---
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainVM.java |  335 +++++++++++++++++++++++++++++++------------------------
 1 files changed, 190 insertions(+), 145 deletions(-)

diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainVM.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainVM.java
index ea0656e..16c401a 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainVM.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainVM.java
@@ -10,32 +10,42 @@
 
 import com.doumee.keyCabinet.MApplication;
 import com.doumee.keyCabinet.R;
-import com.doumee.keyCabinet.bean.ConfigBean;
+import com.doumee.keyCabinet.bean.CabinetFaceBean;
 import com.doumee.keyCabinet.bean.DevConfigBean;
 import com.doumee.keyCabinet.bean.FaceUserBean;
-import com.doumee.keyCabinet.bean.RecyclerBraceletBean;
+import com.doumee.keyCabinet.bean.KeyCabinetBean;
+import com.doumee.keyCabinet.bean.LoginBean;
+import com.doumee.keyCabinet.bean.ManageKeyCabinetBean;
+import com.doumee.keyCabinet.dao.CabinetGridDo;
+import com.doumee.keyCabinet.dao.DaoManager;
 import com.doumee.keyCabinet.event.DevConfigEvent;
-import com.doumee.keyCabinet.event.ReLoginEvent;
+import com.doumee.keyCabinet.event.HttpEvent;
 import com.doumee.keyCabinet.http.Apis;
 import com.doumee.keyCabinet.http.param.BaseResponse;
+import com.doumee.keyCabinet.http.param.CloseGridParam;
 import com.doumee.keyCabinet.http.param.DevErrInfoParam;
 import com.doumee.keyCabinet.http.param.DevLoginParam;
 import com.doumee.keyCabinet.http.param.FaceUserParam;
-import com.doumee.keyCabinet.http.param.RecyclerSHParam;
 import com.doumee.keyCabinet.http.param.RequestBaseObject;
-import com.doumee.keyCabinet.ui.guide.GuideActivity;
+import com.doumee.keyCabinet.http.param.TimeOutUnCloseAlarmParam;
 import com.doumee.keyCabinet.utils.BraceletLogUtils;
 import com.doumee.keyCabinet.utils.LMobileInfo;
 import com.doumee.keyCabinet.utils.LanguageUtil;
 import com.doumee.keyCabinet.utils.ParamsUtil;
+import com.doumee.keyCabinet.utils.i485.SportUtils;
 import com.doumee.lib_coremodel.base.BaseModel;
 import com.doumee.lib_coremodel.base.DataViewModel;
 import com.doumee.lib_coremodel.http.rxJava.SimpleObserver;
+import com.doumee.lib_coremodel.http.utils.GsonTools;
 import com.doumee.lib_coremodel.http.utils.RxUtils;
 import com.doumee.lib_coremodel.util.SpUtil;
+import com.doumee.lib_coremodel.util.StringUtil;
 
 import org.greenrobot.eventbus.EventBus;
 
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 
 import okhttp3.Headers;
@@ -44,8 +54,10 @@
 public class MainVM extends DataViewModel {
     public ObservableField<String> dayObs = new ObservableField<>("");
     public ObservableField<String> timeObs = new ObservableField<>("");
+    public ObservableField<String> infoObs = new ObservableField<>("");
 
     private MutableLiveData<List<FaceUserBean>> faceLD = new MutableLiveData<>();
+    private MutableLiveData<DevConfigBean> confidLD = new MutableLiveData<>();
 
     @ViewModelInject
     public MainVM(@NonNull Application application, BaseModel model) {
@@ -57,123 +69,108 @@
         doAction(type);
     }
 
-    private boolean isReq = false;
-
-    public void resetReq(){
-        isReq = false;
-    }
-
     public void devLogin(){
-        if (true) {
-            return;
-        }
         //娓呴櫎鐧诲綍淇℃伅
-        if(isReq){
-            return;
-        }
-        isReq = true;
-        MApplication.setCookie("");
-        MApplication.saveConfigBean(new ConfigBean());
-        RequestBaseObject<DevLoginParam> request = new RequestBaseObject<>();
-        DevLoginParam param = new DevLoginParam();
-        param.setDevCode(LMobileInfo.getDeviceUniqueId());
-        request.setParam(param);
-        getRetrofitService(Apis.class).devLogin(0,
-                        ParamsUtil.encodeRequestBody(request))
+        MApplication.saveConfigBean(new DevConfigBean());
+        EventBus.getDefault().post(new HttpEvent("鑾峰彇閽ュ寵鏌滃熀鏈俊鎭�-璇锋眰"));
+        getRetrofitService(Apis.class).getCabinetInfoForDriver(LMobileInfo.getDeviceUniqueId())
                 .compose(RxUtils.schedulersTransformer())
-                .subscribe(new SimpleObserver<Response<BaseResponse<DevConfigBean>>>(rxJavaGcManager) {
+                .subscribe(new SimpleObserver<BaseResponse<DevConfigBean>>(rxJavaGcManager) {
                     @Override
-                    public void onNext(@NonNull Response<BaseResponse<DevConfigBean>> base) {
-                        Headers headers = base.headers();//鎴戜滑閫氳繃Response鐨刪eaders瀵硅薄鑾峰彇鍒板搷搴斿ご淇℃伅銆�
-                        List<String> values = headers.values("Set-Cookie");//閫氳繃鈥淪et-Cookie鈥濆瓧娈佃幏鍙栧埌鏈嶅姟鍣ㄨ繑鍥炵殑Cookie淇℃伅
-                        if(values!=null&&values.size()>0){
-                            MApplication.setCookie(values.get(0));
-                        }
-                        BaseResponse<DevConfigBean> response = base.body();
-                        if(response==null){
-                            toast(MApplication.mContext.getString(R.string.guide_toast_1));
-                        }
-                        if("000000".equals(response.getErrorCode())){
-                            if(response.getRecord()!=null){
-                                if("0".equals(response.getRecord().getStatus())){
-                                    startActivity(GuideActivity.class);
-                                    finish();
-                                    return;
+                    public void onNext(@NonNull BaseResponse<DevConfigBean> response) {
+                        EventBus.getDefault().post(new HttpEvent("鑾峰彇閽ュ寵鏌滃熀鏈俊鎭�-杩斿洖锛�"+ GsonTools.changeGsonToJson(response)));
+                        if(200==response.getCode()){
+                            if(response.getData()!=null){
+                                MApplication.saveConfigBean(response.getData());
+                                confidLD.setValue(response.getData());
+                                if(response.getData().getCabinetGridInfoVOList()!=null){
+                                    updateDao(response.getData().getCabinetGridInfoVOList());
                                 }
-                                DevConfigBean devConfigBean = response.getRecord();
-                                ConfigBean configBean = new ConfigBean();
-                                configBean.setShopId(devConfigBean.getShopId());
-                                configBean.setCapacity(devConfigBean.getCapacity());
-                                configBean.setMoney(devConfigBean.getMoney());
-                                configBean.setCategory(devConfigBean.getCategory());
-                                configBean.setCurNum(devConfigBean.getCurNum());
-                                configBean.setName(devConfigBean.getName());
-                                configBean.setGymId(devConfigBean.getVenueId());
-                                configBean.setLanguage(devConfigBean.getLanguage());
-                                String language = devConfigBean.getLanguage();
-                                if(!TextUtils.isEmpty(language)){
-                                    //杞皬鍐�
-                                    language = language.toLowerCase();
-                                    if("zh".equals(language)){
-                                        MApplication.nLan = 0;
-                                    }else {
-                                        MApplication.nLan = 1;
-                                    }
-                                }
-                                SpUtil.saveString("language",language);
-                                LanguageUtil.changeAppLanguage(MApplication.mContext,language);
-                                MApplication.saveConfigBean(configBean);
                             }else {
                                 toast(MApplication.mContext.getString(R.string.guide_toast_1));
                             }
-                        }else if("33010101".equals(response.getErrorCode())) {
-                            toast(MApplication.mContext.getString(R.string.guide_toast_2)+
-                                    MApplication.mContext.getString(R.string.symbol_colon)+param.getDevCode());
                         }else {
-                            toast(response.getErrorMsg());
+                            toast(response.getMessage());
                         }
                     }
 
                     @Override
                     public void onError(@NonNull Throwable e) {
                         toast(e.getMessage());
+                        EventBus.getDefault().post(new HttpEvent("鑾峰彇閽ュ寵鏌滃熀鏈俊鎭�-閿欒锛�"+ e.getMessage()));
                     }
 
                     @Override
                     public void onComplete() {
-                        isReq = false;
+
                     }
                 });
     }
 
+    private void updateDao(List<ManageKeyCabinetBean> beans){
+        List<CabinetGridDo> gridDos = DaoManager.getCabinetGridDao().loadAll();
+        HashMap<String,CabinetGridDo> oldMap = new HashMap<>();
+        for(CabinetGridDo d:gridDos){
+            oldMap.put(d.getGridKey(),d);
+        }
+        List<CabinetGridDo> addList = new ArrayList<>();
+        List<CabinetGridDo> updateList = new ArrayList<>();
+        for(ManageKeyCabinetBean bean:beans){
+            String key = SportUtils.intToHex(Integer.parseInt(bean.getBoardCode()))+SportUtils.intToHex(Integer.parseInt(bean.getChannelCode()));
+            if(oldMap.containsKey(key)){
+                //淇敼
+                CabinetGridDo gridDo = oldMap.get(key);
+                gridDo.setGridId(bean.getId());
+                gridDo.setCabinetName(bean.getCode());
+                gridDo.setKeyCode(bean.getKeyCode());
+                gridDo.setUpdateTime(StringUtil.DateToStr(new Date()));
+                gridDo.setBindStatus(bean.getBindStatus());
+                gridDo.setGridStatus(bean.getStatus());
+                gridDo.setKeyStatus(bean.getKeyStatus());
+                gridDo.setWorkingStatus(bean.getWorkingStatus());
+                updateList.add(gridDo);
+            }else {
+                //鏂板
+                CabinetGridDo gridDo = new CabinetGridDo();
+                gridDo.setGridId(bean.getId());
+                gridDo.setCabinetName(bean.getCode());
+                gridDo.setGridKey(key);
+                gridDo.setKeyCode(bean.getKeyCode());
+                gridDo.setBindStatus(bean.getBindStatus());
+                gridDo.setGridStatus(bean.getStatus());
+                gridDo.setKeyStatus(bean.getKeyStatus());
+                gridDo.setWorkingStatus(bean.getWorkingStatus());
+                gridDo.setUpdateTime(StringUtil.DateToStr(new Date()));
+                addList.add(gridDo);
+            }
+        }
+        if(addList.size()>0){
+            DaoManager.getCabinetGridDao().insert(addList);
+        }
+        if(updateList.size()>0){
+            CabinetGridDo[] upList = new CabinetGridDo[updateList.size()];
+            for(int i=0;i<updateList.size();i++){
+                upList[i] = updateList.get(i);
+            }
+            DaoManager.getCabinetGridDao().update(upList);
+        }
+    }
+
     public void devHeart(){
-        if (true) {
+        if (MApplication.getConfigBean().getId()==null) {
             return;
         }
-        RequestBaseObject<DevLoginParam> request = new RequestBaseObject<>();
-        DevLoginParam param = new DevLoginParam();
-        param.setDevCode(LMobileInfo.getDeviceUniqueId());
-        request.setParam(param);
-        getRetrofitService(Apis.class).heart(MApplication.getConfigBean().getLanguage(),MApplication.getCookie(),MApplication.getConfigBean().getShopId(),
-                        MApplication.getConfigBean().getGymId(),ParamsUtil.encodeRequestBody(request))
+        getRetrofitService(Apis.class).heart(MApplication.getConfigBean().getId())
                 .compose(RxUtils.schedulersTransformer())
-                .subscribe(new SimpleObserver<BaseResponse<DevConfigBean>>(rxJavaGcManager) {
+                .subscribe(new SimpleObserver<BaseResponse>(rxJavaGcManager) {
                     @Override
-                    public void onNext(@NonNull BaseResponse<DevConfigBean> response) {
-                        if(response!=null&&"000000".equals(response.getErrorCode())){
-                            if(response.getRecord()!=null){
-                                EventBus.getDefault().post(new DevConfigEvent(response.getRecord()));
-                            }
-                        }else if("00016".equals(response.getErrorCode())||"00068".equals(response.getErrorCode())) {
-                            EventBus.getDefault().post(new ReLoginEvent());
-                        }else {
+                    public void onNext(@NonNull BaseResponse response) {
 
-                        }
                     }
 
                     @Override
                     public void onError(@NonNull Throwable e) {
-                        System.out.println(e.getMessage());
+
                     }
 
                     @Override
@@ -191,26 +188,33 @@
         if (true) {
             return;
         }
-        RequestBaseObject<FaceUserParam> request = new RequestBaseObject<>();
-        FaceUserParam param = new FaceUserParam();
-        param.setLastTime(SpUtil.getString("LastTime"));
-        param.setType("0");
-        request.setParam(param);
         //showLoading(true);
-        getRetrofitService(Apis.class).allFaceList(MApplication.getConfigBean().getLanguage(),MApplication.getCookie(),MApplication.getConfigBean().getShopId(),
-                        MApplication.getConfigBean().getGymId(), ParamsUtil.encodeRequestBody(request))
+        getRetrofitService(Apis.class).allFaceList( LMobileInfo.getDeviceUniqueId())
                 .compose(RxUtils.schedulersTransformer())
-                .subscribe(new SimpleObserver<BaseResponse<FaceUserBean>>(rxJavaGcManager) {
+                .subscribe(new SimpleObserver<BaseResponse<CabinetFaceBean>>(rxJavaGcManager) {
                     @Override
-                    public void onNext(@NonNull BaseResponse<FaceUserBean> response) {
-                        if("000000".equals(response.getErrorCode())){
+                    public void onNext(@NonNull BaseResponse<CabinetFaceBean> response) {
+                        if(200==response.getCode()){
                             //鏌ヨ鏁版嵁
-                            if(response.getRecordList()!=null&&response.getRecordList().size()>0){
-                                faceLD.setValue(response.getRecordList());
+                            if(response.getData()!=null){
+                                CabinetFaceBean faceBean = response.getData();
+                                List<FaceUserBean> datas = new ArrayList<>();
+                                if(faceBean!=null&&faceBean.getAutoFaceList()!=null){
+                                    for(FaceUserBean bean:faceBean.getAutoFaceList()){
+                                        bean.setGroupId("1");
+                                    }
+                                    datas.addAll(faceBean.getAutoFaceList());
+                                }
+                                if(faceBean!=null&&faceBean.getDriverFaceList()!=null){
+                                    for(FaceUserBean bean:faceBean.getDriverFaceList()){
+                                        bean.setGroupId("0");
+                                    }
+                                    datas.addAll(faceBean.getDriverFaceList());
+                                }
+                                faceLD.setValue(datas);
                             }
-                        }else if("00016".equals(response.getErrorCode())||"00068".equals(response.getErrorCode())) {
-                            EventBus.getDefault().post(new ReLoginEvent());
                         }else {
+
                         }
                     }
 
@@ -235,16 +239,13 @@
         param.setDevCode(LMobileInfo.getDeviceUniqueId());
         param.setErrInfo(bean.getValue());
         request.setParam(param);
-        getRetrofitService(Apis.class).upErrInfo(MApplication.getConfigBean().getLanguage(),MApplication.getCookie(),MApplication.getConfigBean().getShopId(),
-                        MApplication.getConfigBean().getGymId(), ParamsUtil.encodeRequestBody(request))
+        getRetrofitService(Apis.class).upErrInfo(ParamsUtil.encodeRequestBody(request))
                 .compose(RxUtils.schedulersTransformer())
                 .subscribe(new SimpleObserver<BaseResponse>(rxJavaGcManager) {
                     @Override
                     public void onNext(@NonNull BaseResponse response) {
-                        if("000000".equals(response.getErrorCode())){
+                        if(200==response.getCode()){
                             SpUtil.remoreString(bean.getKey());
-                        }else if("00016".equals(response.getErrorCode())||"00068".equals(response.getErrorCode())) {
-                            EventBus.getDefault().post(new ReLoginEvent());
                         }else {
                         }
                     }
@@ -261,45 +262,89 @@
                 });
     }
 
-    /**
-     * 涓婁紶鎵嬬幆鏃ュ織
-     */
-    public void upBraceletLog() {
-        if (true) {
-            return;
+    public List<CabinetGridDo> getOpenGrids(){
+        return DaoManager.getCabinetGridDao().getOpenGrids();
+    }
+
+    public void insertGrids(List<CabinetGridDo> addList){
+        if(addList.size()>0){
+            DaoManager.getCabinetGridDao().insert(addList);
         }
-        if(BraceletLogUtils.COUNT>100||(System.currentTimeMillis() - BraceletLogUtils.lastTime > 600000)){
-            BraceletLogUtils.lastTime = System.currentTimeMillis();
-            String text = BraceletLogUtils.getAllLog();
-            if(TextUtils.isEmpty(text)){
-                return;
+        addInfo("鏇存柊搴撴暟鎹�:鏂板" + addList.size());
+    }
+
+    public void updateGrids(List<CabinetGridDo> updateList){
+        if(updateList.size()>0){
+            CabinetGridDo[] upList = new CabinetGridDo[updateList.size()];
+            for(int i=0;i<updateList.size();i++){
+                upList[i] = updateList.get(i);
             }
-            RequestBaseObject<DevErrInfoParam> request = new RequestBaseObject<>();
-            DevErrInfoParam param = new DevErrInfoParam();
-            param.setDevCode(LMobileInfo.getDeviceUniqueId());
-            param.setErrInfo(text);
-            request.setParam(param);
-            getRetrofitService(Apis.class).upErrInfo(MApplication.getConfigBean().getLanguage(),MApplication.getCookie(),MApplication.getConfigBean().getShopId(),
-                            MApplication.getConfigBean().getGymId(), ParamsUtil.encodeRequestBody(request))
-                    .compose(RxUtils.schedulersTransformer())
-                    .subscribe(new SimpleObserver<BaseResponse>(rxJavaGcManager) {
-                        @Override
-                        public void onNext(@NonNull BaseResponse response) {
-                            if("000000".equals(response.getErrorCode())){
-
-                            }
-                        }
-
-                        @Override
-                        public void onError(@NonNull Throwable e) {
-
-                        }
-
-                        @Override
-                        public void onComplete() {
-
-                        }
-                    });
+            DaoManager.getCabinetGridDao().update(upList);
         }
+        addInfo("鏇存柊搴撴暟鎹�:淇敼" + updateList.size());
+    }
+
+    public void timeOutUnCloseAlarm(CabinetGridDo gridDo){
+        TimeOutUnCloseAlarmParam param = new TimeOutUnCloseAlarmParam();
+        LoginBean loginBean = MApplication.getLoginBean();
+        param.setCabinetId(MApplication.getConfigBean().getId());
+        param.setMemberId(loginBean.getMemberId());
+        param.setGridId(gridDo.getGridId());
+        getRetrofitService(Apis.class).timeOutUnCloseAlarm(ParamsUtil.encodeRequestBody(param))
+                .compose(RxUtils.schedulersTransformer())
+                .subscribe(new SimpleObserver<BaseResponse>(rxJavaGcManager) {
+                    @Override
+                    public void onNext(@NonNull BaseResponse response) {
+
+                    }
+
+                    @Override
+                    public void onError(@NonNull Throwable e) {
+
+                    }
+
+                    @Override
+                    public void onComplete() {
+
+                    }
+                });
+    }
+
+    public void closeGrid(CabinetGridDo gridDo){
+        CloseGridParam param = new CloseGridParam();
+        LoginBean loginBean = MApplication.getLoginBean();
+        param.setCabinetId(MApplication.getConfigBean().getId());
+        param.setAuthType(loginBean.getAuthType());
+        param.setMemberId(loginBean.getMemberId());
+        param.setGridId(gridDo.getGridId());
+        param.setKeyStatus(!TextUtils.isEmpty(gridDo.getCurKeyCode())?1:2);
+        getRetrofitService(Apis.class).closeGrid(ParamsUtil.encodeRequestBody(param))
+                .compose(RxUtils.schedulersTransformer())
+                .subscribe(new SimpleObserver<BaseResponse>(rxJavaGcManager) {
+                    @Override
+                    public void onNext(@NonNull BaseResponse response) {
+
+                    }
+
+                    @Override
+                    public void onError(@NonNull Throwable e) {
+
+                    }
+
+                    @Override
+                    public void onComplete() {
+
+                    }
+                });
+    }
+
+    public MutableLiveData<DevConfigBean> getConfidLD() {
+        return confidLD;
+    }
+
+    public void addInfo(String info){
+        String s = infoObs.get();
+        s+=info+"\n";
+        infoObs.set(s);
     }
 }

--
Gitblit v1.9.3