Explorar el Código

Android添加修改个人密码功能

fancy hace 5 años
padre
commit
0a14e1f490

+ 38 - 2
o2android/app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/app/o2/security/AccountSecurityActivity.kt

@@ -2,11 +2,14 @@ package net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.o2.security
 
 
 
 
 import android.os.Bundle
 import android.os.Bundle
+import android.text.TextUtils
+import android.widget.EditText
 import kotlinx.android.synthetic.main.activity_account_security.*
 import kotlinx.android.synthetic.main.activity_account_security.*
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.*
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.*
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.base.BaseMVPActivity
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.base.BaseMVPActivity
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.o2.bind.BindPhoneActivity
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.o2.bind.BindPhoneActivity
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.o2.my.MyInfoActivity
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.o2.my.MyInfoActivity
+import net.zoneland.x.bpm.mobile.v1.zoneXBPM.model.bo.api.im.MessageType
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.XLog
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.XLog
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.XToast
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.XToast
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.biometric.BioConstants
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.biometric.BioConstants
@@ -36,8 +39,12 @@ class AccountSecurityActivity : BaseMVPActivity<AccountSecurityContract.View, Ac
             go<MyInfoActivity>()
             go<MyInfoActivity>()
         }
         }
 
 
-        val unitName = O2SDKManager.instance().prefs().getString(O2.PRE_BIND_UNIT_KEY, "")
-        tv_account_security_unit_name.text = "当前绑定服务器:$unitName"
+        rl_account_security_password_btn.setOnClickListener {
+            changeMyPassword()
+        }
+
+        val unitHost = O2SDKManager.instance().prefs().getString(O2.PRE_CENTER_HOST_KEY, "")
+        tv_account_security_unit_name.text = "当前绑定服务器:$unitHost"
 
 
         initBiometryAuthView()
         initBiometryAuthView()
 
 
@@ -59,6 +66,14 @@ class AccountSecurityActivity : BaseMVPActivity<AccountSecurityContract.View, Ac
         goAndClearBefore<BindPhoneActivity>()
         goAndClearBefore<BindPhoneActivity>()
     }
     }
 
 
+    override fun updateMyPasswordFail(message: String) {
+        XToast.toastLong(this, message)
+    }
+
+    override fun updateMyPasswordSuccess() {
+        XToast.toastShort(this, "修改密码成功!")
+    }
+
     private val bioManager: BiometryManager by lazy { BiometryManager(this) }
     private val bioManager: BiometryManager by lazy { BiometryManager(this) }
     private fun initBiometryAuthView() {
     private fun initBiometryAuthView() {
 
 
@@ -121,6 +136,27 @@ class AccountSecurityActivity : BaseMVPActivity<AccountSecurityContract.View, Ac
         }
         }
     }
     }
 
 
