Explorar el Código

更新学生端修改密码流程

Pq hace 1 año
padre
commit
d1dbed4087

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

@@ -59,6 +59,7 @@ object RouterPath {
             const val COMMON_EMPTY_ACTIVITY = "/userCenter/CommEmptyActivity"
             const val SIGN_OUT_ACCOUNT = "/userCenter/SignOutAccountActivity"
             const val UPDATE_PASSWORD = "/userCenter/UpdatePasswordActivity"
+            const val FORGET_PASSWORD = "/userCenter/ForgetPasswordActivity"
         }
     }
 

+ 1 - 2
institution/src/main/java/com/cooleshow/institution/stu/ui/setting/PersonalSettingActivity.java

@@ -102,8 +102,7 @@ public class PersonalSettingActivity extends BaseMVPActivity<JgActivityPersonalS
             ARouter.getInstance().build(RouterPath.MineCenter.MINE_CHECK_MODIFY_PHONENUM)
                     .navigation(this, MODIFY_PHONE);
         } else if (id == R.id.cl_modify_psd) {
-            ARouter.getInstance().build(RouterPath.MineCenter.MINE_MODIFY_PASSWORD)
-                    .withString("phoneNum", UserHelper.getUserPhone())
+            ARouter.getInstance().build(RouterPath.UserCenter.UPDATE_PASSWORD)
                     .navigation();
         } else if (id == R.id.cl_certification) {
             if (viewBinding.tvCertificationStatus.getText().equals("未认证")) {

+ 1 - 2
student/src/main/java/com/cooleshow/student/ui/mine/PersonalSettingActivity.java

@@ -107,8 +107,7 @@ public class PersonalSettingActivity extends BaseMVPActivity<ActivityPersonalSet
                         .navigation(this, MODIFY_PHONE);
                 break;
             case R.id.cl_modify_psd:
-                ARouter.getInstance().build(RouterPath.MineCenter.MINE_MODIFY_PASSWORD)
-                        .withString("phoneNum", UserHelper.getUserPhone())
+                ARouter.getInstance().build(RouterPath.UserCenter.UPDATE_PASSWORD)
                         .navigation();
                 break;
             case R.id.cl_certification:

+ 10 - 0
usercenter/src/main/AndroidManifest.xml

@@ -47,5 +47,15 @@
             android:name=".ui.activity.setting.ModifyPasswordActivity"
             android:configChanges="orientation|screenSize|keyboardHidden"
             android:screenOrientation="portrait" />
+
+        <activity
+            android:name=".ui.activity.setting.ForgetPasswordActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="portrait" />
+
+        <activity
+            android:name=".ui.activity.setting.UpdatePasswordActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="portrait" />
     </application>
 </manifest>

+ 18 - 5
usercenter/src/main/java/com/cooleshow/usercenter/data/api/UserApi.kt

@@ -175,8 +175,8 @@ interface UserApi {
      *
      * @return
      */
-    @POST(BaseConstant.AUTH_GROUP + "checkPassword")
-    fun checkOldPwd(body: RequestBody): Observable<BaseResponse<Object?>?>?
+    @POST(BaseConstant.AUTH_GROUP + "user/checkPassword")
+    fun checkOldPwd(@Body body: RequestBody): Observable<BaseResponse<Object?>?>?
 
     /**
      * 手机验证码修改密码
@@ -184,7 +184,7 @@ interface UserApi {
      * @return
      */
     @FormUrlEncoded
-    @POST(BaseConstant.AUTH_GROUP + "user/updatePassword")
+    @POST(BaseConstant.AUTH_GROUP + "user/setPassword ")
     fun updatePassword(@FieldMap params: Map<String?, String?>?): Observable<BaseResponse<Any?>?>?
 
 
@@ -197,7 +197,10 @@ interface UserApi {
      */
     @FormUrlEncoded
     @POST("{group_name}" + "/code/sendSmsCode")
-    fun sendSmsCode(@Path("group_name") group_name: String,@FieldMap params: Map<String?, String?>?): Observable<BaseResponse<Any?>?>?
+    fun sendSmsCode(
+        @Path("group_name") group_name: String,
+        @FieldMap params: Map<String?, String?>?
+    ): Observable<BaseResponse<Any?>?>?
 
     /**
      * 校验图片验证码
@@ -209,6 +212,16 @@ interface UserApi {
      */
     @FormUrlEncoded
     @POST("{group_name}" + "/code/verifyImageCode")
-    fun verifyImgCode(@Path("group_name") group_name: String,@FieldMap map: Map<String?, String?>?): Observable<BaseResponse<Any?>?>?
+    fun verifyImgCode(
+        @Path("group_name") group_name: String,
+        @FieldMap map: Map<String?, String?>?
+    ): Observable<BaseResponse<Any?>?>?
 
+
+    /**
+     * 校验验证码
+     * @return
+     */
+    @POST(BaseConstant.AUTH_GROUP + "user/checkVerityCode")
+    fun checkSmsCode(@Body body: RequestBody): Observable<BaseResponse<Any?>?>?
 }

+ 58 - 0
usercenter/src/main/java/com/cooleshow/usercenter/presenter/ForgetPasswordPresenter.java

@@ -1,8 +1,10 @@
 package com.cooleshow.usercenter.presenter;
 
+import com.cooleshow.base.common.BaseConstant;
 import com.cooleshow.base.presenter.BasePresenter;
 import com.cooleshow.base.rx.BaseObserver;
 import com.cooleshow.base.utils.RequestBodyUtil;
+import com.cooleshow.usercenter.bean.SetDetailBean;
 import com.cooleshow.usercenter.data.api.UserApi;
 import com.cooleshow.usercenter.presenter.contract.ForgetPasswordContract;
 import com.cooleshow.usercenter.presenter.contract.UpdatePasswordContract;
@@ -10,6 +12,9 @@ import com.cooleshow.usercenter.presenter.contract.UpdatePasswordContract;
 import org.json.JSONException;
 import org.json.JSONObject;
 
+import java.util.HashMap;
+import java.util.Map;
+
 
 /**
  * Author by pq, Date on 2022/4/19.
@@ -38,4 +43,57 @@ public class ForgetPasswordPresenter extends BasePresenter<ForgetPasswordContrac
             }
         });
     }
+
+    /**
+     * 图片验证码验证
+     * @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(BaseConstant.CLIENT_API_GROUP_NAME,params), new BaseObserver<Object>(getView()) {
+            @Override
+            protected void onSuccess(Object data) {
+                if (getView() != null) {
+                    getView().verifyImgCodeSuccess(phone);
+                }
+            }
+
+        });
+    }
+
+    public void sendSmsCode(Map<String,String> map){
+        getView().showLoading();
+        addSubscribe(create(UserApi.class).sendSmsCode(BaseConstant.getClientApiGroup(),map), new BaseObserver<SetDetailBean>(getView()) {
+            @Override
+            protected void onSuccess(SetDetailBean data) {
+                if (getView() != null) {
+                    getView().sendSmsCodeSuccess(data);
+                }
+            }
+        });
+    }
+
+    public void checkSmsCode(String code) {
+        getView().showLoading();
+        JSONObject jsonObject =new JSONObject();
+        try {
+            jsonObject.put("code",code);
+        } catch (JSONException e) {
+            throw new RuntimeException(e);
+        }
+        addSubscribe(create(UserApi.class).checkSmsCode(RequestBodyUtil.convertToRequestBodyJson(jsonObject.toString())), new BaseObserver<Object>(getView()) {
+            @Override
+            protected void onSuccess(Object data) {
+                if (getView() != null) {
+                    getView().checkSmsCodeSuccess();
+                }
+            }
+        });
+    }
 }

+ 7 - 0
usercenter/src/main/java/com/cooleshow/usercenter/presenter/contract/ForgetPasswordContract.java

@@ -1,6 +1,7 @@
 package com.cooleshow.usercenter.presenter.contract;
 
 import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.usercenter.bean.SetDetailBean;
 
 /**
  * Author by pq, Date on 2022/4/20.
@@ -9,6 +10,12 @@ public interface ForgetPasswordContract {
 
     interface View extends BaseView {
 
+        void verifyImgCodeSuccess(String phone);
+
+        void sendSmsCodeSuccess(SetDetailBean data);
+
+        void checkSmsCodeSuccess();
+
     }
 
     interface Presenter {

+ 132 - 6
usercenter/src/main/java/com/cooleshow/usercenter/ui/activity/setting/ForgetPasswordActivity.java

@@ -1,24 +1,55 @@
 package com.cooleshow.usercenter.ui.activity.setting;
 
 import android.os.Bundle;
+import android.os.CountDownTimer;
+import android.os.Handler;
 import android.text.TextUtils;
 import android.view.View;
 
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
 import com.cooleshow.base.constanst.StyleConfig;
+import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.base.utils.ToastUtil;
+import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
+import com.cooleshow.base.widgets.dialog.ImgVerifyCodeDialog;
+import com.cooleshow.usercenter.R;
+import com.cooleshow.usercenter.bean.SetDetailBean;
 import com.cooleshow.usercenter.databinding.AcForgetPwdLayoutBinding;
 import com.cooleshow.usercenter.helper.UserHelper;
 import com.cooleshow.usercenter.presenter.ForgetPasswordPresenter;
 import com.cooleshow.usercenter.presenter.contract.ForgetPasswordContract;
 
+import java.util.HashMap;
+import java.util.Map;
+
 import androidx.annotation.Nullable;
 
 /**
  * Author by pq, Date on 2023/9/26.
  */
+@Route(path = RouterPath.UserCenter.FORGET_PASSWORD)
 public class ForgetPasswordActivity extends BaseMVPActivity<AcForgetPwdLayoutBinding, ForgetPasswordPresenter> implements ForgetPasswordContract.View, View.OnClickListener {
 
+    private ImgVerifyCodeDialog mImgVerifyCodeDialog;
+    private String mPhoneNum;
+
+
+    CountDownTimer mDownTimer = new CountDownTimer(60000, 1000) {
+        @Override
+        public void onTick(long millisUntilFinished) {
+            int untilTime = (int) (millisUntilFinished / 1000);
+            updateTimeCountText(String.valueOf(untilTime));
+        }
+
+        @Override
+        public void onFinish() {
+            resetCount();
+        }
+    };
+
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         StyleConfig.setTheme(this);
@@ -28,13 +59,16 @@ public class ForgetPasswordActivity extends BaseMVPActivity<AcForgetPwdLayoutBin
 
     @Override
     protected void initView() {
-        initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "修改密码");
-        String phoneNum = UserHelper.getUserPhone();
-        if (!TextUtils.isEmpty(phoneNum)) {
-            String cPhone = phoneNum.substring(0, 3) + "****" + phoneNum.substring(7, phoneNum.length());
-            viewBinding.tvPhone.setText(cPhone);
+        initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "忘记密码");
+        mPhoneNum = UserHelper.getUserPhone();
+        if (!TextUtils.isEmpty(mPhoneNum)) {
+            try {
+                String cPhone = mPhoneNum.substring(0, 3) + "****" + mPhoneNum.substring(7, mPhoneNum.length());
+                viewBinding.tvPhone.setText(cPhone);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
         }
-        
     }
 
     @Override
@@ -60,6 +94,98 @@ public class ForgetPasswordActivity extends BaseMVPActivity<AcForgetPwdLayoutBin
 
     @Override
     public void onClick(View v) {
+        if (UiUtils.isFastClick()) {
+            return;
+        }
+        int id = v.getId();
+        if (id == R.id.tv_get_auth_code) {
+            showImgVerifyCodeDialog();
+            return;
+        }
+        if (id == R.id.tv_confirm) {
+            String code = viewBinding.etAuthCode.getText().toString().trim();
+            if (TextUtils.isEmpty(code)) {
+                ToastUtil.getInstance().showShort("请输入验证码");
+                return;
+            }
+            presenter.checkSmsCode(code);
+            return;
+        }
+    }
+
+    private void showImgVerifyCodeDialog() {
+        if (mImgVerifyCodeDialog == null) {
+            mImgVerifyCodeDialog = new ImgVerifyCodeDialog(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);
+                }
+            }
+        });
+    }
+
+
+    private void updateTimeCountText(String time) {
+        viewBinding.tvGetAuthCode.setText(String.format("%ss", time));
+        viewBinding.tvGetAuthCode.setClickable(false);
+    }
 
+    private void resetCount() {
+        viewBinding.tvGetAuthCode.setClickable(true);
+        viewBinding.tvGetAuthCode.setText("获取验证码");
+    }
+
+    @Override
+    public void verifyImgCodeSuccess(String phone) {
+        if (!checkActivityExist()) {
+            return;
+        }
+        if (mImgVerifyCodeDialog != null) {
+            mImgVerifyCodeDialog.dismiss();
+        }
+        Map<String, String> map = new HashMap<>();
+        map.put("mobile", phone);
+        map.put("type", "PASSWD");
+        presenter.sendSmsCode(map);
+    }
+
+    @Override
+    public void sendSmsCodeSuccess(SetDetailBean data) {
+        if (!checkActivityExist()) {
+            return;
+        }
+        ToastUtil.getInstance().showShort("验证码发送成功,请注意查收!");
+        if (mDownTimer != null) {
+            mDownTimer.cancel();
+            mDownTimer.start();
+            viewBinding.tvGetAuthCode.setClickable(false);
+        }
+    }
+
+    @Override
+    public void checkSmsCodeSuccess() {
+        if (!checkActivityExist()) {
+            return;
+        }
+        ARouter.getInstance().build(RouterPath.MineCenter.MINE_MODIFY_PASSWORD)
+                .withString("phoneNum", UserHelper.getUserPhone())
+                .withBoolean("isNeedSmsCode", false)
+                .navigation();
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        if (mDownTimer != null) {
+            mDownTimer.cancel();
+            mDownTimer = null;
+        }
     }
 }

