weimingfei
2 天以前 fab8c02a0aa8f941a507bdcb3e4d72deb6eb2242
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainVM.java
@@ -10,32 +10,42 @@
import com.doumee.keyCabinet.MApplication;
import com.doumee.keyCabinet.R;
import com.doumee.keyCabinet.bean.ConfigBean;
import com.doumee.keyCabinet.bean.CabinetFaceBean;
import com.doumee.keyCabinet.bean.DevConfigBean;
import com.doumee.keyCabinet.bean.FaceUserBean;
import com.doumee.keyCabinet.bean.RecyclerBraceletBean;
import com.doumee.keyCabinet.bean.KeyCabinetBean;
import com.doumee.keyCabinet.bean.LoginBean;
import com.doumee.keyCabinet.bean.ManageKeyCabinetBean;
import com.doumee.keyCabinet.dao.CabinetGridDo;
import com.doumee.keyCabinet.dao.DaoManager;
import com.doumee.keyCabinet.event.DevConfigEvent;
import com.doumee.keyCabinet.event.ReLoginEvent;
import com.doumee.keyCabinet.event.HttpEvent;
import com.doumee.keyCabinet.http.Apis;
import com.doumee.keyCabinet.http.param.BaseResponse;
import com.doumee.keyCabinet.http.param.CloseGridParam;
import com.doumee.keyCabinet.http.param.DevErrInfoParam;
import com.doumee.keyCabinet.http.param.DevLoginParam;
import com.doumee.keyCabinet.http.param.FaceUserParam;
import com.doumee.keyCabinet.http.param.RecyclerSHParam;
import com.doumee.keyCabinet.http.param.RequestBaseObject;
import com.doumee.keyCabinet.ui.guide.GuideActivity;
import com.doumee.keyCabinet.http.param.TimeOutUnCloseAlarmParam;
import com.doumee.keyCabinet.utils.BraceletLogUtils;
import com.doumee.keyCabinet.utils.LMobileInfo;
import com.doumee.keyCabinet.utils.LanguageUtil;
import com.doumee.keyCabinet.utils.ParamsUtil;
import com.doumee.keyCabinet.utils.i485.SportUtils;
import com.doumee.lib_coremodel.base.BaseModel;
import com.doumee.lib_coremodel.base.DataViewModel;
import com.doumee.lib_coremodel.http.rxJava.SimpleObserver;
import com.doumee.lib_coremodel.http.utils.GsonTools;
import com.doumee.lib_coremodel.http.utils.RxUtils;
import com.doumee.lib_coremodel.util.SpUtil;
import com.doumee.lib_coremodel.util.StringUtil;
import org.greenrobot.eventbus.EventBus;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import okhttp3.Headers;
@@ -44,8 +54,10 @@
public class MainVM extends DataViewModel {
    public ObservableField<String> dayObs = new ObservableField<>("");
    public ObservableField<String> timeObs = new ObservableField<>("");
    public ObservableField<String> infoObs = new ObservableField<>("");
    private MutableLiveData<List<FaceUserBean>> faceLD = new MutableLiveData<>();
    private MutableLiveData<DevConfigBean> confidLD = new MutableLiveData<>();
    @ViewModelInject
    public MainVM(@NonNull Application application, BaseModel model) {
@@ -57,123 +69,108 @@
        doAction(type);
    }
    private boolean isReq = false;
    public void resetReq(){
        isReq = false;
    }
    public void devLogin(){
        if (true) {
            return;
        }
        //清除登录信息
        if(isReq){
            return;
        }
        isReq = true;
        MApplication.setCookie("");
        MApplication.saveConfigBean(new ConfigBean());
        RequestBaseObject<DevLoginParam> request = new RequestBaseObject<>();
        DevLoginParam param = new DevLoginParam();
        param.setDevCode(LMobileInfo.getDeviceUniqueId());
        request.setParam(param);
        getRetrofitService(Apis.class).devLogin(0,
                        ParamsUtil.encodeRequestBody(request))
        MApplication.saveConfigBean(new DevConfigBean());
        EventBus.getDefault().post(new HttpEvent("获取钥匙柜基本信息-请求"));
        getRetrofitService(Apis.class).getCabinetInfoForDriver(LMobileInfo.getDeviceUniqueId())
                .compose(RxUtils.schedulersTransformer())
                .subscribe(new SimpleObserver<Response<BaseResponse<DevConfigBean>>>(rxJavaGcManager) {
                .subscribe(new SimpleObserver<BaseResponse<DevConfigBean>>(rxJavaGcManager) {
                    @Override
                    public void onNext(@NonNull Response<BaseResponse<DevConfigBean>> base) {
                        Headers headers = base.headers();//我们通过Response的headers对象获取到响应头信息。
                        List<String> values = headers.values("Set-Cookie");//通过“Set-Cookie”字段获取到服务器返回的Cookie信息
                        if(values!=null&&values.size()>0){
                            MApplication.setCookie(values.get(0));
                        }
                        BaseResponse<DevConfigBean> response = base.body();
                        if(response==null){
                            toast(MApplication.mContext.getString(R.string.guide_toast_1));
                        }
                        if("000000".equals(response.getErrorCode())){
                            if(response.getRecord()!=null){
                                if("0".equals(response.getRecord().getStatus())){
                                    startActivity(GuideActivity.class);
                                    finish();
                                    return;
                    public void onNext(@NonNull BaseResponse<DevConfigBean> response) {
                        EventBus.getDefault().post(new HttpEvent("获取钥匙柜基本信息-返回:"+ GsonTools.changeGsonToJson(response)));
                        if(200==response.getCode()){
                            if(response.getData()!=null){
                                MApplication.saveConfigBean(response.getData());
                                confidLD.setValue(response.getData());
                                if(response.getData().getCabinetGridInfoVOList()!=null){
                                    updateDao(response.getData().getCabinetGridInfoVOList());
                                }
                                DevConfigBean devConfigBean = response.getRecord();
                                ConfigBean configBean = new ConfigBean();
                                configBean.setShopId(devConfigBean.getShopId());
                                configBean.setCapacity(devConfigBean.getCapacity());
                                configBean.setMoney(devConfigBean.getMoney());
                                configBean.setCategory(devConfigBean.getCategory());
                                configBean.setCurNum(devConfigBean.getCurNum());
                                configBean.setName(devConfigBean.getName());
                                configBean.setGymId(devConfigBean.getVenueId());
                                configBean.setLanguage(devConfigBean.getLanguage());
                                String language = devConfigBean.getLanguage();
                                if(!TextUtils.isEmpty(language)){
                                    //转小写
                                    language = language.toLowerCase();
                                    if("zh".equals(language)){
                                        MApplication.nLan = 0;
                                    }else {
                                        MApplication.nLan = 1;
                                    }
                                }
                                SpUtil.saveString("language",language);
                                LanguageUtil.changeAppLanguage(MApplication.mContext,language);
                                MApplication.saveConfigBean(configBean);
                            }else {
                                toast(MApplication.mContext.getString(R.string.guide_toast_1));
                            }
                        }else if("33010101".equals(response.getErrorCode())) {
                            toast(MApplication.mContext.getString(R.string.guide_toast_2)+
                                    MApplication.mContext.getString(R.string.symbol_colon)+param.getDevCode());
                        }else {
                            toast(response.getErrorMsg());
                            toast(response.getMessage());
                        }
                    }
                    @Override
                    public void onError(@NonNull Throwable e) {
                        toast(e.getMessage());
                        EventBus.getDefault().post(new HttpEvent("获取钥匙柜基本信息-错误:"+ e.getMessage()));
                    }
                    @Override
                    public void onComplete() {
                        isReq = false;
                    }
                });
    }
    private void updateDao(List<ManageKeyCabinetBean> beans){
        List<CabinetGridDo> gridDos = DaoManager.getCabinetGridDao().loadAll();
        HashMap<String,CabinetGridDo> oldMap = new HashMap<>();
        for(CabinetGridDo d:gridDos){
            oldMap.put(d.getGridKey(),d);
        }
        List<CabinetGridDo> addList = new ArrayList<>();
        List<CabinetGridDo> updateList = new ArrayList<>();
        for(ManageKeyCabinetBean bean:beans){
            String key = SportUtils.intToHex(Integer.parseInt(bean.getBoardCode()))+SportUtils.intToHex(Integer.parseInt(bean.getChannelCode()));
            if(oldMap.containsKey(key)){
                //修改
                CabinetGridDo gridDo = oldMap.get(key);
                gridDo.setGridId(bean.getId());
                gridDo.setCabinetName(bean.getCode());
                gridDo.setKeyCode(bean.getKeyCode());
                gridDo.setUpdateTime(StringUtil.DateToStr(new Date()));
                gridDo.setBindStatus(bean.getBindStatus());
                gridDo.setGridStatus(bean.getStatus());
                gridDo.setKeyStatus(bean.getKeyStatus());
                gridDo.setWorkingStatus(bean.getWorkingStatus());
                updateList.add(gridDo);
            }else {
                //新增
                CabinetGridDo gridDo = new CabinetGridDo();
                gridDo.setGridId(bean.getId());
                gridDo.setCabinetName(bean.getCode());
                gridDo.setGridKey(key);
                gridDo.setKeyCode(bean.getKeyCode());
                gridDo.setBindStatus(bean.getBindStatus());
                gridDo.setGridStatus(bean.getStatus());
                gridDo.setKeyStatus(bean.getKeyStatus());
                gridDo.setWorkingStatus(bean.getWorkingStatus());
                gridDo.setUpdateTime(StringUtil.DateToStr(new Date()));
                addList.add(gridDo);
            }
        }
        if(addList.size()>0){
            DaoManager.getCabinetGridDao().insert(addList);
        }
        if(updateList.size()>0){
            CabinetGridDo[] upList = new CabinetGridDo[updateList.size()];
            for(int i=0;i<updateList.size();i++){
                upList[i] = updateList.get(i);
            }
            DaoManager.getCabinetGridDao().update(upList);
        }
    }
    public void devHeart(){
        if (true) {
        if (MApplication.getConfigBean().getId()==null) {
            return;
        }
        RequestBaseObject<DevLoginParam> request = new RequestBaseObject<>();
        DevLoginParam param = new DevLoginParam();
        param.setDevCode(LMobileInfo.getDeviceUniqueId());
        request.setParam(param);
        getRetrofitService(Apis.class).heart(MApplication.getConfigBean().getLanguage(),MApplication.getCookie(),MApplication.getConfigBean().getShopId(),
                        MApplication.getConfigBean().getGymId(),ParamsUtil.encodeRequestBody(request))
        getRetrofitService(Apis.class).heart(MApplication.getConfigBean().getId())
                .compose(RxUtils.schedulersTransformer())
                .subscribe(new SimpleObserver<BaseResponse<DevConfigBean>>(rxJavaGcManager) {
                .subscribe(new SimpleObserver<BaseResponse>(rxJavaGcManager) {
                    @Override
                    public void onNext(@NonNull BaseResponse<DevConfigBean> response) {
                        if(response!=null&&"000000".equals(response.getErrorCode())){
                            if(response.getRecord()!=null){
                                EventBus.getDefault().post(new DevConfigEvent(response.getRecord()));
                            }
                        }else if("00016".equals(response.getErrorCode())||"00068".equals(response.getErrorCode())) {
                            EventBus.getDefault().post(new ReLoginEvent());
                        }else {
                    public void onNext(@NonNull BaseResponse response) {
                        }
                    }
                    @Override
                    public void onError(@NonNull Throwable e) {
                        System.out.println(e.getMessage());
                    }
                    @Override
@@ -191,26 +188,33 @@
        if (true) {
            return;
        }
        RequestBaseObject<FaceUserParam> request = new RequestBaseObject<>();
        FaceUserParam param = new FaceUserParam();
        param.setLastTime(SpUtil.getString("LastTime"));
        param.setType("0");
        request.setParam(param);
        //showLoading(true);
        getRetrofitService(Apis.class).allFaceList(MApplication.getConfigBean().getLanguage(),MApplication.getCookie(),MApplication.getConfigBean().getShopId(),
                        MApplication.getConfigBean().getGymId(), ParamsUtil.encodeRequestBody(request))
        getRetrofitService(Apis.class).allFaceList( LMobileInfo.getDeviceUniqueId())
                .compose(RxUtils.schedulersTransformer())
                .subscribe(new SimpleObserver<BaseResponse<FaceUserBean>>(rxJavaGcManager) {
                .subscribe(new SimpleObserver<BaseResponse<CabinetFaceBean>>(rxJavaGcManager) {
                    @Override
                    public void onNext(@NonNull BaseResponse<FaceUserBean> response) {
                        if("000000".equals(response.getErrorCode())){
                    public void onNext(@NonNull BaseResponse<CabinetFaceBean> response) {
                        if(200==response.getCode()){
                            //查询数据
                            if(response.getRecordList()!=null&&response.getRecordList().size()>0){
                                faceLD.setValue(response.getRecordList());
                            if(response.getData()!=null){
                                CabinetFaceBean faceBean = response.getData();
                                List<FaceUserBean> datas = new ArrayList<>();
                                if(faceBean!=null&&faceBean.getAutoFaceList()!=null){
                                    for(FaceUserBean bean:faceBean.getAutoFaceList()){
                                        bean.setGroupId("1");
                                    }
                                    datas.addAll(faceBean.getAutoFaceList());
                                }
                                if(faceBean!=null&&faceBean.getDriverFaceList()!=null){
                                    for(FaceUserBean bean:faceBean.getDriverFaceList()){
                                        bean.setGroupId("0");
                                    }
                                    datas.addAll(faceBean.getDriverFaceList());
                                }
                                faceLD.setValue(datas);
                            }
                        }else if("00016".equals(response.getErrorCode())||"00068".equals(response.getErrorCode())) {
                            EventBus.getDefault().post(new ReLoginEvent());
                        }else {
                        }
                    }
@@ -235,16 +239,13 @@
        param.setDevCode(LMobileInfo.getDeviceUniqueId());
        param.setErrInfo(bean.getValue());
        request.setParam(param);
        getRetrofitService(Apis.class).upErrInfo(MApplication.getConfigBean().getLanguage(),MApplication.getCookie(),MApplication.getConfigBean().getShopId(),
                        MApplication.getConfigBean().getGymId(), ParamsUtil.encodeRequestBody(request))
        getRetrofitService(Apis.class).upErrInfo(ParamsUtil.encodeRequestBody(request))
                .compose(RxUtils.schedulersTransformer())
                .subscribe(new SimpleObserver<BaseResponse>(rxJavaGcManager) {
                    @Override
                    public void onNext(@NonNull BaseResponse response) {
                        if("000000".equals(response.getErrorCode())){
                        if(200==response.getCode()){
                            SpUtil.remoreString(bean.getKey());
                        }else if("00016".equals(response.getErrorCode())||"00068".equals(response.getErrorCode())) {
                            EventBus.getDefault().post(new ReLoginEvent());
                        }else {
                        }
                    }
@@ -261,45 +262,89 @@
                });
    }
    /**
     * 上传手环日志
     */
    public void upBraceletLog() {
        if (true) {
            return;
    public List<CabinetGridDo> getOpenGrids(){
        return DaoManager.getCabinetGridDao().getOpenGrids();
    }
    public void insertGrids(List<CabinetGridDo> addList){
        if(addList.size()>0){
            DaoManager.getCabinetGridDao().insert(addList);
        }
        if(BraceletLogUtils.COUNT>100||(System.currentTimeMillis() - BraceletLogUtils.lastTime > 600000)){
            BraceletLogUtils.lastTime = System.currentTimeMillis();
            String text = BraceletLogUtils.getAllLog();
            if(TextUtils.isEmpty(text)){
                return;
        addInfo("更新库数据:新增" + addList.size());
    }
    public void updateGrids(List<CabinetGridDo> updateList){
        if(updateList.size()>0){
            CabinetGridDo[] upList = new CabinetGridDo[updateList.size()];
            for(int i=0;i<updateList.size();i++){
                upList[i] = updateList.get(i);
            }
            RequestBaseObject<DevErrInfoParam> request = new RequestBaseObject<>();
            DevErrInfoParam param = new DevErrInfoParam();
            param.setDevCode(LMobileInfo.getDeviceUniqueId());
            param.setErrInfo(text);
            request.setParam(param);
            getRetrofitService(Apis.class).upErrInfo(MApplication.getConfigBean().getLanguage(),MApplication.getCookie(),MApplication.getConfigBean().getShopId(),
                            MApplication.getConfigBean().getGymId(), ParamsUtil.encodeRequestBody(request))
                    .compose(RxUtils.schedulersTransformer())
                    .subscribe(new SimpleObserver<BaseResponse>(rxJavaGcManager) {
                        @Override
                        public void onNext(@NonNull BaseResponse response) {
                            if("000000".equals(response.getErrorCode())){
                            }
                        }
                        @Override
                        public void onError(@NonNull Throwable e) {
                        }
                        @Override
                        public void onComplete() {
                        }
                    });
            DaoManager.getCabinetGridDao().update(upList);
        }
        addInfo("更新库数据:修改" + updateList.size());
    }
    public void timeOutUnCloseAlarm(CabinetGridDo gridDo){
        TimeOutUnCloseAlarmParam param = new TimeOutUnCloseAlarmParam();
        LoginBean loginBean = MApplication.getLoginBean();
        param.setCabinetId(MApplication.getConfigBean().getId());
        param.setMemberId(loginBean.getMemberId());
        param.setGridId(gridDo.getGridId());
        getRetrofitService(Apis.class).timeOutUnCloseAlarm(ParamsUtil.encodeRequestBody(param))
                .compose(RxUtils.schedulersTransformer())
                .subscribe(new SimpleObserver<BaseResponse>(rxJavaGcManager) {
                    @Override
                    public void onNext(@NonNull BaseResponse response) {
                        toast("超时未关门接口调用成功");
                    }
                    @Override
                    public void onError(@NonNull Throwable e) {
                    }
                    @Override
                    public void onComplete() {
                    }
                });
    }
    public void closeGrid(CabinetGridDo gridDo){
        CloseGridParam param = new CloseGridParam();
        LoginBean loginBean = MApplication.getLoginBean();
        param.setCabinetId(MApplication.getConfigBean().getId());
        param.setAuthType(loginBean.getAuthType());
        param.setMemberId(loginBean.getMemberId());
        param.setGridId(gridDo.getGridId());
        param.setKeyStatus(!TextUtils.isEmpty(gridDo.getCurKeyCode())?1:2);
        getRetrofitService(Apis.class).closeGrid(ParamsUtil.encodeRequestBody(param))
                .compose(RxUtils.schedulersTransformer())
                .subscribe(new SimpleObserver<BaseResponse>(rxJavaGcManager) {
                    @Override
                    public void onNext(@NonNull BaseResponse response) {
                        toast("关门接口调用成功");
                    }
                    @Override
                    public void onError(@NonNull Throwable e) {
                    }
                    @Override
                    public void onComplete() {
                    }
                });
    }
    public MutableLiveData<DevConfigBean> getConfidLD() {
        return confidLD;
    }
    public void addInfo(String info){
        String s = infoObs.get();
        s+=info+"\n";
        infoObs.set(s);
    }
}