LoginActivity.java 9.96 KB
package com.huaheng.mobilewms;

import android.app.Activity;
import android.app.DatePickerDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.text.InputType;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView;


import com.huaheng.mobilewms.bean.ApkInfo;
import com.huaheng.mobilewms.bean.CompanyInfo;
import com.huaheng.mobilewms.bean.Constant;
import com.huaheng.mobilewms.bean.LoginBean;
import com.huaheng.mobilewms.bean.ModulesBean;
import com.huaheng.mobilewms.bean.TokenBean;
import com.huaheng.mobilewms.bean.UserBean;
import com.huaheng.mobilewms.bean.WarehouseBean;
import com.huaheng.mobilewms.download.DownloadUtils;
import com.huaheng.mobilewms.https.HttpInterface;
import com.huaheng.mobilewms.https.Subscribers.ProgressSubscriber;
import com.huaheng.mobilewms.https.Subscribers.SubscriberOnNextListener;
import com.huaheng.mobilewms.util.SpeechUtil;
import com.huaheng.mobilewms.util.WMSLog;
import com.huaheng.mobilewms.util.WMSUtils;

import java.util.ArrayList;
import java.util.stream.Collectors;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import rx.Subscriber;


public class LoginActivity extends Activity{

    @BindView(R.id.userEdit)
    EditText userEdit;
    @BindView(R.id.passwordEdit)
    EditText passwordEdit;
    @BindView(R.id.loginBtn)
    Button loginBtn;
    @BindView(R.id.eyeImage)
    ImageView eyeImage;
    @BindView(R.id.warehouseSpinner)
    Spinner warehouseSpinner;
    @BindView(R.id.logo)
    ImageView logoImage;
    private Context mContext;
    private boolean passwordType = false;
    private int count = 0;
    private int MAX_COUNT = 3;
    private String userName;
    private String password;
    private ArrayList <WarehouseBean> mWarehouseBeanList;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        ButterKnife.bind(this);
        mContext = this;
        initView();
        WMSUtils.acquireWakeLock(WMSApplication.getContext());
        WMSUtils.requestAppPermission(LoginActivity.this);
        HttpInterface.getInsstance().reset();
        getUpdateApkInfo();
        getWarehouse();
    }

    @Override
    protected void onResume() {
        super.onResume();
    }

    private void initView() {
        String userName = WMSUtils.getData(Constant.LOGIN_NAME);
        if (userName != null) {
            userEdit.setText(userName);
            WMSUtils.requestFocus(passwordEdit);
        }
        userEdit.setText("admin");
        passwordEdit.setText("admin123");
        passwordEdit.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) {
                login();
                return false;
            }
        });
        userEdit.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) {
                getWarehouse();
                return false;
            }
        });
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_MENU) {
            WMSUtils.startActivity(mContext, NetworkSettingActivity.class);
        } else if (keyCode == KeyEvent.KEYCODE_BACK) {
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    @OnClick({R.id.eyeImage, R.id.loginBtn, R.id.setNetwork})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.eyeImage:
                if (passwordType) {
                    passwordEdit.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD | InputType.TYPE_CLASS_TEXT);
                    passwordType = false;
                    eyeImage.setImageResource(R.mipmap.eye);
                } else {
                    passwordEdit.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
                    passwordType = true;
                    eyeImage.setImageResource(R.mipmap.eyeoff);
                 }
                break;
            case R.id.loginBtn:
                login();
                break;
            case R.id.setNetwork:
                WMSUtils.startActivity(mContext, NetworkSettingActivity.class);
                break;
        }
    }

    public void login() {
        userName = userEdit.getText().toString();
        password = passwordEdit.getText().toString();
        if (TextUtils.isEmpty(userName)) {
            WMSUtils.showShort(mContext.getString(R.string.enter_username));
            WMSUtils.requestFocus(userEdit);
            return;
        }

        if (TextUtils.isEmpty(password)) {
            WMSUtils.showShort(mContext.getString(R.string.enter_password));
            WMSUtils.requestFocus(passwordEdit);
            return;
        }
        HttpInterface.getInsstance().reset();
        WarehouseBean warehouseBean = mWarehouseBeanList.stream()
                .filter(o -> o.getName().equals(warehouseSpinner.getSelectedItem())).findAny().orElse(null);
        HttpInterface.getInsstance().login(new ProgressSubscriber <LoginBean>(mContext, loginListener), userName, password, warehouseBean.getCode());
    }

    SubscriberOnNextListener loginListener = new SubscriberOnNextListener <LoginBean>() {
        @Override
        public void onNext(LoginBean loginBean) {
            SpeechUtil.getInstance(mContext).speech(mContext.getString(R.string.login_success));
            WMSUtils.saveData(Constant.LOGIN_NAME, userEdit.getText().toString());
            WMSUtils.saveData(Constant.CURREN_WAREHOUSE, loginBean.getWarehouseCode());
            WMSUtils.saveData(Constant.USERID, String.valueOf(loginBean.getUserId()));
            WMSApplication.setToken(loginBean.getAccess_token());
            getCompanyInfo(loginBean.getUserId(), loginBean.getWarehouseCode());
            WMSUtils.startActivity(mContext, MainActivity.class);
        }

        @Override
        public void onError(String str) {
//            passwordEdit.setText("");
        }
    };

    private void getWarehouse() {
        userName = userEdit.getText().toString();
        HttpInterface.getInsstance().getWarehouseByUserCode(new Subscriber <ArrayList <WarehouseBean>>() {
            @Override
            public void onCompleted() {

            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onNext(ArrayList <WarehouseBean> warehouseBeans) {
                mWarehouseBeanList = warehouseBeans;
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(mContext, android.R.layout.simple_spinner_item,
                        warehouseBeans.stream().map(WarehouseBean::getName).collect(Collectors.toList()));
                adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                warehouseSpinner.setAdapter(adapter);
                String warehouseCode = WMSUtils.getData(Constant.CURREN_WAREHOUSE);
                if(WMSUtils.isNotEmpty(warehouseCode)) {
                    for(int i=0; i< mWarehouseBeanList.size(); i++) {
                        String warehouseCode2 = mWarehouseBeanList.get(i).getCode();
                        if(warehouseCode2.equals(warehouseCode)) {
                            warehouseSpinner.setSelection(i);
                            break;
                        }
                    }
                }
            }
        }, userName);
    }

    private void getCompanyInfo(int userId, String warehouseCode) {
        HttpInterface.getInsstance().getCompanyInfo(new Subscriber <ArrayList <CompanyInfo>>() {
            @Override
            public void onCompleted() {

            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onNext(ArrayList <CompanyInfo> companyInfos) {
                CompanyInfo companyinfo = companyInfos.get(0);
                String companyName = companyinfo.getCompanyName();
                String companyCode = companyinfo.getCompanyCode();
                int companyId = companyinfo.getCompanyId();
                String currentCompanyName = WMSUtils.getData(Constant.CURREN_COMPANY_NAME);
                String currentCompanyCode = WMSUtils.getData(Constant.CURREN_COMPANY_CODE);
                String currentCompanyId = WMSUtils.getData(Constant.CURREN_COMPANY_ID);
                if (WMSUtils.isEmpty(currentCompanyName)) {
                    WMSUtils.saveData(Constant.CURREN_COMPANY_NAME, companyName);
                }
                if (WMSUtils.isEmpty(currentCompanyCode)) {
                    WMSUtils.saveData(Constant.CURREN_COMPANY_CODE, companyCode);
                }
                if (WMSUtils.isEmpty(currentCompanyId)) {
                    WMSUtils.saveData(Constant.CURREN_COMPANY_ID, String.valueOf(companyId));
                }
            }
        }, userId, warehouseCode);
    }

    private void getUpdateApkInfo() {
        HttpInterface.getInsstance().getUpdateApkInfo(new Subscriber<ApkInfo>() {
            @Override
            public void onCompleted() {

            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onNext(ApkInfo apkInfo) {
                String url = apkInfo.getUrl();
                String md5 = apkInfo.getMd5();
                int version  = apkInfo.getVersionCode();
                DownloadUtils.as(mContext).download(url, md5, version);
            }
        }, WMSUtils.getPackageName(), String.valueOf(WMSUtils.getVersionCode()));
    }
}