Ver código fonte

1.完成图形验证

wsad5123 5 anos atrás
pai
commit
ce8ab55e62

+ 4 - 2
app/build.gradle

@@ -23,8 +23,8 @@ android {
         minSdkVersion rootProject.ext.minSdkVersion
         targetSdkVersion rootProject.ext.targetSdkVersion
         multiDexEnabled true
-        versionCode 113
-        versionName "1.1.3"
+        versionCode 115
+        versionName "1.1.5"
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
         flavorDimensions "versionCode"
         ndk {
@@ -35,10 +35,12 @@ android {
     productFlavors {
         hwpro {
             applicationId "com.webrain.happywork"
+            buildConfigField('String', 'VERIFY_URL', "\"https://dk.hap-job.com/captcha/captcha?phone=\"")
             buildConfigField('String', 'baseApiUrl', proApiUrl)
         }
         hwtest {
             applicationId "com.webrain.happywork.test"
+            buildConfigField('String', 'VERIFY_URL', "\"http://yz.hap-job.com/captcha/captcha?phone=\"")
             buildConfigField('String', 'baseApiUrl', testApiUrl)
         }
     }

+ 0 - 4
app/src/main/java/com/webrain/happywork/http/Api.java

@@ -32,10 +32,6 @@ import retrofit2.http.Url;
 
 public class Api {
     public interface UserInterface {
-        //获取验证码
-        @GET("api/hwuser/getAuthCode")
-        Observable<ApiResultBean<AuthCodeBean>> getAuthCode(@QueryMap Map<String, Object> args);
-
         //手机登录
         @POST("api/hwuser/phoneLogin")
         Observable<ApiResultBean<ApiLoginBean>> httpLogin(@Body Map<String, Object> args);

+ 0 - 13
app/src/main/java/com/webrain/happywork/http/subscribe/UserSubscribe.java

@@ -24,19 +24,6 @@ public class UserSubscribe extends BaseSubscribe {
         super(context);
     }
 
-
-    /**
-     * 获取验证码
-     *
-     * @param mObservable
-     */
-    public void requestAuthCode(Map<String, Object> params, ApiObserver<AuthCodeBean> mObservable) {
-        Api.UserInterface apiService = ServiceGenerator.createService(Api.UserInterface.class);
-        Observable<ApiResultBean<AuthCodeBean>> observable = apiService.getAuthCode(params);
-        subscribe(observable, mObservable);
-    }
-
-
     /**
      * 手机登录
      *

+ 20 - 3
app/src/main/java/com/webrain/happywork/ui/activity/LoginActivity.java

@@ -16,6 +16,7 @@ import com.webrain.happywork.R;
 import com.webrain.happywork.ui.base.BaseActivity;
 import com.webrain.happywork.ui.mvp.contacts.LoginContacts;
 import com.webrain.happywork.ui.mvp.presenter.LoginPresenter;
+import com.webrain.happywork.ui.widget.dialog.WebVerifyDialog;
 
 import java.util.concurrent.TimeUnit;
 
@@ -42,6 +43,7 @@ public class LoginActivity extends BaseActivity<LoginPresenter> implements Login
     Button btnLogin;
 
     boolean isCountDown;
+    WebVerifyDialog dialog;
 
     @Override
     public int getLayoutId() {
@@ -82,7 +84,7 @@ public class LoginActivity extends BaseActivity<LoginPresenter> implements Login
             public void onClick(View widget) {
                 startActivity(new Intent(mContext, TipsUserActivity.class));
             }
-        }, spannableString.toString().length() - 13, spannableString.toString().length()-7, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
+        }, spannableString.toString().length() - 13, spannableString.toString().length() - 7, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
         spannableString.setSpan(new ClickableSpan() {
             @Override
             public void updateDrawState(TextPaint ds) {
@@ -109,8 +111,12 @@ public class LoginActivity extends BaseActivity<LoginPresenter> implements Login
                 break;
             case R.id.tv_code:
                 if (mvpPresenter.isPhone(etPhone.getText().toString(), true)) {
-                    mvpPresenter.getAuthCode(etPhone.getText().toString());
-                    countDown();
+                    if (dialog == null) {
+                        dialog = new WebVerifyDialog(mContext, etPhone.getText().toString());
+                        dialog.setOnVerifyListener(onVerifyListener);
+                    }
+                    dialog.initData(etPhone.getText().toString());
+                    dialog.show();
                 }
         }
     }
@@ -130,6 +136,17 @@ public class LoginActivity extends BaseActivity<LoginPresenter> implements Login
     }
 
     /**
+     * 人工验证回调
+     */
+    WebVerifyDialog.OnVerifyListener onVerifyListener = new WebVerifyDialog.OnVerifyListener() {
+        @Override
+        public void onSuccess() {
+            countDown();
+        }
+    };
+
+
+    /**
      * 验证码倒计时
      */
     private void countDown() {

+ 0 - 3
app/src/main/java/com/webrain/happywork/ui/mvp/contacts/LoginContacts.java

@@ -12,8 +12,6 @@ public class LoginContacts {
     }
 
     public interface ILoginPresenter extends IPresenter {
-        void getAuthCode(String phoneNum);
-
         void httpLogin(String phoneNum, String code);
 
         boolean isPhone(String phoneNum, boolean isToast);
@@ -25,7 +23,6 @@ public class LoginContacts {
     }
 
     public interface ILoginModel {
-        void getHttpAuthCode(String phoneNum);
 
         void httpLogin(String phoneNum, String code, String clientId, MvpDataCallBack<Boolean> mvpDataCallBack);
     }

+ 0 - 26
app/src/main/java/com/webrain/happywork/ui/mvp/model/LoginModel.java

@@ -1,15 +1,11 @@
 package com.webrain.happywork.ui.mvp.model;
 
 
-import android.Manifest;
 import android.content.Context;
-import android.support.v7.app.AppCompatActivity;
 
 import com.google.gson.Gson;
-import com.webrain.baselibrary.utils.PermissionsUtils;
 import com.webrain.baselibrary.utils.SharedPreferencesUtils;
 import com.webrain.happywork.AppCacheManager;
-import com.webrain.happywork.bean.AuthCodeBean;
 import com.webrain.happywork.bean.api.ApiLoginBean;
 import com.webrain.happywork.callback.MvpDataCallBack;
 import com.webrain.happywork.http.ApiObserver;
@@ -19,8 +15,6 @@ import com.webrain.happywork.http.subscribe.UserSubscribe;
 import com.webrain.happywork.ui.base.BaseModel;
 import com.webrain.happywork.ui.mvp.contacts.LoginContacts;
 
-import io.reactivex.functions.Consumer;
-
 public class LoginModel extends BaseModel implements LoginContacts.ILoginModel {
     private boolean isRequest;
 
@@ -29,26 +23,6 @@ public class LoginModel extends BaseModel implements LoginContacts.ILoginModel {
     }
 
     /**
-     * 获取验证码
-     *
-     * @param phoneNum
-     */
-    @Override
-    public void getHttpAuthCode(String phoneNum) {
-        RetrofitHttpParams params = new RetrofitHttpParams(mContext);
-        params.put("phone", phoneNum);
-        new UserSubscribe(mContext).requestAuthCode(params.getRequestParams(), new ApiObserver<AuthCodeBean>(mContext) {
-            @Override
-            public void onSuccess(AuthCodeBean data) {
-            }
-
-            @Override
-            public void onFinish() {
-            }
-        });
-    }
-
-    /**
      * 手机登录
      *
      * @param phoneNum

+ 0 - 12
app/src/main/java/com/webrain/happywork/ui/mvp/presenter/LoginPresenter.java

@@ -31,18 +31,6 @@ public class LoginPresenter extends BasePresenter<LoginActivity> implements Logi
     }
 
     /**
-     * 获取验证码
-     *
-     * @param phoneNum
-     */
-    @Override
-    public void getAuthCode(String phoneNum) {
-        if (isViewAttach()) {
-            mLoginModel.getHttpAuthCode(phoneNum);
-        }
-    }
-
-    /**
      * 手机登录
      *
      * @param phoneNum

+ 113 - 0
app/src/main/java/com/webrain/happywork/ui/widget/dialog/WebVerifyDialog.java

@@ -0,0 +1,113 @@
+package com.webrain.happywork.ui.widget.dialog;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.webkit.JavascriptInterface;
+import android.webkit.WebSettings;
+import android.webkit.WebView;
+
+
+import com.webrain.happywork.BuildConfig;
+import com.webrain.happywork.R;
+import com.webrain.happywork.ui.base.BaseViewHolder;
+
+import butterknife.BindView;
+import io.reactivex.Observable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.functions.Consumer;
+
+
+public class WebVerifyDialog {
+    private Context mContext;
+    private Dialog mDialog;
+    private ViewHolder mViewHolder;
+    private OnVerifyListener onVerifyListener;
+
+    public WebVerifyDialog(final Context mContext, String phone) {
+        this.mContext = mContext;
+        mViewHolder = new ViewHolder(mContext, phone);
+        mDialog = new Dialog(mContext, R.style.HappyJobDialog);
+        mDialog.setContentView(mViewHolder.getView());
+    }
+
+
+    public void dismiss() {
+        if (mDialog != null && mDialog.isShowing())
+            mDialog.dismiss();
+
+    }
+
+    public void show() {
+        if (mDialog != null && !mDialog.isShowing())
+            mDialog.show();
+    }
+
+    public void initData(String phone) {
+        mViewHolder.initData(phone);
+    }
+
+    public void setOnVerifyListener(OnVerifyListener onVerifyListener) {
+        this.onVerifyListener = onVerifyListener;
+    }
+
+    class ViewHolder extends BaseViewHolder {
+
+
+        @BindView(R.id.wv)
+        WebView wv;
+
+        public ViewHolder(Context mContext, String phone) {
+            super(mContext);
+            WebSettings webSetting = wv.getSettings();
+            webSetting.setJavaScriptEnabled(true);
+            webSetting.setJavaScriptCanOpenWindowsAutomatically(true);
+            webSetting.setTextZoom(100);
+            webSetting.setAllowFileAccess(true);
+            webSetting.setUseWideViewPort(true);
+            webSetting.setLoadWithOverviewMode(true);
+            webSetting.setAppCacheEnabled(true);
+            webSetting.setDatabaseEnabled(true);
+            wv.addJavascriptInterface(new JavaScriptInterface(), "hap");
+        }
+
+        @Override
+        public int bindViewLayoutId() {
+            return R.layout.dialog_web_verify;
+        }
+
+
+        public void initData(String phone) {
+            wv.loadUrl(BuildConfig.VERIFY_URL + phone);
+        }
+
+        class JavaScriptInterface {
+            public JavaScriptInterface() {
+
+            }
+
+            /**
+             * 验证成功
+             */
+            @JavascriptInterface
+            public void verificationCode(final String code) {
+                Observable.just(code)
+                        .observeOn(AndroidSchedulers.mainThread())      // 主线程更新UI
+                        .subscribe(new Consumer<String>() {
+                            @Override
+                            public void accept(String s) throws Exception {
+                                if (onVerifyListener != null && code.equals("0"))
+                                    onVerifyListener.onSuccess();
+                                dismiss();
+                            }
+                        });
+            }
+
+        }
+
+    }
+
+    public interface OnVerifyListener {
+        void onSuccess();
+    }
+
+}

+ 22 - 0
app/src/main/res/layout/dialog_web_verify.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:gravity="center_horizontal"
+    android:orientation="vertical">
+
+    <LinearLayout
+        android:id="@+id/ll_content"
+        android:layout_width="266dp"
+        android:layout_height="265dp"
+        android:background="@color/transparent"
+        android:gravity="center_horizontal"
+        android:orientation="vertical">
+
+        <WebView
+            android:id="@+id/wv"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:background="@color/transparent" />
+    </LinearLayout>
+</LinearLayout>

+ 0 - 1
baselibrary/build.gradle

@@ -4,7 +4,6 @@ android {
     compileSdkVersion 28
 
 
-
     defaultConfig {
         minSdkVersion 19
         targetSdkVersion 28