+    private fun changeMyPassword() {
+        O2DialogSupport.openCustomViewDialog(this, "修改密码", R.layout.dialog_password_modify) { dialog ->
+            val old = dialog.findViewById<EditText>(R.id.dialog_password_old_edit_id).text.toString()
+            if (TextUtils.isEmpty(old)) {
+                XToast.toastShort(this@AccountSecurityActivity, "旧密码不能为空")
+                return@openCustomViewDialog
+            }
+            val newpwd = dialog.findViewById<EditText>(R.id.dialog_password_new_edit_id).text.toString()
+            if (TextUtils.isEmpty(newpwd)) {
+                XToast.toastShort(this@AccountSecurityActivity, "新密码不能为空")
+                return@openCustomViewDialog
+            }
+            val newpwdAgain = dialog.findViewById<EditText>(R.id.dialog_password_confirm_edit_id).text.toString()
+            if (newpwd != newpwdAgain) {
+                XToast.toastShort(this@AccountSecurityActivity, "新密码和确认新密码不一样")
+                return@openCustomViewDialog
+            }
+            mPresenter.updateMyPassword(old, newpwd, newpwdAgain)
+        }
+    }
+
     //如果识别成功 设置结果
     //如果识别成功 设置结果
     private fun setBioAuthResult() {
     private fun setBioAuthResult() {
         val bioAuthUser = O2SDKManager.instance().prefs().getString(BioConstants.O2_bio_auth_user_id_prefs_key, "") ?: ""
         val bioAuthUser = O2SDKManager.instance().prefs().getString(BioConstants.O2_bio_auth_user_id_prefs_key, "") ?: ""

+ 3 - 0
o2android/app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/app/o2/security/AccountSecurityContract.kt

@@ -8,9 +8,12 @@ object AccountSecurityContract {
     interface View : BaseView {
     interface View : BaseView {
 
 
         fun logoutSuccess()
         fun logoutSuccess()
+        fun updateMyPasswordFail(message: String)
+        fun updateMyPasswordSuccess()
     }
     }
 
 
     interface Presenter : BasePresenter<View> {
     interface Presenter : BasePresenter<View> {
         fun logout(deviceId:String)
         fun logout(deviceId:String)
+        fun updateMyPassword(old: String, newPwd: String, newPwdConfirm: String)
     }
     }
 }
 }

+ 27 - 0
o2android/app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/app/o2/security/AccountSecurityPresenter.kt

@@ -3,7 +3,11 @@ package net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.o2.security
 import net.muliba.accounting.app.ExceptionHandler
 import net.muliba.accounting.app.ExceptionHandler
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.base.BasePresenterImpl
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.base.BasePresenterImpl
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.core.component.api.ResponseHandler
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.core.component.api.ResponseHandler
+import net.zoneland.x.bpm.mobile.v1.zoneXBPM.core.exception.O2ResponseException
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.model.bo.api.IdData
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.model.bo.api.IdData
+import net.zoneland.x.bpm.mobile.v1.zoneXBPM.model.bo.api.main.person.PersonPwdForm
+import net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.XLog
+import net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.extension.o2Subscribe
 import rx.android.schedulers.AndroidSchedulers
 import rx.android.schedulers.AndroidSchedulers
 import rx.schedulers.Schedulers
 import rx.schedulers.Schedulers
 
 
@@ -20,4 +24,27 @@ class AccountSecurityPresenter : BasePresenterImpl<AccountSecurityContract.View>
                             ExceptionHandler(mView?.getContext(), { e -> mView?.logoutSuccess()}))
                             ExceptionHandler(mView?.getContext(), { e -> mView?.logoutSuccess()}))
         }
         }
     }
     }
+
+    override fun updateMyPassword(old: String, newPwd: String, newPwdConfirm: String) {
+        val service = getAssemblePersonalApi(mView?.getContext())
+        if (service != null) {
+            val form = PersonPwdForm(old, newPwd, newPwdConfirm)
+            service.modifyCurrentPersonPassword(form)
+                    .subscribeOn(Schedulers.io())
+                    .observeOn(AndroidSchedulers.mainThread())
+                    .o2Subscribe {
+                        onNext {
+                            mView?.updateMyPasswordSuccess()
+                        }
+                        onError { e, _ ->
+                            XLog.error("", e)
+                            if (e is O2ResponseException) {
+                                e.message?.let { mView?.updateMyPasswordFail(it) }
+                            }else {
+                                mView?.updateMyPasswordFail("修改失败!")
+                            }
+                        }
+                    }
+        }
+    }
 }
 }

+ 48 - 0
o2android/app/src/main/res/layout/activity_account_security.xml

@@ -88,6 +88,54 @@
                 android:layout_marginLeft="@dimen/spacing_normal"
                 android:layout_marginLeft="@dimen/spacing_normal"
                 android:layout_marginRight="@dimen/spacing_normal"
                 android:layout_marginRight="@dimen/spacing_normal"
                 android:background="@color/z_color_split_line_ddd" />
                 android:background="@color/z_color_split_line_ddd" />
