소스 검색

增加老师端解绑忌口入口,修改部分userInfo错误问题

Pq 1 년 전
부모
커밋
0cc1bf7c0e
20개의 변경된 파일711개의 추가작업 그리고 66개의 파일을 삭제
  1. 1 0
      BaseLibrary/src/main/java/com/cooleshow/base/router/RouterPath.kt
  2. 7 0
      teacher/src/main/AndroidManifest.xml
  3. 15 0
      teacher/src/main/java/com/cooleshow/teacher/api/APIService.java
  4. 1 1
      teacher/src/main/java/com/cooleshow/teacher/bean/LiveCourseListBean.java
  5. 161 0
      teacher/src/main/java/com/cooleshow/teacher/bean/UnBindTenantDetailBean.java
  6. 14 0
      teacher/src/main/java/com/cooleshow/teacher/contract/UnbindTenantContract.java
  7. 102 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/mine/UnbindTenantPresenter.java
  8. 1 0
      teacher/src/main/java/com/cooleshow/teacher/ui/main/HomeFragment.kt
  9. 56 46
      teacher/src/main/java/com/cooleshow/teacher/ui/mine/SettingActivity.java
  10. 185 1
      teacher/src/main/java/com/cooleshow/teacher/ui/mine/UnBindTenantActivity.java
  11. BIN
      teacher/src/main/res/drawable-xhdpi/icon_unbind_tenant_tip.png
  12. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_unbind_tenant_tip.png
  13. 5 0
      teacher/src/main/res/drawable/shape_f6f6f6_10dp.xml
  14. 93 7
      teacher/src/main/res/layout/ac_unbind_tenant_layout.xml
  15. 47 5
      teacher/src/main/res/layout/activity_setting.xml
  16. 1 1
      usercenter/src/main/java/com/cooleshow/usercenter/bean/TeacherUserInfo.java
  17. 1 0
      usercenter/src/main/java/com/cooleshow/usercenter/constants/UserConstants.java
  18. 10 2
      usercenter/src/main/java/com/cooleshow/usercenter/helper/UserHelper.java
  19. 1 1
      usercenter/src/main/java/com/cooleshow/usercenter/presenter/VerifyLoginPresenter.java
  20. 10 2
      usercenter/src/main/java/com/cooleshow/usercenter/ui/activity/setting/SignOutAccountActivity.java

+ 1 - 0
BaseLibrary/src/main/java/com/cooleshow/base/router/RouterPath.kt

@@ -164,6 +164,7 @@ object RouterPath {
             const val MINE_EQUIPMENT_TEST = "/ui/mine/EquipmentTestActivity"
             const val MINE_EQUIPMENT_TEST = "/ui/mine/EquipmentTestActivity"
             const val MINE_UNBIND_BANKCARD = "/teacher/ui/mine/UnBindBankCardActivity"
             const val MINE_UNBIND_BANKCARD = "/teacher/ui/mine/UnBindBankCardActivity"
             const val MINE_COURSE_WARE = "/teacher/ui/mine/CoursewareListActivity"
             const val MINE_COURSE_WARE = "/teacher/ui/mine/CoursewareListActivity"
+            const val UNBIND_TENANT = "/teacher/ui/mine/UnBindTenantActivity"
         }
         }
     }
     }
 
 

+ 7 - 0
teacher/src/main/AndroidManifest.xml

@@ -347,6 +347,13 @@
             android:configChanges="keyboardHidden|orientation|screenSize"
             android:configChanges="keyboardHidden|orientation|screenSize"
             android:exported="true"
             android:exported="true"
             android:theme="@android:style/Theme.Translucent.NoTitleBar" />
             android:theme="@android:style/Theme.Translucent.NoTitleBar" />
+
+        <activity
+            android:name=".ui.mine.UnBindTenantActivity"
+            android:windowSoftInputMode="adjustPan"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="portrait" />
+
         <activity
         <activity
             android:name="com.tencent.tauth.AuthActivity"
             android:name="com.tencent.tauth.AuthActivity"
             android:launchMode="singleTask"
             android:launchMode="singleTask"

+ 15 - 0
teacher/src/main/java/com/cooleshow/teacher/api/APIService.java

@@ -11,6 +11,7 @@ import com.cooleshow.teacher.bean.HomeMenuBean;
 import com.cooleshow.teacher.bean.LiveListBean;
 import com.cooleshow.teacher.bean.LiveListBean;
 import com.cooleshow.teacher.bean.LivePlayBackDataBean;
 import com.cooleshow.teacher.bean.LivePlayBackDataBean;
 import com.cooleshow.teacher.bean.TeacherPromoteIncomeBean;
 import com.cooleshow.teacher.bean.TeacherPromoteIncomeBean;
+import com.cooleshow.teacher.bean.UnBindTenantDetailBean;
 import com.cooleshow.teacher.bean.request.AssignHomeWorkEntry;
 import com.cooleshow.teacher.bean.request.AssignHomeWorkEntry;
 import com.cooleshow.teacher.bean.request.CommentHomeWorkEntry;
 import com.cooleshow.teacher.bean.request.CommentHomeWorkEntry;
 import com.cooleshow.teacher.bean.request.LiveCourseEntry;
 import com.cooleshow.teacher.bean.request.LiveCourseEntry;
@@ -813,4 +814,18 @@ public interface APIService {
     @FormUrlEncoded
     @FormUrlEncoded
     @POST(TEACHER_GROUP + "courseCourseware/remove")
     @POST(TEACHER_GROUP + "courseCourseware/remove")
     Observable<BaseResponse<Object>> delCourseware(@FieldMap Map<String, String> params);
     Observable<BaseResponse<Object>> delCourseware(@FieldMap Map<String, String> params);
+
+    /**
+     * 请求课件列表
+     *
+     * @param
+     * @return
+     */
+    @POST(TEACHER_GROUP+"teacher/unbindTenant")
+    Observable<BaseResponse<Object>> unBindTenant(@Body RequestBody requestBody);
+    @GET(TEACHER_GROUP+"teacher/unbindTenantDetail")
+    Observable<BaseResponse<UnBindTenantDetailBean>> unBindDetail();
+
+    @POST(TEACHER_GROUP+"teacher/unbindTenantCancel")
+    Observable<BaseResponse<Object>> cancelUnbindApply();
 }
 }

