wjc
2024-12-02 f50e8e60e9da99e4f69d8ab76810dc7e5fb448bc
app/src/main/java/com/hdl/photovoltaic/ui/LoginActivity.java
@@ -4,9 +4,7 @@
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextPaint;
import android.text.TextUtils;
import android.text.TextWatcher;
@@ -15,7 +13,6 @@
import android.text.method.PasswordTransformationMethod;
import android.text.style.ClickableSpan;
import android.text.style.StyleSpan;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
@@ -34,8 +31,6 @@
import com.hdl.photovoltaic.base.CustomBaseActivity;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.databinding.ActivityHomeLoginBinding;
import com.hdl.photovoltaic.listener.LinkCallBack;
import com.hdl.photovoltaic.other.HdlDeviceLogic;
import com.hdl.photovoltaic.other.HdlResidenceLogic;
import com.hdl.photovoltaic.ui.account.ChangePassword;
import com.hdl.photovoltaic.ui.account.RegisterAccountActivity;
@@ -50,10 +45,8 @@
import com.hdl.photovoltaic.utils.LocalManageUtil;
import com.hdl.photovoltaic.utils.TimeUtils;
import com.hdl.photovoltaic.widget.ConfirmationCancelDialog;
import com.hdl.photovoltaic.widget.ConfirmationCancelDialog1;
import com.hdl.photovoltaic.widget.ListDialog;
import com.hdl.photovoltaic.widget.adapter.ListDialogAdapter;
import com.hdl.sdk.link.common.exception.HDLLinkException;
import java.util.List;
@@ -66,8 +59,6 @@
    @Override
    public Object getContentView() {
        setNotificationBarBackgroundColor(CustomColor.blue);
        viewBinding = ActivityHomeLoginBinding.inflate(getLayoutInflater());
        return viewBinding.getRoot();
    }
