Ver Fonte

登录重试

詹子聪 há 5 anos atrás
pai
commit
a46673fa78

+ 100 - 0
app/src/main/java/com/miekir/eden/ui/mine/login/LoginActivity.java

@@ -4,8 +4,14 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.provider.Settings;
 import android.text.TextUtils;
+import android.view.Menu;
+import android.view.MenuItem;
 import android.view.View;
 
+import androidx.annotation.NonNull;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.TypeReference;
 import com.google.android.material.textfield.TextInputEditText;
 import com.miekir.common.utils.ToastTool;
 import com.miekir.common.utils.ViewTool;
@@ -15,13 +21,27 @@ import com.miekir.eden.bean.BeiUser;
 import com.miekir.eden.bean.SystemBean;
 import com.miekir.eden.constant.ConstantString;
 import com.miekir.eden.constant.EdenError;
+import com.miekir.eden.kawayi.KwyAPI;
+import com.miekir.eden.kawayi.WalkApp;
+import com.miekir.eden.kawayi.bean.BaseKwyBean;
+import com.miekir.eden.kawayi.bean.EncryptKwyPhotoBean;
 import com.miekir.eden.manager.EdenManager;
+import com.miekir.eden.net.RetrofitHelper;
 import com.miekir.eden.tool.StringTool;
+import com.miekir.eden.tool.secure.AESTool;
 import com.miekir.eden.ui.TabActivity;
 import com.miekir.eden.ui.home.tool.ISystemView;
 import com.miekir.eden.ui.home.tool.SystemPresenter;
+import com.miekir.eden.ui.welcome.WelcomePresenter;
 import com.miekir.mvp.presenter.InjectPresenter;
 
+import java.util.List;
+
+import io.reactivex.Observer;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.Disposable;
+import io.reactivex.schedulers.Schedulers;
+
 /**
  * @author Miekir
  * @date 2020/6/18 16:48
@@ -39,6 +59,9 @@ public class LoginActivity extends BaseBeiActivity implements View.OnClickListen
     @InjectPresenter
     SystemPresenter systemPresenter;
 
+    @InjectPresenter
+    WelcomePresenter welcomePresenter;
+
     @Override
     public int getLayoutID() {
         return R.layout.activity_login;
@@ -60,9 +83,86 @@ public class LoginActivity extends BaseBeiActivity implements View.OnClickListen
         if (user != null && !TextUtils.isEmpty(user.email)) {
             et_email.setText(user.email);
         }
+    }
 
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        if (!EdenManager.getInstance().isLogin()) {
+            return super.onCreateOptionsMenu(menu);
+        }
 
+        getMenuInflater().inflate(R.menu.menu_done, menu);
+        MenuItem menuItem = menu.findItem(R.id.action_done);
+        menuItem.setTitle(StringTool.getString(R.string.menu_retry));
+        return super.onCreateOptionsMenu(menu);
+    }
 
+    @Override
+    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
+        switch (item.getItemId()) {
+            case R.id.action_done:
+                // 重试
+                showLoading();
+                if (!EdenManager.getInstance().isKwyPhotoReady()) {
+                    getKawayiSetting();
+                } else {
+                    welcomePresenter.submitLogin();
+                }
+                break;
+            default:
+                break;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    private void getKawayiSetting() {
+        RetrofitHelper.getInstance().getRequestApi(KwyAPI.class, KwyAPI.KWY_BASE)
+                .getKwyPhotoList()
+                .doOnNext(photoResult -> {
+                    if (photoResult != null) {
+                        String detailJson = null;
+                        try {
+                            detailJson = AESTool.decryptKawayi(photoResult.getJson(), WalkApp.KEY_SECRET);
+                            List<EncryptKwyPhotoBean> photoList = JSON.parseObject(detailJson, new TypeReference<List<EncryptKwyPhotoBean>>() {});
+                            if (photoList != null && photoList.size() > 0) {
+                                EdenManager.getInstance().setKwyPhotoReady(true);
+                            }
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                    }
+                })
+                .flatMap(response -> {
+                    // 这里是子线程
+                    // 根据站点编号查询站点人员信息
+                    return RetrofitHelper.getInstance().getRequestApi(KwyAPI.class, KwyAPI.KWY_BASE).getKwyVideo();
+                })
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new Observer<BaseKwyBean>() {
+
+                    @Override
+                    public void onSubscribe(Disposable d) {
+
+                    }
+
+                    @Override
+                    public void onNext(BaseKwyBean videoBean) {
+                        if (videoBean != null) {
+                            EdenManager.getInstance().setVideoUrl(videoBean.getJson());
+                        }
+                    }
+
+                    @Override
+                    public void onError(Throwable e) {
+                        welcomePresenter.submitLogin();
+                    }
+
+                    @Override
+                    public void onComplete() {
+                        welcomePresenter.submitLogin();
+                    }
+                });
     }
 
     private int mAdminTimes = 0;

+ 1 - 0
app/src/main/res/values-zh-rCN/strings.xml

@@ -108,4 +108,5 @@
     <string name="text_loading">加载中...</string>
     <string name="login_attention">注意:本应用仅对非中国地区开放</string>
     <string name="login_area_not_support">暂不支持当前地区</string>
+    <string name="menu_retry">重试</string>
 </resources>

+ 1 - 0
app/src/main/res/values/strings.xml

@@ -108,4 +108,5 @@
     <string name="text_loading">Loading...</string>
     <string name="login_attention">Only open to non-Chinese regions</string>
     <string name="login_area_not_support">Current region is not supported</string>
+    <string name="menu_retry">Retry</string>
 </resources>