+ 1 - 1
teacher/src/main/java/com/cooleshow/teacher/bean/LiveCourseListBean.java

@@ -79,7 +79,7 @@ public class LiveCourseListBean {
         public String subjectName;
         public String subjectName;
         public String avatar;
         public String avatar;
         public String username;
         public String username;
-        public int userId;
+        public String userId;
         public String imGroupId;
         public String imGroupId;
     }
     }
 }
 }

+ 161 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/UnBindTenantDetailBean.java

@@ -0,0 +1,161 @@
+package com.cooleshow.teacher.bean;
+
+/**
+ * Author by pq, Date on 2023/9/14.
+ */
+public class UnBindTenantDetailBean {
+
+    /**
+     * createTime :
+     * id : 0
+     * interveneTime :
+     * phone :
+     * reason :
+     * status :
+     * subjectName :
+     * tenantId : 0
+     * tenantName :
+     * unbindReason :
+     * updateTime :
+     * userId : 0
+     * userName :
+     * userType :
+     * verifyUserId : 0
+     */
+
+    private String createTime;
+    private int id;
+    private String interveneTime;
+    private String phone;
+    private String reason;
+    private String status;
+    private String subjectName;
+    private int tenantId;
+    private String tenantName;
+    private String unbindReason;
+    private String updateTime;
+    private int userId;
+    private String userName;
+    private String userType;
+    private int verifyUserId;
+
+    public String getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(String createTime) {
+        this.createTime = createTime;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String getInterveneTime() {
+        return interveneTime;
+    }
+
+    public void setInterveneTime(String interveneTime) {
+        this.interveneTime = interveneTime;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public int getTenantId() {
+        return tenantId;
+    }
+
+    public void setTenantId(int tenantId) {
+        this.tenantId = tenantId;
+    }
+
+    public String getTenantName() {
+        return tenantName;
+    }
+
+    public void setTenantName(String tenantName) {
+        this.tenantName = tenantName;
+    }
+
+    public String getUnbindReason() {
+        return unbindReason;
+    }
+
+    public void setUnbindReason(String unbindReason) {
+        this.unbindReason = unbindReason;
+    }
+
+    public String getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(String updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public int getUserId() {
+        return userId;
+    }
+
+    public void setUserId(int userId) {
+        this.userId = userId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getUserType() {
+        return userType;
+    }
+
+    public void setUserType(String userType) {
+        this.userType = userType;
+    }
+
+    public int getVerifyUserId() {
+        return verifyUserId;
+    }
+
+    public void setVerifyUserId(int verifyUserId) {
+        this.verifyUserId = verifyUserId;
+    }
+}

+ 14 - 0
teacher/src/main/java/com/cooleshow/teacher/contract/UnbindTenantContract.java

@@ -1,6 +1,7 @@
 package com.cooleshow.teacher.contract;
 package com.cooleshow.teacher.contract;
 
 
 import com.cooleshow.base.presenter.view.BaseView;
 import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.teacher.bean.UnBindTenantDetailBean;
 
 
 /**
 /**
  * 创建日期:2022/5/18 14:11
  * 创建日期:2022/5/18 14:11
@@ -11,6 +12,19 @@ import com.cooleshow.base.presenter.view.BaseView;
 public interface UnbindTenantContract {
 public interface UnbindTenantContract {
     interface View extends BaseView {
     interface View extends BaseView {
 
 
+        void verifyImgCodeSuccess(String phone);
+
+        void sendVerifyCodeSuccess();
+
+        void sendVerifyCodeFail();
+
+        void unBindTenantSubmitSuccess();
+
+        void queryDetailSuccess(UnBindTenantDetailBean data);
+
+
+        void cancelUnbindApplySuccess();
+
     }
     }
     interface Presenter {
     interface Presenter {
     }
     }

+ 102 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/mine/UnbindTenantPresenter.java

@@ -1,8 +1,22 @@
 package com.cooleshow.teacher.presenter.mine;
 package com.cooleshow.teacher.presenter.mine;
 
 
+import com.cooleshow.base.common.BaseApplication;
+import com.cooleshow.base.common.BaseConstant;
 import com.cooleshow.base.presenter.BasePresenter;
 import com.cooleshow.base.presenter.BasePresenter;
+import com.cooleshow.base.rx.BaseObserver;
+import com.cooleshow.base.utils.RequestBodyUtil;
+import com.cooleshow.teacher.api.APIService;
+import com.cooleshow.teacher.bean.UnBindTenantDetailBean;
 import com.cooleshow.teacher.contract.AboutContract;
 import com.cooleshow.teacher.contract.AboutContract;
 import com.cooleshow.teacher.contract.UnbindTenantContract;
 import com.cooleshow.teacher.contract.UnbindTenantContract;
+import com.cooleshow.usercenter.constants.UserConstants;
+import com.cooleshow.usercenter.data.api.UserApi;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.HashMap;
+import java.util.Map;
 
 
 /**
 /**
  * 创建日期:2022/5/18 14:08
  * 创建日期:2022/5/18 14:08
@@ -11,5 +25,93 @@ import com.cooleshow.teacher.contract.UnbindTenantContract;
  * 类说明:
  * 类说明:
  */
  */
 public class UnbindTenantPresenter extends BasePresenter<UnbindTenantContract.View> implements UnbindTenantContract.Presenter {
 public class UnbindTenantPresenter extends BasePresenter<UnbindTenantContract.View> implements UnbindTenantContract.Presenter {
+    /**
+     * 图片验证码验证
+     *
+     * @param phone
+     * @param imgCode
+     */
+    public void verifyImgCode(String phone, String imgCode) {
+        if (getView() != null) {
+            getView().showLoading();
+        }
+        Map<String, String> params = new HashMap<>();
+        params.put("code", imgCode);
+        params.put("phone", phone);
+        addSubscribe(create(UserApi.class).verifyImgCode(params, BaseConstant.getClientGroup()), new BaseObserver<Object>(getView()) {
+            @Override
+            protected void onSuccess(Object data) {
+                if (getView() != null) {
+                    getView().verifyImgCodeSuccess(phone);
+                }
+            }
+
+        });
+    }
+
+    public void sendSmsCode(String mobile) {
+        getView().showLoading();
+        addSubscribe(create(UserApi.class).sendSmsCode(mobile, UserConstants.SEND_VERIFY_CODE_TYPE_UNBIND_TENANT), new BaseObserver<Object>(getView()) {
+            @Override
+            protected void onSuccess(Object data) {
+                if (getView() != null) {
+                    getView().sendVerifyCodeSuccess();
+                }
+            }
+
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+                if (getView() != null) {
+                    getView().sendVerifyCodeFail();
+                }
+            }
+        });
+    }
+
+    public void cancelApply(){
+        addSubscribe(create(APIService.class).cancelUnbindApply(), new BaseObserver<Object>(getView()) {
+            @Override
+            protected void onSuccess(Object data) {
+                if (getView() != null) {
+                    getView().cancelUnbindApplySuccess();
+                }
+            }
+        });
+    }
+
+    public void unBind(String code, String reason) {
+        if (getView() != null) {
+            getView().showLoading();
+        }
+        JSONObject jsonObject = new JSONObject();
+        try {
+            jsonObject.put("code", code);
+            jsonObject.put("unbindReason", reason);
+        } catch (JSONException e) {
+            throw new RuntimeException(e);
+        }
+        addSubscribe(create(APIService.class).unBindTenant(RequestBodyUtil.convertToRequestBodyJson(jsonObject.toString())), new BaseObserver<Object>(getView()) {
+            @Override
+            protected void onSuccess(Object data) {
+                if (getView() != null) {
+                    getView().unBindTenantSubmitSuccess();
+                }
+            }
+        });
+    }
 
 
+    public void queryUnBindDetail() {
+        if (getView() != null) {
+            getView().showLoading();
+        }
+        addSubscribe(create(APIService.class).unBindDetail(), new BaseObserver<UnBindTenantDetailBean>(getView()) {
+            @Override
+            protected void onSuccess(UnBindTenantDetailBean data) {
+                if (getView() != null) {
+                    getView().queryDetailSuccess(data);
+                }
+            }
+        });
+    }
 }
 }

+ 1 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/main/HomeFragment.kt

@@ -22,6 +22,7 @@ import com.cooleshow.teacher.constants.TeacherInfoConstants
 import com.cooleshow.teacher.contract.HomeContract
 import com.cooleshow.teacher.contract.HomeContract
 import com.cooleshow.teacher.databinding.FragmentHomeLayoutBinding
 import com.cooleshow.teacher.databinding.FragmentHomeLayoutBinding
 import com.cooleshow.teacher.presenter.main.HomePresenter
 import com.cooleshow.teacher.presenter.main.HomePresenter
+import com.cooleshow.usercenter.bean.TeacherUserInfo
 import com.cooleshow.usercenter.helper.UserHelper
 import com.cooleshow.usercenter.helper.UserHelper
 import java.util.*
 import java.util.*
 
 

+ 56 - 46
teacher/src/main/java/com/cooleshow/teacher/ui/mine/SettingActivity.java

@@ -37,48 +37,41 @@ public class SettingActivity extends BaseMVPActivity<ActivitySettingBinding, Set
 
 
     @Override
     @Override
     public void onClick(View view) {
     public void onClick(View view) {
-        switch (view.getId()) {
-            case R.id.cl_address:
-                ARouter.getInstance().build(RouterPath.BaseCenter.MINE_ADDRESS_LIST)
-                        .withBoolean(BaseConstant.CHECK_ADDRESS,true)
-                        .navigation();
-                break;
-            case R.id.im_select:
-                is_detection=!is_detection;
-                SPUtils.getInstance().put("IS_DETECTION",is_detection);
-                if (is_detection) {
-                    viewBinding.imSelect.setImageResource(com.cooleshow.base.R.drawable.icon_switch_off);
-                } else {
-                    viewBinding.imSelect.setImageResource(com.cooleshow.base.R.drawable.icon_switch_open);
-                }
-                break;
-            case R.id.cl_user_private:
-                WebStartHelper.startUserPrivacy();
-                break;
-            case R.id.cl_private:
-                //跳转隐私协议
-                WebStartHelper.startPrivacy();
-                break;
-            case R.id.cl_about:
-                ARouter.getInstance().build(RouterPath.MineCenter.MINE_ABOUT)
-                        .navigation();
-                break;
-            case R.id.tv_login_out:
-                //事件埋点->退出登录
-                EventHelper.addEvent(EventConstants.EVENT_ID_LOGOUT_FOR_TEACHER);
-                UserHelper.saveUserToken("");
-                ARouter.getInstance().build(RouterPath.UserCenter.PATH_VERIFY_LOGIN)
-                        .withString(UserConstants.PHONE_NUM_KEY, UserHelper.getUserPhone())
-                        .navigation();
-                break;
-            case R.id.cl_feedback:
-                ARouter.getInstance().build(RouterPath.MineCenter.MINE_FEEDBACK)
-                        .navigation();
-                break;
-            case R.id.tv_sign_out_account:
-                ARouter.getInstance().build(RouterPath.UserCenter.SIGN_OUT_ACCOUNT)
-                        .navigation();
-                break;
+        int id = view.getId();
+        if (id == R.id.cl_address) {
+            ARouter.getInstance().build(RouterPath.BaseCenter.MINE_ADDRESS_LIST)
+                    .withBoolean(BaseConstant.CHECK_ADDRESS, true)
+                    .navigation();
+        } else if (id == R.id.im_select) {
+            is_detection = !is_detection;
+            SPUtils.getInstance().put("IS_DETECTION", is_detection);
+            if (is_detection) {
+                viewBinding.imSelect.setImageResource(com.cooleshow.base.R.drawable.icon_switch_off);
+            } else {
+                viewBinding.imSelect.setImageResource(com.cooleshow.base.R.drawable.icon_switch_open);
+            }
+        } else if (id == R.id.cl_user_private) {
+            WebStartHelper.startUserPrivacy();
+        } else if (id == R.id.cl_private) {//跳转隐私协议
+            WebStartHelper.startPrivacy();
+        } else if (id == R.id.cl_about) {
+            ARouter.getInstance().build(RouterPath.MineCenter.MINE_ABOUT)
+                    .navigation();
+        } else if (id == R.id.tv_login_out) {//事件埋点->退出登录
+            EventHelper.addEvent(EventConstants.EVENT_ID_LOGOUT_FOR_TEACHER);
+            UserHelper.saveUserToken("");
+            ARouter.getInstance().build(RouterPath.UserCenter.PATH_VERIFY_LOGIN)
+                    .withString(UserConstants.PHONE_NUM_KEY, UserHelper.getUserPhone())
+                    .navigation();
+        } else if (id == R.id.cl_feedback) {
+            ARouter.getInstance().build(RouterPath.MineCenter.MINE_FEEDBACK)
+                    .navigation();
+        } else if (id == R.id.tv_sign_out_account) {
+            ARouter.getInstance().build(RouterPath.UserCenter.SIGN_OUT_ACCOUNT)
+                    .navigation();
+        } else if (id == R.id.cl_unbind_tenant) {
+            ARouter.getInstance().build(RouterPath.MineCenter.UNBIND_TENANT)
+                    .navigation();
         }
         }
     }
     }
 
 
@@ -93,6 +86,17 @@ public class SettingActivity extends BaseMVPActivity<ActivitySettingBinding, Set
     @Override
     @Override
     protected void initView() {
     protected void initView() {
         initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "设置");
         initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "设置");
+
+        is_detection = SPUtils.getInstance().getBoolean("IS_DETECTION");
+        if (is_detection) {
+            viewBinding.imSelect.setImageResource(com.cooleshow.base.R.drawable.icon_switch_off);
+        } else {
+            viewBinding.imSelect.setImageResource(com.cooleshow.base.R.drawable.icon_switch_open);
+        }
+
+    }
+
+    private void initListener() {
         viewBinding.clAddress.setOnClickListener(this);
         viewBinding.clAddress.setOnClickListener(this);
         viewBinding.imSelect.setOnClickListener(this);
         viewBinding.imSelect.setOnClickListener(this);
         viewBinding.clPrivate.setOnClickListener(this);
         viewBinding.clPrivate.setOnClickListener(this);
@@ -101,12 +105,18 @@ public class SettingActivity extends BaseMVPActivity<ActivitySettingBinding, Set
         viewBinding.clFeedback.setOnClickListener(this);
         viewBinding.clFeedback.setOnClickListener(this);
         viewBinding.clUserPrivate.setOnClickListener(this);
         viewBinding.clUserPrivate.setOnClickListener(this);
         viewBinding.tvSignOutAccount.setOnClickListener(this);
         viewBinding.tvSignOutAccount.setOnClickListener(this);
+        viewBinding.clUnbindTenant.setOnClickListener(this);
+    }
 
 
-        is_detection = SPUtils.getInstance().getBoolean("IS_DETECTION");
-        if (is_detection) {
-            viewBinding.imSelect.setImageResource(com.cooleshow.base.R.drawable.icon_switch_off);
+    @Override
+    public void initData() {
+        super.initData();
+        initListener();
+        int tenantId = UserHelper.getTenantId();
+        if (tenantId != UserConstants.NO_HAVE_TENANT) {
+            viewBinding.clUnbindTenant.setVisibility(View.VISIBLE);
         } else {
         } else {
-            viewBinding.imSelect.setImageResource(com.cooleshow.base.R.drawable.icon_switch_open);
+            viewBinding.clUnbindTenant.setVisibility(View.GONE);
         }
         }
 
 
     }
     }

+ 185 - 1
teacher/src/main/java/com/cooleshow/teacher/ui/mine/UnBindTenantActivity.java

@@ -1,17 +1,59 @@
 package com.cooleshow.teacher.ui.mine;
 package com.cooleshow.teacher.ui.mine;
 
 
+import android.os.Handler;
+import android.os.Looper;
+import android.text.SpannableString;
 import android.text.TextUtils;
 import android.text.TextUtils;
+import android.view.View;
 
 
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.base.utils.ToastUtil;
+import com.cooleshow.base.utils.UiUtils;
+import com.cooleshow.base.widgets.dialog.CommonDialog;
+import com.cooleshow.base.widgets.dialog.ImgVerifyCodeDialog;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.bean.UnBindTenantDetailBean;
+import com.cooleshow.teacher.contract.UnbindTenantContract;
 import com.cooleshow.teacher.databinding.AcUnbindTenantLayoutBinding;
 import com.cooleshow.teacher.databinding.AcUnbindTenantLayoutBinding;
 import com.cooleshow.teacher.presenter.mine.UnbindTenantPresenter;
 import com.cooleshow.teacher.presenter.mine.UnbindTenantPresenter;
+import com.cooleshow.usercenter.constants.UserConstants;
 import com.cooleshow.usercenter.helper.UserHelper;
 import com.cooleshow.usercenter.helper.UserHelper;
+import com.cooleshow.usercenter.ui.activity.setting.SignOutAccountActivity;
 
 
 /**
 /**
  * Author by pq, Date on 2023/9/14.
  * Author by pq, Date on 2023/9/14.
  */
  */
-public class UnBindTenantActivity extends BaseMVPActivity<AcUnbindTenantLayoutBinding, UnbindTenantPresenter> {
+@Route(path = RouterPath.MineCenter.UNBIND_TENANT)
+public class UnBindTenantActivity extends BaseMVPActivity<AcUnbindTenantLayoutBinding, UnbindTenantPresenter> implements UnbindTenantContract.View, View.OnClickListener {
     private String mPhoneNum;
     private String mPhoneNum;
+    private int countTimeValue = UserConstants.VERIFY_CODE_COUNT_TIME;
+    private Handler mHandler = new Handler(Looper.getMainLooper());
+    public static final String DOING = "DOING";
+    public static final String PASS = "PASS";
+    public static final String UNPASS = "UNPASS";
+    private boolean isOnApply = false;
+    private ImgVerifyCodeDialog mImgVerifyCodeDialog;
+    Runnable mRunnable = new Runnable() {
+        @Override
+        public void run() {
+            countTimeValue--;
+            viewBinding.tvSendVerifyCode.setText(countTimeValue + "s");
+            viewBinding.tvSendVerifyCode.setClickable(false);
+            if (countTimeValue < 0) {
+                resetBt();
+            } else {
+                mHandler.postDelayed(mRunnable, 1000);
+            }
+        }
+    };
+
+
+    private void resetBt() {
+        viewBinding.tvSendVerifyCode.setClickable(true);
+        viewBinding.tvSendVerifyCode.setText("获取验证码");
+    }
 
 
     @Override
     @Override
     protected void initView() {
     protected void initView() {
@@ -27,16 +69,38 @@ public class UnBindTenantActivity extends BaseMVPActivity<AcUnbindTenantLayoutBi
             finish();
             finish();
             return;
             return;
         }
         }
+        presenter.queryUnBindDetail();
         try {
         try {
             String cPhone = mPhoneNum.substring(0, 3) + "****" + mPhoneNum.substring(7, mPhoneNum.length());
             String cPhone = mPhoneNum.substring(0, 3) + "****" + mPhoneNum.substring(7, mPhoneNum.length());
             viewBinding.tvTitle.setText(String.format("将%s所绑定的机构解绑", cPhone));
             viewBinding.tvTitle.setText(String.format("将%s所绑定的机构解绑", cPhone));
+            String tenantName = UserHelper.getTenantName();
+            SpannableString spannableString = UiUtils.diffColorString("解绑机构后,在此机构的数据将无法恢复,确认要继续解绑", tenantName, "吗?", getResources().getColor(com.dayayuemeng.classroom.R.color.color_777777), getResources().getColor(com.cooleshow.base.R.color.color_ff5a56));
+            viewBinding.tvTip.setText(spannableString);
         } catch (Exception e) {
         } catch (Exception e) {
             e.printStackTrace();
             e.printStackTrace();
         }
         }
     }
     }
 
 
     private void initListener() {
     private void initListener() {
+        viewBinding.tvConfirm.setOnClickListener(this);
+    }
 
 
+    private void showImgVerifyCodeDialog() {
+        if (mImgVerifyCodeDialog == null) {
+            mImgVerifyCodeDialog = new ImgVerifyCodeDialog(UnBindTenantActivity.this);
+        }
+        if (!mImgVerifyCodeDialog.isShowing()) {
+            mImgVerifyCodeDialog.show();
+        }
+        mImgVerifyCodeDialog.setPhone(mPhoneNum);
+        mImgVerifyCodeDialog.setOnEventListener(new ImgVerifyCodeDialog.OnEventListener() {
+            @Override
+            public void onVerifyImgCode(String phone, String imgCode) {
+                if (presenter != null) {
+                    presenter.verifyImgCode(phone, imgCode);
+                }
+            }
+        });
     }
     }
 
 
     @Override
     @Override
@@ -48,4 +112,124 @@ public class UnBindTenantActivity extends BaseMVPActivity<AcUnbindTenantLayoutBi
     protected UnbindTenantPresenter createPresenter() {
     protected UnbindTenantPresenter createPresenter() {
         return new UnbindTenantPresenter();
         return new UnbindTenantPresenter();
     }
     }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        if (mHandler != null) {
+            mHandler.removeCallbacksAndMessages(null);
+        }
+    }
+
+    @Override
+    public void verifyImgCodeSuccess(String phone) {
+        if (isFinishing() || isDestroyed()) {
+            return;
+        }
+        if (mImgVerifyCodeDialog != null) {
+            mImgVerifyCodeDialog.dismiss();
+        }
+        presenter.sendSmsCode(mPhoneNum);
+    }
+
+    @Override
+    public void sendVerifyCodeSuccess() {
+        ToastUtil.getInstance().showShort("验证码发送成功,请注意查收!");
+        startTimer();
+    }
+
+    private void startTimer() {
+        countTimeValue = UserConstants.VERIFY_CODE_COUNT_TIME;
+        mHandler.removeCallbacksAndMessages(null);
+        mHandler.postDelayed(mRunnable, 1000);
+    }
+
+    @Override
+    public void sendVerifyCodeFail() {
+        if (isFinishing() || isDestroyed()) {
+            return;
+        }
+        if (mHandler != null) {
+            mHandler.removeCallbacksAndMessages(null);
+        }
+        resetBt();
+    }
+
+    @Override
+    public void unBindTenantSubmitSuccess() {
+        if (!checkActivityExist()) {
+            return;
+        }
+        presenter.queryUnBindDetail();
+    }
+
+    @Override
+    public void cancelUnbindApplySuccess() {
+        if (!checkActivityExist()) {
+            return;
+        }
+        presenter.queryUnBindDetail();
+    }
+
+    @Override
+    public void queryDetailSuccess(UnBindTenantDetailBean data) {
+        if (!checkActivityExist()) {
+            return;
+        }
+        if (data != null) {
+            String status = data.getStatus();
+            isOnApply = TextUtils.equals(status, DOING);
+            viewBinding.tvConfirm.setVisibility(View.VISIBLE);
+            viewBinding.scrollView.setVisibility(isOnApply ? View.GONE : View.VISIBLE);
+            viewBinding.csUnbindDetail.setVisibility(isOnApply ? View.VISIBLE : View.GONE);
+            viewBinding.tvConfirm.setText(isOnApply ? "撤回解绑" : "确认解绑");
+            viewBinding.tvReason.setText(data.getReason());
+        }
+    }
+
+
+    @Override
+    public void onClick(View v) {
+        int id = v.getId();
+        if (id == R.id.tv_confirm) {
+            if (isOnApply) {
+                //撤销申请
+                presenter.cancelApply();
+            } else {
+                //提交申请
+                viewBinding.etNum.getText().toString();
+            }
+            return;
+        }
+        if (id == R.id.tv_send_verify_code) {
+            showImgVerifyCodeDialog();
+            return;
+        }
+    }
+
+    private void showConfirmDialog() {
+        String authCode = viewBinding.etNum.getText().toString().trim();
+        if (TextUtils.isEmpty(authCode)) {
+            ToastUtil.getInstance().showShort("请输入验证码");
+            return;
+        }
+        String reason = viewBinding.etContent.getText().toString().trim();
+        CommonDialog commonConfirmDialog = new CommonDialog(this);
+        commonConfirmDialog.show();
+        commonConfirmDialog.setTitle("提示");
+        commonConfirmDialog.setContent("确认解绑机构?");
+        commonConfirmDialog.setOnConfirmClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                presenter.unBind(authCode, reason);
+                commonConfirmDialog.dismiss();
+            }
+        });
+        commonConfirmDialog.setOnCancelClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                commonConfirmDialog.dismiss();
+            }
+        });
+    }
 }
 }

