From cb6aca0642ac8dd5de877ade168066d85acb589c Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期五, 17 十月 2025 15:54:10 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/wuhuyancao' into wuhuyancao

---
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/KeyCabinetBean.java                     |  187 ++++
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/ParamsUtil.java                        |    4 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/MApplication.java                            |   48 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/KeyResultEvent.java                    |   21 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/MarkRepairParam.java              |   26 
 keyCabinet-android/app/src/main/res/mipmap-xxhdpi/ic_jiujingjiance.png                                  |    0 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/KeyDoorEvent.java                      |   21 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/KeyCabinetActivity.java        |  242 +++++
 keyCabinet-android/app/src/main/res/layout/face_rcv_item.xml                                            |   15 
 keyCabinet-android/app/src/main/res/layout/manage_login_activity.xml                                    |    2 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/OpenGridDriverParam.java          |   47 +
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/ErrActivity.java                     |    2 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/CabinetFaceBean.java                    |   27 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/guide/GuideActivity.java                  |   36 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/service/HeartbeatService.java             |   40 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/FaceUserBean.java                       |   65 
 keyCabinet-android/app/src/main/res/values/styles.xml                                                   |    6 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageCabinetVM.java           |    5 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/KeyStatusListener.java                 |   21 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/CabinetDetailBean.java                  |  215 ++++
 keyCabinet-android/app/src/main/res/layout/key_cabinet_activity.xml                                     |   95 +
 keyCabinet-android/app/src/main/res/mipmap-xxhdpi/default_nodata.jpg                                    |    0 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/DevLoginParam.java                |   21 
 keyCabinet-android/app/src/main/res/layout/ui_update_dialog.xml                                         |    2 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/KeyCabinetVM.java              |  105 ++
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/GetMemberIdByCodeParam.java       |   17 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageLoginVM.java             |    5 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/HeartEvent.java                        |    4 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/OpenGridEvent.java                     |   29 
 keyCabinet-android/app/src/main/res/layout/face_activity.xml                                            |    7 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/AndroidVersionBean.java                 |   52 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/update/UpdateUtil.java                 |   33 
 keyCabinet-android/app/src/main/res/mipmap-xxhdpi/ic_notclose.png                                       |    0 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/BaseResponse.java                 |   49 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceActivity.java                    |  181 +++
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/CloseGridParam.java               |   22 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/CancelFaultParam.java             |   26 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/GetDriverGridParam.java           |   49 +
 keyCabinet-android/app/src/main/res/layout/cabinet_rcv_item.xml                                         |   10 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceVM.java                          |   58 +
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java                    |  191 ++-
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/LoginBean.java                          |   45 
 keyCabinet-android/app/src/main/res/layout/main_activity.xml                                            |   98 ++
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/AddFaceActivity.java                 |   50 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/adapter/CabinetRcvAdapter.java |   21 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainVM.java                          |  142 --
 /dev/null                                                                                               |    0 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/BatchOpenGridAdminParam.java      |   26 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/AddFaceVM.java                       |   52 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/Apis.java                               |   94 +
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/adapter/FaceRcvAdapter.java          |    2 
 keyCabinet-android/app/src/main/res/values/strings.xml                                                  |    4 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/guide/GuideViewModel.java                 |   70 -
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/MarkFaultParam.java               |   26 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/DevConfigBean.java                      |  100 -
 55 files changed, 2,049 insertions(+), 667 deletions(-)

diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/MApplication.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/MApplication.java
index 72c7af9..fb4269e 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/MApplication.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/MApplication.java
@@ -9,13 +9,15 @@
 import android.widget.ImageView;
 
 import androidx.annotation.Nullable;
+
+import com.doumee.keyCabinet.bean.DevConfigBean;
+import com.doumee.keyCabinet.bean.LoginBean;
 import com.doumee.keyCabinet.utils.CrashHandler;
 import com.bumptech.glide.Glide;
 import com.doumee.keyCabinet.utils.TimeUtils;
 import com.doumee.lib_coremodel.base.CoreConfig;
 import com.doumee.lib_coremodel.http.other.OkHttpNetworkFetcher;
 import com.doumee.lib_coremodel.util.SpUtil;
-import com.doumee.keyCabinet.bean.ConfigBean;
 import com.doumee.keyCabinet.bean.MemberBean;
 import com.doumee.keyCabinet.utils.LanguageUtil;
 import com.facebook.fresco.helper.Phoenix;
@@ -38,6 +40,7 @@
 
 import java.io.File;
 import java.util.HashSet;
+import java.util.Random;
 import java.util.Set;
 
 import dagger.hilt.android.HiltAndroidApp;
@@ -151,7 +154,7 @@
             return;
         }
         timerCallBack = callBack;