+ 41 - 12
usercenter/src/main/java/com/cooleshow/usercenter/ui/activity/setting/ModifyPasswordActivity.java

@@ -18,7 +18,7 @@ import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.base.widgets.dialog.ImgVerifyCodeDialog;
 import com.cooleshow.usercenter.R;
 import com.cooleshow.usercenter.constants.UserConstants;
-import com.cooleshow.usercenter.databinding.ActivityModifyPasswordBinding;
+import com.cooleshow.usercenter.databinding.AcModifyPasswordBinding;
 import com.cooleshow.usercenter.helper.UserHelper;
 import com.cooleshow.usercenter.presenter.ModifyPasswordPresenter;
 import com.cooleshow.usercenter.presenter.contract.ModifyPasswordContract;
@@ -37,34 +37,54 @@ import androidx.annotation.Nullable;
  * 类说明:
  */
 @Route(path = RouterPath.MineCenter.MINE_MODIFY_PASSWORD)
-public class ModifyPasswordActivity extends BaseMVPActivity<ActivityModifyPasswordBinding, ModifyPasswordPresenter> implements ModifyPasswordContract.ModifyPasswordView, View.OnClickListener {
+public class ModifyPasswordActivity extends BaseMVPActivity<AcModifyPasswordBinding, ModifyPasswordPresenter> implements ModifyPasswordContract.ModifyPasswordView, View.OnClickListener {
 
     private ImgVerifyCodeDialog mImgVerifyCodeDialog;
+    private boolean isNeedSmsCode = true;
 
     @Override
     public void onClick(View view) {
         int id = view.getId();
         if (id == R.id.tv_confirm) {
             String password = viewBinding.etPassword.getText().toString().trim();
-            if (TextUtils.isEmpty(password) || password.length() < 6 || password.length() > 20) {
-                ToastUtil.getInstance().showShort("请输入6-20位密码");
+            String password2 = viewBinding.etPassword2.getText().toString().trim();
+            if (!checkPwd(password, password2)) {
                 return;
             }
+
             String authCode = viewBinding.etAuthCode.getText().toString().trim();
-            if (TextUtils.isEmpty(authCode)) {
+            if (isNeedSmsCode && TextUtils.isEmpty(authCode)) {
                 ToastUtil.getInstance().showShort("请输入验证码");
                 return;
             }
             Map<String, String> params = new HashMap<>();
-            params.put("mobile", phoneNum);
-            params.put("authCode", authCode);
-            params.put("newPassword", password);
+            params.put("id", UserHelper.getUserId());
+            if (!TextUtils.isEmpty(authCode)) {
+                params.put("code", authCode);
+            }
+            params.put("password", password);
             presenter.updatePassword(params);
         } else if (id == R.id.tv_get_auth_code) {
             showImgVerifyCodeDialog();
         }
     }
 
+    private boolean checkPwd(String pwd, String pwd2) {
+        if (TextUtils.isEmpty(pwd) || pwd.length() < 6 || pwd.length() > 20) {
+            ToastUtil.getInstance().showShort("请输入6-20位密码");
+            return false;
+        }
+        if (TextUtils.isEmpty(pwd2) || pwd2.length() < 6 || pwd2.length() > 20) {
+            ToastUtil.getInstance().showShort("请输入6-20位密码");
+            return false;
+        }
+        if (!TextUtils.equals(pwd, pwd2)) {
+            ToastUtil.getInstance().showShort("两次密码输入不一致");
+            return false;
+        }
+        return true;
+    }
+
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         StyleConfig.setTheme(this);
@@ -79,10 +99,19 @@ public class ModifyPasswordActivity extends BaseMVPActivity<ActivityModifyPasswo
     protected void initView() {
         ARouter.getInstance().inject(this);
         initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "修改密码");
+        isNeedSmsCode = getIntent().getBooleanExtra("isNeedSmsCode", true);
+        viewBinding.groupCode.setVisibility(isNeedSmsCode ? View.VISIBLE : View.GONE);
+
         viewBinding.tvConfirm.setOnClickListener(this);
         viewBinding.tvGetAuthCode.setOnClickListener(this);
-        String cPhone = phoneNum.substring(0, 3) + "****" + phoneNum.substring(7, phoneNum.length());
-        viewBinding.tvPhone.setText(cPhone);
+        if (!TextUtils.isEmpty(phoneNum)) {
+            try {
+                String cPhone = phoneNum.substring(0, 3) + "****" + phoneNum.substring(7, phoneNum.length());
+                viewBinding.tvPhone.setText(cPhone);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
 
     }
 
@@ -106,8 +135,8 @@ public class ModifyPasswordActivity extends BaseMVPActivity<ActivityModifyPasswo
     }
 
     @Override
-    protected ActivityModifyPasswordBinding getLayoutView() {
-        return ActivityModifyPasswordBinding.inflate(getLayoutInflater());
+    protected AcModifyPasswordBinding getLayoutView() {
+        return AcModifyPasswordBinding.inflate(getLayoutInflater());
     }
 
     @Override

+ 16 - 2
usercenter/src/main/java/com/cooleshow/usercenter/ui/activity/setting/UpdatePasswordActivity.java

@@ -12,6 +12,7 @@ import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
 import com.bigkoo.pickerview.view.OptionsPickerView;
 import com.cooleshow.base.bean.QueryParamsConfigBean;
 import com.cooleshow.base.common.BaseApplication;
+import com.cooleshow.base.constanst.StyleConfig;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
 import com.cooleshow.base.utils.ToastUtil;
@@ -39,6 +40,7 @@ import androidx.annotation.Nullable;
 public class UpdatePasswordActivity extends BaseMVPActivity<ActivityUpdatePwdLayoutBinding, UpdatePasswordPresenter> implements UpdatePasswordContract.View, View.OnClickListener {
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
+        StyleConfig.setTheme(this);
         super.onCreate(savedInstanceState);
         QMUIStatusBarHelper.setStatusBarLightMode(this);
     }
@@ -51,9 +53,16 @@ public class UpdatePasswordActivity extends BaseMVPActivity<ActivityUpdatePwdLay
 
     @Override
     protected void initView() {
+        initMidTitleToolBar(viewBinding.toolbarInclude.toolbar,"修改密码");
         String phoneNum = UserHelper.getUserPhone();
-        String cPhone = phoneNum.substring(0, 3) + "****" + phoneNum.substring(7, phoneNum.length());
-        viewBinding.tvPhone.setText(cPhone);
+        if (!TextUtils.isEmpty(phoneNum)) {
+            try{
+                String cPhone = phoneNum.substring(0, 3) + "****" + phoneNum.substring(7, phoneNum.length());
+                viewBinding.tvPhone.setText(cPhone);
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+        }
     }
 
     @Override
@@ -80,6 +89,8 @@ public class UpdatePasswordActivity extends BaseMVPActivity<ActivityUpdatePwdLay
             return;
         }
         if (id == R.id.tv_forget_pwd) {
+            ARouter.getInstance().build(RouterPath.UserCenter.FORGET_PASSWORD)
+                    .navigation();
             return;
         }
     }
@@ -91,6 +102,9 @@ public class UpdatePasswordActivity extends BaseMVPActivity<ActivityUpdatePwdLay
 
     @Override
     public void checkPwdSuccess() {
+        if(!checkActivityExist()){
+            return;
+        }
         ARouter.getInstance().build(RouterPath.MineCenter.MINE_MODIFY_PASSWORD)
                 .withString("phoneNum", UserHelper.getUserPhone())
                 .navigation();

+ 43 - 7
usercenter/src/main/res/layout/activity_modify_password.xml → usercenter/src/main/res/layout/ac_modify_password.xml

@@ -24,14 +24,12 @@
     <androidx.constraintlayout.widget.ConstraintLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_marginTop="15dp"
         android:layout_marginStart="13dp"
+        android:layout_marginTop="15dp"
         android:layout_marginEnd="13dp"
         android:background="@drawable/bg_white_10dp">
 
         <EditText
-            android:theme="@style/MyEditText"
-            android:textCursorDrawable="@drawable/shape_sign_out_edit_drawable"
             android:id="@+id/et_password"
             android:layout_width="match_parent"
             android:layout_height="@dimen/dp_48"
@@ -43,7 +41,9 @@
             android:paddingRight="14dp"
             android:textColor="@color/color_1a1a1a"
             android:textColorHint="@color/color_aaaaaa"
+            android:textCursorDrawable="@drawable/shape_sign_out_edit_drawable"
             android:textSize="@dimen/sp_16"
+            android:theme="@style/MyEditText"
             app:layout_constraintLeft_toLeftOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
 
@@ -57,8 +57,34 @@
             app:layout_constraintTop_toBottomOf="@+id/et_password" />
 
         <EditText
+            android:id="@+id/et_password2"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/dp_48"
+            android:background="@null"
+            android:gravity="center_vertical"
+            android:hint="请再次输入新密码"
+            android:inputType="textPassword"
+            android:paddingLeft="14dp"
+            android:paddingRight="14dp"
+            android:textColor="@color/color_1a1a1a"
+            android:textColorHint="@color/color_aaaaaa"
             android:textCursorDrawable="@drawable/shape_sign_out_edit_drawable"
+            android:textSize="@dimen/sp_16"
             android:theme="@style/MyEditText"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toTopOf="@+id/view_line" />
+
+        <View
+            android:id="@+id/view_line2"
+            android:layout_width="match_parent"
+            android:layout_height="1px"
+            android:layout_marginLeft="12dp"
+            android:background="@color/divide_color_f0f0f0"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/et_password2" />
+
+
+        <EditText
             android:id="@+id/et_auth_code"
             android:layout_width="match_parent"
             android:layout_height="@dimen/dp_48"
@@ -71,9 +97,11 @@
             android:paddingRight="14dp"
             android:textColor="@color/color_1a1a1a"
             android:textColorHint="@color/color_aaaaaa"
+            android:textCursorDrawable="@drawable/shape_sign_out_edit_drawable"
             android:textSize="@dimen/sp_16"
+            android:theme="@style/MyEditText"
             app:layout_constraintLeft_toLeftOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/view_line" />
+            app:layout_constraintTop_toBottomOf="@+id/view_line2" />
 
         <TextView
             android:id="@+id/tv_get_auth_code"
@@ -84,8 +112,16 @@
             android:text="获取验证码"
             android:textColor="?attr/klx_main_color2"
             android:textSize="@dimen/sp_14"
+            app:layout_constraintBottom_toBottomOf="@+id/et_auth_code"
             app:layout_constraintRight_toRightOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/view_line" />
+            app:layout_constraintTop_toTopOf="@+id/et_auth_code" />
+
+        <androidx.constraintlayout.widget.Group
+            tools:visibility="gone"
+            android:id="@+id/group_code"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            app:constraint_referenced_ids="et_auth_code,tv_get_auth_code,view_line2" />
     </androidx.constraintlayout.widget.ConstraintLayout>
 
 
@@ -100,8 +136,8 @@
         android:background="?attr/klx_main_bt_background"
         android:gravity="center"
         android:text="确定"
-        android:textStyle="bold"
         android:textColor="@color/white"
-        android:textSize="@dimen/sp_18" />
+        android:textSize="@dimen/sp_18"
+        android:textStyle="bold" />
 
 </LinearLayout>

+ 1 - 0
usercenter/src/main/res/layout/activity_update_pwd_layout.xml

@@ -30,6 +30,7 @@
         android:background="@drawable/bg_white_10dp">
 
         <com.cooleshow.base.widgets.ClearEditText
+            android:includeFontPadding="false"
             android:theme="@style/MyEditText"
             android:textCursorDrawable="@drawable/shape_sign_out_edit_drawable"
             android:id="@+id/et_password"