BIN
teacher/src/main/res/drawable-xhdpi/icon_unbind_tenant_tip.png


BIN
teacher/src/main/res/drawable-xxhdpi/icon_unbind_tenant_tip.png


+ 5 - 0
teacher/src/main/res/drawable/shape_f6f6f6_10dp.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#f6f6f6"/>
+    <corners android:radius="10dp"/>
+</shape>

+ 93 - 7
teacher/src/main/res/layout/ac_unbind_tenant_layout.xml

@@ -16,9 +16,10 @@
         android:layout_marginStart="13dp"
         android:layout_marginStart="13dp"
         android:layout_marginTop="12dp"
         android:layout_marginTop="12dp"
         android:layout_marginEnd="13dp"
         android:layout_marginEnd="13dp"
+        android:layout_marginBottom="30dp"
         android:background="@drawable/bg_white_10dp"
         android:background="@drawable/bg_white_10dp"
         android:scrollbars="vertical"
         android:scrollbars="vertical"
-        android:layout_marginBottom="30dp"
+        android:visibility="gone"
         app:layout_constraintBottom_toTopOf="@+id/tv_confirm"
         app:layout_constraintBottom_toTopOf="@+id/tv_confirm"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintRight_toRightOf="parent"
         app:layout_constraintRight_toRightOf="parent"
