RegisterActivity.java 9.92 KB
package com.hjx.parent;

import android.content.Intent;
import android.os.Bundle;
import android.telephony.PhoneNumberUtils;
import android.text.InputType;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.Nullable;

import com.google.gson.Gson;
import com.hjq.permissions.OnPermissionCallback;
import com.hjq.permissions.Permission;
import com.hjq.permissions.XXPermissions;
import com.hjx.parent.bean.RegisterBean;
import com.prws.common.base.BaseActivity;
import com.prws.common.base.BasePresenter;
import com.prws.common.bean.BaseEntity;
import com.prws.common.net.NetWorks;
import com.prws.common.utils.Common;
import com.prws.common.utils.GsonUtil;
import com.prws.common.utils.LogUtil;
import com.prws.common.utils.SharedPreferencesUtil;
import com.uuzuche.lib_zxing.activity.CaptureActivity;
import com.uuzuche.lib_zxing.activity.CodeUtils;

import org.json.JSONObject;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
import okhttp3.ResponseBody;

public class RegisterActivity extends BaseActivity {

    EditText et_phone;
    EditText et_pwd;
    EditText et_pwd_2;
    ImageView iv_show;
    ImageView iv_show_2;
    ImageView iv_delete;
    Button btn_reg;
    TextView tv_log;
    CheckBox cb_1;
    TextView tv_user;
    TextView tv_ys;


    @Override
    protected int layoutResId() {
        return R.layout.activity_register;
    }

    @Override
    public Object getContract() {
        return null;
    }

    @Override
    public BasePresenter getPresenter() {
        return null;
    }

    @Override
    protected void initView() {
        et_phone = findViewById(R.id.et_phone);
        et_pwd = findViewById(R.id.et_pwd);
        iv_show = findViewById(R.id.iv_4);
        iv_show_2 = findViewById(R.id.iv_6);
        et_pwd_2 = findViewById(R.id.et_pwd_2);
        iv_delete = findViewById(R.id.iv_2);
        btn_reg = findViewById(R.id.btn_1);
        tv_log = findViewById(R.id.tv_2);
        cb_1 = findViewById(R.id.cb_1);
        tv_user = findViewById(R.id.tv_4);
        tv_ys = findViewById(R.id.tv_6);


    }

    @Override
    protected void initListener() {
        iv_delete.setOnClickListener(view -> {
            et_phone.setText("");
        });
        iv_show.setOnClickListener(view -> {

            if (iv_show.getBackground().getConstantState().equals(getDrawable(R.mipmap.xs).getConstantState())) {
                iv_show.setBackgroundResource(R.mipmap.yc);
                et_pwd.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
            } else {
                iv_show.setBackgroundResource(R.mipmap.xs);
                et_pwd.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
            }


        });

        iv_show_2.setOnClickListener(view -> {

            if (iv_show_2.getBackground().getConstantState().equals(getDrawable(R.mipmap.xs).getConstantState())) {
                iv_show_2.setBackgroundResource(R.mipmap.yc);
                et_pwd_2.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
            } else {
                iv_show_2.setBackgroundResource(R.mipmap.xs);
                et_pwd_2.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
            }


        });


        btn_reg.setOnClickListener(view -> {

            String phone = et_phone.getText().toString().trim();
            String pwd = et_pwd.getText().toString().trim();
            String pwd2 = et_pwd_2.getText().toString().trim();
            if (phone.isEmpty() || pwd.isEmpty() || phone.length() == 0 || pwd.length() == 0) {
                Toast.makeText(this, "手机号以及密码不能为空", Toast.LENGTH_SHORT).show();
                return;
            }
            if (pwd.length() < 6 || pwd.length() > 16 || pwd2.length() < 6 || pwd2.length() > 16) {
                Toast.makeText(this, "密码必须为6-16位,数字或字母", Toast.LENGTH_SHORT).show();
            }
            if (!Common.isValidPhoneNumber(phone)) {
                Toast.makeText(this, "请输入有效手机号", Toast.LENGTH_SHORT).show();
                return;
            }

            if (!PhoneNumberUtils.isGlobalPhoneNumber(et_phone.getText().toString())) {
                Toast.makeText(this, "请输入正确的手机号码", Toast.LENGTH_SHORT).show();
                return;
            }

            if (!cb_1.isChecked()) {
                Toast.makeText(this, "请勾选协议", Toast.LENGTH_SHORT).show();
                return;
            }
            if (!pwd.equals(pwd2)) {
                Toast.makeText(this, "两次密码需要一致", Toast.LENGTH_SHORT).show();
                return;
            }

            reg(phone, pwd);

        });

        tv_log.setOnClickListener(view -> {
            startActivity(LoginActivity.class);
            finish();
        });

        tv_ys.setOnClickListener(view -> {
            startActivity(YinsiActivity.class);
        });
        tv_user.setOnClickListener(view -> {
            startActivity(UserActivity.class);
        });
    }

