From fbfa859ff0fe312cbb49a3345b6e3d67d574a946 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期四, 28 十一月 2024 16:33:37 +0800
Subject: [PATCH] 1.工单列表界面 2.工单详情界面 3.处理工单界面选择图片相关

---
 app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java |  266 ++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 253 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 41a44b6..4201472 100644
--- a/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java
+++ b/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java
@@ -1,49 +1,118 @@
 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.CommonData;
+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) {
@@ -56,12 +125,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
@@ -76,7 +274,6 @@
         super.onResume();
         Log.i(TAG, "onResume");
     }
-
 
     @Override
     protected void onRestart() {
@@ -101,6 +298,7 @@
     @Override
     protected void onDestroy() {
         super.onDestroy();
+        getLifecycle().removeObserver(loginObserver);
         Log.i(TAG, "onDestroy");
     }
 
@@ -122,5 +320,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