@@ -59,8 +60,8 @@
                 android:layout_height="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="16dp"
                 android:layout_marginTop="16dp"
                 android:includeFontPadding="false"
                 android:includeFontPadding="false"
-                android:paddingStart="20dp"
-                android:paddingEnd="20dp"
+                android:paddingStart="12dp"
+                android:paddingEnd="12dp"
                 android:textColor="@color/color_666666"
                 android:textColor="@color/color_666666"
                 app:layout_constraintLeft_toLeftOf="parent"
                 app:layout_constraintLeft_toLeftOf="parent"
                 app:layout_constraintRight_toRightOf="parent"
                 app:layout_constraintRight_toRightOf="parent"
@@ -120,13 +121,13 @@
                 android:layout_width="0dp"
                 android:layout_width="0dp"
                 android:layout_height="54dp"
                 android:layout_height="54dp"
                 android:layout_marginStart="12dp"
                 android:layout_marginStart="12dp"
+                android:layout_marginTop="12dp"
                 android:layout_marginEnd="12dp"
                 android:layout_marginEnd="12dp"
                 android:layout_marginBottom="23dp"
                 android:layout_marginBottom="23dp"
-                android:layout_marginTop="12dp"
                 android:background="@drawable/shape_6dp_border_eaeaea_1dp"
                 android:background="@drawable/shape_6dp_border_eaeaea_1dp"