    public void reg(final String phone, String pwd) {

        Map map = new HashMap();
        map.put("username", phone);
        map.put("password", pwd);


        NetWorks.registerParent(NetWorks.getMapRequestBody(map), new Observer<ResponseBody>() {
            @Override
            public void onSubscribe(Disposable d) {

            }

            @Override
            public void onNext(ResponseBody responseBody) {
                String str = null;
                try {
                    str = responseBody.string();
                } catch (IOException e) {
                    e.printStackTrace();
                }

                if (str == null || str.length() == 0) {
                    Toast.makeText(RegisterActivity.this, "服务器繁忙", Toast.LENGTH_SHORT).show();
                    return;
                }

                RegisterBean registerBean = new Gson().fromJson(str, RegisterBean.class);

                if (!registerBean.isSuccess()) {
                    Toast.makeText(RegisterActivity.this, registerBean.getMsg(), Toast.LENGTH_SHORT).show();
                    return;
                }

                if (registerBean.getData().getUserName() != null && registerBean.getData().getUserName().length() > 0) {
                    SharedPreferencesUtil.putData("phone", phone);
                    SharedPreferencesUtil.putData("role", registerBean.getData().getUserName());
                    SharedPreferencesUtil.putData("userId", registerBean.getData().getUserName());
                    login(phone, pwd);

                }


            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onComplete() {

            }
        });
    }

    public void login(final String phone, String pwd) {
        Map map = new HashMap();
        map.put("username", phone);
        map.put("password", pwd);

        NetWorks.login(NetWorks.getMapRequestBody(map), new Observer<ResponseBody>() {
            @Override
            public void onSubscribe(Disposable d) {

            }

            @Override
            public void onNext(ResponseBody responseBody) {
                try {
                    String str = responseBody.string().toString();
                    LogUtil.e(TAG, "----" + str);
                    JSONObject jo = new JSONObject(str);
                    boolean isSucceed = jo.getBoolean("success");
                    if (isSucceed) {
                        JSONObject jo2 = jo.getJSONObject("data");
                        SharedPreferencesUtil.putData("phone", phone);
                        SharedPreferencesUtil.putData("role", jo2.getString("role"));
                        SharedPreferencesUtil.putData("userId", jo2.getString("userId"));
                        SharedPreferencesUtil.putData("token", jo2.getString("token"));
                        startActivity(ChooseActivity.class);
                    } else {
                        Toast.makeText(RegisterActivity.this, jo.getString("msg"), Toast.LENGTH_SHORT).show();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                    Toast.makeText(RegisterActivity.this, "服务繁忙,请重试", Toast.LENGTH_SHORT).show();
                }

            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onComplete() {

            }
        });
    }

    public void goQRView() {

        if (!XXPermissions.isGranted(this, Permission.CAMERA)) {
            XXPermissions.with(this)
                    // 申请多个权限
                    .permission(Permission.CAMERA)
                    .request(new OnPermissionCallback() {
                        @Override
                        public void onGranted(List<String> permissions, boolean all) {
                            if (all) {
                                //开启扫码界面
                                startQRView();

                            } else {
                                Toast.makeText(RegisterActivity.this, "需要相机权限", Toast.LENGTH_SHORT).show();
                            }
                        }

                        @Override
                        public void onDenied(List<String> permissions, boolean never) {
                            XXPermissions.startPermissionActivity(RegisterActivity.this, permissions);
                        }
                    });


        } else {
            startQRView();
        }


    }

    public void startQRView() {

        startActivity(QRActivity.class);
        finish();

    }


    @Override
    protected void initData() {

    }

    @Override
    public void onNetChanged(int netWorkState) {

    }
}