-        countTimer = new CountDownTimer(configBean.getBackHomeTime()*1000, 1*1000) {
+        countTimer = new CountDownTimer(60*1000, 1*1000) {
             @Override
             public void onTick(long millisUntilFinished) {
                 //Timber.tag("CountTimer==>").d(millisUntilFinished+"");
@@ -192,28 +195,16 @@
         }
     }
 
-    private static ConfigBean configBean;
-    public static void saveConfigBean(ConfigBean bean){
+    private static DevConfigBean configBean;
+    public static void saveConfigBean(DevConfigBean bean){
         configBean = bean;
     }
 
-    public static ConfigBean getConfigBean(){
+    public static DevConfigBean getConfigBean(){
         if(configBean==null){
-            configBean = new ConfigBean();
+            configBean = new DevConfigBean();
         }
         return configBean;
-    }
-
-    private static MemberBean memberBean;
-    public static void saveMemberBean(MemberBean bean){
-        memberBean = bean;
-    }
-
-    public static MemberBean getMemberBean(){
-        if(memberBean==null){
-            memberBean = new MemberBean();
-        }
-        return memberBean;
     }
 
     private static UsbDevice customDevice;
@@ -226,13 +217,24 @@
         customDevice = device;
     }
 
-    private static String cookie;
+    private static LoginBean loginBean;
 
-    public static String getCookie() {
-        return cookie;
+    public static LoginBean getLoginBean() {
+        if(loginBean==null){
+            loginBean = new LoginBean();
+        }
+        return loginBean;
     }
 
-    public static void setCookie(String cookie) {
-        MApplication.cookie = cookie;
+    public static void setLoginBean(LoginBean cookie) {
+        MApplication.loginBean = cookie;
+    }
+
+    private static Random random;
+    public static boolean nextBoolean(){
+        if(random==null){
+            random = new Random();
+        }
+        return random.nextBoolean();
     }
 }
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/AndroidVersionBean.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/AndroidVersionBean.java
index 3199f6f..29a5c84 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/AndroidVersionBean.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/AndroidVersionBean.java
@@ -15,53 +15,53 @@
 	private static final long serialVersionUID = 1L;
 
 	//鐗堟湰鍙�")
-	private Integer versionCode;
+	private Integer versionNum;
 	//鐗堟湰鍚嶇О")
-	private String versionName;
+	private String versionInfo;
 	//鏇存柊鍐呭")
-	private String updateContent;
-	//鏄惁蹇呴』鏇存柊(0:鍚︼紝1:鏄�)")
-	private String isNeedUpdate;
+	private String content;
+	//鏄惁蹇呴』鏇存柊( 0鍚� 1鏄�)")
+	private Integer isForce;
 	//鏇存柊鍦板潃")
-	private String updateUrl;
+	private String fullFileUrl;
 
-	public Integer getVersionCode() {
-		return versionCode;
+	public Integer getVersionNum() {
+		return versionNum;
 	}
 
-	public void setVersionCode(Integer versionCode) {
-		this.versionCode = versionCode;
+	public void setVersionNum(Integer versionNum) {
+		this.versionNum = versionNum;
 	}
 
-	public String getVersionName() {
-		return versionName;
+	public String getVersionInfo() {
+		return versionInfo;
 	}
 
-	public void setVersionName(String versionName) {
-		this.versionName = versionName;
+	public void setVersionInfo(String versionInfo) {
+		this.versionInfo = versionInfo;
 	}
 
-	public String getUpdateContent() {
-		return updateContent;
+	public String getContent() {
+		return content;
 	}
 
-	public void setUpdateContent(String updateContent) {
-		this.updateContent = updateContent;
+	public void setContent(String content) {
+		this.content = content;
 	}
 
-	public String getIsNeedUpdate() {
-		return isNeedUpdate;
+	public Integer getIsForce() {
+		return isForce;
 	}
 
-	public void setIsNeedUpdate(String isNeedUpdate) {
-		this.isNeedUpdate = isNeedUpdate;
+	public void setIsForce(Integer isForce) {
+		this.isForce = isForce;
 	}
 
-	public String getUpdateUrl() {
-		return updateUrl;
+	public String getFullFileUrl() {
+		return fullFileUrl;
 	}
 
-	public void setUpdateUrl(String updateUrl) {
-		this.updateUrl = updateUrl;
+	public void setFullFileUrl(String fullFileUrl) {
+		this.fullFileUrl = fullFileUrl;
 	}
 }
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/CabinetDetailBean.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/CabinetDetailBean.java
new file mode 100644
index 0000000..a43b7f2
--- /dev/null
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/CabinetDetailBean.java
@@ -0,0 +1,215 @@
+package com.doumee.keyCabinet.bean;
+
+import java.io.Serializable;
+import java.util.List;
+
+import lombok.Data;
+
+@Data
+public class CabinetDetailBean implements Serializable {
+    //璁惧缂栧彿
+    private String code;
+    //璁惧ID
+    private String devId;
+    //鏌滄牸鎬绘暟
+    private Integer gridNum;
+    //璁惧涓婚敭
+    private Integer id;
+    //璁惧鍚嶇О
+    private String name;
+    //鍦ㄤ綅閽ュ寵鏁�
+    private Integer onlineKeyNum;
+    //鍊熷嚭閽ュ寵鏁�
+    private Integer outKeyNum;
+    //鏁呴殰鏌滀綋鏁伴噺
+    private Integer errGridNum;
+    //缁翠慨淇濆吇閽ュ寵鏁�
+    private Integer serviceKeyNum;
+    //鏈粦瀹氭煖浣撴暟閲�
+    private Integer unBindGridNum;
+
+    //鏌滄牸淇℃伅
+    private List<CabinetGridInfoVOListBean> cabinetGridInfoVOList;
+
+    @Data
+    public static class CabinetGridInfoVOListBean implements Serializable {
+        //缁戝畾鐘舵�� 0鏈粦瀹氾紱1宸茬粦瀹�
+        private Integer bindStatus;
+        //鏉垮彿
+        private String boardCode;
+        //杞︾墝鍙�
+        private int carCode;
+        //閫氶亾鍙�
+        private String channelCode;
+        //缂栫爜
+        private String code;
+        //涓婚敭
+        private Integer id;
+        //閽ュ寵缂栫爜
+        private Integer keyId;
+        //閽ュ寵鐘舵�� 0鏈粦瀹� 1鍦ㄤ綅 2鍊熷嚭 3缁翠慨淇濆吇
+        private Integer keyStatus;
+        //鏌滀綋杩愯鐘舵�� 0姝e父 1鏁呴殰
+        private Integer workingStatus;
+
+        public Integer getBindStatus() {
+            return bindStatus;
+        }
+
+        public void setBindStatus(Integer bindStatus) {
+            this.bindStatus = bindStatus;
+        }
+
+        public String getBoardCode() {
+            return boardCode;
+        }
+
+        public void setBoardCode(String boardCode) {
+            this.boardCode = boardCode;
+        }
+
+        public int getCarCode() {
+            return carCode;
+        }
+
+        public void setCarCode(int carCode) {
+            this.carCode = carCode;
+        }
+
+        public String getChannelCode() {
+            return channelCode;
+        }
+
+        public void setChannelCode(String channelCode) {
+            this.channelCode = channelCode;
+        }
+
+        public String getCode() {
+            return code;
+        }
+
+        public void setCode(String code) {
+            this.code = code;
+        }
+
+        public Integer getId() {
+            return id;
+        }
+
+        public void setId(Integer id) {
+            this.id = id;
+        }
+
+        public Integer getKeyId() {
+            return keyId;
+        }
+
+        public void setKeyId(Integer keyId) {
+            this.keyId = keyId;
+        }
+
+        public Integer getKeyStatus() {
+            return keyStatus;
+        }
+
+        public void setKeyStatus(Integer keyStatus) {
+            this.keyStatus = keyStatus;
+        }
+
+        public Integer getWorkingStatus() {
+            return workingStatus;
+        }
+
+        public void setWorkingStatus(Integer workingStatus) {
+            this.workingStatus = workingStatus;
+        }
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getDevId() {
+        return devId;
+    }
+
+    public void setDevId(String devId) {
+        this.devId = devId;
+    }
+
+    public Integer getGridNum() {
+        return gridNum;
+    }
+
+    public void setGridNum(Integer gridNum) {
+        this.gridNum = gridNum;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Integer getOnlineKeyNum() {
+        return onlineKeyNum;
+    }
+
+    public void setOnlineKeyNum(Integer onlineKeyNum) {
+        this.onlineKeyNum = onlineKeyNum;
+    }
+
+    public Integer getOutKeyNum() {
+        return outKeyNum;
+    }
+
+    public void setOutKeyNum(Integer outKeyNum) {
+        this.outKeyNum = outKeyNum;
+    }
+
+    public Integer getErrGridNum() {
+        return errGridNum;
+    }
+
+    public void setErrGridNum(Integer errGridNum) {
+        this.errGridNum = errGridNum;
+    }
+
+    public Integer getServiceKeyNum() {
+        return serviceKeyNum;
+    }
+
+    public void setServiceKeyNum(Integer serviceKeyNum) {
+        this.serviceKeyNum = serviceKeyNum;
+    }
+
+    public Integer getUnBindGridNum() {
+        return unBindGridNum;
+    }
+
+    public void setUnBindGridNum(Integer unBindGridNum) {
+        this.unBindGridNum = unBindGridNum;
+    }
+
+    public List<CabinetGridInfoVOListBean> getCabinetGridInfoVOList() {
+        return cabinetGridInfoVOList;
+    }
+
+    public void setCabinetGridInfoVOList(List<CabinetGridInfoVOListBean> cabinetGridInfoVOList) {
+        this.cabinetGridInfoVOList = cabinetGridInfoVOList;
+    }
+}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/CabinetFaceBean.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/CabinetFaceBean.java
new file mode 100644
index 0000000..fb93bb7
--- /dev/null
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/CabinetFaceBean.java
@@ -0,0 +1,27 @@
+package com.doumee.keyCabinet.bean;
+
+import java.util.List;
+
+//浜鸿劯
+public class CabinetFaceBean {
+    //楠岃瘉浜轰汉鑴稿垪琛�
+    private List<FaceUserBean> autoFaceList;
+    //鍙告満浜鸿劯鍒楄〃
+    private List<FaceUserBean> driverFaceList;
+
+    public List<FaceUserBean> getAutoFaceList() {
+        return autoFaceList;
+    }
+
+    public void setAutoFaceList(List<FaceUserBean> autoFaceList) {
+        this.autoFaceList = autoFaceList;
+    }
+
+    public List<FaceUserBean> getDriverFaceList() {
+        return driverFaceList;
+    }
+
+    public void setDriverFaceList(List<FaceUserBean> driverFaceList) {
+        this.driverFaceList = driverFaceList;
+    }
+}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/ConfigBean.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/ConfigBean.java
deleted file mode 100644
index e2e7e48..0000000
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/ConfigBean.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package com.doumee.keyCabinet.bean;
-
-import java.math.BigDecimal;
-
-public class ConfigBean {
-
-    //杩斿洖棣栭〉鏃堕棿
-    private Long backHomeTime = 120L;
-
-    private String shopId;
-    private String gymId;
-    private String language="ZH";
-    //鎵嬬幆瀹归噺
-    private int capacity;
-    //鎵嬬幆绫诲瀷(0:IC 1:ID)
-    private String category;
-    //褰撳墠鎵嬬幆鏁伴噺
-    private int curNum;
-    //璁惧鍚嶇О
-    private String name;
-    //鎶奸噾
-    private BigDecimal money = BigDecimal.ZERO;
-
-    public String getShopId() {
-        return shopId;
-    }
-
-    public void setShopId(String shopId) {
-        this.shopId = shopId;
-    }
-
-    public String getGymId() {
-        return gymId;
-    }
-
-    public void setGymId(String gymId) {
-        this.gymId = gymId;
-    }
-
-    public String getLanguage() {
-        return language;
-    }
-
-    public void setLanguage(String language) {
-        this.language = language;
-    }
-
-    public int getCapacity() {
-        return capacity;
-    }
-
-    public void setCapacity(int capacity) {
-        this.capacity = capacity;
-    }
-
-    public String getCategory() {
-        return category;
-    }
-
-    public void setCategory(String category) {
-        this.category = category;
-    }
-
-    public int getCurNum() {
-        return curNum;
-    }
-
-    public void setCurNum(int curNum) {
-        this.curNum = curNum;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public Long getBackHomeTime() {
-        return backHomeTime;
-    }
-
-    public void setBackHomeTime(Long backHomeTime) {
-        this.backHomeTime = backHomeTime;
-    }
-
-    public BigDecimal getMoney() {
-        return money;
-    }
-
-    public void setMoney(BigDecimal money) {
-        this.money = money;
-    }
-}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/DevConfigBean.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/DevConfigBean.java
index 1ce1a86..d2fd780 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/DevConfigBean.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/DevConfigBean.java
@@ -1,64 +1,70 @@
 package com.doumee.keyCabinet.bean;
 
 import java.io.Serializable;
-import java.math.BigDecimal;
+import java.util.List;
 
 public class DevConfigBean implements Serializable {
-    private String venueId;
-    private String shopId;
-    //鎵嬬幆瀹归噺
-    private int capacity;
-    //鎵嬬幆绫诲瀷(0:IC 1:ID)
-    private String category;
-    //褰撳墠鎵嬬幆鏁伴噺
-    private int curNum;
+    //杞挱鍥惧湴鍧�
+    private List<String> bannerList;
+    //璁惧缂栧彿
+    private String code;
+    //璁惧ID
+    private String devId;
+    //鏄惁鍙岄噸楠岃瘉 0鍚� 1鏄�
+    private int doubleAuth;
+    //涓婚敭
+    private Integer id;
+    //澶囨敞
+    private String info;
     //璁惧鍚嶇О
     private String name;
-    private String language;
-    //鎶奸噾
-    private BigDecimal money;
 
-    //鎵嬬幆鍒嗙被鐘舵�� 0-绂佺敤锛�1-鍚敤
-    private String status;
-
-    public String getVenueId() {
-        return venueId;
+    public List<String> getBannerList() {
+        return bannerList;
     }
 
-    public void setVenueId(String venueId) {
-        this.venueId = venueId;
+    public void setBannerList(List<String> bannerList) {
+        this.bannerList = bannerList;
     }
 
-    public String getShopId() {
-        return shopId;
+    public String getCode() {
+        return code;
     }
 
-    public void setShopId(String shopId) {
-        this.shopId = shopId;
+    public void setCode(String code) {
+        this.code = code;
     }
 
-    public int getCapacity() {
-        return capacity;
+    public String getDevId() {
+        return devId;
     }
 
-    public void setCapacity(int capacity) {
-        this.capacity = capacity;
+    public void setDevId(String devId) {
+        this.devId = devId;
     }
 
-    public String getCategory() {
-        return category;
+    public int getDoubleAuth() {
+        return doubleAuth;
     }
 
-    public void setCategory(String category) {
-        this.category = category;
+    public void setDoubleAuth(int doubleAuth) {
+        this.doubleAuth = doubleAuth;
     }
 
-    public int getCurNum() {
-        return curNum;
+    public Integer getId() {
+        return id;
     }
 
-    public void setCurNum(int curNum) {
-        this.curNum = curNum;
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getInfo() {
+        return info;
+    }
+
+    public void setInfo(String info) {
+        this.info = info;
     }
 
     public String getName() {
@@ -67,29 +73,5 @@
 
     public void setName(String name) {
         this.name = name;
-    }
-
-    public String getLanguage() {
-        return language;
-    }
-
-    public void setLanguage(String language) {
-        this.language = language;
-    }
-
-    public BigDecimal getMoney() {
-        return money;
-    }
-
-    public void setMoney(BigDecimal money) {
-        this.money = money;
-    }
-
-    public String getStatus() {
-        return status;
-    }
-
-    public void setStatus(String status) {
-        this.status = status;
     }
 }
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/FaceUserBean.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/FaceUserBean.java
index e962771..f102a58 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/FaceUserBean.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/FaceUserBean.java
@@ -1,65 +1,48 @@
 package com.doumee.keyCabinet.bean;
 
+import java.util.List;
+
 //浜鸿劯
 public class FaceUserBean {
-    private String id;
-    private String name;
-    private String faceUrl;
-    //0锛氫細鍛橈紝1锛氬鍛�
-    private String type;
-    private String editTime;
+    private String faceImg;
+    private String memberId;
+    private String memberName;
+
+    //0:绠$悊鍛橈紝1锛氱敤鎴�
+    private String groupId;
 
     private boolean checked;
 
-    public FaceUserBean() {
-
+    public String getFaceImg() {
+        return faceImg;
     }
 
-    public FaceUserBean(String id, String name, String type, String faceUrl) {
-        this.id = id;
-        this.name = name;
-        this.faceUrl = faceUrl;
-        this.type = type;
+    public void setFaceImg(String faceImg) {
+        this.faceImg = faceImg;
     }
 
-    public String getId() {
-        return id;
+    public String getMemberId() {
+        return memberId;
     }
 
-    public void setId(String id) {
-        this.id = id;
+    public void setMemberId(String memberId) {
+        this.memberId = memberId;
     }
 
-    public String getName() {
-        return name;
+    public String getGroupId() {
+        return groupId;
     }
 
-    public void setName(String name) {
-        this.name = name;
+    public void setGroupId(String groupId) {
+        this.groupId = groupId;
     }
 
-    public String getFaceUrl() {
-        return faceUrl;
+    public String getMemberName() {
+        return memberName;
     }
 
-    public void setFaceUrl(String faceUrl) {
-        this.faceUrl = faceUrl;
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    public String getEditTime() {
-        return editTime;
-    }
-
-    public void setEditTime(String editTime) {
-        this.editTime = editTime;
+    public void setMemberName(String memberName) {
+        this.memberName = memberName;
     }
 
     public boolean isChecked() {
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/KeyCabinetBean.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/KeyCabinetBean.java
index e00edec..94ca5b6 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/KeyCabinetBean.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/KeyCabinetBean.java
@@ -1,5 +1,188 @@
 package com.doumee.keyCabinet.bean;
 
-public class KeyCabinetBean {
+import androidx.databinding.ObservableField;
 
-}
+import com.doumee.lib_coremodel.util.luban.Luban;
+
+import java.io.Serializable;
+
+import lombok.Data;
+
+public class KeyCabinetBean implements Serializable {
+    //缁戝畾鐘舵�� 0鏈粦瀹氾紱1宸茬粦瀹�
+    private int bindStatus;
+    //鏉垮彿
+    private String boardCode;
+    //閽ュ寵鏌滅紪鐮�
+    private int cabinetId;
+    //閽ュ寵鏌滃悕绉�
+    private String cabinetName;
+    //杞︾墝鍙�
+    private String carCode;
+    //杞﹁締涓婚敭
+    private int carId;
+    //閫氶亾鍙�
+    private String channelCode;
+    //缂栫爜
+    private String code;
+    //涓婚敭
+    private int id;
+    //澶囨敞
+    private String info;
+    //閽ュ寵缂栫爜
+    private String keyCode;
+    //閽ュ寵缂栫爜
+    private int keyId;
+    //閽ュ寵鐘舵�� 0鏈粦瀹� 1鍦ㄤ綅 2鍊熷嚭 3缁翠慨淇濆吇
+    private int keyStatus;
+    //搴忓垪鍙�
+    private String serialNo;
+    //鐘舵�� 0鍚敤锛�1绂佺敤
+    private int status;
+    //杩愯鐘舵�� 0姝e父 1鏁呴殰
+    private int workingStatus;
+
+    private ObservableField<Boolean> isSelected = new ObservableField<>(false);
+    private ObservableField<Integer> text1Color = new ObservableField<>(0xff111111);
+    private ObservableField<Integer> text2Color = new ObservableField<>(0xff279baa);
+
+    public int getBindStatus() {
+        return bindStatus;
+    }
+
+    public void setBindStatus(int bindStatus) {
+        this.bindStatus = bindStatus;
+    }
+
+    public String getBoardCode() {
+        return boardCode;
+    }
+
+    public void setBoardCode(String boardCode) {
+        this.boardCode = boardCode;
+    }
+
+    public int getCabinetId() {
+        return cabinetId;
+    }
+
+    public void setCabinetId(int cabinetId) {
+        this.cabinetId = cabinetId;
+    }
+
+    public String getCabinetName() {
+        return cabinetName;
+    }
+
+    public void setCabinetName(String cabinetName) {
+        this.cabinetName = cabinetName;
+    }
+
+    public String getCarCode() {
+        return carCode;
+    }
+
+    public void setCarCode(String carCode) {
+        this.carCode = carCode;
+    }
+
+    public int getCarId() {
+        return carId;
+    }
+
+    public void setCarId(int carId) {
+        this.carId = carId;
+    }
+
+    public String getChannelCode() {
+        return channelCode;
+    }
+
+    public void setChannelCode(String channelCode) {
+        this.channelCode = channelCode;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String getInfo() {
+        return info;
+    }
+
+    public void setInfo(String info) {
+        this.info = info;
+    }
+
+    public String getKeyCode() {
+        return keyCode;
+    }
+
+    public void setKeyCode(String keyCode) {
+        this.keyCode = keyCode;
+    }
+
+    public int getKeyId() {
+        return keyId;
+    }
+
+    public void setKeyId(int keyId) {
+        this.keyId = keyId;
+    }
+
+    public int getKeyStatus() {
+        return keyStatus;
+    }
+
+    public void setKeyStatus(int keyStatus) {
+        this.keyStatus = keyStatus;
+    }
+
+    public String getSerialNo() {
+        return serialNo;
+    }
+
+    public void setSerialNo(String serialNo) {
+        this.serialNo = serialNo;
+    }
+
+    public int getStatus() {
+        return status;
+    }
+
+    public void setStatus(int status) {
+        this.status = status;
+    }
+
+    public int getWorkingStatus() {
+        return workingStatus;
+    }
+
+    public void setWorkingStatus(int workingStatus) {
+        this.workingStatus = workingStatus;
+    }
+
+    public ObservableField<Boolean> getIsSelected() {
+        return isSelected;
+    }
+
+    public ObservableField<Integer> getText1Color() {
+        return text1Color;
+    }
+
+    public ObservableField<Integer> getText2Color() {
+        return text2Color;
+    }
+}
\ No newline at end of file
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/LoginBean.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/LoginBean.java
new file mode 100644
index 0000000..11b3255
--- /dev/null
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/LoginBean.java
@@ -0,0 +1,45 @@
+package com.doumee.keyCabinet.bean;
+
+//褰撳墠鐧诲綍淇℃伅
+public class LoginBean {
+    private Integer autoMemberId;
+    private Integer memberId;
+
+    //鐢ㄦ埛楠岃瘉鏂瑰紡 0鍒疯劯 1鍒峰崱
+    private int authType;
+
+    //0锛氬彇锛�1锛氳繕
+    private int flag ;
+
+    public Integer getAutoMemberId() {
+        return autoMemberId;
+    }
+
+    public void setAutoMemberId(Integer autoMemberId) {
+        this.autoMemberId = autoMemberId;
+    }
+
+    public Integer getMemberId() {
+        return memberId;
+    }
+
+    public void setMemberId(Integer memberId) {
+        this.memberId = memberId;
+    }
+
+    public int getAuthType() {
+        return authType;
+    }
+
+    public void setAuthType(int authType) {
+        this.authType = authType;
+    }
+
+    public int getFlag() {
+        return flag;
+    }
+
+    public void setFlag(int flag) {
+        this.flag = flag;
+    }
+}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/BindBraceletEvent.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/BindBraceletEvent.java
deleted file mode 100644
index b9bd837..0000000
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/BindBraceletEvent.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.doumee.keyCabinet.event;
-
-public class BindBraceletEvent {
-    private String no;
-    private String orderId;
-    private String id;
-
-    public BindBraceletEvent(String no, String orderId, String id) {
-        this.no = no;
-        this.orderId = orderId;
-        this.id = id;
-    }
-
-    public String getNo() {
-        return no;
-    }
-
-    public void setNo(String no) {
-        this.no = no;
-    }
-
-    public String getOrderId() {
-        return orderId;
-    }
-
-    public void setOrderId(String orderId) {
-        this.orderId = orderId;
-    }
-
-    public String getId() {
-        return id;
-    }
-
-    public void setId(String id) {
-        this.id = id;
-    }
-}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/HeartEvent.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/HeartEvent.java
new file mode 100644
index 0000000..0753623
--- /dev/null
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/HeartEvent.java
@@ -0,0 +1,4 @@
+package com.doumee.keyCabinet.event;
+
+public class HeartEvent {
+}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/KeyDoorEvent.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/KeyDoorEvent.java
new file mode 100644
index 0000000..347ace3
--- /dev/null
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/KeyDoorEvent.java
@@ -0,0 +1,21 @@
+package com.doumee.keyCabinet.event;
+
+/**
+ * 闂ㄧ洃鍚繑鍥�
+ */
+public class KeyDoorEvent {
+    //闂ㄤ俊鎭�
+    private String result;
+
+    public KeyDoorEvent(String result) {
+        this.result = result;
+    }
+
+    public String getResult() {
+        return result;
+    }
+
+    public void setResult(String result) {
+        this.result = result;
+    }
+}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/KeyResultEvent.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/KeyResultEvent.java
new file mode 100644
index 0000000..cb4325a
--- /dev/null
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/KeyResultEvent.java
@@ -0,0 +1,21 @@
+package com.doumee.keyCabinet.event;
+
+/**
+ * 閽ュ寵鐩戝惉杩斿洖
+ */
+public class KeyResultEvent {
+    //閽ュ寵淇℃伅
+    private String result;
+
+    public KeyResultEvent(String result) {
+        this.result = result;
+    }
+
+    public String getResult() {
+        return result;
+    }
+
+    public void setResult(String result) {
+        this.result = result;
+    }
+}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/KeyStatusListener.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/KeyStatusListener.java
new file mode 100644
index 0000000..817a981
--- /dev/null
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/KeyStatusListener.java
@@ -0,0 +1,21 @@
+package com.doumee.keyCabinet.event;
+
+/**
+ * 閽ュ寵鐘舵�佸紑濮嬬洃鍚�
+ */
+public class KeyStatusListener {
+    //0锛氬紑濮嬶紝1锛氱粨鏉�
+    private int status;
+
+    public KeyStatusListener(int status) {
+        this.status = status;
+    }
+
+    public int getStatus() {
+        return status;
+    }
+
+    public void setStatus(int status) {
+        this.status = status;
+    }
+}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/OpenGridEvent.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/OpenGridEvent.java
new file mode 100644
index 0000000..2996037
--- /dev/null
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/OpenGridEvent.java
@@ -0,0 +1,29 @@
+package com.doumee.keyCabinet.event;
+
+public class OpenGridEvent {
+    //閫氶亾鍙�
+    private String channelCode;
+    //鏉垮彿
+    private String boardCode;
+
+    public OpenGridEvent(String channelCode, String boardCode) {
+        this.channelCode = channelCode;
+        this.boardCode = boardCode;
+    }
+
+    public String getChannelCode() {
+        return channelCode;
+    }
+
+    public void setChannelCode(String channelCode) {
+        this.channelCode = channelCode;
+    }
+
+    public String getBoardCode() {
+        return boardCode;
+    }
+
+    public void setBoardCode(String boardCode) {
+        this.boardCode = boardCode;
+    }
+}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/RecycleBraceletEvent.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/RecycleBraceletEvent.java
deleted file mode 100644
index d5dc6ea..0000000
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/RecycleBraceletEvent.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.doumee.keyCabinet.event;
-
-//褰掕繕鎵嬬幆
-public class RecycleBraceletEvent {
-
-}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/RecycleResultEvent.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/RecycleResultEvent.java
deleted file mode 100644
index acd57ba..0000000
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/RecycleResultEvent.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.doumee.keyCabinet.event;
-
-public class RecycleResultEvent {
-    //0:涓嶈兘褰掕繕;1:杩樷伎鐜繖纰屾彁閱掞紱2:杩樷伎鐜垚鍔�;3:杩樷伎鐜け璐�;4:鍊掕鏃�
-    private int state;
-    private String msg;
-    private int countDown;
-    private boolean isTk;
-
-    public RecycleResultEvent(int state) {
-        this.state = state;
-    }
-
-    public RecycleResultEvent(int state, String msg) {
-        this.state = state;
-        this.msg = msg;
-    }
-
-    public RecycleResultEvent(int state, int countDown) {
-        this.state = state;
-        this.countDown = countDown;
-    }
-
-    public RecycleResultEvent(int state, boolean isTk) {
-        this.state = state;
-        this.isTk = isTk;
-    }
-
-    public int getState() {
-        return state;
-    }
-
-    public void setState(int state) {
-        //0:涓嶈兘褰掕繕;1:杩樷伎鐜繖纰屾彁閱掞紱2:杩樷伎鐜垚鍔�;3:杩樷伎鐜け璐�;4:鍊掕鏃�
-        this.state = state;
-    }
-
-    public String getMsg() {
-        return msg;
-    }
-
-    public void setMsg(String msg) {
-        this.msg = msg;
-    }
-
-    public int getCountDown() {
-        return countDown;
-    }
-
-    public void setCountDown(int countDown) {
-        this.countDown = countDown;
-    }
-
-    public boolean isTk() {
-        return isTk;
-    }
-
-    public void setTk(boolean tk) {
-        isTk = tk;
-    }
-}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/SendBraceletEvent.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/SendBraceletEvent.java
deleted file mode 100644
index 936411c..0000000
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/SendBraceletEvent.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.doumee.keyCabinet.event;
-
-public class SendBraceletEvent {
-    private String orderId;
-    private String id;
-
-    public SendBraceletEvent(String id,int type) {
-        if(0==type) {
-            this.orderId = id;
-        }else {
-            this.id = id;
-        }
-    }
-
-    public String getOrderId() {
-        return orderId;
-    }
-
-    public void setOrderId(String orderId) {
-        this.orderId = orderId;
-    }
-
-    public String getId() {
-        return id;
-    }
-
-    public void setId(String id) {
-        this.id = id;
-    }
-}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/SendResultEvent.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/SendResultEvent.java
deleted file mode 100644
index ac88d1c..0000000
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/SendResultEvent.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package com.doumee.keyCabinet.event;
-
-public class SendResultEvent {
-    /**
-     * 0:寮�濮嬫彁鍙�;1:鑾峰彇饧跨幆鎴愬姛;2:鑾峰彇饧跨幆澶辫触
-     */
-    private int state;
-    private String no;
-    private String msg;
-    private String orderId;
-    private String id;
-
-    public SendResultEvent(int state, String orderId, String id) {
-        this.state = state;
-        this.orderId = orderId;
-        this.id = id;
-    }
-
-    public SendResultEvent(int state, String no, String orderId, String id) {
-        this.state = state;
-        this.no = no;
-        this.orderId = orderId;
-        this.id = id;
-    }
-
-    public SendResultEvent(String msg, String orderId, String id) {
-        this.state = 2;
-        this.msg = msg;
-        this.orderId = orderId;
-        this.id = id;
-    }
-
-    /**
-     * @return 0:寮�濮嬫彁鍙�;1:鑾峰彇饧跨幆鎴愬姛;2:鑾峰彇饧跨幆澶辫触
-     */
-    public int getState() {
-        return state;
-    }
-
-    public void setState(int state) {
-        this.state = state;
-    }
-
-    public String getNo() {
-        return no;
-    }
-
-    public void setNo(String no) {
-        this.no = no;
-    }
-
-    public String getMsg() {
-        return msg;
-    }
-
-    public void setMsg(String msg) {
-        this.msg = msg;
-    }
-
-    public String getOrderId() {
-        return orderId;
-    }
-
-    public void setOrderId(String orderId) {
-        this.orderId = orderId;
-    }
-
-    public String getId() {
-        return id;
-    }
-
-    public void setId(String id) {
-        this.id = id;
-    }
-}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/ToHomeEvent.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/ToHomeEvent.java
deleted file mode 100644
index 17caa68..0000000
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/event/ToHomeEvent.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package com.doumee.keyCabinet.event;
-
-public class ToHomeEvent {
-}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/Apis.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/Apis.java
index 13fb54f..f1cb425 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/Apis.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/Apis.java
@@ -2,57 +2,113 @@
 
 
 import com.doumee.keyCabinet.bean.AndroidVersionBean;
+import com.doumee.keyCabinet.bean.CabinetDetailBean;
+import com.doumee.keyCabinet.bean.CabinetFaceBean;
 import com.doumee.keyCabinet.bean.DevConfigBean;
 import com.doumee.keyCabinet.bean.FaceUserBean;
-import com.doumee.keyCabinet.bean.GetBillListBean;
-import com.doumee.keyCabinet.bean.OrderGetPriceBean;
-import com.doumee.keyCabinet.bean.RecyclerBraceletBean;
+import com.doumee.keyCabinet.bean.KeyCabinetBean;
 import com.doumee.keyCabinet.http.param.BaseResponse;
-import com.doumee.keyCabinet.http.param.PayResponseBean;
+
+import java.util.List;
 
 import io.reactivex.Observable;
 import okhttp3.RequestBody;
 import retrofit2.Response;
 import retrofit2.http.Body;
+import retrofit2.http.GET;
 import retrofit2.http.Header;
 import retrofit2.http.POST;
+import retrofit2.http.Query;
 
 public interface Apis {
-    //String HTTP = "http://47.97.231.28:8068/zhcg-interface4/";
     String HTTP = "http://192.168.0.112:8086/";
-    //String HTTP = "https://mytj.dmtt.run/zhcg-interface2/";
-    //String HTTP = "https://dmtt.doumee.com/zhcg-interface/";
-    //String HTTP = "https://dmtt.doumee.com/saaszhcg-interface/";
-    //String HTTP = "https://swimticket.sx.net.cn/zhcg-interface/";
     String HEAT_HTTP = "do?c=220301";
     /**
      * 鏌ヨ鐗堟湰淇℃伅
      */
-    @POST("do?c=330115")
-    Observable<BaseResponse<AndroidVersionBean>> getVersion(@Header("language") String language,@Header("Cookie") String cookie, @Header("shopId") String shopId, @Header("gymId") String gymId, @Body RequestBody requestBody);
+    @GET("/visitsAdmin/cloudService/web/cabinet/getLastVersion")
+    Observable<BaseResponse<AndroidVersionBean>> getVersion();
 
     /**
-     *璁惧鐧诲綍
+     * 鑾峰彇閽ュ寵鏌滃熀鏈俊鎭�
+     * @param code
+     * @return
      */
-    @POST("do?c=220300")
-    Observable<Response<BaseResponse<DevConfigBean>>> devLogin(@Header("isCheckShop") int isCheckShop,@Body RequestBody requestBody);
+    @GET("/visitsAdmin/cloudService/web/cabinet/getCabinetInfoForDriver")
+    Observable<BaseResponse<DevConfigBean>> getCabinetInfoForDriver(@Query("code")String code);
 
     /**
      * 蹇冭烦
      */
-    @POST("do?c=220301")
-    Observable<BaseResponse<DevConfigBean>> heart(@Header("language") String language,@Header("Cookie") String cookie, @Header("shopId") String shopId, @Header("gymId") String gymId,@Body RequestBody requestBody);
+    @GET("/visitsAdmin/cloudService/web/cabinet/updateRunStatusById")
+    Observable<BaseResponse> heart(@Query("id")Integer id);
 
     /**
      * 涓婁紶鎶ラ敊淇℃伅
      */
     @POST("do?c=360313")
-    Observable<BaseResponse> upErrInfo(@Header("language") String language,@Header("Cookie") String cookie, @Header("shopId") String shopId, @Header("gymId") String gymId, @Body RequestBody requestBody);
+    Observable<BaseResponse> upErrInfo(@Body RequestBody requestBody);
 
     /**
      * 浜鸿劯鍒楄〃
      */
-    @POST("do?c=360311")
-    Observable<BaseResponse<FaceUserBean>> allFaceList(@Header("language") String language, @Header("Cookie") String cookie, @Header("shopId") String shopId, @Header("gymId") String gymId, @Body RequestBody requestBody);
+    @POST("/visitsAdmin/cloudService/web/cabinet/getCabinetFaceVO")
+    Observable<BaseResponse<CabinetFaceBean>> allFaceList(@Body RequestBody requestBody);
+
+     /**
+     * 鑾峰彇鍙搷浣滄煖鏍� - 鍙告満
+     */
+    @POST("/visitsAdmin/cloudService/web/cabinet/getMemberIdByCode")
+    Observable<BaseResponse<Integer>> getMemberIdByCode(@Body RequestBody requestBody);
+
+    /**
+     * 鑾峰彇鍙搷浣滄煖鏍� - 鍙告満
+     */
+    @POST("/visitsAdmin/cloudService/web/cabinet/getDriverGrid")
+    Observable<BaseResponse<List<KeyCabinetBean>>> getDriverGrid(@Body RequestBody requestBody);
+
+    /**
+     * 寮�鍚煖鏍� - 鍙告満
+     */
+    @POST("/visitsAdmin/cloudService/web/cabinet/openGridDriver")
+    Observable<BaseResponse> openGridDriver(@Body RequestBody requestBody);
+
+    /**
+     * 鍏抽棴鏌滄牸 - 鍙告満
+     */
+    @POST("/visitsAdmin/cloudService/web/cabinet/closeGrid")
+    Observable<BaseResponse> closeGrid(@Body RequestBody requestBody);
+
+    /**
+     * 鑾峰彇閽ュ寵鏌滆鎯� - 绠$悊鍛�
+     */
+    @GET("/visitsAdmin/cloudService/web/cabinet/getCabinetDetail")
+    Observable<BaseResponse<List<CabinetDetailBean>>> getCabinetDetail(@Header("dm_user_token") String token,@Query("cabinetId")Integer cabinetId);
+
+    /**
+     * 鎵归噺寮�闂� - 绠$悊鍛�
+     */
+    @POST("/visitsAdmin/cloudService/web/cabinet/batchOpenGridAdmin")
+    Observable<BaseResponse> batchOpenGridAdmin(@Header("dm_user_token") String token,@Body RequestBody requestBody);
+
+    /**
+     * 鏍囪鏌滄牸姝e父 - 绠$悊鍛�
+     */
+    @POST("/visitsAdmin/cloudService/web/cabinet/cancelFault")
+    Observable<BaseResponse> cancelFault(@Header("dm_user_token") String token,@Body RequestBody requestBody);
+
+    /**
+     * 鏍囪鏌滄牸鏁呴殰 - 绠$悊鍛�
+     */
+    @POST("/visitsAdmin/cloudService/web/cabinet/markFault")
+    Observable<BaseResponse> markFault(@Header("dm_user_token") String token,@Body RequestBody requestBody);
+
+    /**
+     * 鏍囪缁翠慨淇濆吇 - 绠$悊鍛�
+     */
+    @POST("/visitsAdmin/cloudService/web/cabinet/markRepair")
+    Observable<BaseResponse> markRepair(@Header("dm_user_token") String token,@Body RequestBody requestBody);
+
 
 }
+
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/BaseResponse.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/BaseResponse.java
index 5cf0e08..73e995c 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/BaseResponse.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/BaseResponse.java
@@ -1,7 +1,6 @@
 package com.doumee.keyCabinet.http.param;
 
 import java.io.Serializable;
-import java.util.List;
 
 /**
  * 鏈嶅姟绔畬鎴愬悗锛岃繑鍥炵粰瀹㈡埛绔殑鍩烘湰绫�
@@ -13,56 +12,38 @@
 public class BaseResponse<T> implements Serializable {
     // 閿欒鐮�
     //閿欒鐮�")
-    protected String errorCode;
+    protected Integer code;
 
 
     // 閿欒鎻忚堪
     //"閿欒鎻忚堪")
-	protected String errorMsg;
+	protected String message;
 
-	public String getErrorCode() {
-		return errorCode;
+	public Integer getCode() {
+		return code;
 	}
 
-	public void setErrorCode(String errorCode) {
-		this.errorCode = errorCode;
+	public void setCode(Integer code) {
+		this.code = code;
 	}
 
-	public String getErrorMsg() {
-		return errorMsg;
+	public String getMessage() {
+		return message;
 	}
 
-	public void setErrorMsg(String errorMsg) {
-		this.errorMsg = errorMsg;
+	public void setMessage(String message) {
+		this.message = message;
 	}
 
-	private T record;
+	private T data;
 
-	private List<T> recordList;
-	private Integer totalCount;
-
-
-	public T getRecord() {
-		return record;
+	public T getData() {
+		return data;
 	}
 
-	public void setRecord(T record) {
-		this.record = record;
+	public void setData(T data) {
+		this.data = data;
 	}
 
-	public List<T> getRecordList() {
-		return recordList;
-	}
 
-	public void setRecordList(List<T> recordList) {
-		this.recordList = recordList;
-	}
-
-	public Integer getTotalCount() {
-		return totalCount;
-	}
-
-	public void setTotalCount(Integer totalCount) {
-		this.totalCount = totalCount;
-	}
 }
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/BatchOpenGridAdminParam.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/BatchOpenGridAdminParam.java
new file mode 100644
index 0000000..9ae636c
--- /dev/null
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/BatchOpenGridAdminParam.java
@@ -0,0 +1,26 @@
+package com.doumee.keyCabinet.http.param;
+
+import java.util.List;
+
+public class BatchOpenGridAdminParam {
+    //閽ュ寵鏌滀富閿�
+    private Integer cabinetId;
+    //鏌滄牸涓婚敭鍒楄〃
+    private List<Integer> gridIdList;
+
+    public Integer getCabinetId() {
+        return cabinetId;
+    }
+
+    public void setCabinetId(Integer cabinetId) {
+        this.cabinetId = cabinetId;
+    }
+
+    public List<Integer> getGridIdList() {
+        return gridIdList;
+    }
+
+    public void setGridIdList(List<Integer> gridIdList) {
+        this.gridIdList = gridIdList;
+    }
+}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/CancelFaultParam.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/CancelFaultParam.java
new file mode 100644
index 0000000..c74a538
--- /dev/null
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/CancelFaultParam.java
@@ -0,0 +1,26 @@
+package com.doumee.keyCabinet.http.param;
+
+import java.util.List;
+
+public class CancelFaultParam {
+    //閽ュ寵鏌滀富閿�
+    private Integer cabinetId;
+    //鏌滄牸涓婚敭鍒楄〃
+    private List<Integer> gridIdList;
+
+    public Integer getCabinetId() {
+        return cabinetId;
+    }
+
+    public void setCabinetId(Integer cabinetId) {
+        this.cabinetId = cabinetId;
+    }
+
+    public List<Integer> getGridIdList() {
+        return gridIdList;
+    }
+
+    public void setGridIdList(List<Integer> gridIdList) {
+        this.gridIdList = gridIdList;
+    }
+}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/CloseGridParam.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/CloseGridParam.java
new file mode 100644
index 0000000..bc73ced
--- /dev/null
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/CloseGridParam.java
@@ -0,0 +1,22 @@
+package com.doumee.keyCabinet.http.param;
+
+public class CloseGridParam {
+    //楠岃瘉鏂瑰紡 0鍒疯劯 1鍒峰崱 2绠$悊鍛樻搷浣�
+    private Integer authType;
+    //閽ュ寵鏌滀富閿�
+    private Integer cabinetId;
+    //鏌滄牸涓婚敭
+    private Integer gridId;
+    //閽ュ寵鐘舵�侊細1鍦ㄤ綅 2鍊熷嚭
+    private Integer keyStatus;
+    //鐢ㄦ埛涓婚敭
+    private Integer memberId;
+
+    public CloseGridParam(Integer authType, Integer cabinetId, Integer gridId, Integer keyStatus, Integer memberId) {
+        this.authType = authType;
+        this.cabinetId = cabinetId;
+        this.gridId = gridId;
+        this.keyStatus = keyStatus;
+        this.memberId = memberId;
+    }
+}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/CreateOrderParam.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/CreateOrderParam.java
deleted file mode 100644
index fa8610c..0000000
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/CreateOrderParam.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package com.doumee.keyCabinet.http.param;
-
-import java.math.BigDecimal;
-
-public class CreateOrderParam {
-    //绁ㄦ嵁id
-    private String billId;
-    //绁ㄦ嵁绫诲瀷 1/2 闂ㄧエ/濂楅
-    private String billType;
-    //绁ㄦ嵁浜岀淮鐮�
-    private String code;
-    //鎵嬬幆鏈篿d
-    private String devCode;
-    //浼氬憳id
-    private String memberId;
-    private String phone;
-    private String userName;
-    private BigDecimal money;
-    //涓氬姟id
-    private String busId;
-
-    public String getBillId() {
-        return billId;
-    }
-
-    public void setBillId(String billId) {
-        this.billId = billId;
-    }
-
-    public String getBillType() {
-        return billType;
-    }
-
-    public void setBillType(String billType) {
-        this.billType = billType;
-    }
-
-    public String getCode() {
-        return code;
-    }
-
-    public void setCode(String code) {
-        this.code = code;
-    }
-
-    public String getDevCode() {
-        return devCode;
-    }
-
-    public void setDevCode(String devCode) {
-        this.devCode = devCode;
-    }
-
-    public String getMemberId() {
-        return memberId;
-    }
-
-    public void setMemberId(String memberId) {
-        this.memberId = memberId;
-    }
-
-    public String getPhone() {
-        return phone;
-    }
-
-    public void setPhone(String phone) {
-        this.phone = phone;
-    }
-
-    public String getUserName() {
-        return userName;
-    }
-
-    public void setUserName(String userName) {
-        this.userName = userName;
-    }
-
-    public BigDecimal getMoney() {
-        return money;
-    }
-
-    public void setMoney(BigDecimal money) {
-        this.money = money;
-    }
-
-    public String getBusId() {
-        return busId;
-    }
-
-    public void setBusId(String busId) {
-        this.busId = busId;
-    }
-}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/DevLoginParam.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/DevLoginParam.java
index b40e71f..16ddf24 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/DevLoginParam.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/DevLoginParam.java
@@ -3,23 +3,22 @@
 
 public class DevLoginParam {
 	//銆愬繀浼犮�戣澶囩紪鐮�",required = true)
-    private String devCode;
-    //绫诲瀷(0:璐エ鏈猴紝1:璇炬秷鏈�)
-    private String type="2";
+    private String code;
+    private Integer id;
 
-    public String getDevCode() {
-        return devCode;
+    public String getCode() {
+        return code;
     }
 
-    public void setDevCode(String devCode) {
-        this.devCode = devCode;
+    public void setCode(String code) {
+        this.code = code;
     }
 
-    public String getType() {
-        return type;
+    public Integer getId() {
+        return id;
     }
 
-    public void setType(String type) {
-        this.type = type;
+    public void setId(Integer id) {
+        this.id = id;
     }
 }
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/GetDriverGridParam.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/GetDriverGridParam.java
new file mode 100644
index 0000000..b6c2aab
--- /dev/null
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/GetDriverGridParam.java
@@ -0,0 +1,49 @@
+package com.doumee.keyCabinet.http.param;
+
+import java.io.Serializable;
+
+import lombok.Data;
+
+//鑾峰彇鍙搷浣滄煖鏍� - 鍙告満
+public class GetDriverGridParam implements Serializable {
+    //楠岃瘉浜轰富閿�
+    private int autoMemberId;
+    //閽ュ寵鏌滀富閿�
+    private int cabinetId;
+    //鐢ㄦ埛涓婚敭
+    private int memberId;
+    //0=鍙� 1=杩�
+    private int type;
+
+    public int getAutoMemberId() {
+        return autoMemberId;
+    }
+
+    public void setAutoMemberId(int autoMemberId) {
+        this.autoMemberId = autoMemberId;
+    }
+
+    public int getCabinetId() {
+        return cabinetId;
+    }
+
+    public void setCabinetId(int cabinetId) {
+        this.cabinetId = cabinetId;
+    }
+
+    public int getMemberId() {
+        return memberId;
+    }
+
+    public void setMemberId(int memberId) {
+        this.memberId = memberId;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/GetMemberIdByCodeParam.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/GetMemberIdByCodeParam.java
new file mode 100644
index 0000000..67fbdf9
--- /dev/null
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/GetMemberIdByCodeParam.java
@@ -0,0 +1,17 @@
+package com.doumee.keyCabinet.http.param;
+
+public class GetMemberIdByCodeParam {
+    private String code;
+
+    public GetMemberIdByCodeParam(String code) {
+        this.code = code;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/MarkFaultParam.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/MarkFaultParam.java
new file mode 100644
index 0000000..e6f7189
--- /dev/null
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/MarkFaultParam.java
@@ -0,0 +1,26 @@
+package com.doumee.keyCabinet.http.param;
+
+import java.util.List;
+
+public class MarkFaultParam {
+    //閽ュ寵鏌滀富閿�
+    private Integer cabinetId;
+    //鏌滄牸涓婚敭鍒楄〃
+    private List<Integer> gridIdList;
+
+    public Integer getCabinetId() {
+        return cabinetId;
+    }
+
+    public void setCabinetId(Integer cabinetId) {
+        this.cabinetId = cabinetId;
+    }
+
+    public List<Integer> getGridIdList() {
+        return gridIdList;
+    }
+
+    public void setGridIdList(List<Integer> gridIdList) {
+        this.gridIdList = gridIdList;
+    }
+}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/MarkRepairParam.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/MarkRepairParam.java
new file mode 100644
index 0000000..42c9043
--- /dev/null
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/MarkRepairParam.java
@@ -0,0 +1,26 @@
+package com.doumee.keyCabinet.http.param;
+
+import java.util.List;
+
+public class MarkRepairParam {
+    //閽ュ寵鏌滀富閿�
+    private Integer cabinetId;
+    //鏌滄牸涓婚敭鍒楄〃
+    private List<Integer> gridIdList;
+
+    public Integer getCabinetId() {
+        return cabinetId;
+    }
+
+    public void setCabinetId(Integer cabinetId) {
+        this.cabinetId = cabinetId;
+    }
+
+    public List<Integer> getGridIdList() {
+        return gridIdList;
+    }
+
+    public void setGridIdList(List<Integer> gridIdList) {
+        this.gridIdList = gridIdList;
+    }
+}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/OpenGridDriverParam.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/OpenGridDriverParam.java
new file mode 100644
index 0000000..45696b6
--- /dev/null
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/OpenGridDriverParam.java
@@ -0,0 +1,47 @@
+package com.doumee.keyCabinet.http.param;
+
+import java.io.Serializable;
+
+//寮�鍚煖鏍� - 鍙告満
+public class OpenGridDriverParam implements Serializable {
+    //楠岃瘉鏂瑰紡 0鍒疯劯 1鍒峰崱
+    private int authType;
+    //鐢ㄦ埛id
+    private int memberId;
+    //閽ュ寵鏌滀富閿�
+    private int cabinetId;
+    //鏌滄牸涓婚敭
+    private int gridId;
+
+    public int getAuthType() {
+        return authType;
+    }
+
+    public void setAuthType(int authType) {
+        this.authType = authType;
+    }
+
+    public int getMemberId() {
+        return memberId;
+    }
+
+    public void setMemberId(int memberId) {
+        this.memberId = memberId;
+    }
+
+    public int getCabinetId() {
+        return cabinetId;
+    }
+
+    public void setCabinetId(int cabinetId) {
+        this.cabinetId = cabinetId;
+    }
+
+    public int getGridId() {
+        return gridId;
+    }
+
+    public void setGridId(int gridId) {
+        this.gridId = gridId;
+    }
+}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/OrderPayParam.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/OrderPayParam.java
deleted file mode 100644
index 9b41f15..0000000
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/OrderPayParam.java
+++ /dev/null
@@ -1,168 +0,0 @@
-package com.doumee.keyCabinet.http.param;
-
-
-import java.math.BigDecimal;
-
-//璁㈠崟鏀粯")
-public class OrderPayParam {
-    //浼氬憳id")
-    private String memberId;
-    //璁㈠崟id")
-    private String orderId;
-    //鏀粯鏂瑰紡锛�01-浼氬憳鍗★紝02-鐜伴噾锛�03-寰俊锛�04-鏀粯瀹�,10-鍥㈣喘鍒告敮浠�")
-    private String payMethod;
-    //鏄惁浼樺厛鎵i櫎璧犻�侀噾棰�")
-    private Boolean giveMoney;
-    //鏀粯瀵嗙爜")
-    private String payPwd;
-    //浼樻儬鍒竔d")
-    private String couponsId;
-    //鏄惁鏀逛环锛�0-鍚�1-鏄級")
-    private String change="0";
-    //淇敼鍚庝环鏍�")
-    private BigDecimal changePrice;
-    //澶囨敞")
-    private String note;
-    //浼樻儬鏀跨瓥id")
-    private String policyId;
-    //鏄惁绉垎鎶垫墸锛�0-鍚�1-鏄級")
-    private String integralUse="0";
-    //濂楅浼氬憳琛ㄤ富閿甶d")
-    private String mealsMemberId;
-    //鍥㈣喘鍒哥爜")
-    private String couponCode;
-    //鏍搁攢鏁伴噺")
-    private Long num;
-    //濂楅id")
-    private String dealId;
-    //鍥㈣喘id")
-    private String dealGroupId;
-
-    public String getMemberId() {
-        return memberId;
-    }
-
-    public void setMemberId(String memberId) {
-        this.memberId = memberId;
-    }
-
-    public String getOrderId() {
-        return orderId;
-    }
-
-    public void setOrderId(String orderId) {
-        this.orderId = orderId;
-    }
-
-    public String getPayMethod() {
-        return payMethod;
-    }
-
-    public void setPayMethod(String payMethod) {
-        this.payMethod = payMethod;
-    }
-
-    public Boolean getGiveMoney() {
-        return giveMoney;
-    }
-
-    public void setGiveMoney(Boolean giveMoney) {
-        this.giveMoney = giveMoney;
-    }
-
-    public String getPayPwd() {
-        return payPwd;
-    }
-
-    public void setPayPwd(String payPwd) {
-        this.payPwd = payPwd;
-    }
-
-    public String getCouponsId() {
-        return couponsId;
-    }
-
-    public void setCouponsId(String couponsId) {
-        this.couponsId = couponsId;
-    }
-
-    public String getChange() {
-        return change;
-    }
-
-    public void setChange(String change) {
-        this.change = change;
-    }
-
-    public BigDecimal getChangePrice() {
-        return changePrice;
-    }
-
-    public void setChangePrice(BigDecimal changePrice) {
-        this.changePrice = changePrice;
-    }
-
-    public String getNote() {
-        return note;
-    }
-
-    public void setNote(String note) {
-        this.note = note;
-    }
-
-    public String getPolicyId() {
-        return policyId;
-    }
-
-    public void setPolicyId(String policyId) {
-        this.policyId = policyId;
-    }
-
-    public String getIntegralUse() {
-        return integralUse;
-    }
-
-    public void setIntegralUse(String integralUse) {
-        this.integralUse = integralUse;
-    }
-
-    public String getMealsMemberId() {
-        return mealsMemberId;
-    }
-
-    public void setMealsMemberId(String mealsMemberId) {
-        this.mealsMemberId = mealsMemberId;
-    }
-
-    public String getCouponCode() {
-        return couponCode;
-    }
-
-    public void setCouponCode(String couponCode) {
-        this.couponCode = couponCode;
-    }
-
-    public Long getNum() {
-        return num;
-    }
-
-    public void setNum(Long num) {
-        this.num = num;
-    }
-
-    public String getDealId() {
-        return dealId;
-    }
-
-    public void setDealId(String dealId) {
-        this.dealId = dealId;
-    }
-
-    public String getDealGroupId() {
-        return dealGroupId;
-    }
-
-    public void setDealGroupId(String dealGroupId) {
-        this.dealGroupId = dealGroupId;
-    }
-}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/OrderPayRequestParam.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/OrderPayRequestParam.java
deleted file mode 100644
index 5be5c42..0000000
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/OrderPayRequestParam.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package com.doumee.keyCabinet.http.param;
-
-
-//璁㈠崟鏀粯
-public class OrderPayRequestParam {
-    //浼氬憳id")
-    private String memberId;
-    //璁㈠崟id")
-    private String orderId;
-    //鏀粯鏂瑰紡锛�01-浼氬憳鍗★紝02-鐜伴噾锛�03-寰俊锛�04-鏀粯瀹�,10-鍥㈣喘鍒告敮浠�")
-    private String payMethod;
-    //鏄惁浼樺厛鎵i櫎璧犻�侀噾棰�")
-    private Boolean giveMoney;
-    //鏀粯瀵嗙爜")
-    private String payPwd;
-    //浼樻儬鍒竔d")
-    private String couponsId;
-    private String change="0";
-    //浼樻儬鏀跨瓥id")
-    private String policyId;
-    //鏄惁绉垎鎶垫墸锛�0-鍚�1-鏄級")
-    private String integralUse="0";
-
-    public String getMemberId() {
-        return memberId;
-    }
-
-    public void setMemberId(String memberId) {
-        this.memberId = memberId;
-    }
-
-    public String getOrderId() {
-        return orderId;
-    }
-
-    public void setOrderId(String orderId) {
-        this.orderId = orderId;
-    }
-
-    public String getPayMethod() {
-        return payMethod;
-    }
-
-    public void setPayMethod(String payMethod) {
-        this.payMethod = payMethod;
-    }
-
-    public Boolean getGiveMoney() {
-        return giveMoney;
-    }
-
-    public void setGiveMoney(Boolean giveMoney) {
-        this.giveMoney = giveMoney;
-    }
-
-    public String getPayPwd() {
-        return payPwd;
-    }
-
-    public void setPayPwd(String payPwd) {
-        this.payPwd = payPwd;
-    }
-
-    public String getCouponsId() {
-        return couponsId;
-    }
-
-    public void setCouponsId(String couponsId) {
-        this.couponsId = couponsId;
-    }
-
-    public String getChange() {
-        return change;
-    }
-
-    public void setChange(String change) {
-        this.change = change;
-    }
-
-    public String getPolicyId() {
-        return policyId;
-    }
-
-    public void setPolicyId(String policyId) {
-        this.policyId = policyId;
-    }
-
-    public String getIntegralUse() {
-        return integralUse;
-    }
-
-    public void setIntegralUse(String integralUse) {
-        this.integralUse = integralUse;
-    }
-}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/PayResponseBean.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/PayResponseBean.java
deleted file mode 100644
index b391308..0000000
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/PayResponseBean.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.doumee.keyCabinet.http.param;
-
-//鎵爜鏋壂鐮佹敮浠樿繑鍥炲弬鏁�")
-public class PayResponseBean {
-
-    /**
-     * 璁㈠崟id
-     */
-    //"code 0鎴愬姛1澶辫触2鏀粯涓�")
-    private String code;
-
-   //"杩斿洖淇℃伅")
-    private String msg;
-
-    public String getCode() {
-        return code;
-    }
-
-    public void setCode(String code) {
-        this.code = code;
-    }
-
-    public String getMsg() {
-        return msg;
-    }
-
-    public void setMsg(String msg) {
-        this.msg = msg;
-    }
-}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/RecyclerSHParam.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/RecyclerSHParam.java
deleted file mode 100644
index 8a4d113..0000000
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/RecyclerSHParam.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.doumee.keyCabinet.http.param;
-
-public class RecyclerSHParam {
-    //鎵嬬幆鑺墖ID
-    private String braceletCode;
-    //鎵嬬幆鏈篒D
-    private String devCode;
-
-    public String getBraceletCode() {
-        return braceletCode;
-    }
-
-    public void setBraceletCode(String braceletCode) {
-        this.braceletCode = braceletCode;
-    }
-
-    public String getDevCode() {
-        return devCode;
-    }
-
-    public void setDevCode(String devCode) {
-        this.devCode = devCode;
-    }
-}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/ScanPayParam.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/ScanPayParam.java
deleted file mode 100644
index b4b1b83..0000000
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/ScanPayParam.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package com.doumee.keyCabinet.http.param;
-
-import java.io.Serializable;
-import java.math.BigDecimal;
-
-//鎵爜鏀粯璇锋眰鍙傛暟")
-public class ScanPayParam implements Serializable {
-    //(蹇呭~) 鍟嗘埛缃戠珯璁㈠崟绯荤粺涓敮涓�璁㈠崟鍙凤紝64涓瓧绗︿互鍐咃紝鍙兘鍖呭惈瀛楁瘝銆佹暟瀛椼�佷笅鍒掔嚎锛�
-    //鍟嗘埛缃戠珯璁㈠崟绯荤粺涓敮涓�璁㈠崟鍙�",required = true)
-    private String outTradeNo;
-    //(蹇呭~) 璁㈠崟鏍囬锛岀矖鐣ユ弿杩扮敤鎴风殑鏀粯鐩殑銆傚鈥渪xx鍝佺墝xxx闂ㄥ簵娑堣垂鈥�
-    //璁㈠崟鏍囬",required = true)
-    private String subject;
-    //(蹇呭~) 璁㈠崟鎬婚噾棰�
-    //璁㈠崟鎬婚噾棰�",required = true)
-    private BigDecimal totalAmount;
-    //(蹇呭~) 浠樻鏉$爜锛岀敤鎴锋敮浠樺疂閽卞寘鎵嬫満app鐐瑰嚮鈥滀粯娆锯�濅骇鐢熺殑浠樻鏉$爜
-    //浠樻鏉$爜",required = true)
-    private String authCode;
-    //鏀粯鏂瑰紡(0寰俊1鏀粯瀹�2鎷夊崱鎷�3閾惰仈)",required = true)
-    private String type;
-    //鏄惁鏀逛环(0鍚�1鏄�)",required = true)
-    private String status;
-    //澶囨敞",required = true)
-    private String note;
-    //浼樻儬鏀跨瓥id")
-    private String policyId;
-    //浼氬憳id")
-    private String memberId;
-
-    public String getOutTradeNo() {
-        return outTradeNo;
-    }
-
-    public void setOutTradeNo(String outTradeNo) {
-        this.outTradeNo = outTradeNo;
-    }
-
-    public String getSubject() {
-        return subject;
-    }
-
-    public void setSubject(String subject) {
-        this.subject = subject;
-    }
-
-    public BigDecimal getTotalAmount() {
-        return totalAmount;
-    }
-
-    public void setTotalAmount(BigDecimal totalAmount) {
-        this.totalAmount = totalAmount;
-    }
-
-    public String getAuthCode() {
-        return authCode;
-    }
-
-    public void setAuthCode(String authCode) {
-        this.authCode = authCode;
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    public String getStatus() {
-        return status;
-    }
-
-    public void setStatus(String status) {
-        this.status = status;
-    }
-
-    public String getNote() {
-        return note;
-    }
-
-    public void setNote(String note) {
-        this.note = note;
-    }
-
-    public String getPolicyId() {
-        return policyId;
-    }
-
-    public void setPolicyId(String policyId) {
-        this.policyId = policyId;
-    }
-
-    public String getMemberId() {
-        return memberId;
-    }
-
-    public void setMemberId(String memberId) {
-        this.memberId = memberId;
-    }
-}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/SendBraceletParam.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/SendBraceletParam.java
deleted file mode 100644
index 58d24c0..0000000
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/SendBraceletParam.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.doumee.keyCabinet.http.param;
-
-public class SendBraceletParam {
-    //鎵嬬幆鑺墖ID
-    private String braceletCode;
-    //鎵嬬幆鏈篒D
-    private String devCode;
-    //璁㈠崟id
-    private String orderId;
-    //鎵嬬幆璁板綍id
-    private String recordId;
-
-    public String getBraceletCode() {
-        return braceletCode;
-    }
-
-    public void setBraceletCode(String braceletCode) {
-        this.braceletCode = braceletCode;
-    }
-
-    public String getDevCode() {
-        return devCode;
-    }
-
-    public void setDevCode(String devCode) {
-        this.devCode = devCode;
-    }
-
-    public String getOrderId() {
-        return orderId;
-    }
-
-    public void setOrderId(String orderId) {
-        this.orderId = orderId;
-    }
-
-    public String getRecordId() {
-        return recordId;
-    }
-
-    public void setRecordId(String recordId) {
-        this.recordId = recordId;
-    }
-}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/TicketListParam.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/TicketListParam.java
deleted file mode 100644
index 6953fd5..0000000
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/TicketListParam.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.doumee.keyCabinet.http.param;
-
-public class TicketListParam {
-    private String code;
-    private String key;
-
-    public String getCode() {
-        return code;
-    }
-
-    public void setCode(String code) {
-        this.code = code;
-    }
-
-    public String getKey() {
-        return key;
-    }
-
-    public void setKey(String key) {
-        this.key = key;
-    }
-}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/AddFaceActivity.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/AddFaceActivity.java
index f8c6910..0c5ee94 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/AddFaceActivity.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/AddFaceActivity.java
@@ -129,7 +129,7 @@
                 mFaceUserAdapter.notifyDataSetChanged();
             }
         });
-        getVM().getDatas("");
+        getVM().getDatas();
     }
 
     @Override
@@ -167,17 +167,17 @@
         // 浣跨敤 Glide 鍔犺浇鍥剧墖骞惰浆鎹负 Bitmap
         Glide.with(this)
                 .asBitmap()
-                .load(bean.getFaceUrl())
+                .load(bean.getFaceImg())
                 .addListener(new RequestListener<Bitmap>() {
                     @Override
                     public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {
                         //鍔犺浇澶辫触
-                        Timber.d("====>鍥剧墖涓嬭浇澶辫触%s",bean.getName());
+                        Timber.d("====>鍥剧墖涓嬭浇澶辫触%s",bean.getMemberName());
                         failCount++;
                         if(failStr.length()>0){
                             failStr.append(",");
                         }
-                        failStr.append(bean.getName());
+                        failStr.append(bean.getMemberName());
                         finishCount++;
                         loadListener.onLoad(finishCount, mSelectCount, finishCount * 1.0f / mSelectCount);
                         if (finishCount == mSelectCount) {
@@ -203,35 +203,35 @@
                                 //鏈変汉鑴�
                                 // 鍒ゆ柇璐ㄩ噺妫�娴嬶紝閽堝妯$硦搴︺�侀伄鎸°�佽搴�
                                 if (ret == 128) {
-                                    Timber.d("====>鍥剧墖鐗瑰緛鎶藉彇鎴愬姛: %s", bean.getName());
+                                    Timber.d("====>鍥剧墖鐗瑰緛鎶藉彇鎴愬姛: %s", bean.getMemberName());
                                     //鎻掑叆鏁版嵁搴�
-                                    User user = FaceApi.getInstance().getByUserId(bean.getType(), bean.getId());
+                                    User user = FaceApi.getInstance().getByUserId(bean.getGroupId(), bean.getMemberId());
                                     boolean isSave = false;
                                     if (user == null) {
                                         //鏂板
-                                        isSave = FaceApi.getInstance().registerUserIntoDBmanager(bean.getType(),
-                                                bean.getId(), bean.getName(), bean.getFaceUrl(), JSON.toJSONString(bean), secondFeature);
+                                        isSave = FaceApi.getInstance().registerUserIntoDBmanager(bean.getGroupId(),
+                                                bean.getMemberId(), bean.getMemberName(), bean.getFaceImg(), JSON.toJSONString(bean), secondFeature);
                                     } else {
                                         //鏇存柊
-                                        user.setUserName(bean.getName());
-                                        user.setImageName(bean.getFaceUrl());
+                                        user.setUserName(bean.getMemberName());
+                                        user.setImageName(bean.getFaceImg());
                                         user.setFeature(secondFeature);
                                         isSave = FaceApi.getInstance().userUpdateOnly(user);
                                     }
 
                                     if (isSave) {
                                         //淇濆瓨鎴愬姛
-                                        Timber.d("====>褰曞叆鎴愬姛%s",bean.getName());
+                                        Timber.d("====>褰曞叆鎴愬姛%s",bean.getMemberName());
                                         fail = false;
                                     } else {
-                                        Timber.d("====>褰曞叆澶辫触%s",bean.getName());
+                                        Timber.d("====>褰曞叆澶辫触%s",bean.getMemberName());
                                     }
                                 } else {
-                                    Timber.d("====>鍥剧墖鐗瑰緛鎶藉彇澶辫触%s",bean.getName());
+                                    Timber.d("====>鍥剧墖鐗瑰緛鎶藉彇澶辫触%s",bean.getMemberName());
                                 }
                             } else {
                                 // 涓婁紶鍥剧墖鏃犱汉鑴搁殣钘�
-                                Timber.d("====>鍥剧墖鐗瑰緛鎶藉彇澶辫触%s",bean.getName());
+                                Timber.d("====>鍥剧墖鐗瑰緛鎶藉彇澶辫触%s",bean.getMemberName());
                             }
 
                         }
@@ -240,7 +240,7 @@
                             if(failStr.length()>0){
                                 failStr.append(",");
                             }
-                            failStr.append(bean.getName());
+                            failStr.append(bean.getMemberName());
                         }else {
                             bean.setChecked(false);
                         }
@@ -284,17 +284,17 @@
                                 //鏈変汉鑴�
                                 // 鍒ゆ柇璐ㄩ噺妫�娴嬶紝閽堝妯$硦搴︺�侀伄鎸°�佽搴�
                                 if (ret == 128) {
-                                    Timber.d("====>鍥剧墖鐗瑰緛鎶藉彇鎴愬姛: %s", bean.getName());
+                                    Timber.d("====>鍥剧墖鐗瑰緛鎶藉彇鎴愬姛: %s", bean.getMemberName());
                                     //鎻掑叆鏁版嵁搴�
                                     User user = FaceApi.getInstance().getByUserId(bean.getType(), bean.getId());
                                     boolean isSave = false;
                                     if (user == null) {
                                         //鏂板
                                         isSave = FaceApi.getInstance().registerUserIntoDBmanager(bean.getType(),
-                                                bean.getId(), bean.getName(), bean.getFaceUrl(), JSON.toJSONString(bean), secondFeature);
+                                                bean.getId(), bean.getMemberName(), bean.getFaceUrl(), JSON.toJSONString(bean), secondFeature);
                                     } else {
                                         //鏇存柊
-                                        user.setUserName(bean.getName());
+                                        user.setUserName(bean.getMemberName());
                                         user.setImageName(bean.getFaceUrl());
                                         user.setFeature(secondFeature);
                                         isSave = FaceApi.getInstance().userUpdateOnly(user);
@@ -302,20 +302,20 @@
 
                                     if (isSave) {
                                         //淇濆瓨鎴愬姛
-                                        Timber.d("====>褰曞叆鎴愬姛%s",bean.getName());
+                                        Timber.d("====>褰曞叆鎴愬姛%s",bean.getMemberName());
                                         fail = false;
                                     } else {
-                                        Timber.d("====>褰曞叆澶辫触%s",bean.getName());
+                                        Timber.d("====>褰曞叆澶辫触%s",bean.getMemberName());
                                     }
                                 } else {
-                                    Timber.d("====>鍥剧墖鐗瑰緛鎶藉彇澶辫触%s",bean.getName());
+                                    Timber.d("====>鍥剧墖鐗瑰緛鎶藉彇澶辫触%s",bean.getMemberName());
                                 }
                             } else {
                                 // 涓婁紶鍥剧墖鏃犱汉鑴搁殣钘�
-                                Timber.d("====>鍥剧墖鐗瑰緛鎶藉彇澶辫触%s",bean.getName());
+                                Timber.d("====>鍥剧墖鐗瑰緛鎶藉彇澶辫触%s",bean.getMemberName());
                             }
                         } else {
-                            Timber.d("====>鍥剧墖涓嬭浇澶辫触%s",bean.getName());
+                            Timber.d("====>鍥剧墖涓嬭浇澶辫触%s",bean.getMemberName());
                         }
                         bean.setChecked(false);
                         if(fail){
@@ -323,7 +323,7 @@
                             if(failStr.length()>0){
                                 failStr.append(",");
                             }
-                            failStr.append(bean.getName());
+                            failStr.append(bean.getMemberName());
                         }
                         finishCount++;
                         loadListener.onLoad(finishCount, mSelectCount, finishCount * 1.0f / mSelectCount);
@@ -413,7 +413,7 @@
                     }else {
                         List<FaceUserBean> beans = new ArrayList<>();
                         for(FaceUserBean d:mUserInfoList){
-                            if(s.toString().trim().contains(d.getName())){
+                            if(s.toString().trim().contains(d.getMemberName())){
                                 beans.add(d);
                             }
                         }
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/AddFaceVM.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/AddFaceVM.java
index 10beecd..91e67fb 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/AddFaceVM.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/AddFaceVM.java
@@ -7,20 +7,21 @@
 import androidx.lifecycle.MutableLiveData;
 
 import com.doumee.keyCabinet.MApplication;
+import com.doumee.keyCabinet.bean.CabinetFaceBean;
 import com.doumee.keyCabinet.bean.FaceUserBean;
-import com.doumee.keyCabinet.event.ReLoginEvent;
 import com.doumee.keyCabinet.http.Apis;
 import com.doumee.keyCabinet.http.param.BaseResponse;
+import com.doumee.keyCabinet.http.param.DevLoginParam;
 import com.doumee.keyCabinet.http.param.FaceUserParam;
 import com.doumee.keyCabinet.http.param.RequestBaseObject;
+import com.doumee.keyCabinet.utils.LMobileInfo;
 import com.doumee.keyCabinet.utils.ParamsUtil;
 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.RxUtils;
 
-import org.greenrobot.eventbus.EventBus;
-
+import java.util.ArrayList;
 import java.util.List;
 
 public class AddFaceVM extends DataViewModel {
@@ -36,33 +37,36 @@
         doAction(type);
     }
 
-    public void getDatas(String name){
-        if (true) {
-            return;
-        }
-        RequestBaseObject<FaceUserParam> request = new RequestBaseObject<>();
-        FaceUserParam param = new FaceUserParam();
-        param.setLastTime("");
-        param.setName(name);
-        param.setType("0");
-        request.setParam(param);
+    public void getDatas(){
+        DevLoginParam param = new DevLoginParam();
+        param.setCode(LMobileInfo.getDeviceUniqueId());
         showLoading(true);
-        getRetrofitService(Apis.class).allFaceList(MApplication.getConfigBean().getLanguage(),MApplication.getCookie(),MApplication.getConfigBean().getShopId(),
-                        MApplication.getConfigBean().getGymId(), ParamsUtil.encodeRequestBody(request))
+        getRetrofitService(Apis.class).allFaceList(ParamsUtil.encodeRequestBody(param))
                 .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){
-                                datasLD.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());
+                                }
+                                datasLD.setValue(datas);
                             }
-                        }else if("00016".equals(response.getErrorCode())||"00068".equals(response.getErrorCode())) {
-                            EventBus.getDefault().post(new ReLoginEvent());
-                            toast(response.getErrorMsg());
                         }else {
-                            toast(response.getErrorMsg());
+                            toast(response.getMessage());
                         }
                     }
 
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/ErrActivity.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/ErrActivity.java
index cb5c561..8d2d658 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/ErrActivity.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/ErrActivity.java
@@ -61,6 +61,8 @@
         getVM().getDatas();
     }
 
+
+
     @Override
     protected void doRegister(int type, ActionEventData data) {
         switch (type){
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceActivity.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceActivity.java
index 55e1458..a1e6dba 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceActivity.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceActivity.java
@@ -13,10 +13,12 @@
 import android.view.View;
 
 import com.baidu.idl.main.facesdk.model.BDFaceSDKCommon;
+import com.doumee.keyCabinet.MApplication;
 import com.doumee.keyCabinet.R;
 import com.doumee.keyCabinet.base.MyBaseActivity;
 import com.doumee.keyCabinet.databinding.FaceActivityBinding;
 import com.doumee.keyCabinet.event.TimeClockEvent;
+import com.doumee.keyCabinet.ui.keyCabinet.KeyCabinetActivity;
 import com.doumee.keyCabinet.utils.BraceletLogUtils;
 import com.doumee.keyCabinet.utils.face.FaceUtils;
 import com.doumee.keyCabinet.utils.face.model.SingleBaseConfig;
@@ -51,6 +53,9 @@
     private GlMantleSurfacView glMantleSurfacView;
     private BDFaceImageConfig bdFaceImageConfig;
     private BDFaceCheckConfig bdFaceCheckConfig;
+    //0锛氬彇锛�1锛氳繕
+    private int flag ;
+    private int status;
 
     @Override
     public int getLayoutId() {
@@ -63,8 +68,11 @@
         normalConfig();
         getDB().setModel(getVM());
         mContext = this;
-        FaceSDKManager.getInstance().initDataBases(this);
-        initFaceCheck();
+        flag = MApplication.getLoginBean().getFlag();
+        statusFsm(flag==0?0:2);
+        //todo wmf 瑙e紑
+        /*FaceSDKManager.getInstance().initDataBases(this);
+        initFaceCheck();*/
         initView();
     }
 
@@ -73,12 +81,170 @@
         //getPermission();
     }
 
+    @Override
+    protected void timeChange(String djs) {
+        getDB().tvDjs.setText(djs);
+    }
+
+    private void statusFsm(int toStatus){
+        status = toStatus;
+        switch (status){
+            case 0:
+                //鍙�-绠$悊鍛樹汉鑴搁獙璇�
+                getDB().clLogin.setVisibility(View.VISIBLE);
+                getDB().tvTitle.setText("绠$悊鍛樿韩浠介獙璇�");
+                getDB().vSl.setBackgroundResource(R.mipmap.ic_viewfinder);
+                getDB().tvTip.setText("璇蜂繚鎸佹鑴稿湪鍙栨櫙妗嗕腑锛屽苟鏍规嵁鎸囩ず瀹屾垚璇嗗埆");
+                getDB().clRemind.setVisibility(View.VISIBLE);
+                getDB().btSk.setVisibility(View.VISIBLE);
+
+                getDB().clSjRl.setVisibility(View.GONE);
+                getDB().clSjSk.setVisibility(View.GONE);
+                getDB().clTip1.setVisibility(View.GONE);
+                break;
+            case 1:
+                //鍙�-绠$悊鍛樺埛鍗¢獙璇�
+                getDB().clLogin.setVisibility(View.VISIBLE);
+                getDB().tvTitle.setText("绠$悊鍛樿韩浠介獙璇�");
+                getDB().vSl.setBackgroundResource(R.mipmap.ic_shuaka2);
+                getDB().tvTip.setText("璇峰皢IC鍗¤创杩戝埛鍗″尯锛屽仠鐣�1-2绉�");
+                getDB().clRemind.setVisibility(View.GONE);
+                getDB().btSk.setVisibility(View.GONE);
+
+                getDB().clSjRl.setVisibility(View.GONE);
+                getDB().clSjSk.setVisibility(View.VISIBLE);
+                getDB().clTip1.setVisibility(View.GONE);
+                break;
+            case 5:
+                //鍙�-鍙告満楠岃瘉鏂瑰紡閫夋嫨椤�
+                getDB().clLogin.setVisibility(View.VISIBLE);
+                getDB().tvTitle.setText("鍙告満韬唤楠岃瘉");
+                getDB().vSl.setBackgroundResource(R.mipmap.ic_face);
+                getDB().tvTip.setText("璇蜂繚鎸佹鑴稿湪鍙栨櫙妗嗕腑锛屽苟鏍规嵁鎸囩ず瀹屾垚璇嗗埆");
+                getDB().clRemind.setVisibility(View.VISIBLE);
+                getDB().btSk.setVisibility(View.GONE);
+
+                getDB().clSjRl.setVisibility(View.VISIBLE);
+                getDB().clSjSk.setVisibility(View.GONE);
+                getDB().clTip1.setVisibility(View.GONE);
+                break;
+            case 2:
+                //鍙�-鍙告満浜鸿劯楠岃瘉
+                getDB().clLogin.setVisibility(View.VISIBLE);
+                getDB().tvTitle.setText("鍙告満韬唤楠岃瘉");
+                getDB().vSl.setBackgroundResource(R.mipmap.ic_viewfinder);
+                getDB().tvTip.setText("璇蜂繚鎸佹鑴稿湪鍙栨櫙妗嗕腑锛屽苟鏍规嵁鎸囩ず瀹屾垚璇嗗埆");
+                getDB().clRemind.setVisibility(View.VISIBLE);
+                getDB().btSk.setVisibility(View.VISIBLE);
+
+                getDB().clSjRl.setVisibility(View.GONE);
+                getDB().clSjSk.setVisibility(View.GONE);
+                getDB().clTip1.setVisibility(View.GONE);
+                break;
+            case 3:
+                //鍙�-鍙告満鍒峰崱楠岃瘉
+                getDB().clLogin.setVisibility(View.VISIBLE);
+                getDB().tvTitle.setText("鍙告満韬唤楠岃瘉");
+                getDB().vSl.setBackgroundResource(R.mipmap.ic_shuaka2);
+                getDB().tvTip.setText("璇峰皢IC鍗¤创杩戝埛鍗″尯锛屽仠鐣�1-2绉�");
+                getDB().clRemind.setVisibility(View.GONE);
+                getDB().btSk.setVisibility(View.GONE);
+
+                getDB().clSjRl.setVisibility(View.GONE);
+                getDB().clSjSk.setVisibility(View.VISIBLE);
+                getDB().clTip1.setVisibility(View.GONE);
+                break;
+            case 4:
+                //鍙�-鍙告満閰掔簿妫�娴�
+                getDB().clLogin.setVisibility(View.VISIBLE);
+                getDB().tvTitle.setText("閰掔簿妫�娴�");
+                getDB().vSl.setBackgroundResource(R.mipmap.ic_jiujingjiance);
+                getDB().tvTip.setText("璇锋嬁璧烽厭绮炬娴嬩华鍚规皵");
+                getDB().clRemind.setVisibility(View.GONE);
+                getDB().btSk.setVisibility(View.GONE);
+
+                getDB().clSjRl.setVisibility(View.GONE);
+                getDB().clSjSk.setVisibility(View.GONE);
+                getDB().clTip1.setVisibility(View.GONE);
+                break;
+            case 6:
+                //鍙�-鍙告満閰掔簿妫�娴嬪け璐�
+                getDB().clTip1.setVisibility(View.VISIBLE);
+                break;
+            case 7:
+                //杩�-鍙告満浜鸿劯楠岃瘉
+                getDB().clLogin.setVisibility(View.VISIBLE);
+                getDB().tvTitle.setText("鍙告満韬唤楠岃瘉");
+                getDB().vSl.setBackgroundResource(R.mipmap.ic_viewfinder);
+                getDB().tvTip.setText("璇蜂繚鎸佹鑴稿湪鍙栨櫙妗嗕腑锛屽苟鏍规嵁鎸囩ず瀹屾垚璇嗗埆");
+                getDB().clRemind.setVisibility(View.VISIBLE);
+                getDB().btSk.setVisibility(View.VISIBLE);
+
+                getDB().clSjSk.setVisibility(View.GONE);
+                getDB().clSjRl.setVisibility(View.GONE);
+                getDB().clTip1.setVisibility(View.GONE);
+                break;
+            case 8:
+                //杩�-鍙告満鍒峰崱楠岃瘉
+                getDB().clLogin.setVisibility(View.VISIBLE);
+                getDB().tvTitle.setText("鍙告満韬唤楠岃瘉");
+                getDB().vSl.setBackgroundResource(R.mipmap.ic_shuaka2);
+                getDB().tvTip.setText("璇峰皢IC鍗¤创杩戝埛鍗″尯锛屽仠鐣�1-2绉�");
+                getDB().clRemind.setVisibility(View.GONE);
+                getDB().btSk.setVisibility(View.GONE);
+
+                getDB().clSjSk.setVisibility(View.VISIBLE);
+                getDB().clSjRl.setVisibility(View.GONE);
+                getDB().clTip1.setVisibility(View.GONE);
+                break;
+            default:
+                break;
+        }
+    }
+
     private Bitmap bitmap;
     private byte[] secondFeature = new byte[512];
     @Override
     protected void doRegister(int type, ActionEventData data) {
         switch (type){
             case 1:
+                //鍒囨崲鍒板埛鍗�
+                if("0".equals(flag)){
+                    if(status==0){
+                        statusFsm(1);
+                    }else if(status==2){
+                        statusFsm(3);
+                    }
+                }else {
+                    statusFsm(8);
+                }
+                break;
+            case 2:
+                //鍒囨崲鍙告満鍒峰崱
+                statusFsm(3);
+                break;
+            case 3:
+                //鍒囨崲鍙告満浜鸿劯
+                statusFsm(2);
+                break;
+            case 4:
+                //鍒囨崲鍒颁汉鑴�
+                if("0".equals(flag)){
+                    if(status==1){
+                        statusFsm(5);
+                    }else if(status==3){
+                        statusFsm(6);
+                    }
+                }else {
+                    startActivity(KeyCabinetActivity.class);
+                    finish();
+                }
+
+                //todo wmf
+                //statusFsm("0".equals(flag)?);
+                break;
+            case 5:
+                startActivity(KeyCabinetActivity.class);
                 finish();
                 break;
             default:
@@ -113,7 +279,8 @@
     @Override
     protected void onResume() {
         super.onResume();
-        startTestOpenDebugRegisterFunction();
+        //todo wmf 瑙e紑
+        //startTestOpenDebugRegisterFunction();
     }
 
     private void startTestOpenDebugRegisterFunction() {
@@ -254,7 +421,8 @@
         //CameraPreviewManager.getInstance().destroy();
         faceDetectCallBack = null;
         glMantleSurfacView = null;
-        FaceSDKManager.getInstance().destroy();
+        //todo wmf 瑙e紑
+        //FaceSDKManager.getInstance().destroy();
     }
 
     private int resultCount = 0;
@@ -299,7 +467,7 @@
                     } else {
                         //浼樺厛浼氬憳
                         if("0".equals(user.getGroupId())){
-
+11
                         }else {
                             if (isCompareCheck) {
                                 getDB().clFail.setVisibility(View.VISIBLE);
@@ -352,6 +520,7 @@
         super.onPause();
         isPause = false;
         isTimePause = true;
-        CameraPreviewManager.getInstance().stopPreview();
+        //todo wmf 瑙e紑
+        //CameraPreviewManager.getInstance().stopPreview();
     }
 }
\ No newline at end of file
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceVM.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceVM.java
index ce0c4c1..9937e41 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceVM.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceVM.java
@@ -4,8 +4,24 @@
 
 import androidx.annotation.NonNull;
 import androidx.hilt.lifecycle.ViewModelInject;
+
+import com.doumee.keyCabinet.MApplication;
+import com.doumee.keyCabinet.bean.CabinetFaceBean;
+import com.doumee.keyCabinet.bean.FaceUserBean;
+import com.doumee.keyCabinet.http.Apis;
+import com.doumee.keyCabinet.http.param.BaseResponse;
+import com.doumee.keyCabinet.http.param.DevLoginParam;
+import com.doumee.keyCabinet.http.param.GetMemberIdByCodeParam;
+import com.doumee.keyCabinet.ui.main.MainActivity;
+import com.doumee.keyCabinet.utils.LMobileInfo;
+import com.doumee.keyCabinet.utils.ParamsUtil;
 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.RxUtils;
+
+import java.util.ArrayList;
+import java.util.List;
 
 public class FaceVM extends DataViewModel {
     @ViewModelInject
@@ -17,4 +33,46 @@
     protected void clickByTypeCommand(int type) {
         doAction(type);
     }
+
+    /**
+     *
+     * @param code  ic鍗�
+     * @param type //0锛氱鐞嗗憳锛�1锛氬徃鏈�
+     */
+    public void getMemberIdByCode(String code,String type){
+        GetMemberIdByCodeParam param = new GetMemberIdByCodeParam(code);
+        showLoading(true);
+        getRetrofitService(Apis.class).getMemberIdByCode(ParamsUtil.encodeRequestBody(param))
+                .compose(RxUtils.schedulersTransformer())
+                .subscribe(new SimpleObserver<BaseResponse<Integer>>(rxJavaGcManager) {
+                    @Override
+                    public void onNext(@NonNull BaseResponse<Integer> response) {
+                        if(200==response.getCode()){
+                            //鏌ヨ鏁版嵁
+                            if(response.getData()!=null){
+                                if("0".equals(type)){
+                                    MApplication.getLoginBean().setAutoMemberId(response.getData());
+                                    doAction();
+                                }else {
+                                    MApplication.getLoginBean().setAutoMemberId(response.getData());
+                                    MApplication.getLoginBean().setAuthType(1);
+                                    doAction();
+                                }
+                            }
+                        }else {
+                            toast(response.getMessage());
+                        }
+                    }
+
+                    @Override
+                    public void onError(@NonNull Throwable e) {
+                        toast(e.getMessage());
+                    }
+
+                    @Override
+                    public void onComplete() {
+                        hideLoading();
+                    }
+                });
+    }
 }
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/adapter/FaceRcvAdapter.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/adapter/FaceRcvAdapter.java
index 4314f2f..93092a1 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/adapter/FaceRcvAdapter.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/adapter/FaceRcvAdapter.java
@@ -27,7 +27,7 @@
         } else {
             holder.getBinding().checkBtn.setChecked(false);
         }
-        FrescoUtils.displayImageFresco(item.getFaceUrl(),holder.getBinding().circleUser);
+        FrescoUtils.displayImageFresco(item.getFaceImg(),holder.getBinding().circleUser);
         holder.getBinding().rlRoot.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/guide/GuideActivity.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/guide/GuideActivity.java
index e71c61e..035962b 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/guide/GuideActivity.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/guide/GuideActivity.java
@@ -20,7 +20,6 @@
 import com.doumee.keyCabinet.MApplication;
 import com.doumee.keyCabinet.R;
 import com.doumee.keyCabinet.base.MyBaseActivity;
-import com.doumee.keyCabinet.bean.ConfigBean;
 import com.doumee.keyCabinet.bean.DevConfigBean;
 import com.doumee.keyCabinet.ui.main.MainActivity;
 import com.doumee.keyCabinet.utils.LanguageUtil;
@@ -42,12 +41,12 @@
         public void handleMessage(@NonNull Message msg) {
             switch (msg.what) {
                 case 1:
-                    if(MApplication.getConfigBean().getShopId()==null){
+                    /*if(MApplication.getConfigBean().getShopId()==null){
                         if(isHavePermission){
                             handler.sendEmptyMessageDelayed(2,20000);
                             getVM().devLogin();
                         }
-                    }
+                    }*/
                     break;
                 case 2:
                     getVM().resetReq();
@@ -75,38 +74,7 @@
 
     @Override
     public void initData(@Nullable Bundle savedInstanceState) {
-        getVM().getDevLD().observe(this, new Observer<DevConfigBean>() {
-            @Override
-            public void onChanged(DevConfigBean devConfigBean) {
-                if(devConfigBean!=null){
-                    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(GuideActivity.this,language);
-                    MApplication.saveConfigBean(configBean);
 
-                    startActivity(MainActivity.class);
-                    finish();
-                }
-            }
-        });
     }
 
     private boolean isHavePermission = false;
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/guide/GuideViewModel.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/guide/GuideViewModel.java
index 9074a33..6b22d38 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/guide/GuideViewModel.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/guide/GuideViewModel.java
@@ -11,11 +11,6 @@
 import com.doumee.keyCabinet.http.param.DevLoginParam;
 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.RxUtils;
-import com.doumee.keyCabinet.MApplication;
-import com.doumee.keyCabinet.R;
-import com.doumee.keyCabinet.bean.ConfigBean;
 import com.doumee.keyCabinet.bean.DevConfigBean;
 import com.doumee.keyCabinet.http.Apis;
 import com.doumee.keyCabinet.http.param.BaseResponse;
@@ -54,72 +49,7 @@
         doAction(1);
     }
     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))
-                .compose(RxUtils.schedulersTransformer())
-                .subscribe(new SimpleObserver<Response<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));
-                            doAction(1);
-                            return;
-                        }
-                        if("000000".equals(response.getErrorCode())){
-                            if(response.getRecord()!=null){
-                                if("0".equals(response.getRecord().getStatus())){
-                                    jyVisibility.set(View.VISIBLE);
-                                    doAction(1);
-                                    return;
-                                }else {
-                                    jyVisibility.set(View.GONE);
-                                }
-                                devLD.setValue(response.getRecord());
-                            }else {
-                                toast(MApplication.mContext.getString(R.string.guide_toast_1));
-                                doAction(1);
-                            }
-                        }else if("33010101".equals(response.getErrorCode())) {
-                            doAction(1);
-                            toast(MApplication.mContext.getString(R.string.guide_toast_2)+
-                                    MApplication.mContext.getString(R.string.symbol_colon)+param.getDevCode());
-                        }else {
-                            toast(response.getErrorMsg());
-                            doAction(1);
-                        }
-                    }
 
-                    @Override
-                    public void onError(@NonNull Throwable e) {
-                        toast(e.getMessage());
-                        doAction(1);
-                    }
-
-                    @Override
-                    public void onComplete() {
-                        isReq = false;
-                    }
-                });
     }
 
     public MutableLiveData<DevConfigBean> getDevLD() {
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/KeyCabinetActivity.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/KeyCabinetActivity.java
index 79e4c29..03b6978 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/KeyCabinetActivity.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/KeyCabinetActivity.java
@@ -1,25 +1,81 @@
 package com.doumee.keyCabinet.ui.keyCabinet;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.appcompat.app.AppCompatActivity;
+import androidx.lifecycle.Observer;
 
 import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.text.SpannableString;
+import android.text.Spanned;
+import android.text.style.TextAppearanceSpan;
+import android.view.View;
+import android.widget.TextView;
+import android.widget.Toast;
 
+import com.doumee.keyCabinet.MApplication;
 import com.doumee.keyCabinet.R;
 import com.doumee.keyCabinet.base.MyBaseActivity;
 import com.doumee.keyCabinet.bean.KeyCabinetBean;
 import com.doumee.keyCabinet.databinding.KeyCabinetActivityBinding;
+import com.doumee.keyCabinet.event.KeyDoorEvent;
+import com.doumee.keyCabinet.event.KeyResultEvent;
+import com.doumee.keyCabinet.event.KeyStatusListener;
+import com.doumee.keyCabinet.event.OpenGridEvent;
 import com.doumee.keyCabinet.ui.face.adapter.ErrRcvAdapter;
 import com.doumee.keyCabinet.ui.keyCabinet.adapter.CabinetRcvAdapter;
 import com.doumee.lib_coremodel.base.BaseActivity;
+import com.doumee.lib_coremodel.bean.event.ActionEventData;
 import com.doumee.lib_coremodel.util.RecyclerHelp;
 import com.doumee.lib_coremodel.util.SpUtil;
+
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+
+import java.util.List;
+import java.util.Random;
 
 import dagger.hilt.android.AndroidEntryPoint;
 
 @AndroidEntryPoint
 public class KeyCabinetActivity extends MyBaseActivity<KeyCabinetVM, KeyCabinetActivityBinding> {
     private CabinetRcvAdapter adapter;
+    private KeyCabinetBean selectBean;
+    //0=鍙� 1=杩�
+    private int flag;
+
+    //鐘舵�侊紝0锛氬緟寮�闂紝1锛氬緟鍏抽棬
+    private int status;
+
+    private int ysDownCount = 10;
+    private Handler handler = new Handler(){
+        @Override
+        public void handleMessage(@NonNull Message msg) {
+            switch (msg.what){
+                case 0:
+                    if (ysDownCount==4) {
+                        //棰嗗彇閽ュ寵鍊掕鏃�
+                        doRegister(7,null);
+                        ysDownCount--;
+                        handler.sendEmptyMessageDelayed(0,1000);
+                    }else if (ysDownCount==0) {
+                        //棰嗗彇閽ュ寵鍊掕鏃�
+                        doRegister(MApplication.nextBoolean()?5:6,null);
+                    }else {
+                        ysDownCount--;
+                        handler.sendEmptyMessageDelayed(0,1000);
+                    }
+                    break;
+                case 1:
+
+                    break;
+                default:
+                    break;
+            }
+        }
+    };
 
     @Override
     public int getLayoutId() {
@@ -28,14 +84,13 @@
 
     @Override
     public void initView(@Nullable Bundle savedInstanceState) {
-        isAddCountTimer = false;
         normalConfig();
         getDB().setModel(getVM());
-
+        flag = MApplication.getLoginBean().getFlag();
         adapter = new CabinetRcvAdapter(this, R.layout.cabinet_rcv_item, new CabinetRcvAdapter.OnItemClick() {
             @Override
             public void onItemClick(KeyCabinetBean item) {
-
+                selectBean = item;
             }
         });
         RecyclerHelp.bindVG(this,getDB().rcvKm,3,30);
@@ -44,6 +99,187 @@
 
     @Override
     public void initData(@Nullable Bundle savedInstanceState) {
+        getVM().getDatasLD().observe(this, new Observer<List<KeyCabinetBean>>() {
+            @Override
+            public void onChanged(List<KeyCabinetBean> beans) {
+                if(beans.size()>0){
+                    beans.get(0).getIsSelected().set(true);
+                    beans.get(0).getText1Color().set(0xffffffff);
+                    beans.get(0).getText2Color().set(0xffffffff);
+                    selectBean = beans.get(0);
+                    changeBtBg();
+                    adapter.refreshData(beans);
+                    getVM().emptyVisibility.set(View.GONE);
+                }else {
+                    getVM().emptyVisibility.set(View.VISIBLE);
+                }
+            }
+        });
+        getVM().getDatas();
+    }
 
+    @Override
+    protected void timeChange(String djs) {
+        getDB().tvDjs.setText(djs);
+    }
+
+    @Override
+    protected void doRegister(int type, ActionEventData data) {
+        switch (type){
+            case 1:
+                if(selectBean==null){
+                    Toast.makeText(mContext, "璇烽�夋嫨鏌滈棬", Toast.LENGTH_SHORT).show();
+                    return;
+                }
+                //寮�鍚煖闂�
+                getVM().openGridDriver(selectBean);
+                EventBus.getDefault().post(new OpenGridEvent(selectBean.getChannelCode(),selectBean.getBoardCode()));
+                break;
+            case 2:
+                getDB().clTip1.setVisibility(View.GONE);
+                if(status==0) {
+                    //閲嶆柊寮�闂�
+                    EventBus.getDefault().post(new OpenGridEvent(selectBean.getChannelCode(), selectBean.getBoardCode()));
+                }
+                break;
+            case 3:
+                //寮�鍚け璐�
+                getDB().btTip.setText("閲嶆柊寮�闂�");
+                getDB().imgJg1.setImageResource(R.mipmap.ic_jjfail);
+                getDB().tvJg1.setText("寮�闂ㄥけ璐ワ紝璇疯仈绯荤鐞嗗憳");
+                getDB().tvJg2.setText(getErrPhoneText(),TextView.BufferType.SPANNABLE);
+                getDB().btTip.setVisibility(View.VISIBLE);
+                getDB().clTip1.setVisibility(View.VISIBLE);
+                break;
+            case 4:
+                //寮�鍚垚鍔�
+                status=1;
+                if("0".equals(flag)) {
+                    getDB().imgTip2.setImageResource(R.mipmap.ic_notclose_key);
+                    getDB().tvTip22.setText("璇烽鍙栭挜鍖欏悗鍏抽棴鏌滈棬");
+                }else {
+                    getDB().imgTip2.setImageResource(R.mipmap.ic_notclose);
+                    getDB().tvTip22.setText("璇峰綊杩橀挜鍖欏悗鍏抽棴鏌滈棬");
+                }
+                getDB().tvTip21.setText(getTipText(selectBean.getCabinetName(),"鏌滈棬鎵撳紑鎴愬姛"), TextView.BufferType.SPANNABLE);
+                getDB().clTip2.setVisibility(View.VISIBLE);
+                EventBus.getDefault().post(new KeyStatusListener(0));
+                ysDownCount = 8;
+                handler.sendEmptyMessageDelayed(0,1000);
+                break;
+            case 7:
+                //鎻愰啋鍏虫煖闂�
+                getDB().imgTip2.setImageResource(R.mipmap.ic_notclose);
+                getDB().tvTip22.setText("璇峰叧闂煖闂�");
+                getDB().tvTip21.setText(getTipText(selectBean.getCabinetName(),"鏌滈棬鏈叧闂�"), TextView.BufferType.SPANNABLE);
+                getDB().clTip2.setVisibility(View.VISIBLE);
+                break;
+            case 5:
+                //鍏抽棬-閽ュ寵棰嗗彇鎴愬姛
+                status = 0;
+                getDB().clTip2.setVisibility(View.GONE);
+                getDB().imgJg1.setImageResource(R.mipmap.ic_success);
+                getDB().tvJg1.setText(getTipText(selectBean.getCarCode(),"閽ュ寵棰嗗彇鎴愬姛"), TextView.BufferType.SPANNABLE);
+                getDB().tvJg2.setText("鏌滈棬宸插叧闂�");
+                getDB().btTip.setVisibility(View.GONE);
+                getDB().clTip1.setVisibility(View.VISIBLE);
+                break;
+            case 6:
+                //鍏抽棬-閽ュ寵棰嗗彇澶辫触
+                status = 0;
+                getDB().btTip.setText("閲嶆柊寮�闂�");
+                getDB().imgJg1.setImageResource(R.mipmap.ic_jjfail);
+                getDB().tvJg1.setText(getTipText(selectBean.getCarCode(),"閽ュ寵鏈鍙�"), TextView.BufferType.SPANNABLE);
+                getDB().tvJg2.setText("鏌滈棬宸插叧闂�");
+                getDB().btTip.setVisibility(View.VISIBLE);
+                getDB().clTip1.setVisibility(View.VISIBLE);
+                break;
+            case 8:
+                //鍏抽棬-閽ュ寵褰掕繕鎴愬姛
+                status = 0;
+                getDB().clTip2.setVisibility(View.GONE);
+                getDB().imgJg1.setImageResource(R.mipmap.ic_success);
+                getDB().tvJg1.setText(getTipText(selectBean.getCarCode(),"閽ュ寵褰掕繕鎴愬姛"), TextView.BufferType.SPANNABLE);
+                getDB().tvJg2.setText("鏌滈棬宸插叧闂�");
+                getDB().btTip.setVisibility(View.GONE);
+                getDB().clTip1.setVisibility(View.VISIBLE);
+                break;
+            case 9:
+                //鍏抽棬-閽ュ寵褰掕繕澶辫触
+                status = 0;
+                getDB().btTip.setText("閲嶆柊褰掕繕");
+                getDB().imgJg1.setImageResource(R.mipmap.ic_jjfail);
+                getDB().tvJg1.setText("鏈瘑鍒埌閽ュ寵");
+                getDB().tvJg2.setText(getErrPhoneText(), TextView.BufferType.SPANNABLE);
+                getDB().btTip.setVisibility(View.VISIBLE);
+                getDB().clTip1.setVisibility(View.VISIBLE);
+                break;
+            default:
+                break;
+        }
+    }
+
+    private SpannableString getTipText(String name,String msg){
+        String text = name+msg;
+        SpannableString styledText = new SpannableString(text);
+        styledText.setSpan(new TextAppearanceSpan(this, R.style.style_tip1), 0, name.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+        styledText.setSpan(new TextAppearanceSpan(this,R.style.style_tip2), name.length()+1, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+        return styledText;
+    }
+
+    private SpannableString getErrPhoneText(){
+        String phone = "15899098765";
+        String text = "濡傛湁闂璇疯仈绯荤鐞嗗憳"+phone;
+        SpannableString styledText = new SpannableString(text);
+        styledText.setSpan(new TextAppearanceSpan(this, R.style.style_tip2), 0, text.length()-phone.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+        styledText.setSpan(new TextAppearanceSpan(this,R.style.style_tip1), text.length()-phone.length()+1, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+        return styledText;
+    }
+
+    private void changeBtBg(){
+        if(selectBean!=null){
+            getDB().tvKm.setBackgroundResource(R.drawable.shape_r25_blue_bg);
+        }else {
+            getDB().tvKm.setBackgroundResource(R.drawable.shape_mb_bt_faile);
+        }
+    }
+
+    @Subscribe
+    public void KeyDoorEvent(KeyDoorEvent e){
+        if(!isFinishing()){
+            if("0".equals(e.getResult())){
+                //寮�闂ㄦ垚鍔�
+                doRegister(4,null);
+            }else {
+                //澶辫触
+                doRegister(3,null);
+            }
+        }
+    }
+
+    @Subscribe
+    public void KeyResultEvent(KeyResultEvent e){
+        if(!isFinishing()){
+            if("0".equals(e.getResult())){
+                //鎴愬姛
+                if("0".equals(flag)){
+                    //閽ュ寵鎷胯蛋浜�
+                    //doRegister(5,null);
+                }else {
+                    //閽ュ寵鏀惧叆浜�
+
+                }
+            }else {
+                //澶辫触
+
+            }
+        }
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        handler.removeCallbacksAndMessages(null);
+        handler = null;
     }
 }
\ No newline at end of file
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/KeyCabinetVM.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/KeyCabinetVM.java
index 49521f1..11eac8f 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/KeyCabinetVM.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/KeyCabinetVM.java
@@ -4,14 +4,119 @@
 
 import androidx.annotation.NonNull;
 import androidx.hilt.lifecycle.ViewModelInject;
+import androidx.lifecycle.MutableLiveData;
 
+import com.doumee.keyCabinet.MApplication;
+import com.doumee.keyCabinet.bean.FaceUserBean;
+import com.doumee.keyCabinet.bean.KeyCabinetBean;
+import com.doumee.keyCabinet.http.Apis;
+import com.doumee.keyCabinet.http.param.BaseResponse;
+import com.doumee.keyCabinet.http.param.GetDriverGridParam;
+import com.doumee.keyCabinet.http.param.OpenGridDriverParam;
+import com.doumee.keyCabinet.utils.ParamsUtil;
 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.RxUtils;
+
+import org.checkerframework.checker.units.qual.A;
+import org.greenrobot.eventbus.EventBus;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
 
 public class KeyCabinetVM extends DataViewModel {
+    private MutableLiveData<List<KeyCabinetBean>> datasLD = new MutableLiveData<>();
 
     @ViewModelInject
     public KeyCabinetVM(@NonNull Application application, BaseModel model) {
         super(application, model);
     }
+
+    @Override
+    protected void clickByTypeCommand(int type) {
+        doAction(type);
+    }
+
+    public void getDatas(){
+        /*List<KeyCabinetBean> list = new ArrayList<>();
+        KeyCabinetBean b1 = new KeyCabinetBean();
+        b1.setCabinetName("A01");
+        b1.setCarCode("鑻廇18829");
+        list.add(b1);
+        KeyCabinetBean b2 = new KeyCabinetBean();
+        b2.setCabinetName("A02");
+        b2.setCarCode("鑻廇18820");
+        list.add(b2);
+        datasLD.setValue(list);*/
+
+        GetDriverGridParam param = new GetDriverGridParam();
+        param.setType(MApplication.getLoginBean().getFlag());
+        param.setCabinetId(MApplication.getConfigBean().getId());
+        param.setMemberId(MApplication.getLoginBean().getMemberId());
+        param.setAutoMemberId(MApplication.getLoginBean().getAutoMemberId());
+        showLoading(true);
+        getRetrofitService(Apis.class).getDriverGrid(ParamsUtil.encodeRequestBody(param))
+                .compose(RxUtils.schedulersTransformer())
+                .subscribe(new SimpleObserver<BaseResponse<List<KeyCabinetBean>>>(rxJavaGcManager) {
+                    @Override
+                    public void onNext(@NonNull BaseResponse<List<KeyCabinetBean>> response) {
+                        if(200==response.getCode()){
+                            //鏌ヨ鏁版嵁
+                            if(response.getData()!=null&&response.getData().size()>0){
+                                datasLD.setValue(response.getData());
+                            }
+                        }else {
+                            toast(response.getMessage());
+                        }
+                    }
+
+                    @Override
+                    public void onError(@NonNull Throwable e) {
+                        toast(e.getMessage());
+                    }
+
+                    @Override
+                    public void onComplete() {
+                        hideLoading();
+                    }
+                });
+    }
+
+    public void openGridDriver(KeyCabinetBean selectBean){
+        OpenGridDriverParam param = new OpenGridDriverParam();
+        param.setCabinetId(selectBean.getCabinetId());
+        param.setGridId(selectBean.getId());
+        param.setMemberId(MApplication.getLoginBean().getMemberId());
+        param.setAuthType(MApplication.getLoginBean().getAuthType());
+        showLoading(true);
+        getRetrofitService(Apis.class).openGridDriver(ParamsUtil.encodeRequestBody(param))
+                .compose(RxUtils.schedulersTransformer())
+                .subscribe(new SimpleObserver<BaseResponse>(rxJavaGcManager) {
+                    @Override
+                    public void onNext(@NonNull BaseResponse response) {
+                        if(200==response.getCode()){
+                            //寮�闂�
+                            doAction(2);
+                        }else {
+                            toast(response.getMessage());
+                        }
+                    }
+
+                    @Override
+                    public void onError(@NonNull Throwable e) {
+                        toast(e.getMessage());
+                    }
+
+                    @Override
+                    public void onComplete() {
+                        hideLoading();
+                    }
+                });
+    }
+
+    public MutableLiveData<List<KeyCabinetBean>> getDatasLD() {
+        return datasLD;
+    }
 }
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageCabinetVM.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageCabinetVM.java
index ff33d5f..63968cc 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageCabinetVM.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageCabinetVM.java
@@ -13,4 +13,9 @@
     public ManageCabinetVM(@NonNull Application application, BaseModel model) {
         super(application, model);
     }
+
+    @Override
+    protected void clickByTypeCommand(int type) {
+        doAction(type);
+    }
 }
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageLoginVM.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageLoginVM.java
index b51ce22..cf9d90a 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageLoginVM.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageLoginVM.java
@@ -13,4 +13,9 @@
     public ManageLoginVM(@NonNull Application application, BaseModel model) {
         super(application, model);
     }
+
+    @Override
+    protected void clickByTypeCommand(int type) {
+        doAction(type);
+    }
 }
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/adapter/CabinetRcvAdapter.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/adapter/CabinetRcvAdapter.java
index c41ad41..a04a59b 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/adapter/CabinetRcvAdapter.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/adapter/CabinetRcvAdapter.java
@@ -15,6 +15,8 @@
         void onItemClick(KeyCabinetBean item);
     }
     private OnItemClick onItemClick;
+    private KeyCabinetBean selectBean;
+
     public CabinetRcvAdapter(Context context, int layoutId, OnItemClick onItemClick) {
         super(context, layoutId);
         this.onItemClick = onItemClick;
@@ -23,13 +25,26 @@
     @Override
     public void bindViewDatas(BindingHolder<CabinetRcvItemBinding> holder, KeyCabinetBean item, int position) {
         holder.getBinding().setData(item);
-        holder.getBinding().clRoot.setOnLongClickListener(new View.OnLongClickListener() {
+        if(selectBean==null&&item.getIsSelected().get()){
+            selectBean = item;
+        }
+        holder.getBinding().clRoot.setOnClickListener(new View.OnClickListener() {
             @Override
-            public boolean onLongClick(View v) {
+            public void onClick(View v) {
                 if(onItemClick!=null){
                     onItemClick.onItemClick(item);
                 }
-                return true;
+                if(selectBean==null){
+                    selectBean = item;
+                }else {
+                    selectBean.getIsSelected().set(false);
+                    selectBean.getText1Color().set(0xff111111);
+                    selectBean.getText2Color().set(0xff279baa);
+                    selectBean = item;
+                }
+                item.getIsSelected().set(true);
+                selectBean.getText1Color().set(0xffffffff);
+                selectBean.getText2Color().set(0xffffffff);
             }
         });
     }
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java
index e1e7a17..54fcdac 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java
@@ -11,7 +11,10 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
+import android.text.SpannableString;
+import android.text.Spanned;
 import android.text.TextUtils;
+import android.text.style.TextAppearanceSpan;
 import android.util.DisplayMetrics;
 import android.view.Gravity;
 import android.view.LayoutInflater;
@@ -19,6 +22,7 @@
 import android.view.ViewGroup;
 import android.widget.PopupWindow;
 import android.widget.RelativeLayout;
+import android.widget.TextView;
 import android.widget.Toast;
 
 import androidx.annotation.NonNull;
@@ -38,14 +42,21 @@
 import com.doumee.keyCabinet.BuildConfig;
 import com.doumee.keyCabinet.base.BannerPicResponsePara;
 import com.doumee.keyCabinet.bean.FaceUserBean;
+import com.doumee.keyCabinet.bean.LoginBean;
 import com.doumee.keyCabinet.databinding.MainActivityBinding;
 import com.doumee.keyCabinet.event.GetFacesEvent;
+import com.doumee.keyCabinet.event.HeartEvent;
+import com.doumee.keyCabinet.event.KeyDoorEvent;
+import com.doumee.keyCabinet.event.KeyResultEvent;
+import com.doumee.keyCabinet.event.KeyStatusListener;
+import com.doumee.keyCabinet.event.OpenGridEvent;
 import com.doumee.keyCabinet.event.ReLoginEvent;
 import com.doumee.keyCabinet.event.TimeClockEvent;
 import com.doumee.keyCabinet.ui.face.ActivationActivity;
 import com.doumee.keyCabinet.ui.face.FaceActivity;
 import com.doumee.keyCabinet.ui.guide.GuideActivity;
 import com.doumee.keyCabinet.ui.keyCabinet.ChangeUrlActivity;
+import com.doumee.keyCabinet.ui.keyCabinet.KeyCabinetActivity;
 import com.doumee.keyCabinet.ui.keyCabinet.ManageLoginActivity;
 import com.doumee.keyCabinet.ui.service.FaceUpdateService;
 import com.doumee.keyCabinet.ui.service.HeartbeatService;
@@ -84,12 +95,14 @@
 import com.example.datalibrary.view.PreviewTexture;
 import com.yanzhenjie.permission.runtime.Permission;
 import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Logger;
 import org.greenrobot.eventbus.Subscribe;
 
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
+import java.util.Random;
 import java.util.Timer;
 import java.util.TimerTask;
 import java.util.concurrent.Executors;
@@ -130,15 +143,15 @@
             if(!isFinishing()){
                 switch (msg.what) {
                     case 0:
-                    initM();
+                    //initM();
                     TimeUtils.updateTimeUi(getVM().dayObs, getVM().timeObs);
                     handler.sendEmptyMessageDelayed(0, 1000);
                     EventBus.getDefault().post(new TimeClockEvent());
-                    if (isDBLoad && isNeedUpdateFace && !isUpdatingFace) {
+                    /*if (isDBLoad && isNeedUpdateFace && !isUpdatingFace) {
                         isNeedUpdateFace = false;
                         getVM().getFaceLD();
                     }
-                    getVM().upBraceletLog();
+                    getVM().upBraceletLog();*/
                     case 2:
                         getVM().resetReq();
                         break;
@@ -155,19 +168,20 @@
 
     @Override
     public void initView(@Nullable Bundle savedInstanceState) {
-        //isToGuild = true;
+        isAddCountTimer = false;
         SpUtil.initWH(this);
         normalConfig();
         getDB().setModel(getVM());
         //initRGBCheck();
+        handler.sendEmptyMessageDelayed(0, 1000);
         //鍚姩蹇冭烦
         Intent intent = new Intent(MainActivity.this, HeartbeatService.class);
         startService(intent);
         //鍚姩鏇存柊浜鸿劯
         Intent intent2 = new Intent(MainActivity.this, FaceUpdateService.class);
         startService(intent2);
-        //getPermission();
-        //getDB().tvName.setText(String.format(getString(R.string.main_name),MApplication.getConfigBean().getName(), LMobileInfo.getDeviceUniqueId()));
+        getPermission();
+        Timber.tag("====>").d(LMobileInfo.getDeviceUniqueId());
     }
 
     private void initM(){
@@ -225,6 +239,44 @@
                 }
             }
         });
+        getDB().tv1.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                //绠$悊鍛樼櫥褰�
+                if(lastDownTime1!=null){
+                    if(System.currentTimeMillis()-lastDownTime1>1000){
+                        downCount1=0;
+                    }
+                }
+                lastDownTime1 = System.currentTimeMillis();
+                downCount1++;
+                System.out.println();
+                Timber.tag("==>").d(""+downCount1);
+                if(downCount1>4) {
+                    downCount1=0;
+                    lastDownTime1=null;
+                    startActivity(ManageLoginActivity.class);
+                }
+            }
+        });
+        getDB().tvId.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                //鏇存敼url
+                if(lastDownTime2!=null){
+                    if(System.currentTimeMillis()-lastDownTime2>1000){
+                        downCount2=0;
+                    }
+                }
+                lastDownTime2 = System.currentTimeMillis();
+                downCount2++;
+                if(downCount2>4) {
+                    downCount2=0;
+                    lastDownTime2=null;
+                    startActivity(ChangeUrlActivity.class);
+                }
+            }
+        });
         upErrInfo();
         getVM().devHeart();
         BraceletLogUtils.saveLog("app鎵撳紑");
@@ -273,45 +325,26 @@
     @Override
     protected void doRegister(int type, ActionEventData data) {
         switch (type){
-            case 1:
-                {
-                    //绠$悊鍛樼櫥褰�
-                    if(lastDownTime1!=null){
-                        if(System.currentTimeMillis()-lastDownTime1>1000){
-                            downCount1=0;
-                        }
-                    }
-                    lastDownTime1 = System.currentTimeMillis();
-                    downCount1++;
-                    if(downCount1>4) {
-                        downCount1=0;
-                        lastDownTime1=null;
-                        startActivity(ManageLoginActivity.class);
-                    }
-                }
-                break;
             case 2:
             case 3:
-                Bundle b = new Bundle();
-                b.putString("flag",type==2?"0":"1");
-                startActivity(FaceActivity.class,b);
+                /*tipDownCount = 10;
+                isShowTip = true;
+                getDB().tvDjs.setText(tipDownCount+"s");
+                getDB().tvTip21.setText(getTipText("AC101"), TextView.BufferType.SPANNABLE);
+                getDB().clTip.setVisibility(View.VISIBLE);*/
+                //鏍¢獙鏄惁鐧诲綍
+                if(MApplication.getConfigBean().getId()==null){
+                    Toast.makeText(mContext, "璁惧鏈坊鍔狅紝鏃犳硶鎿嶄綔", Toast.LENGTH_SHORT).show();
+                    getVM().devLogin();
+                    return;
+                }
+                MApplication.getLoginBean().setFlag(type==2?0:1);
+                startActivity(FaceActivity.class);
+                //startActivity(KeyCabinetActivity.class,b);
                 break;
             case 4:
-                {
-                    //鏇存敼url
-                    if(lastDownTime2!=null){
-                        if(System.currentTimeMillis()-lastDownTime2>1000){
-                            downCount2=0;
-                        }
-                    }
-                    lastDownTime2 = System.currentTimeMillis();
-                    downCount2++;
-                    if(downCount2>4) {
-                        downCount2=0;
-                        lastDownTime2=null;
-                        startActivity(ChangeUrlActivity.class);
-                    }
-                }
+                isShowTip = false;
+                getDB().clTip.setVisibility(View.GONE);
                 break;
             default:
                 break;
@@ -322,7 +355,7 @@
     protected void onResume() {
         super.onResume();
         showTime = System.currentTimeMillis();
-        MApplication.saveMemberBean(new MemberBean());
+        MApplication.setLoginBean(new LoginBean());
         if(!isFaceOk) {
             //initLicense();
         }
@@ -606,14 +639,6 @@
                             //缁撴潫
                             isUpdatingFace = false;
                             //System.out.println("==UpdatingFace==>鏇存柊缁撴潫锛�");
-                            FaceUserBean bean = selectBeans.get(selectBeans.size()-1);
-                            if(!TextUtils.isEmpty(bean.getEditTime())){
-                                Date date = StringUtil.StrToDate(bean.getEditTime());
-                                Calendar cal = Calendar.getInstance();
-                                cal.setTime(date);
-                                cal.add(Calendar.SECOND,1);
-                                SpUtil.saveString("LastTime",StringUtil.DateToStr(cal.getTime()));
-                            }
                             // 娓呴櫎鍐呭瓨缂撳瓨
                             Glide.get(MainActivity.this).clearMemory();
                         }
@@ -642,7 +667,7 @@
     private int repeatCount = 0;
     private void updateFace(FaceUserBean bean){
         Timber.d("==UpdatingFace==>瀹屾垚鏁伴噺 "+finishCount);
-        if (TextUtils.isEmpty(bean.getFaceUrl())||bean.getFaceUrl().endsWith("null")) {
+        if (TextUtils.isEmpty(bean.getFaceImg())||bean.getFaceImg().endsWith("null")) {
             finishCount++;
             faceHandler.sendEmptyMessage(0);
             return;
@@ -651,7 +676,7 @@
         //System.out.println("==UpdatingFace==>寮�濮嬶細" + bean.getName());
         Glide.with(this)
                 .asBitmap()
-                .load(bean.getFaceUrl())
+                .load(bean.getFaceImg())
                 .addListener(new RequestListener<Bitmap>() {
                     @Override
                     public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {
@@ -695,10 +720,10 @@
                                 if (ret == 128) {
                                     Timber.d("==UpdatingFace==>鍥剧墖鐗瑰緛鎶藉彇鎴愬姛: %s", JSON.toJSONString(bean));
                                     User user = new User();
-                                    user.setUserId(bean.getId());
-                                    user.setGroupId(bean.getType());
-                                    user.setUserName(bean.getName());
-                                    user.setImageName(bean.getFaceUrl());
+                                    user.setUserId(bean.getMemberId());
+                                    user.setGroupId(bean.getGroupId());
+                                    user.setUserName(bean.getMemberName());
+                                    user.setImageName(bean.getFaceImg());
                                     user.setUserInfo(GsonTools.changeGsonToJson(bean));
                                     user.setFeature(secondFeature);
                                     insertOrUpdate(user);
@@ -952,12 +977,57 @@
         }
     }
 
+    private int tipDownCount = 10;
+    private boolean isShowTip;
     @Subscribe
     public void TimeClockEvent(TimeClockEvent e){
-
+        if(isShowTip){
+            if(tipDownCount==0){
+                isShowTip = false;
+                getDB().clTip.setVisibility(View.GONE);
+            }else {
+                tipDownCount--;
+                getDB().tvDjs.setText(tipDownCount+"s");
+            }
+        }
     }
 
+    /**
+     * 鐩戝惉寮�闂�
+     * @param e
+     */
+    @Subscribe
+    public void OpenGridEvent(OpenGridEvent e){
+        if(!isFinishing()){
+            EventBus.getDefault().post(new KeyDoorEvent(MApplication.nextBoolean()?"0":"1"));
+        }
+    }
 
+    /**
+     * 鐩戝惉閽ュ寵
+     * @param e
+     */
+    @Subscribe
+    public void KeyStatusListener(KeyStatusListener e){
+        if(!isFinishing()){
+            if(e.getStatus()==0){
+                //寮�濮�
+                Random random = new Random();
+                EventBus.getDefault().post(new KeyResultEvent(random.nextBoolean()?"0":"1"));
+            }else {
+                //缁撴潫
+            }
+        }
+    }
+
+    private SpannableString getTipText(String name){
+        String text = name+"鏌滈棬鏈叧闂�";
+        SpannableString styledText = new SpannableString(text);
+        styledText.setSpan(new TextAppearanceSpan(this, R.style.style_tip1),
+                0, name.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+        styledText.setSpan(new TextAppearanceSpan(this,R.style.style_tip2), name.length()+1, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+        return styledText;
+    }
 
     @Override
     protected void onRestart() {
@@ -965,6 +1035,11 @@
         getVM().devHeart();
     }
 
-
+    @Subscribe
+    public void HeartEvent(HeartEvent e){
+        if(!isFinishing()){
+            getVM().devHeart();
+        }
+    }
 
 }
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..103ae1d 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,18 +10,15 @@
 
 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.event.DevConfigEvent;
-import com.doumee.keyCabinet.event.ReLoginEvent;
 import com.doumee.keyCabinet.http.Apis;
 import com.doumee.keyCabinet.http.param.BaseResponse;
 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.utils.BraceletLogUtils;
@@ -36,6 +33,7 @@
 
 import org.greenrobot.eventbus.EventBus;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import okhttp3.Headers;
@@ -64,73 +62,25 @@
     }
 
     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());
+        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;
-                                }
-                                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);
+                    public void onNext(@NonNull BaseResponse<DevConfigBean> response) {
+                        if(200==response.getCode()){
+                            if(response.getData()!=null){
+                                MApplication.saveConfigBean(response.getData());
                             }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());
                         }
                     }
 
@@ -147,33 +97,20 @@
     }
 
     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 +128,35 @@
         if (true) {
             return;
         }
-        RequestBaseObject<FaceUserParam> request = new RequestBaseObject<>();
-        FaceUserParam param = new FaceUserParam();
-        param.setLastTime(SpUtil.getString("LastTime"));
-        param.setType("0");
-        request.setParam(param);
+        DevLoginParam param = new DevLoginParam();
+        param.setCode(LMobileInfo.getDeviceUniqueId());
         //showLoading(true);
-        getRetrofitService(Apis.class).allFaceList(MApplication.getConfigBean().getLanguage(),MApplication.getCookie(),MApplication.getConfigBean().getShopId(),
-                        MApplication.getConfigBean().getGymId(), ParamsUtil.encodeRequestBody(request))
+        getRetrofitService(Apis.class).allFaceList( ParamsUtil.encodeRequestBody(param))
                 .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 +181,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 {
                         }
                     }
@@ -279,13 +222,12 @@
             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))
+            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()){
 
                             }
                         }
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/service/HeartbeatService.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/service/HeartbeatService.java
index dc10f61..f2d1b52 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/service/HeartbeatService.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/service/HeartbeatService.java
@@ -11,6 +11,7 @@
 import com.doumee.keyCabinet.MApplication;
 import com.doumee.keyCabinet.bean.DevConfigBean;
 import com.doumee.keyCabinet.event.DevConfigEvent;
+import com.doumee.keyCabinet.event.HeartEvent;
 import com.doumee.keyCabinet.http.Apis;
 import com.doumee.keyCabinet.http.param.BaseResponse;
 import com.doumee.keyCabinet.http.param.DevLoginParam;
@@ -86,43 +87,6 @@
     }
 
     private void sendPost() throws JSONException {
-        String url = SpUtil.getString("base_url",Apis.HTTP)+Apis.HEAT_HTTP;
-        RequestBaseObject<DevLoginParam> request = new RequestBaseObject<>();
-        DevLoginParam param = new DevLoginParam();
-        param.setDevCode(LMobileInfo.getDeviceUniqueId());
-        request.setParam(param);
-        Gson gson = new Gson();
-        String post = gson.toJson(request);
-        if(MApplication.getConfigBean().getShopId()==null||
-                MApplication.getConfigBean().getGymId()==null){
-            if(countTimer!=null){
-                countTimer.start();
-            }
-            return;
-        }
-        Map<String, String> headMap = new HashMap<>();
-        headMap.put("shopId", MApplication.getConfigBean().getShopId());
-        headMap.put("gymId",MApplication.getConfigBean().getGymId());
-        headMap.put("Cookie",MApplication.getCookie());
-        if(countTimer!=null){
-            countTimer.start();
-        }
-        OkHttpClientUtil.asynPost(url, post, headMap, new OkHttpClientUtil.IOkHttpClientCallBack() {
-            @Override
-            public void onSuccessful(String retBody) {
-                LogUtils.d("http==>",retBody);
-                Timber.tag("CountTimer==>").d("蹇冭烦 onSuccessful");
-                BaseResponse<DevConfigBean> resp = GsonTools.changeGsonToBean(retBody,
-                        new TypeToken<BaseResponse<DevConfigBean>>() {}.getType());
-                if(resp!=null&&resp.getRecord()!=null){
-                    EventBus.getDefault().post(new DevConfigEvent(resp.getRecord()));
-                }
-            }
-
-            @Override
-            public void onError() {
-                Timber.tag("CountTimer==>").d("蹇冭烦 鎶ラ敊");
-            }
-        });
+        EventBus.getDefault().post(new HeartEvent());
     }
 }
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/ParamsUtil.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/ParamsUtil.java
index fdff1c3..62e7c6b 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/ParamsUtil.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/ParamsUtil.java
@@ -55,12 +55,12 @@
     }
 
     public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
-    public static RequestBody encodeRequestBody(RequestBaseObject request){
+    public static RequestBody encodeRequestBody(Object request){
         RequestBody body = RequestBody.create(JSON, ParamsUtil.encodeAndZip(request));
         return body;
     }
 
-    public static String encodeAndZip(RequestBaseObject paramsMap) {
+    public static String encodeAndZip(Object paramsMap) {
         Gson gson = new Gson();
         String json = gson.toJson(paramsMap);
         return json;
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/update/UpdateUtil.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/update/UpdateUtil.java
index fa148c0..cd748b5 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/update/UpdateUtil.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/update/UpdateUtil.java
@@ -16,7 +16,6 @@
 import com.doumee.keyCabinet.http.param.BaseResponse;
 import com.doumee.keyCabinet.http.param.DevAppVersionParam;
 import com.doumee.keyCabinet.http.param.RequestBaseObject;
-import com.doumee.keyCabinet.utils.ParamsUtil;
 
 public class UpdateUtil {
     public static String newVerName = "";
@@ -70,29 +69,23 @@
     }
 
     private void getUpgradeInfo() {
-        if (true) {
-            return;
-        }
-        RequestBaseObject<DevAppVersionParam> request = new RequestBaseObject<>();
-        DevAppVersionParam param = new DevAppVersionParam();
-        param.setVersionCode(BuildConfig.VERSION_CODE);
-        param.setType("2");
-        request.setParam(param);
-        activity.getVM().getRetrofitService(Apis.class).getVersion(MApplication.getConfigBean().getLanguage(),MApplication.getCookie(),MApplication.getConfigBean().getShopId(),
-                        MApplication.getConfigBean().getGymId(), ParamsUtil.encodeRequestBody(request))
+        activity.getVM().getRetrofitService(Apis.class).getVersion()
                 .compose(RxUtils.schedulersTransformer())
                 .subscribe(new SimpleObserver<BaseResponse<AndroidVersionBean>>(activity.getVM().rxJavaGcManager) {
                     @Override
                     public void onNext(@NonNull BaseResponse<AndroidVersionBean> response) {
-                        if ("000000".equals(response.getErrorCode())) {
-                            if (response.getRecord()!=null) {
-                                versionCallBack.isNeedUpdate(true);
-                                AndroidVersionBean data = response.getRecord();
-                                upgradeurl=data.getUpdateUrl();
-                                updatelog=data.getUpdateContent();
-                                newVerName = response.getRecord().getVersionName();
-                                doNewVersionUpdate(true);
-                                return;
+                        if (200==response.getCode()) {
+                            if (response.getData()!=null) {
+                                AndroidVersionBean data = response.getData();
+                                if(data!=null&&data.getVersionNum()!=null&&data.getVersionNum()>BuildConfig.VERSION_CODE){
+                                    versionCallBack.isNeedUpdate(true);
+                                    upgradeurl=data.getFullFileUrl();
+                                    updatelog=data.getContent();
+                                    newVerName = response.getData().getVersionInfo();
+                                    doNewVersionUpdate(true);
+                                }else {
+                                    versionCallBack.isNeedUpdate(false);
+                                }
                             }else {
                                 versionCallBack.isNeedUpdate(false);
                             }
diff --git a/keyCabinet-android/app/src/main/res/layout/cabinet_rcv_item.xml b/keyCabinet-android/app/src/main/res/layout/cabinet_rcv_item.xml
index 8910c26..e523dfd 100644
--- a/keyCabinet-android/app/src/main/res/layout/cabinet_rcv_item.xml
+++ b/keyCabinet-android/app/src/main/res/layout/cabinet_rcv_item.xml
@@ -11,14 +11,14 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:padding="9dp"
-        android:background="@drawable/shape_r6_cabinet_unsel_bg">
+        android:background="@{data.isSelected?@drawable/shape_r6_cabinet_sel_bg:@drawable/shape_r6_cabinet_unsel_bg}">
 
         <TextView
             android:id="@+id/tv1"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:text="A02"
-            android:textColor="#ff111111"
+            android:text="@{data.cabinetName}"
+            android:textColor="@{data.text1Color}"
             android:textSize="24sp"
             app:layout_constraintTop_toTopOf="parent"
             app:layout_constraintStart_toStartOf="parent"
@@ -28,8 +28,8 @@
             android:id="@+id/tv2"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:text="鑻廇18812"
-            android:textColor="#ff279baa"
+            android:text="@{data.carCode}"
+            android:textColor="@{data.text2Color}"
             android:textSize="24sp"
             app:layout_constraintTop_toBottomOf="@+id/tv1"
             app:layout_constraintStart_toStartOf="parent"
diff --git a/keyCabinet-android/app/src/main/res/layout/face_activity.xml b/keyCabinet-android/app/src/main/res/layout/face_activity.xml
index 95e7dda..8781983 100644
--- a/keyCabinet-android/app/src/main/res/layout/face_activity.xml
+++ b/keyCabinet-android/app/src/main/res/layout/face_activity.xml
@@ -133,6 +133,7 @@
                 app:layout_constraintEnd_toEndOf="parent"/>
 
             <androidx.constraintlayout.widget.ConstraintLayout
+                android:id="@+id/cl_remind"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 app:layout_constraintTop_toBottomOf="@+id/tv_tip"
@@ -254,7 +255,7 @@
         </androidx.constraintlayout.widget.ConstraintLayout>
 
         <androidx.constraintlayout.widget.ConstraintLayout
-            android:id="@+id/cl_sk"
+            android:id="@+id/bt_sk"
             android:layout_width="match_parent"
             android:layout_height="75dp"
             android:layout_marginLeft="30dp"
@@ -359,6 +360,7 @@
 
         </androidx.constraintlayout.widget.ConstraintLayout>
 
+
         <androidx.constraintlayout.widget.ConstraintLayout
             android:id="@+id/cl_sj_sk"
             android:layout_width="match_parent"
@@ -398,6 +400,8 @@
             </LinearLayout>
         </androidx.constraintlayout.widget.ConstraintLayout>
 
+
+
         <androidx.constraintlayout.widget.ConstraintLayout
             android:id="@+id/cl_tip1"
             android:layout_width="match_parent"
@@ -405,6 +409,7 @@
             app:layout_constraintTop_toBottomOf="@+id/viewBack"
             app:layout_constraintBottom_toBottomOf="parent"
             android:layout_marginTop="36dp"
+            android:background="@color/white"
             android:visibility="gone">
 
             <ImageView
diff --git a/keyCabinet-android/app/src/main/res/layout/face_rcv_item.xml b/keyCabinet-android/app/src/main/res/layout/face_rcv_item.xml
index 942cdf6..3988d0a 100644
--- a/keyCabinet-android/app/src/main/res/layout/face_rcv_item.xml
+++ b/keyCabinet-android/app/src/main/res/layout/face_rcv_item.xml
@@ -48,7 +48,7 @@
                 android:layout_toRightOf="@id/circle_user"
                 android:layout_marginLeft="15dp"
                 android:textSize="18sp"
-                android:text="@{data.name}"
+                android:text="@{data.memberName}"
                 android:textColor="@color/white"
                 />
 
@@ -59,7 +59,7 @@
                 android:layout_toRightOf="@id/circle_user"
                 android:layout_marginLeft="15dp"
                 android:textSize="14sp"
-                android:text='@{"0".equals(data.type)?@string/face_hy:@string/face_xy}'
+                android:text='@{"1".equals(data.groupId)?@string/face_hy:@string/face_xy}'
                 android:textColor="@color/white"
                 android:layout_marginTop="20dp"
                 android:layout_below="@+id/text_user_name"/>
@@ -69,17 +69,6 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:visibility="gone" />
-
-            <TextView
-                android:id="@+id/text_user_ctime"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="@{data.editTime}"
-                android:textColor="@color/white"
-                android:visibility="visible"
-                android:layout_alignParentRight="true"
-                android:layout_alignBottom="@+id/circle_user"
-                android:layout_marginRight="12dp"/>
         </RelativeLayout>
 
     </RelativeLayout>
diff --git a/keyCabinet-android/app/src/main/res/layout/key_cabinet_activity.xml b/keyCabinet-android/app/src/main/res/layout/key_cabinet_activity.xml
index 507a8ef..857a499 100644
--- a/keyCabinet-android/app/src/main/res/layout/key_cabinet_activity.xml
+++ b/keyCabinet-android/app/src/main/res/layout/key_cabinet_activity.xml
@@ -62,13 +62,63 @@
             android:layout_marginRight="30dp"/>
 
         <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/cl_km"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            app:layout_constraintTop_toBottomOf="@+id/viewBack"
+            app:layout_constraintBottom_toBottomOf="parent"
+            android:layout_marginTop="36dp"
+            android:visibility="visible">
+
+            <androidx.recyclerview.widget.RecyclerView
+                android:id="@+id/rcv_km"
+                android:layout_width="match_parent"
+                android:layout_height="0dp"
+                app:layout_constraintTop_toTopOf="parent"
+                app:layout_constraintBottom_toTopOf="@+id/tv_km"
+                android:layout_marginBottom="30dp"
+                android:paddingLeft="30dp"
+                android:paddingRight="30dp"/>
+
+            <ImageView
+                android:id="@+id/im_empty"
+                android:layout_width="300dp"
+                android:layout_height="300dp"
+                android:src="@mipmap/default_nodata"
+                app:layout_constraintTop_toTopOf="@+id/rcv_km"
+                app:layout_constraintBottom_toBottomOf="@+id/rcv_km"
+                app:layout_constraintStart_toStartOf="@+id/rcv_km"
+                app:layout_constraintEnd_toEndOf="@+id/rcv_km"
+                android:visibility="@{model.emptyVisibility}"/>
+
+            <TextView
+                android:id="@+id/tv_km"
+                android:layout_width="match_parent"
+                android:layout_height="75dp"
+                android:text="寮�闂�"
+                android:textColor="@color/white"
+                android:textSize="24sp"
+                android:textStyle="bold"
+                android:gravity="center"
+                android:background="@drawable/shape_mb_bt_faile"
+                android:layout_marginLeft="30dp"
+                android:layout_marginRight="30dp"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:commandType="@{1}"
+                app:onClickCommand="@{model.myTypeCommand}"
+                android:layout_marginBottom="30dp"/>
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+        <androidx.constraintlayout.widget.ConstraintLayout
             android:id="@+id/cl_tip1"
             android:layout_width="match_parent"
             android:layout_height="0dp"
             app:layout_constraintTop_toBottomOf="@+id/viewBack"
             app:layout_constraintBottom_toBottomOf="parent"
             android:layout_marginTop="36dp"
-            android:visibility="gone">
+            android:visibility="gone"
+            android:background="@color/white">
 
             <ImageView
                 android:id="@+id/img_jg1"
@@ -106,6 +156,7 @@
                 app:layout_constraintEnd_toEndOf="parent"/>
 
             <TextView
+                android:id="@+id/bt_tip"
                 android:layout_width="match_parent"
                 android:layout_height="75dp"
                 android:text="閲嶆柊妫�娴�"
@@ -117,10 +168,9 @@
                 android:layout_marginLeft="30dp"
                 android:layout_marginRight="30dp"
                 app:layout_constraintBottom_toBottomOf="parent"
-                app:commandType="@{5}"
+                app:commandType="@{2}"
                 app:onClickCommand="@{model.myTypeCommand}"
                 android:layout_marginBottom="30dp"/>
-
 
         </androidx.constraintlayout.widget.ConstraintLayout>
 
@@ -131,7 +181,8 @@
             app:layout_constraintTop_toBottomOf="@+id/viewBack"
             app:layout_constraintBottom_toBottomOf="parent"
             android:layout_marginTop="36dp"
-            android:visibility="gone">
+            android:visibility="gone"
+            android:background="@color/white">
 
             <ImageView
                 android:id="@+id/img_tip2"
@@ -167,42 +218,6 @@
                 android:layout_marginTop="22dp"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintEnd_toEndOf="parent"/>
-
-        </androidx.constraintlayout.widget.ConstraintLayout>
-
-        <androidx.constraintlayout.widget.ConstraintLayout
-            android:id="@+id/cl_km"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            app:layout_constraintTop_toBottomOf="@+id/viewBack"
-            app:layout_constraintBottom_toBottomOf="parent"
-            android:layout_marginTop="36dp"
-            android:visibility="visible">
-
-            <androidx.recyclerview.widget.RecyclerView
-                android:id="@+id/rcv_km"
-                android:layout_width="match_parent"
-                android:layout_height="0dp"
-                app:layout_constraintTop_toTopOf="parent"
-                app:layout_constraintBottom_toTopOf="@+id/tv_km_1"
-                android:layout_marginBottom="30dp"/>
-
-            <TextView
-                android:id="@+id/tv_km_1"
-                android:layout_width="match_parent"
-                android:layout_height="75dp"
-                android:text="寮�闂�"
-                android:textColor="@color/white"
-                android:textSize="24sp"
-                android:textStyle="bold"
-                android:gravity="center"
-                android:background="@drawable/shape_r25_blue_bg"
-                android:layout_marginLeft="30dp"
-                android:layout_marginRight="30dp"
-                app:layout_constraintBottom_toBottomOf="parent"
-                app:commandType="@{6}"
-                app:onClickCommand="@{model.myTypeCommand}"
-                android:layout_marginBottom="30dp"/>
 
         </androidx.constraintlayout.widget.ConstraintLayout>
 
diff --git a/keyCabinet-android/app/src/main/res/layout/main_activity.xml b/keyCabinet-android/app/src/main/res/layout/main_activity.xml
index 85e9687..47ce15b 100644
--- a/keyCabinet-android/app/src/main/res/layout/main_activity.xml
+++ b/keyCabinet-android/app/src/main/res/layout/main_activity.xml
@@ -69,8 +69,7 @@
             android:textStyle="bold"
             android:layout_marginLeft="56dp"
             android:layout_marginRight="56dp"
-            app:commandType="@{1}"
-            app:onClickCommand="@{model.myTypeCommand}"/>
+            />
 
         <TextView
             android:id="@+id/tv_time"
@@ -194,8 +193,7 @@
             app:layout_constraintStart_toStartOf="parent"
             android:layout_marginLeft="30dp"
             android:layout_marginBottom="22dp"
-            app:commandType="@{4}"
-            app:onClickCommand="@{model.myTypeCommand}"/>
+            />
 
         <TextView
             android:id="@+id/tv_version"
@@ -263,5 +261,97 @@
 
         </RelativeLayout>
 
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/cl_tip"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:background="@color/white"
+            android:visibility="gone">
+
+            <View
+                android:id="@+id/viewBack"
+                android:layout_width="0dp"
+                android:layout_height="60dp"
+                app:layout_constraintTop_toTopOf="parent"
+                android:layout_marginTop="22dp"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintEnd_toEndOf="@+id/tv_back"
+                android:layout_marginRight="-22dp"
+                android:background="@drawable/shape_r20_back"
+                app:commandType="@{4}"
+                app:onClickCommand="@{model.myTypeCommand}"/>
+
+            <ImageView
+                android:id="@+id/im_back"
+                android:layout_width="14dp"
+                android:layout_height="22dp"
+                android:src="@mipmap/ic_back"
+                app:layout_constraintTop_toTopOf="@+id/viewBack"
+                app:layout_constraintBottom_toBottomOf="@+id/viewBack"
+                app:layout_constraintStart_toStartOf="@+id/viewBack"
+                android:layout_marginLeft="22dp"/>
+
+            <TextView
+                android:id="@+id/tv_back"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="杩斿洖"
+                android:textStyle="bold"
+                android:textColor="#ffffffff"
+                android:textSize="26sp"
+                android:layout_marginLeft="6dp"
+                app:layout_constraintTop_toTopOf="@+id/viewBack"
+                app:layout_constraintBottom_toBottomOf="@+id/viewBack"
+                app:layout_constraintLeft_toRightOf="@+id/im_back"/>
+
+            <TextView
+                android:id="@+id/tv_djs"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="10s"
+                android:textColor="#ff279baa"
+                android:textSize="24sp"
+                app:layout_constraintTop_toTopOf="parent"
+                android:layout_marginTop="33dp"
+                app:layout_constraintEnd_toEndOf="parent"
+                android:layout_marginRight="30dp"/>
+
+            <ImageView
+                android:id="@+id/img_tip2"
+                android:layout_width="300dp"
+                android:layout_height="205dp"
+                android:src="@mipmap/ic_notclose_key"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/viewBack"
+                android:layout_marginTop="67dp"/>
+
+            <TextView
+                android:id="@+id/tv_tip2_1"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="鏌滈棬鏈叧闂�"
+                android:textColor="#ff111111"
+                android:textSize="33sp"
+                android:textStyle="bold"
+                app:layout_constraintTop_toBottomOf="@+id/img_tip2"
+                android:layout_marginTop="18dp"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"/>
+
+            <TextView
+                android:id="@+id/tv_tip2_2"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="璇峰叧闂煖闂ㄥ悗鍙栬繕閽ュ寵"
+                android:textColor="#ff666666"
+                android:textSize="24sp"
+                app:layout_constraintTop_toBottomOf="@+id/tv_tip2_1"
+                android:layout_marginTop="22dp"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"/>
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
     </androidx.constraintlayout.widget.ConstraintLayout>
 </layout>
\ No newline at end of file
diff --git a/keyCabinet-android/app/src/main/res/layout/manage_login_activity.xml b/keyCabinet-android/app/src/main/res/layout/manage_login_activity.xml
index c2b7c40..ef21c77 100644
--- a/keyCabinet-android/app/src/main/res/layout/manage_login_activity.xml
+++ b/keyCabinet-android/app/src/main/res/layout/manage_login_activity.xml
@@ -197,7 +197,7 @@
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:background="@color/white"
-            android:visibility="visible">
+            android:visibility="gone">
 
             <pl.droidsonroids.gif.GifImageView
                 android:id="@+id/img_progress"
diff --git a/keyCabinet-android/app/src/main/res/layout/ui_update_dialog.xml b/keyCabinet-android/app/src/main/res/layout/ui_update_dialog.xml
index a6dc7f2..d43f87a 100644
--- a/keyCabinet-android/app/src/main/res/layout/ui_update_dialog.xml
+++ b/keyCabinet-android/app/src/main/res/layout/ui_update_dialog.xml
@@ -83,8 +83,6 @@
             app:layout_constraintLeft_toRightOf="@+id/layout_not_update"
             app:layout_constraintRight_toRightOf="parent"
             android:layout_marginLeft="15dp"
-            app:commandType="@{4}"
-            app:onClickCommand="@{model.myTypeCommand}"
             android:layout_marginRight="30dp"/>
 
 
diff --git a/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/default_nodata.jpg b/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/default_nodata.jpg
new file mode 100644
index 0000000..f7dfa90
--- /dev/null
+++ b/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/default_nodata.jpg
Binary files differ
diff --git a/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/default_nodata.png b/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/default_nodata.png
deleted file mode 100644
index 2f80a30..0000000
--- a/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/default_nodata.png
+++ /dev/null
Binary files differ
diff --git a/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/ic_jiujingjiance.png b/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/ic_jiujingjiance.png
new file mode 100644
index 0000000..43c4e9a
--- /dev/null
+++ b/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/ic_jiujingjiance.png
Binary files differ
diff --git a/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/ic_notclose.png b/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/ic_notclose.png
new file mode 100644
index 0000000..ee71010
--- /dev/null
+++ b/keyCabinet-android/app/src/main/res/mipmap-xxhdpi/ic_notclose.png
Binary files differ
diff --git a/keyCabinet-android/app/src/main/res/values/strings.xml b/keyCabinet-android/app/src/main/res/values/strings.xml
index e9c5f75..e02f541 100644
--- a/keyCabinet-android/app/src/main/res/values/strings.xml
+++ b/keyCabinet-android/app/src/main/res/values/strings.xml
@@ -102,7 +102,7 @@
     <string name="close">鍏抽棴</string>
     <string name="back_home">杩斿洖棣栭〉</string>
     <string name="deleted">鍒犻櫎</string>
-    <string name="time_djs">%1$ds 鍚庤繑鍥為椤�</string>
+    <string name="time_djs">%1$ds</string>
     <string name="week7">鏄熸湡澶�</string>
     <string name="week1">鏄熸湡涓�</string>
     <string name="week2">鏄熸湡浜�</string>
@@ -115,7 +115,7 @@
     <string name="main_tip4">妯″瀷鍔犺浇鎴愬姛锛屾杩庝娇鐢�</string>
     <string name="main_tip5">妯″瀷鍔犺浇澶辫触锛岃灏濊瘯閲嶅惎搴旂敤</string>
     <string name="face_hy">浼氬憳</string>
-    <string name="face_xy">瀛﹀憳</string>
+    <string name="face_xy">绠$悊鍛�</string>
     <string name="guide_2">璁惧鏈櫥褰�</string>
     <string name="face_login">浜鸿劯璇嗗埆涓�</string>
     <string name="face_tip1">璇锋瑙嗗墠鏂癸紝涓嶈閬尅鑴搁儴</string>
diff --git a/keyCabinet-android/app/src/main/res/values/styles.xml b/keyCabinet-android/app/src/main/res/values/styles.xml
index 67f4aff..a511123 100644
--- a/keyCabinet-android/app/src/main/res/values/styles.xml
+++ b/keyCabinet-android/app/src/main/res/values/styles.xml
@@ -107,4 +107,10 @@
         <item name="android:background">@android:color/transparent</item>
         <item name="android:windowBackground">@android:color/transparent</item>
     </style>
+    <style name="style_tip1">
+        <item name="android:textColor">#FF279BAA</item>
+    </style>
+    <style name="style_tip2">
+        <item name="android:textColor">#FF111111</item>
+    </style>
 </resources>
\ No newline at end of file

--
Gitblit v1.9.3