-                app:layout_constraintTop_toBottomOf="@+id/et_content"
                 app:layout_constraintLeft_toLeftOf="parent"
                 app:layout_constraintLeft_toLeftOf="parent"
-                app:layout_constraintRight_toRightOf="parent" />
+                app:layout_constraintRight_toRightOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/et_content" />
 
 
 
 
             <TextView
             <TextView
@@ -170,8 +171,93 @@
         </androidx.constraintlayout.widget.ConstraintLayout>
         </androidx.constraintlayout.widget.ConstraintLayout>
     </ScrollView>
     </ScrollView>
 
 
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/cs_unbind_detail"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_marginStart="13dp"
+        android:layout_marginTop="12dp"
+        android:layout_marginEnd="13dp"
+        android:layout_marginBottom="30dp"
+        android:background="@drawable/bg_white_10dp"
+        android:scrollbars="vertical"
+        android:visibility="gone"
+        app:layout_constraintBottom_toTopOf="@+id/tv_confirm"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/toolbar_include">
+
+        <ImageView
+            android:id="@+id/iv_tip2"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="16dp"
+            android:src="@drawable/icon_unbind_tenant_tip"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <TextView
+            android:id="@+id/tv_tip2"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="26dp"
+            android:gravity="center"
+            android:includeFontPadding="false"
+            android:paddingStart="12dp"
+            android:paddingEnd="12dp"
+            android:textColor="@color/color_666666"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/iv_tip2"
+            tools:text=",正在审核中,请耐心等待机构人员处理" />
+
+        <TextView
+            android:id="@+id/tv_star2"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:includeFontPadding="false"
+            android:paddingStart="12dp"
+            android:text="*"
+            android:textColor="@color/color_ff5a56"
+            android:textSize="@dimen/sp_16"
+            app:layout_constraintBottom_toBottomOf="@+id/tv_reason_title2"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toTopOf="@+id/tv_reason_title2" />
+
+        <TextView
+            android:id="@+id/tv_reason_title2"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="28dp"
+            android:includeFontPadding="false"
+            android:text="解绑原因:"
+            android:textColor="@color/color_333333"
+            android:textSize="@dimen/sp_16"
+            android:textStyle="bold"
+            app:layout_constraintLeft_toRightOf="@+id/tv_star2"
+            app:layout_constraintTop_toBottomOf="@+id/tv_tip2" />
+
+        <TextView
+            android:id="@+id/tv_reason"
+            android:layout_width="0dp"
+            android:layout_height="83dp"
+            android:layout_marginStart="12dp"
+            android:layout_marginTop="10dp"
+            android:layout_marginEnd="12dp"
+            android:background="@drawable/shape_f6f6f6_10dp"
+            android:padding="10dp"
+            android:textColor="@color/color_777777"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/tv_reason_title2"
+            tools:text="我要换机构" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
 
 
     <TextView
     <TextView