@@ -111,28 +102,76 @@
     * 初始化UI
     */
    private void initView() {
        viewBinding.homeLoginCheckBCCl.setSelected(UserConfigManage.getInstance().isBAccount());
        viewBinding.homeLoginPrivacyCheckIv.setSelected(UserConfigManage.getInstance().isAcceiptPolicy());
        setStringDifferentColors(viewBinding.homeLoginPrivacyTv);
        if (UserConfigManage.getInstance().getCurrentAppLanguage().equals(LocalManageUtil.zh)) {
            viewBinding.homeLoginLanguageTv.setText("简体中文");
        } else {
            viewBinding.homeLoginLanguageTv.setText("English");
        }
        if (UserConfigManage.getInstance().isBAccount()) {
            viewBinding.homeLoginRegisterTv.setVisibility(View.GONE);
        } else {
            viewBinding.homeLoginRegisterTv.setVisibility(View.VISIBLE);
        }
        try {
            viewBinding.homeLoginCheckBCCl.setSelected(UserConfigManage.getInstance().isBAccount());
            viewBinding.homeLoginPrivacyCheckIv.setSelected(UserConfigManage.getInstance().isAcceiptPolicy());
            setStringDifferentColors(viewBinding.homeLoginPrivacyTv);
            //注册和忘记密码需要加下划线
            String registerTvStr = viewBinding.homeLoginRegisterTv.getText().toString();
            String forgetPasswordTvStr = viewBinding.homeLoginForgetPasswordTv.getText().toString();
            SpannableStringBuilder registerTvStrSpannable = new SpannableStringBuilder(registerTvStr);
            registerTvStrSpannable.setSpan(new ClickableSpan() {
                @Override
                public void onClick(@NonNull View widget) {
                }
                @Override
                public void updateDrawState(@NonNull TextPaint ds) {
                    super.updateDrawState(ds);
                    //设置字体颜色
                    ds.setColor(getResources().getColor(R.color.text_E6FFFFFF, null));
                    // 去掉下划线
                    ds.setUnderlineText(!UserConfigManage.getInstance().isZh());
                }
            }, 0, registerTvStr.length(), 0);
            viewBinding.homeLoginRegisterTv.setText(registerTvStrSpannable);
            SpannableStringBuilder forgetPasswordTvStrSpannable = new SpannableStringBuilder(forgetPasswordTvStr);
            forgetPasswordTvStrSpannable.setSpan(new ClickableSpan() {
                @Override
                public void onClick(@NonNull View widget) {
                }
                @Override
                public void updateDrawState(@NonNull TextPaint ds) {
                    super.updateDrawState(ds);
                    //设置字体颜色
                    ds.setColor(getResources().getColor(R.color.text_E6FFFFFF, null));
                    // 去掉下划线
                    ds.setUnderlineText(!UserConfigManage.getInstance().isZh());
                }
            }, 0, forgetPasswordTvStr.length(), 0);
            viewBinding.homeLoginForgetPasswordTv.setText(forgetPasswordTvStrSpannable);
            if (UserConfigManage.getInstance().getCurrentAppLanguage().equals(LocalManageUtil.zh)) {
                viewBinding.homeLoginLanguageTv.setText("简体中文");
            } else {
                viewBinding.homeLoginLanguageTv.setText("English");
            }
            if (UserConfigManage.getInstance().isBAccount()) {
                viewBinding.homeLoginRegisterTv.setVisibility(View.GONE);
            } else {
                viewBinding.homeLoginRegisterTv.setVisibility(View.VISIBLE);
            }
//        String acc = "18402017839";
//        String acc = "13375012441";
//        String acc = "18316672920";
//        String pws = "123456";
        //测试用
        viewBinding.homeLoginAccountEt.setText(UserConfigManage.getInstance().getAccount());
            //测试用
            viewBinding.homeLoginAccountEt.setText(UserConfigManage.getInstance().getAccount());
//        viewBinding.homeLoginPasswordEt.setText(pws);
        checkClearIconShowOrNot(viewBinding.homeLoginAccountEt.getText().toString());
        isLoginTextViewEnabled();
            checkClearIconShowOrNot(viewBinding.homeLoginAccountEt.getText().toString());
            isLoginTextViewEnabled();
        } catch (Exception ignored) {
        }
    }
    /**
@@ -236,91 +275,8 @@
                    getDialog();
                    return;
                }
                showLoading(getString(R.string.home_login_be_logging_in));
                HdlAccountLogic.getInstance().regionByAccount(account, new CloudCallBeak<HDLUserRegionBean>() {
                    @Override
                    public void onSuccess(HDLUserRegionBean obj) {
                        //开发环境
//                        String APP_REGIONURL_TEST = "http://47.114.131.143:27199";
//                        AppConfigManage.setUserRegionUrl(APP_REGIONURL_TEST);
                        //初始化服务域名
                        AppConfigManage.setUserRegionUrl(obj.getRegionUrl());
                        HDLLinkPMUser.getInstance().setUserRegionUrl(AppConfigManage.getUserRegionUrl());
                        HdlAccountLogic.getInstance().loginByPassword(account, password, new ILoginCallBack() {
                            @Override
                            public void onSuccess(HDLLoginBean obj) {
                                if (UserConfigManage.getInstance().isBAccount()) {
                                    restoreButtonStyleToInitializeState();
                                    //安装商跳转界面
                                    startActivity(BPowerStationActivity.class);
                                    hideLoading();
                                    finish();
                                } else {
                                    //C端需要先获取电站列表;
                                    HdlResidenceLogic.getInstance().getResidenceIdList("", "", new CloudCallBeak<List<HouseIdBean>>() {
                                        @Override
                                        public void onSuccess(List<HouseIdBean> obj) {
                                            hideLoading();
                                            HdlResidenceLogic.getInstance().setHouseIdList(obj);
                                            restoreButtonStyleToInitializeState();
                                            if (UserConfigManage.getInstance().isBAccount()) {
                                                //安装商跳转界面
                                                startActivity(BPowerStationActivity.class);
                                            } else {
                                                //C端用户跳转界面
                                                startActivity(CPowerStationActivity.class);
                                            }
                                            finish();
                                        }
                                        @Override
                                        public void onFailure(HDLException e) {
                                            hideLoading();
                                            restoreButtonStyleToInitializeState();
                                            if (UserConfigManage.getInstance().isBAccount()) {
                                                //安装商跳转界面
                                                startActivity(BPowerStationActivity.class);
                                            } else {
                                                //C端用户跳转界面
                                                startActivity(CPowerStationActivity.class);
                                            }
                                            finish();
                                        }
                                    });
                                }
                            }
                            @Override
                            public void onFailure(HDLException e) {
                                hideLoading();
                                if (e.getCode() == 10019) {
                                    //用户已经被锁定错误码
                                    try {
                                        if (e.getmExtra() != null) {
                                            if (System.currentTimeMillis() < e.getmExtra().getUnlockTime()) {
                                                long time = e.getmExtra().getUnlockTime() - System.currentTimeMillis();
                                                int minute = Integer.parseInt(TimeUtils.getMinuteTime(time));
                                                HdlThreadLogic.toast(_mActivity, e.getMsg() + getString(R.string.residue) + minute + getString(R.string.minute) + "(" + e.getCode() + ")");
                                            }
                                        }
                                    } catch (Exception ee) {
                                        HdlThreadLogic.toast(_mActivity, e.getMsg() + "(" + e.getCode() + ")");
                                    }
                                } else {
                                    HdlThreadLogic.toast(_mActivity, e.getMsg() + "(" + e.getCode() + ")");
                                }
                            }
                        });
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        hideLoading();
                        HdlThreadLogic.toast(_mActivity, e.getMsg() + "(" + e.getCode() + ")");
                    }
                });
                //登录
                login(account, password);
            }
@@ -357,18 +313,118 @@
    }
    /**
     * 登录
     *
     * @param account  账号
     * @param password 密码
     */
    private void login(String account, String password) {
        showLoading(getString(R.string.home_login_be_logging_in));
        HdlAccountLogic.getInstance().regionByAccount(account, new CloudCallBeak<HDLUserRegionBean>() {
            @Override
            public void onSuccess(HDLUserRegionBean obj) {
                //开发环境
//                String APP_REGIONURL_TEST = "http://47.114.131.143:27197";
//                 AppConfigManage.setUserRegionUrl(APP_REGIONURL_TEST);
                //初始化服务域名
                AppConfigManage.setUserRegionUrl(obj.getRegionUrl());
                HDLLinkPMUser.getInstance().setUserRegionUrl(AppConfigManage.getUserRegionUrl());
                HdlAccountLogic.getInstance().loginByPassword(account, password, new ILoginCallBack() {
                    @Override
                    public void onSuccess(HDLLoginBean obj) {
                        if (UserConfigManage.getInstance().isBAccount()) {
                            restoreButtonStyleToInitializeState();
                            //安装商跳转界面
                            startActivity(BPowerStationActivity.class);
                            hideLoading();
                            finish();
                        } else {
                            //C端需要先获取电站列表;
                            HdlResidenceLogic.getInstance().getResidenceIdList("", "", new CloudCallBeak<List<HouseIdBean>>() {
                                @Override
                                public void onSuccess(List<HouseIdBean> obj) {
                                    hideLoading();
                                    HdlResidenceLogic.getInstance().setHouseIdList(obj);
                                    restoreButtonStyleToInitializeState();
                                    if (UserConfigManage.getInstance().isBAccount()) {
                                        //安装商跳转界面
                                        startActivity(BPowerStationActivity.class);
                                    } else {
                                        //C端用户跳转界面
                                        startActivity(CPowerStationActivity.class);
                                    }
                                    finish();
                                }
                                @Override
                                public void onFailure(HDLException e) {
                                    hideLoading();
                                    restoreButtonStyleToInitializeState();
                                    if (UserConfigManage.getInstance().isBAccount()) {
                                        //安装商跳转界面
                                        startActivity(BPowerStationActivity.class);
                                    } else {
                                        //C端用户跳转界面
                                        startActivity(CPowerStationActivity.class);
                                    }
                                    finish();
                                }
                            });
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        hideLoading();
                        if (e.getCode() == 10019) {
                            //用户已经被锁定错误码
                            try {
                                if (e.getmExtra() != null) {
                                    if (System.currentTimeMillis() < e.getmExtra().getUnlockTime()) {
                                        long time = e.getmExtra().getUnlockTime() - System.currentTimeMillis();
                                        int minute = Integer.parseInt(TimeUtils.getMinuteTime(time));
                                        HdlThreadLogic.toast(_mActivity, e.getMsg() + getString(R.string.residue) + minute + getString(R.string.minute) + "(" + e.getCode() + ")");
                                    }
                                }
                            } catch (Exception ee) {
                                HdlThreadLogic.toast(_mActivity, e.getMsg() + "(" + e.getCode() + ")");
                            }
                        } else {
                            HdlThreadLogic.toast(_mActivity, e.getMsg() + "(" + e.getCode() + ")");
                        }
                    }
                });
            }
            @Override
            public void onFailure(HDLException e) {
                hideLoading();
                HdlThreadLogic.toast(_mActivity, e.getMsg() + "(" + e.getCode() + ")");
            }
        });
    }
    /**
     * 校验登录按钮是否启用
     */
    private void isLoginTextViewEnabled() {
        String account = viewBinding.homeLoginAccountEt.getText().toString().replace(" ", "");
        String password = viewBinding.homeLoginPasswordEt.getText().toString().replace(" ", "");
        boolean isEnabled = account.length() > 0 && password.length() > 0;
        if (isEnabled) {
            viewBinding.homeLoginTv.setTextColor(getColor(R.color.text_E6FFFFFF));
        } else {
            viewBinding.homeLoginTv.setTextColor(getColor(R.color.text_66FFFFFF));
        }
        viewBinding.homeLoginTv.setEnabled(isEnabled);
        if (password.length() < 6 || password.length() > 16) {
            return;
        }
        //符合密码规则后隐藏错误提示;
        viewBinding.homeLoginLine2V.setBackgroundColor(getColor(R.color.text_E1E1E1));
        viewBinding.homeLoginLine2V.setBackgroundColor(getColor(R.color.text_FF5A5A5A));
        viewBinding.homeLoginPasswordTextErrorTv.setText("");
    }
@@ -480,14 +536,14 @@
                    public void updateDrawState(@NonNull TextPaint ds) {
                        super.updateDrawState(ds);
                        //设置字体颜色
                        ds.setColor(getResources().getColor(R.color.text_245EC3, null));
                        ds.setColor(getResources().getColor(R.color.text_E6FFFFFF, null));
                        // 去掉下划线
                        ds.setUnderlineText(false);
                        ds.setUnderlineText(!UserConfigManage.getInstance().isZh());
                    }
                }, startIndex1, endIndex1, 0);
                spannable.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), startIndex1, endIndex1, 0);
