From 50f9b82ac862652e88444d727a32e0da1d824e9e Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期一, 13 一月 2025 15:57:06 +0800 Subject: [PATCH] 1.分水房相关 2.删除极光推送相关配置 3.优化图片显示相关 --- app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java | 264 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 251 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java index b5f543c..8e62470 100644 --- a/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java +++ b/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java @@ -1,50 +1,117 @@ package com.dayu.pipirrapp.activity; +import static com.dayu.pipirrapp.net.Constants.BASE_URL; + import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.os.Bundle; import android.os.PersistableBundle; import android.text.InputType; +import android.util.Base64; import android.util.Log; import android.view.LayoutInflater; +import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; +import com.dayu.pipirrapp.MyApplication; import com.dayu.pipirrapp.R; +import com.dayu.pipirrapp.bean.db.LoginBean; +import com.dayu.pipirrapp.bean.net.CodeResult; +import com.dayu.pipirrapp.bean.net.LoginResult; +import com.dayu.pipirrapp.dao.DaoSingleton; import com.dayu.pipirrapp.databinding.ActivityLoginBinding; +import com.dayu.pipirrapp.net.ApiManager; +import com.dayu.pipirrapp.net.BaseResponse; +import com.dayu.pipirrapp.net.subscribers.SubscriberListener; import com.dayu.pipirrapp.observer.LoginObserver; -import com.hjq.permissions.OnPermissionCallback; -import com.hjq.permissions.Permission; -import com.hjq.permissions.XXPermissions; +import com.dayu.pipirrapp.utils.CommonKeyName; +import com.dayu.pipirrapp.utils.SharedPreferencesHelper; +import com.dayu.pipirrapp.utils.ToastUtil; +import com.tencent.bugly.crashreport.CrashReport; -import java.util.List; +import java.util.HashMap; +import java.util.Map; public class LoginActivity extends BaseActivity { private final String TAG = "LoginActivity"; ActivityLoginBinding binding; + LoginObserver loginObserver; + //瀵嗙爜鏄惁鍙 private boolean isPasswordVisible = false; + //鏄惁鏄剧ず楠岃瘉鐮� + private boolean isShowCode; + + private int loginError = 0; + private String codeToken; + //鐐瑰嚮娆℃暟鍒�10娆″悗鍙互閲嶆柊閫夋嫨tag + int clickNumber; + @Override protected void onCreate(@Nullable Bundle savedInstanceState) { - Log.i(TAG, "onCreate"); super.onCreate(savedInstanceState); binding = ActivityLoginBinding.inflate(LayoutInflater.from(this)); setContentView(binding.getRoot()); - getLifecycle().addObserver(new LoginObserver(this)); + initView(); + initData(); + } + + + private void initData() { + + } + + + private void initView() { + loginObserver = new LoginObserver(this); + getLifecycle().addObserver(loginObserver); binding.passwordBtn.setOnClickListener((view) -> { togglePasswordVisibility(); }); binding.loginBtn.setOnClickListener(v -> { - Intent intent = new Intent(LoginActivity.this, MainActivity.class); - startActivity(intent); - this.finish(); + String phone = binding.name.getText().toString().trim(); + String pw = binding.password.getText().toString().trim(); + String code = binding.code.getText().toString().trim(); + if (validatePhone(phone) && validatePassword(pw)) { + if (isShowCode) { + if (!validateCode(code)) { + return; + } + } + login(phone, pw, codeToken, code); + } else { + ToastUtil.showToast(LoginActivity.this, "璇疯緭鍏ユ纭俊鎭�"); + } + }); + binding.codeImg.setOnClickListener(v -> { + getCode(); + }); + binding.codeError.setOnClickListener(v -> { + getCode(); + }); + binding.version.setOnClickListener(v -> { + clickNumber++; + if (clickNumber == 10) { + //鐐瑰嚮娆℃暟鍒�10娆″悗鍙互閲嶆柊閫夋嫨tag + loginObserver.choesLibrary(); + clickNumber = 0; + } + }); + if (SharedPreferencesHelper.getInstance(LoginActivity.this).get(CommonKeyName.isShowCode, false)) { + isShowCode = true; + binding.codeLL.setVisibility(View.VISIBLE); + getCode(); + } } + private void togglePasswordVisibility() { if (isPasswordVisible) { @@ -57,12 +124,141 @@ binding.password.setInputType(InputType.TYPE_CLASS_TEXT); binding.passwordBtn.setImageResource(R.drawable.vt_ps_open); } - // 绉诲姩鍏夋爣鍒版湯灏� binding.password.setSelection(binding.password.getText().length()); - // 鍒囨崲鏍囧織 isPasswordVisible = !isPasswordVisible; + } + + /** + * 鑾峰彇楠岃瘉鐮� + */ + private void getCode() { + Map<String, Object> data = new HashMap<>(); + data.put("type", "math");//鍥剧墖绫诲瀷锛歝har-鏂囨湰锛宮ath-涓�浣嶆暟绠楀紡锛宮ath2-涓や綅鏁扮畻寮� + + + ApiManager.getInstance().requestGetHideLoading(LoginActivity.this, BASE_URL + "/app/captcha/get", CodeResult.class, data, new SubscriberListener<BaseResponse<CodeResult>>() { + @Override + public void onNext(BaseResponse<CodeResult> t) { + try { + if (t.isSuccess()) { + String encodedString = t.getContent().getBase64(); + codeToken = t.getContent().getToken(); + // 绉婚櫎Base64瀛楃涓茬殑澶撮儴淇℃伅 + encodedString = encodedString.substring("data:image/png;base64,".length()); + // 瀵笲ase64瀛楃涓茶繘琛岃В鐮� + byte[] imageAsBytes = Base64.decode(encodedString, Base64.DEFAULT); + // 浣跨敤BitmapFactory灏嗗瓧鑺傛暟缁勮В鐮佹垚Bitmap瀵硅薄 + Bitmap image = BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length); + binding.codeImg.setImageBitmap(image); + binding.codeImg.setVisibility(View.VISIBLE); + binding.codeError.setVisibility(View.GONE); + } else { + binding.codeImg.setVisibility(View.INVISIBLE); + binding.codeError.setVisibility(View.VISIBLE); + ToastUtil.showToast(LoginActivity.this, "楠岃瘉鐮佽幏鍙栧け璐�"); + } + + } catch (Exception e) { + e.printStackTrace(); + CrashReport.postCatchedException(e); + } + + } + }); + + +// ApiManager.getInstance().getCode(data, new CodeListener() { +// @Override +// public void onNext(CodeResult body) { +// try { +// if (body != null && !TextUtils.isEmpty(body.getBase64())) { +// String encodedString = body.getBase64(); +// codeToken = body.getToken(); +// // 绉婚櫎Base64瀛楃涓茬殑澶撮儴淇℃伅 +// encodedString = encodedString.substring("data:image/png;base64,".length()); +// // 瀵笲ase64瀛楃涓茶繘琛岃В鐮� +// byte[] imageAsBytes = Base64.decode(encodedString, Base64.DEFAULT); +// // 浣跨敤BitmapFactory灏嗗瓧鑺傛暟缁勮В鐮佹垚Bitmap瀵硅薄 +// Bitmap image = BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length); +// binding.codeImg.setImageBitmap(image); +// binding.codeImg.setVisibility(View.VISIBLE); +// binding.codeError.setVisibility(View.GONE); +// } else { +// binding.codeImg.setVisibility(View.INVISIBLE); +// binding.codeError.setVisibility(View.VISIBLE); +// ToastUtil.showToast(LoginActivity.this, "楠岃瘉鐮佽幏鍙栧け璐�"); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// CrashReport.postCatchedException(e); +// } +// } +// +// @Override +// public void error(Throwable throwable) { +// +// } +// }); + } + + private void login(String phone, String pw, String token, String code) { + + Map<String, Object> data = new HashMap<>(); + data.put("phone", phone); + data.put("password", pw); + data.put("orgTag", MyApplication.myApplication.myTag); + if (isShowCode) { + data.put("token", token); + data.put("code", code); + } + ApiManager.getInstance().requestPostLoading(LoginActivity.this, BASE_URL + "/sso/sso/loginJson", LoginResult.class, data, new SubscriberListener<BaseResponse<LoginResult>>() { + @Override + public void onNext(BaseResponse<LoginResult> t) { + try { + if (t.isSuccess()) { + SharedPreferencesHelper.getInstance(LoginActivity.this).put(CommonKeyName.Token, t.getContent().getToken()); + MyApplication.myApplication.token = t.getContent().getToken(); + MyApplication.myApplication.userId = t.getContent().getId(); + LoginBean loginBean = DaoSingleton.getInstance(LoginActivity.this).loginDao().findFirst(); + if (loginBean == null) { + loginBean = new LoginBean(); + } + loginBean.setName(t.getContent().getName()); + loginBean.setPhone(t.getContent().getPhone()); + loginBean.setUserID(t.getContent().getId()); + DaoSingleton.getInstance(LoginActivity.this).loginDao().insert(loginBean); + SharedPreferencesHelper.getInstance(LoginActivity.this).put(CommonKeyName.isShowCode, false); + ToastUtil.showToastLong(LoginActivity.this, "鐧诲綍鎴愬姛!"); + startMainActivity(); + + } else { + ToastUtil.showToast(LoginActivity.this, t.getMsg()); + loginError++; + if (loginError >= 3) { + isShowCode = true; + SharedPreferencesHelper.getInstance(LoginActivity.this).put(CommonKeyName.isShowCode, true); + binding.codeLL.setVisibility(View.VISIBLE); + } + } + + } catch (Exception e) { + e.printStackTrace(); + CrashReport.postCatchedException(e); + } + + } + }); + } + + /** + * 鍚姩MainActivity + */ + private void startMainActivity() { + Intent intent = new Intent(LoginActivity.this, MainActivity.class); + startActivity(intent); + LoginActivity.this.finish(); } @Override @@ -77,7 +273,6 @@ super.onResume(); Log.i(TAG, "onResume"); } - @Override protected void onRestart() { @@ -102,6 +297,7 @@ @Override protected void onDestroy() { super.onDestroy(); + getLifecycle().removeObserver(loginObserver); Log.i(TAG, "onDestroy"); } @@ -123,5 +319,47 @@ super.onRestoreInstanceState(savedInstanceState); } + // 鎵嬫満鍙锋牎楠岋細纭繚鏄竴涓湁鏁堢殑鎵嬫満鍙� + private boolean validatePhone(String phone) { + // 浣跨敤姝e垯琛ㄨ揪寮忓垽鏂槸鍚︿负鏈夋晥鐨勬墜鏈哄彿鐮侊紙涓浗澶ч檰锛� + String phonePattern = "^1[3-9]\\d{9}$"; // 绠�鍗曠殑鎵嬫満鍙风爜姝e垯 + if (phone.isEmpty()) { + ToastUtil.showToast(LoginActivity.this, "鎵嬫満鍙蜂笉鑳戒负绌猴紒"); + return false; + } +// else if (!phone.matches(phonePattern)) { +// ToastUtil.showToast(LoginActivity.this, "璇疯緭鍏ユ纭墜鏈哄彿锛�"); +// return false; +// } + else { + return true; + } + } + + // 瀵嗙爜鏍¢獙锛氱‘淇濆瘑鐮侀暱搴︾鍚堣姹� + private boolean validatePassword(String password) { + if (password.isEmpty()) { + ToastUtil.showToast(LoginActivity.this, "瀵嗙爜涓嶈兘涓虹┖锛�"); + return false; + } +// else if (password.length() < 6) { +// ToastUtil.showToast(LoginActivity.this, "瀵嗙爜涓嶈兘灏戜簬6浣嶏紒"); +// return false; +// } + else { + return true; + } + } + + // 楠岃瘉鐮佹牎楠岋細纭繚楠岃瘉鐮佺鍚堥暱搴﹁姹� + private boolean validateCode(String code) { + if (code.isEmpty()) { + ToastUtil.showToast(LoginActivity.this, "楠岃瘉鐮佷笉鑳戒负绌�"); + return false; + } else { + return true; + } + } + } -- Gitblit v1.8.0