+        android:visibility="gone"
         android:id="@+id/tv_confirm"
         android:id="@+id/tv_confirm"
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="44dp"
         android:layout_height="44dp"
@@ -180,7 +266,7 @@
         android:layout_marginBottom="26dp"
         android:layout_marginBottom="26dp"
         android:background="@drawable/shape_login_bt_bg"
         android:background="@drawable/shape_login_bt_bg"
         android:gravity="center"
         android:gravity="center"
-        android:text="注销账号"
+        android:text="确认解绑"
         android:textColor="@color/white"
         android:textColor="@color/white"
         android:textSize="@dimen/sp_18"
         android:textSize="@dimen/sp_18"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintBottom_toBottomOf="parent"

+ 47 - 5
teacher/src/main/res/layout/activity_setting.xml

@@ -249,26 +249,68 @@
 
 
             </androidx.constraintlayout.widget.ConstraintLayout>
             </androidx.constraintlayout.widget.ConstraintLayout>
 
 
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:visibility="gone"
+                android:id="@+id/cl_unbind_tenant"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/dp_50"
+                app:layout_constraintLeft_toLeftOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/cl_about">
+
+                <View
+                    android:layout_width="match_parent"
+                    android:layout_height="1dp"
+                    android:layout_marginLeft="11dp"
+                    android:layout_marginRight="9dp"
+                    android:background="@color/color_f2f2f2"
+                    app:layout_constraintTop_toTopOf="parent"
+                    app:layout_constraintLeft_toLeftOf="parent" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="12dp"
+                    android:text="解绑机构"
+                    android:textColor="@color/color_1a1a1a"
+                    android:textSize="@dimen/sp_16"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+
+                <ImageView
+                    android:layout_width="@dimen/dp_6"
+                    android:layout_height="@dimen/dp_11"
+                    android:layout_marginRight="15dp"
+                    android:background="@drawable/icon_go_right"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    app:layout_constraintRight_toRightOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
             <View
             <View
                 android:layout_width="match_parent"
                 android:layout_width="match_parent"
                 android:layout_height="10dp"
                 android:layout_height="10dp"
                 app:layout_constraintLeft_toLeftOf="parent"
                 app:layout_constraintLeft_toLeftOf="parent"