//                spannable.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), startIndex1, endIndex1, 0);
                spannable.setSpan(new ClickableSpan() {
                    @Override
@@ -503,20 +559,20 @@
                    public void updateDrawState(@NonNull TextPaint ds) {
                        super.updateDrawState(ds);
                        //设置字体颜色
                        ds.setColor(getResources().getColor(R.color.text_245EC3, null));
                        ds.setColor(getResources().getColor(R.color.text_E6FFFFFF, null));
                        // 去掉下划线
                        ds.setUnderlineText(false);
                        ds.setUnderlineText(!UserConfigManage.getInstance().isZh());
                    }
                }, startIndex2, endIndex2, 0);
                spannable.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), startIndex2, endIndex2, 0);
//                spannable.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), startIndex2, endIndex2, 0);
            }
            textView.setText(spannable);
            //中途遇到点击后字体显示高亮,取消高亮
            textView.setHighlightColor(getResources().getColor(R.color.text_00000000, null));
            textView.setHighlightColor(getResources().getColor(R.color.text_66FFFFFF, null));
            //最后设置可点击,必须实现,否则只能显示样式,无法实现点击效果
            textView.setMovementMethod(LinkMovementMethod.getInstance());
        } catch (Exception ignored) {
@@ -543,6 +599,9 @@
                UserConfigManage.getInstance().setAcceiptPolicy(true);
                viewBinding.homeLoginPrivacyCheckIv.setSelected(true);
                confirmationCancelDialog.dismiss();
                String account = viewBinding.homeLoginAccountEt.getText().toString().replace(" ", "");
                String password = viewBinding.homeLoginPasswordEt.getText().toString().replace(" ", "");
                login(account, password);
            }
        });
        confirmationCancelDialog.setNoOnclickListener(new ConfirmationCancelDialog.onNoOnclickListener() {