LoginActivity.java 7.5 KB
package com.yinhebairong.clasmanage.ui.login;

import android.graphics.Color;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.TextView;

import com.google.gson.Gson;
import com.yinhebairong.clasmanage.Config;
import com.yinhebairong.clasmanage.R;
import com.yinhebairong.clasmanage.base.BaseActivity;
import com.yinhebairong.clasmanage.base.instant.InstantViews;
import com.yinhebairong.clasmanage.base.instant.Layout;
import com.yinhebairong.clasmanage.base.instant.TopNavigationBar;
import com.yinhebairong.clasmanage.base.instant.click.ClickView;
import com.yinhebairong.clasmanage.base.instant.slideslip.SlideLip;
import com.yinhebairong.clasmanage.entity.LoginEntity;
import com.yinhebairong.clasmanage.m.M;
import com.yinhebairong.clasmanage.network.ApiService;
import com.yinhebairong.clasmanage.network.LoginStore;
import com.yinhebairong.clasmanage.quest.LoginBody;
import com.yinhebairong.clasmanage.ui.MainActivity;
import com.yinhebairong.clasmanage.utils.DesCrypt;
import com.yinhebairong.clasmanage.utils.SharedPreferenceUtil;

import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import okhttp3.MediaType;
import okhttp3.RequestBody;

@SlideLip(slidelip = false) // 侧滑返回上一页 , 默认不开启 \
@TopNavigationBar(color = Color.TRANSPARENT, setBarBiack = 2)   // 状态栏颜色 , 状态栏样式
@Layout(R.layout.activity_login)
public class LoginActivity extends BaseActivity {
    /*  唯一一部分自定义注解 ( 快速开发建议 ) */
    @InstantViews(R.id.edit_zh)
    EditText editZh;
    @InstantViews(R.id.zh_del)
    FrameLayout zhDel;
    @InstantViews(R.id.edit_pas)
    EditText editPas;
    @InstantViews(R.id.pas_del)
    FrameLayout pasDel;
    @InstantViews(R.id.login)
    TextView login;

    int zh_a = 0;
    int zh_b;
    int pas_a = 0;
    int pas_b;



    @Override
    protected void initData() {
        String token = SharedPreferenceUtil.get(activity, M.Token, "").toString();
        String ClassId = SharedPreferenceUtil.get(activity, M.ClassId, "").toString();
        if (token != null && !token.equals("")) {
            Config.Token = token;
            Config.ClassId = Integer.valueOf(ClassId);
            skipAnotherActivity(activity, MainActivity.class, true);
        }

    }

    @Override
    protected void setEvent() {
        // 账号长度监控
        editZh.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                zh_a = s.toString().length();
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                zh_b = s.toString().length();
                if (zh_b > 0) {
                    zhDel.setVisibility(View.VISIBLE);
                } else {
                    zhDel.setVisibility(View.GONE);
                }
            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });

        //   密码长度监控
        editPas.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                pas_a = s.toString().length();
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                pas_b = s.toString().length();
                if (pas_b > 0) {
                    pasDel.setVisibility(View.VISIBLE);
                } else {
                    pasDel.setVisibility(View.GONE);
                }
            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });
    }

    @ClickView({R.id.zh_del, R.id.pas_del, R.id.login})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.zh_del:
                editZh.setText("");
                break;
            case R.id.pas_del:
                editPas.setText("");
                break;
            case R.id.login:
                if (M.getEditTextStringIsEmpty(editZh) == true || M.getEditTextStringIsEmpty(editPas) == true) {
                    M.toast(LoginActivity.this, "请检查您的手机号和密码");
                    return;
                } else if (M.isNetworkConnected(activity) == false) {
                    M.toast(activity, "请检查您的网络");
                    return;
                }
                loginInto();
                break;
        }
    }

    // - > login
    private void loginInto() {
        String editZhText = M.getEditTextString(editZh);
        String editPasText = M.getEditTextString(editPas);
        LoginBody data = new LoginBody();
        data.username = editZhText;
        // 加密
        DesCrypt desCrypt = new DesCrypt();
        String encode = desCrypt.encode(editPasText);
        data.password = encode;
        data.type = 0;
        Gson gson = new Gson();
        String json = gson.toJson(data);
        RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), "{\"params\":" + json + "}");
        LoginStore.createApi(ApiService.class)
                .loginInfo(body)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<LoginEntity>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(LoginEntity entity) {
                        if (entity.getCode() == 1000) {
                            M.toast(activity, "登录成功");
                            Config.Token = entity.getData().getToken();
                            Config.Type = entity.getData().getUser().getType();
                            if(Config.Type.equals("2")){
                                //教师端不处理
                            }else {
                            for(int i=0;i<entity.getData().getUser().getStudentInfoList().size();i++){
                                Config.id = Integer.parseInt(entity.getData().getUser().getStudentInfoList().get(i).getId());
                            }}

                            Config.ClassId = entity.getData().getUser().getClassId();
                            SharedPreferenceUtil.put(LoginActivity.this, M.Type, entity.getData().getUser().getType() + "");
                            SharedPreferenceUtil.put(LoginActivity.this, M.Token, entity.getData().getToken() + "");
                            SharedPreferenceUtil.put(LoginActivity.this, M.ClassId, entity.getData().getUser().getClassId() + "");
                            SharedPreferenceUtil.put(LoginActivity.this, M.UserBody, json+ "");
                            skipAnotherActivity(activity, MainActivity.class, true);
                        }else {
                            M.toast(activity, "登录失败");

                        }
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.e("onError", e.getMessage().trim());
                    }

                    @Override
                    public void onComplete() {

                    }
                });
    }

}