-                app:layout_constraintTop_toBottomOf="@+id/cl_about" />
+                app:layout_constraintTop_toBottomOf="@+id/cl_unbind_tenant" />
         </androidx.constraintlayout.widget.ConstraintLayout>
         </androidx.constraintlayout.widget.ConstraintLayout>
 
 
         <androidx.constraintlayout.widget.ConstraintLayout
         <androidx.constraintlayout.widget.ConstraintLayout
-            android:background="@drawable/bg_white_10dp"
             android:layout_width="match_parent"
             android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="14dp"
             android:layout_marginTop="12dp"
             android:layout_marginTop="12dp"
             android:layout_marginEnd="14dp"
             android:layout_marginEnd="14dp"
-            android:layout_marginStart="14dp"
-            android:layout_height="wrap_content">
+            android:background="@drawable/bg_white_10dp">
+
             <TextView
             <TextView
                 android:id="@+id/tv_sign_out_account"
                 android:id="@+id/tv_sign_out_account"
-                android:gravity="center_vertical"
                 android:layout_width="match_parent"
                 android:layout_width="match_parent"
                 android:layout_height="50dp"
                 android:layout_height="50dp"
                 android:layout_marginLeft="12dp"
                 android:layout_marginLeft="12dp"
+                android:gravity="center_vertical"
                 android:text="注销账号"
                 android:text="注销账号"
                 android:textColor="@color/color_1a1a1a"
                 android:textColor="@color/color_1a1a1a"
                 android:textSize="@dimen/sp_16"
                 android:textSize="@dimen/sp_16"

+ 1 - 1
usercenter/src/main/java/com/cooleshow/usercenter/bean/TeacherUserInfo.java