+
+            <LinearLayout
+                android:orientation="vertical"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <RelativeLayout
+                    android:id="@+id/rl_account_security_password_btn"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_marginTop="@dimen/spacing_small"
+                    android:layout_marginBottom="@dimen/spacing_small"
+                    android:layout_marginLeft="@dimen/spacing_normal"
+                    android:layout_marginRight="@dimen/spacing_normal">
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="登录密码"
+                        android:layout_alignParentStart="true"
+                        android:textSize="15sp"
+                        android:textColor="@color/z_color_text_hint"
+                        android:layout_centerVertical="true" />
+                    <ImageView
+                        android:id="@+id/image_account_security_password_arrow"
+                        android:layout_width="22dp"
+                        android:layout_height="22dp"
+                        android:layout_alignParentEnd="true"
+                        android:layout_centerVertical="true"
+                        android:src="@mipmap/icon_arrow_22dp"/>
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_toStartOf="@id/image_account_security_password_arrow"
+                        android:layout_centerVertical="true"
+                        android:layout_marginEnd="@dimen/spacing_tiny"
+                        android:textSize="13sp"
+                        android:text="修改密码"
+                        android:textColor="@color/z_color_text_primary_dark"/>
+                </RelativeLayout>
+            </LinearLayout>
+
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="1dp"
+                android:layout_marginLeft="@dimen/spacing_normal"
+                android:layout_marginRight="@dimen/spacing_normal"
+                android:background="@color/z_color_split_line_ddd" />
+
             <LinearLayout
             <LinearLayout
                 android:orientation="vertical"
                 android:orientation="vertical"
                 android:layout_width="match_parent"
                 android:layout_width="match_parent"

+ 15 - 12
o2android/app/src/main/res/layout/dialog_password_modify.xml

@@ -14,20 +14,21 @@
         android:layout_marginRight="@dimen/spacing_normal">
         android:layout_marginRight="@dimen/spacing_normal">
 
 
         <TextView
         <TextView
-            android:layout_width="match_parent"
+            android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:layout_height="wrap_content"
+            android:layout_weight="1"
             android:text="原密码"
             android:text="原密码"
             android:id="@+id/dialog_password_old_id"
             android:id="@+id/dialog_password_old_id"
-            android:layout_weight="2"
             android:layout_marginTop="@dimen/spacing_small"
             android:layout_marginTop="@dimen/spacing_small"
             android:layout_marginBottom="@dimen/spacing_small"
             android:layout_marginBottom="@dimen/spacing_small"
             android:layout_gravity="center_vertical"
             android:layout_gravity="center_vertical"
+            android:textSize="@dimen/font_small"
             android:gravity="right" />
             android:gravity="right" />
 
 
         <EditText
         <EditText
-            android:layout_width="match_parent"
+            android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_weight="1"
+            android:layout_weight="2"
             android:inputType="textPassword"
             android:inputType="textPassword"
             android:id="@+id/dialog_password_old_edit_id"
             android:id="@+id/dialog_password_old_edit_id"
             android:hint="输入原密码" />
             android:hint="输入原密码" />
@@ -42,21 +43,22 @@
         android:layout_marginRight="@dimen/spacing_normal">
         android:layout_marginRight="@dimen/spacing_normal">
 
 
         <TextView
         <TextView
-            android:layout_width="match_parent"
+            android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:layout_height="wrap_content"
+            android:layout_weight="1"
             android:text="新密码"
             android:text="新密码"
             android:id="@+id/dialog_password_new_id"
             android:id="@+id/dialog_password_new_id"
-            android:layout_weight="2"
             android:layout_marginTop="@dimen/spacing_small"
             android:layout_marginTop="@dimen/spacing_small"
             android:layout_marginBottom="@dimen/spacing_small"
             android:layout_marginBottom="@dimen/spacing_small"
             android:gravity="right"
             android:gravity="right"
+            android:textSize="@dimen/font_small"
             android:layout_gravity="center_vertical" />
             android:layout_gravity="center_vertical" />
 
 
         <EditText
         <EditText
