瀏覽代碼

[회원가입][Bug] 모바일인증 코드 수정

hyodong.min 7 年之前
父節點
當前提交
2e1eea4251

+ 64 - 5
app/src/main/java/kr/co/zumo/app/lifeplus/model/SignUpModel.java

@@ -5,9 +5,13 @@ package kr.co.zumo.app.lifeplus.model;
 
 import android.util.Log;
 
+import com.google.gson.Gson;
+
 import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.TimeUnit;
 
+import io.reactivex.Completable;
 import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.disposables.CompositeDisposable;
 import io.reactivex.schedulers.Schedulers;
@@ -47,6 +51,11 @@ public class SignUpModel extends Model {
   private String encryptedPin;
   protected MobileAuthBean mobileAuthBean;
 
+  private int backwardWarnStringId = R.string.sign_up_back_warning;
+  private int signCompletedStringId = R.string.sign_up_success_message;
+  private int coinCompletedStringId = R.string.coupon_message;
+
+
   public SignUpModel() {
   }
 
@@ -233,11 +242,11 @@ public class SignUpModel extends Model {
           .observeOn(AndroidSchedulers.mainThread())
           .subscribe(resultBean -> {
             Log.i("APP# SignUpModel | signUp", "|" + resultBean.toPrettyJson());
-            if(resultBean.isSuccess()) {
+            if (resultBean.isSuccess()) {
               saveUserId(resultBean.getData().getUserNo());
               onResult(new Event.Builder(Event.RESULT).integer(Event.MEMBER_JOIN).build());
             }
-            else if(resultBean.getCode() == LifeplusAPIBean.RETURN_MOBILE_AUTH_ERROR_NEED_FOR_30_DAYS){
+            else if (resultBean.getCode() == LifeplusAPIBean.RETURN_MOBILE_AUTH_ERROR_NEED_FOR_30_DAYS) {
               // 탈퇴 30일 회원 구분
               SuperModel.getInstance().addMemberStatus(SuperModel.MEMBER_STATUS_BIT_OUT);
               onResult(new Event.Builder(Event.RESULT).integer(Event.MEMBER_NEED_30DAYS).build());
@@ -328,9 +337,59 @@ public class SignUpModel extends Model {
     );
   }
 
-  private int backwardWarnStringId = R.string.sign_up_back_warning;
-  private int signCompletedStringId = R.string.sign_up_success_message;
-  private int coinCompletedStringId = R.string.coupon_message;
+  /**
+   * 모바일 인증 결과 처리
+   *
+   * @param event
+   */
+  public void onAuthResult(Event event) {
+    MobileAuthBean mobileAuthBean = event.fromJson(MobileAuthBean.class);
+    LifeplusAPIBean resultBean = new Gson().fromJson(event.getString(), LifeplusAPIBean.class);
+
+    Log.w("APP# SignUpMobileAuthPresenter | onEventInternal", "| 인증 결과: " + resultBean.toPrettyJson());
+    Log.w("APP# SignUpMobileAuthPresenter | onEventInternal", "| 유저 데이터: " + mobileAuthBean.toPrettyJson());
+
+    /**
+     * 2. 성공 시 PROCESS 진입
+     1) 만 14세 이상 : 약관동의(JO2001)화면 링크
+     2) 14세 미만 : 14세 미만 가입불가 안내 (JO5002) 화면 링크
+     3) 회원 Y: 기존회원 간편암호 확인 안내 (JO5002) 화면 링크

+     4) 회원탈퇴일 기준 30일 이내 Y
+     - 탈퇴 회원 (30일 이내) 가입불가 안내 (JO5003) 화면 링크
+     */
+    if (resultBean.isSuccess()) {
+
+      // 신규 가입
+      setMobileAuthorizationBean(mobileAuthBean);
+      checkMobileAuthorized();
+
+      // 토스트를 위한 이벤트 전달.
+      presenter.onEvent(new Event.Builder(Event.SUCCESS).integer(Event.MEMBER_AUTH).build());
+
+      disposable.add(
+        Completable.timer(2000, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread())
+          .subscribe(() -> {
+            presenter.onEvent(new Event.Builder(Event.CONFIRM).integer(Event.MEMBER_AUTH).build());
+          }, Throwable::printStackTrace)
+      );
+    }
+    else if (resultBean.getCode() == LifeplusAPIBean.RETURN_MOBILE_AUTH_ERROR_UNDER_14_YEARS) {
+      //14세 미만
+      presenter.onEvent(new Event.Builder(Event.SUCCESS).integer(Event.MEMBER_UNDER_14YEARS).build());
+    }
+    else if (resultBean.getCode() == LifeplusAPIBean.RETURN_MOBILE_AUTH_ERROR_ALREADY_MEMBER) {
+      // 이미 회원
+      presenter.onEvent(new Event.Builder(Event.SUCCESS).integer(Event.MEMBER_ALREADY_MEMBER).build());
+    }
+    else if (resultBean.getCode() == LifeplusAPIBean.RETURN_MOBILE_AUTH_ERROR_NEED_FOR_30_DAYS) {
+      // 30일이내 가입
+      SuperModel.getInstance().addMemberStatus(SuperModel.MEMBER_STATUS_BIT_OUT);
+      presenter.onEvent(new Event.Builder(Event.SUCCESS).integer(Event.MEMBER_NEED_30DAYS).build());
+    }
+    else {
+      presenter.onEvent(new Event.Builder(Event.ERROR).integer(Event.MEMBER_AUTH).build());
+    }
+  }
 
   public int getBackwardWarnStringId() {
     return backwardWarnStringId;

+ 3 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/Event.java

@@ -79,6 +79,9 @@ public class Event {
   public static final int MEMBER_DELETE = 1004;
   public static final int MEMBER_LOGIN = 1005;
   public static final int MEMBER_NEED_30DAYS = 1006;
+  public static final int MEMBER_AUTH = 1007;
+  public static final int MEMBER_UNDER_14YEARS = 1008;
+  public static final int MEMBER_ALREADY_MEMBER = 1009;
 
   /***********************************
    * Object

+ 72 - 87
app/src/main/java/kr/co/zumo/app/lifeplus/view/presenter/signup/SignUpMobileAuthPresenter.java

@@ -12,20 +12,12 @@ import android.view.View;
 import android.widget.TextView;
 import android.widget.Toast;
 
-import com.google.gson.Gson;
-
-import java.util.concurrent.TimeUnit;
-
-import io.reactivex.Completable;
-import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.disposables.Disposable;
 import kr.co.zumo.app.R;
 import kr.co.zumo.app.lifeplus.application.App;
 import kr.co.zumo.app.lifeplus.bean.MobileAuthBean;
-import kr.co.zumo.app.lifeplus.bean.api.LifeplusAPIBean;
 import kr.co.zumo.app.lifeplus.manager.ActionBarManager;
 import kr.co.zumo.app.lifeplus.model.SignUpModel;
-import kr.co.zumo.app.lifeplus.model.SuperModel;
 import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
 import kr.co.zumo.app.lifeplus.util.Formatter;
 import kr.co.zumo.app.lifeplus.util.ResourceUtil;
@@ -126,95 +118,88 @@ public class SignUpMobileAuthPresenter extends SignUpFragmentPresenter {
   protected void onEventInternal(Event event) {
     switch (event.getEventId()) {
       case Event.CONFIRM:
-        onCommand(new FragmentChangeCommand(ScreenID.SIGN_UP_PIN, ScreenID.DIRECTION_NEXT));
+        if (event.getInteger() == Event.MEMBER_AUTH) {
+          // 가입 완료 토스트 종료 쯤 전달.
+          onCommand(new FragmentChangeCommand(ScreenID.SIGN_UP_PIN, ScreenID.DIRECTION_NEXT));
+        }
         break;
       case Event.SUCCESS:
-        Log.i("APP# SignUpMobileAuthPresenter | onEventInternal", "|" + "resultString: " + event.getJson());
-        onAuthResult(event);
+        if (event.getInteger() == Event.MEMBER_AUTH) {
+          // 가입 완료 즉시 전달.
+          onAuthResult();
+        }
+        else if (event.getInteger() == Event.MEMBER_UNDER_14YEARS) {
+          //14세 미만
+          onCommand(new FragmentChangeCommand(ScreenID.SIGN_UP_UNDER_14_YEARS, ScreenID.DIRECTION_NEXT));
+        }
+        else if (event.getInteger() == Event.MEMBER_ALREADY_MEMBER) {
+          // 이미 회원
+          onCommand(new FragmentChangeCommand(ScreenID.SIGN_UP_ALREADY_MEMBER, ScreenID.DIRECTION_NEXT));
+        }
+        else if (event.getInteger() == Event.MEMBER_NEED_30DAYS) {
+          // 30일이내 가입
+          onCommand(new FragmentChangeCommand(ScreenID.SIGN_UP_NEED_FOR_30DAYS, ScreenID.DIRECTION_NEXT));
+        }
+        else {
+          Log.i("APP# SignUpMobileAuthPresenter | onEventInternal", "|" + "resultString: " + event.getJson());
+          model.onAuthResult(event);
+        }
+        break;
+      case Event.ERROR:
+        // error
+        if (event.getInteger() == Event.MEMBER_AUTH) {
+          showPopup();
+        }
         break;
       default:
         break;
     }
   }
 
-  private void onAuthResult(Event event) {
-    MobileAuthBean mobileAuthBean = event.fromJson(MobileAuthBean.class);
-    LifeplusAPIBean resultBean = new Gson().fromJson(event.getString(), LifeplusAPIBean.class);
-
-    Log.w("APP# SignUpMobileAuthPresenter | onEventInternal", "| 인증 결과: " + resultBean.toPrettyJson());
-    Log.w("APP# SignUpMobileAuthPresenter | onEventInternal", "| 유저 데이터: " + mobileAuthBean.toPrettyJson());
-
-    /**
-     * 2. 성공 시 PROCESS 진입
-     1) 만 14세 이상 : 약관동의(JO2001)화면 링크
-     2) 14세 미만 : 14세 미만 가입불가 안내 (JO5002) 화면 링크
-     3) 회원 Y: 기존회원 간편암호 확인 안내 (JO5002) 화면 링크

-     4) 회원탈퇴일 기준 30일 이내 Y
-     - 탈퇴 회원 (30일 이내) 가입불가 안내 (JO5003) 화면 링크
-     */
-    if (resultBean.isSuccess()) {
-      Context context = App.getInstance().getContext();
-      Toast toast = new Toast(context);
-      toast.setDuration(Toast.LENGTH_SHORT);
-      toast.setGravity(Gravity.FILL, 0, 0);
-      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-      View view = inflater.inflate(R.layout.sign_up_auth_result_dialog, null);
-      ((TextView) view.findViewById(R.id.text_view_authorization_result_name)).setText(mobileAuthBean.getName());
-      ((TextView) view.findViewById(R.id.text_view_authorization_result_gender)).setText(mobileAuthBean.getGender());
-      ((TextView) view.findViewById(R.id.text_view_authorization_result_birth_date)).setText(
-        Formatter.format(mobileAuthBean.getBirthDate(), MobileAuthBean.BIRTH_DATE_FORMAT, "yyyy.mm.dd")
-      );
-      String phoneNumber = mobileAuthBean.getFirstPhoneNumber() + mobileAuthBean.getPhoneNumber();
-      Log.i("APP# SignUpMobileAuthPresenter | onAuthResult", "| b: " + phoneNumber);
-      Log.i("APP# SignUpMobileAuthPresenter | onAuthResult", "| a: " + StringUtil.formatPhoneNumber(phoneNumber));
-      ((TextView) view.findViewById(R.id.text_view_authorization_result_phone_number)).setText(
-        StringUtil.formatPhoneNumber(phoneNumber)
-      );
-      toast.setView(view);
-      toast.show();
-
-      // 신규 가입
-      model.setMobileAuthorizationBean(mobileAuthBean);
-      model.checkMobileAuthorized();
-
-      disposable = Completable.timer(2000, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread())
-        .subscribe(() -> {
-          onEvent(new Event.Builder(Event.CONFIRM).build());
-        }, Throwable::printStackTrace);
-    }
-    else if (resultBean.getCode() == LifeplusAPIBean.RETURN_MOBILE_AUTH_ERROR_UNDER_14_YEARS) {
-      //14세 미만
-      onCommand(new FragmentChangeCommand(ScreenID.SIGN_UP_UNDER_14_YEARS, ScreenID.DIRECTION_NEXT));
-    }
-    else if (resultBean.getCode() == LifeplusAPIBean.RETURN_MOBILE_AUTH_ERROR_ALREADY_MEMBER) {
-      // 이미 회원
-      onCommand(new FragmentChangeCommand(ScreenID.SIGN_UP_ALREADY_MEMBER, ScreenID.DIRECTION_NEXT));
-    }
-    else if (resultBean.getCode() == LifeplusAPIBean.RETURN_MOBILE_AUTH_ERROR_NEED_FOR_30_DAYS) {
-      // 30일이내 가입
-      SuperModel.getInstance().addMemberStatus(SuperModel.MEMBER_STATUS_BIT_OUT);
-      onCommand(new FragmentChangeCommand(ScreenID.SIGN_UP_NEED_FOR_30DAYS, ScreenID.DIRECTION_NEXT));
-    }
-    else {
-      // 알 수 없는 에러;
-      dialog = DialogBuilder.create(DialogID.CONFIRM)
-        .listener(new IDialogResultListener() {
-          @Override
-          public void onDialogResult(DialogBase dialog, Event event) {
-            if (event.getEventId() == Event.CONFIRM) {
-              dialog.dispose();
-            }
+  private void showPopup() {
+    dialog = DialogBuilder.create(DialogID.CONFIRM)
+      .listener(new IDialogResultListener() {
+        @Override
+        public void onDialogResult(DialogBase dialog, Event event) {
+          if (event.getEventId() == Event.CONFIRM) {
+            dialog.dispose();
           }
+        }
+
+        @Override
+        public void onDialogCanceled(DialogBase dialog) {
+        }
+      })
+      .attribute((IAttribute<ConfirmDialog>) dialog -> {
+        dialog.setText(ResourceUtil.getString(R.string.undefined_error));
+      })
+      .show();
+  }
+
+
+  private void onAuthResult() {
+    MobileAuthBean mobileAuthBean = model.getMobileAuthorizationBean();
+
+    Context context = App.getInstance().getContext();
+    Toast toast = new Toast(context);
+    toast.setDuration(Toast.LENGTH_SHORT);
+    toast.setGravity(Gravity.FILL, 0, 0);
+    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+    View view = inflater.inflate(R.layout.sign_up_auth_result_dialog, null);
+    ((TextView) view.findViewById(R.id.text_view_authorization_result_name)).setText(mobileAuthBean.getName());
+    ((TextView) view.findViewById(R.id.text_view_authorization_result_gender)).setText(mobileAuthBean.getGender());
+    ((TextView) view.findViewById(R.id.text_view_authorization_result_birth_date)).setText(
+      Formatter.format(mobileAuthBean.getBirthDate(), MobileAuthBean.BIRTH_DATE_FORMAT, "yyyy.mm.dd")
+    );
+    String phoneNumber = mobileAuthBean.getFirstPhoneNumber() + mobileAuthBean.getPhoneNumber();
+    Log.i("APP# SignUpMobileAuthPresenter | onAuthResult", "| b: " + phoneNumber);
+    Log.i("APP# SignUpMobileAuthPresenter | onAuthResult", "| a: " + StringUtil.formatPhoneNumber(phoneNumber));
+    ((TextView) view.findViewById(R.id.text_view_authorization_result_phone_number)).setText(
+      StringUtil.formatPhoneNumber(phoneNumber)
+    );
+    toast.setView(view);
+    toast.show();
 
-          @Override
-          public void onDialogCanceled(DialogBase dialog) {
-          }
-        })
-        .attribute((IAttribute<ConfirmDialog>) dialog -> {
-          dialog.setText(ResourceUtil.getString(R.string.undefined_error));
-        })
-        .show();
-    }
   }
 
   @Override