@@ -70,7 +70,7 @@ public class TeacherUserInfo implements Serializable {
     public int entryFlag;
     public int entryFlag;
     public int degreeFlag;// 老师学历认证
     public int degreeFlag;// 老师学历认证
     public int teacherFlag;//教资认证
     public int teacherFlag;//教资认证
-    public int userId;
+    public String userId;
     public String subjectId;
     public String subjectId;
     public String updateTime;
     public String updateTime;
     public int musicianFlag;
     public int musicianFlag;

+ 1 - 0
usercenter/src/main/java/com/cooleshow/usercenter/constants/UserConstants.java

@@ -9,6 +9,7 @@ public class UserConstants {
     public static final String SEND_VERIFY_CODE_TYPE_REGISTER ="REGISTER";//发送验证码type-注册
     public static final String SEND_VERIFY_CODE_TYPE_REGISTER ="REGISTER";//发送验证码type-注册
     public static final String SEND_VERIFY_CODE_TYPE_BANK ="BANK";//发送验证码type-绑定银行卡
     public static final String SEND_VERIFY_CODE_TYPE_BANK ="BANK";//发送验证码type-绑定银行卡
     public static final String SEND_VERIFY_CODE_TYPE_LOGOFF  ="LOGOFF";//发送验证码type-注销账号
     public static final String SEND_VERIFY_CODE_TYPE_LOGOFF  ="LOGOFF";//发送验证码type-注销账号
+    public static final String SEND_VERIFY_CODE_TYPE_UNBIND_TENANT  ="";//发送验证码type-解绑机构
     public static final String LOGIN_ITEM ="login_item";//发送验证码type-绑定银行卡
     public static final String LOGIN_ITEM ="login_item";//发送验证码type-绑定银行卡
     public static final String PHONE_NUM_KEY="phone_num_key";
     public static final String PHONE_NUM_KEY="phone_num_key";
     public static final String TEMP_TOKEN="temp_token";
     public static final String TEMP_TOKEN="temp_token";

+ 10 - 2
usercenter/src/main/java/com/cooleshow/usercenter/helper/UserHelper.java

@@ -191,11 +191,19 @@ public class UserHelper {
         return SPUtils.getInstance().getString(USER_AVATAR);
         return SPUtils.getInstance().getString(USER_AVATAR);
     }
     }
 
 
-    public static String getTeacherName(String name, int id) {
+    public static String getTenantName() {
+        return SPUtils.getInstance().getString(TENANTNAME_KEY);
+    }
+
+    public static int getTenantId() {
+        return SPUtils.getInstance().getInt(TENANTID_KEY,-1);
+    }
+
+    public static String getTeacherName(String name, String id) {
         if (!TextUtils.isEmpty(name)) {
         if (!TextUtils.isEmpty(name)) {
             return name;
             return name;
         }
         }
-        return Utils.getApp().getString(R.string.nickname_fill_str, String.valueOf(id));
+        return Utils.getApp().getString(R.string.nickname_fill_str, id);
     }
     }
 
 
     public static String getStudentName(String name, int id) {
     public static String getStudentName(String name, int id) {

+ 1 - 1
usercenter/src/main/java/com/cooleshow/usercenter/presenter/VerifyLoginPresenter.java

@@ -152,7 +152,7 @@ public class VerifyLoginPresenter extends BasePresenter<VerifyLoginContract.Veri
                 @Override
                 @Override
                 protected void onSuccess(TeacherUserInfo data) {
                 protected void onSuccess(TeacherUserInfo data) {
                     if (getView() != null) {
                     if (getView() != null) {
-                        getView().loginByCodeSuccess(loginInfo, data.tenantId);
+                        getView().loginByCodeSuccess(loginInfo, data.getTenantId());
                     }
                     }
                 }
                 }
             });
             });

+ 10 - 2
usercenter/src/main/java/com/cooleshow/usercenter/ui/activity/setting/SignOutAccountActivity.java

@@ -48,8 +48,7 @@ public class SignOutAccountActivity extends BaseMVPActivity<AcSignOutAccountLayo
             viewBinding.tvSendVerifyCode.setText(countTimeValue + "s");
             viewBinding.tvSendVerifyCode.setText(countTimeValue + "s");
             viewBinding.tvSendVerifyCode.setClickable(false);
             viewBinding.tvSendVerifyCode.setClickable(false);
             if (countTimeValue < 0) {
             if (countTimeValue < 0) {
-                viewBinding.tvSendVerifyCode.setClickable(true);
-                viewBinding.tvSendVerifyCode.setText("获取验证码");
+                resetBt();
             } else {
             } else {
                 mHandler.postDelayed(mRunnable, 1000);
                 mHandler.postDelayed(mRunnable, 1000);
             }
             }
@@ -173,9 +172,13 @@ public class SignOutAccountActivity extends BaseMVPActivity<AcSignOutAccountLayo
 
 
     @Override
     @Override
     public void sendVerifyCodeFail() {
     public void sendVerifyCodeFail() {
+        if (isFinishing() || isDestroyed()) {
+            return;
+        }
         if (mHandler != null) {
         if (mHandler != null) {
             mHandler.removeCallbacksAndMessages(null);
             mHandler.removeCallbacksAndMessages(null);
         }
         }
+        resetBt();
     }
     }
 
 
     @Override
     @Override
@@ -197,6 +200,11 @@ public class SignOutAccountActivity extends BaseMVPActivity<AcSignOutAccountLayo
                 .navigation();
                 .navigation();
     }
     }
 
 
+    private void resetBt() {
+        viewBinding.tvSendVerifyCode.setClickable(true);
+        viewBinding.tvSendVerifyCode.setText("获取验证码");
+    }
+
     @Override
     @Override
     public void onDestroy() {
     public void onDestroy() {
         super.onDestroy();
         super.onDestroy();