-            android:layout_width="match_parent"
+            android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:layout_height="wrap_content"
+            android:layout_weight="2"
             android:inputType="textPassword"
             android:inputType="textPassword"
-            android:layout_weight="1"
             android:id="@+id/dialog_password_new_edit_id"
             android:id="@+id/dialog_password_new_edit_id"
             android:hint="输入新密码" />
             android:hint="输入新密码" />
     </LinearLayout>
     </LinearLayout>
@@ -71,21 +73,22 @@
         android:layout_marginRight="@dimen/spacing_normal">
         android:layout_marginRight="@dimen/spacing_normal">
 
 
         <TextView
         <TextView
-            android:layout_width="match_parent"
+            android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:layout_height="wrap_content"
+            android:layout_weight="1"
             android:text="确认新密码"
             android:text="确认新密码"
             android:id="@+id/dialog_password_confirm_id"
             android:id="@+id/dialog_password_confirm_id"
-            android:layout_weight="2"
             android:layout_marginTop="@dimen/spacing_small"
             android:layout_marginTop="@dimen/spacing_small"
             android:layout_marginBottom="@dimen/spacing_small"
             android:layout_marginBottom="@dimen/spacing_small"
             android:gravity="right"
             android:gravity="right"
+            android:textSize="@dimen/font_small"
             android:layout_gravity="center_vertical" />
             android:layout_gravity="center_vertical" />
 
 
         <EditText
         <EditText
-            android:layout_width="match_parent"
+            android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:layout_height="wrap_content"
+            android:layout_weight="2"
             android:inputType="textPassword"
             android:inputType="textPassword"
-            android:layout_weight="1"
             android:id="@+id/dialog_password_confirm_edit_id"
             android:id="@+id/dialog_password_confirm_edit_id"
             android:hint="输入新密码" />
             android:hint="输入新密码" />
     </LinearLayout>
     </LinearLayout>

+ 8 - 0
o2android/o2_auth_sdk/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/core/component/api/service/OrgAssemblePersonalService.kt

@@ -4,6 +4,7 @@ import net.zoneland.x.bpm.mobile.v1.zoneXBPM.model.bo.api.ApiResponse
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.model.bo.api.IdData
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.model.bo.api.IdData
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.model.bo.api.ValueData
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.model.bo.api.ValueData
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.model.bo.api.main.person.PersonJson
 import net.zoneland.x.bpm.mobile.v1.zoneXBPM.model.bo.api.main.person.PersonJson
+import net.zoneland.x.bpm.mobile.v1.zoneXBPM.model.bo.api.main.person.PersonPwdForm
 import okhttp3.MultipartBody
 import okhttp3.MultipartBody
 import retrofit2.http.*
 import retrofit2.http.*
 import rx.Observable
 import rx.Observable
@@ -45,4 +46,11 @@ interface OrgAssemblePersonalService {
      */
      */
     @GET("jaxrs/definition/meetingConfig")
     @GET("jaxrs/definition/meetingConfig")
     fun getMeetingConfig() : Observable<ApiResponse<String>>
     fun getMeetingConfig() : Observable<ApiResponse<String>>
+
+
+    /**
+     * 更新当前用户密码
+     */
+    @PUT("jaxrs/password")
+    fun modifyCurrentPersonPassword(@Body body: PersonPwdForm): Observable<ApiResponse<ValueData>>
 }
 }

+ 13 - 0
o2android/o2_auth_sdk/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/model/bo/api/main/person/PersonPwdForm.kt

@@ -0,0 +1,13 @@
+package net.zoneland.x.bpm.mobile.v1.zoneXBPM.model.bo.api.main.person
+
+/**
+ * Created by fancyLou on 2020-09-03.
+ * Copyright © 2020 O2. All rights reserved.
+ */
+
+
+class PersonPwdForm(
+        var oldPassword: String = "",
+        var newPassword: String = "",
+        var confirmPassword: String = ""
+)