修改密码

This commit is contained in:
fengjignqi
2026-05-21 18:00:42 +08:00
parent c90d26afc1
commit 1b7c8f0c2d
19 changed files with 401 additions and 74 deletions

View File

@@ -16,51 +16,66 @@ import lombok.NoArgsConstructor;
@Data
public class MineUserInfoBean implements Serializable {
/**
* userId : 2056543507514097665
* tenantId : 000000
* deptId : null
* userName : null
* nickName : 用户1779153155517
* userType : app_user
* email :
* phonenumber : 133****6054
* sex : 0
* avatar : null
* password : $2a$10$KsCb1Z1znyQgL7W.GoljuuVPctzZ7tS7obu8W2WkK5ydsejQOjRi2
* status : 0
* loginIp : 192.168.1.7
* loginDate : 2026-05-19 11:06:22
* remark : null
* createTime : 2026-05-19 09:12:36
* deptName : null
* user : {"userId":"2056543507514097665","tenantId":"000000","deptId":null,"userName":null,"nickName":"给个回话","userType":"app_user","email":"","phonenumber":"133****6054","sex":"0","avatar":null,"password":"$2a$10$KsCb1Z1znyQgL7W.GoljuuVPctzZ7tS7obu8W2WkK5ydsejQOjRi2","status":"0","loginIp":"192.168.1.7","loginDate":"2026-05-21 08:44:20","remark":null,"createTime":"2026-05-19 09:12:36","deptName":null,"roles":[],"roleIds":null,"postIds":null,"roleId":null,"oldPassword":null}
* permissions : []
* roles : []
* roleIds : null
* postIds : null
* roleId : null
* oldPassword : null
*/
private String userId;
private String tenantId;
private Object deptId;
private Object userName;
private String nickName;
private String userType;
private String email;
private String phonenumber;
private String sex;
private Object avatar;
private String password;
private String status;
private String loginIp;
private String loginDate;
private Object remark;
private String createTime;
private Object deptName;
private Object roleIds;
private Object postIds;
private Object roleId;
private Object oldPassword;
private UserBean user;
private List<?> permissions;
private List<?> roles;
@NoArgsConstructor
@Data
public static class UserBean implements Serializable{
/**
* userId : 2056543507514097665
* tenantId : 000000
* deptId : null
* userName : null
* nickName : 给个回话
* userType : app_user
* email :
* phonenumber : 133****6054
* sex : 0
* avatar : null
* password : $2a$10$KsCb1Z1znyQgL7W.GoljuuVPctzZ7tS7obu8W2WkK5ydsejQOjRi2
* status : 0
* loginIp : 192.168.1.7
* loginDate : 2026-05-21 08:44:20
* remark : null
* createTime : 2026-05-19 09:12:36
* deptName : null
* roles : []
* roleIds : null
* postIds : null
* roleId : null
* oldPassword : null
*/
private String userId;
private String tenantId;
private Object deptId;
private Object userName;
private String nickName;
private String userType;
private String email;
private String phonenumber;
private String sex;
private Object avatar;
private String password;
private String status;
private String loginIp;
private String loginDate;
private Object remark;
private String createTime;
private Object deptName;
private Object roleIds;
private Object postIds;
private Object roleId;
private Object oldPassword;
private List<?> roles;
}
}

View File

@@ -25,7 +25,7 @@ public class DeviceContract {
void editDeviceInfo(JSONObject json, IndexContract.CallBack callBack);
//删除设备信息
void deleteDevice(String id,JSONObject json, IndexContract.CallBack callBack);
void deleteDevice(String id, IndexContract.CallBack callBack);
//手动开启关闭设备
void turnOnOffDevice(JSONObject json, IndexContract.CallBack callBack);

View File

@@ -130,11 +130,10 @@ public class DeviceImpl implements DeviceContract.DataModel{
/**
* 删除设备
* @param json
* @param callBack
*/
@Override
public void deleteDevice(String devID,JSONObject json, IndexContract.CallBack callBack) {
public void deleteDevice(String devID, IndexContract.CallBack callBack) {
try {
NetWorkManager.getRequest().unBindDevice(NetWorkManager.getToken(), devID)
.subscribeOn(Schedulers.io())

View File

@@ -114,29 +114,20 @@ public class DevicePresenter extends BasePresenter<DeviceContract.DeviceView> {
* @param deviceEntity
*/
public void unBindDevice(IndexDeviceEntity deviceEntity) {
try {
// 构造JSON数组格式的请求体 ["2052921001527869441"]
JSONArray jsonArray = new JSONArray();
jsonArray.put(deviceEntity.getId());
JSONObject json = new JSONObject();
json.put("ids", jsonArray);
impl.deleteDevice(deviceEntity.getId(),json, new IndexContract.CallBack<BaseBean>() {
@Override
public void success(BaseBean bean, int total) {
if (DevicePresenter.this.getView() != null) {
DevicePresenter.this.getView().deleteDeviceSuccess(bean);
}
impl.deleteDevice(deviceEntity.getId(), new IndexContract.CallBack<BaseBean>() {
@Override
public void success(BaseBean bean, int total) {
if (DevicePresenter.this.getView() != null) {
DevicePresenter.this.getView().deleteDeviceSuccess(bean);
}
}
@Override
public void fail(String msg) {
if (DevicePresenter.this.getView() != null) {
DevicePresenter.this.getView().showError(msg);
}
@Override
public void fail(String msg) {
if (DevicePresenter.this.getView() != null) {
DevicePresenter.this.getView().showError(msg);
}
});
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
});
}
}

View File

@@ -102,4 +102,14 @@ public class AppThemActivity extends BaseActivity<AppThemeChangeLayoutBinding, M
public void getUserInfoSuccess(MineUserInfoBean bean) {
}
@Override
public void updateUserInfoSuccess(BaseBean bean) {
}
@Override
public void updateUserPasswordSuccess(BaseBean bean) {
}
}

View File

@@ -136,4 +136,14 @@ public class ChangePhoneActivity extends BaseActivity<ChangePhoneActivityBinding
public void getUserInfoSuccess(MineUserInfoBean bean) {
}
@Override
public void updateUserInfoSuccess(BaseBean bean) {
}
@Override
public void updateUserPasswordSuccess(BaseBean bean) {
}
}

View File

@@ -3,6 +3,7 @@ package com.ckkj.water.mine;
import static android.view.View.INVISIBLE;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import com.ckkj.water.AppConfig;
@@ -36,6 +37,7 @@ import java.util.List;
*/
public class MineCenterFragment extends BaseFragment<MineFragmentLayoutBinding, MinePresenter>
implements MineContract.MineView {
private MineUserInfoBean mUserBean;
@Override
public void initData(Bundle state) {
ImmersionBar.with(mContext)
@@ -57,7 +59,7 @@ public class MineCenterFragment extends BaseFragment<MineFragmentLayoutBinding,
}
private void initListener() {
setClick(viewBinding.imgAvatar);
setClick(viewBinding.linearInfo);
setClick(viewBinding.linearLanguage);
setClick(viewBinding.linearPsdManage);
setClick(viewBinding.linearTheme);
@@ -69,8 +71,10 @@ public class MineCenterFragment extends BaseFragment<MineFragmentLayoutBinding,
public void onClick(View v){
switch (v.getId()){
case R.id.img_avatar:
goTo(mContext, MineInfomationActivity.class,null);
case R.id.linear_info:
Bundle bundle = new Bundle();
bundle.putSerializable(ConstantUtil.USER_INFO_JSON_CONTENT,mUserBean);
goTo(mContext, MineInfomationActivity.class,bundle);
break;
case R.id.linear_theme:
@@ -114,6 +118,23 @@ public class MineCenterFragment extends BaseFragment<MineFragmentLayoutBinding,
String userInfoJson = gson.toJson(bean);
SharePreUtil.putString(ConstantUtil.SHARE_PRE_NAME,mContext,ConstantUtil.USER_INFO_JSON_CONTENT,userInfoJson);
WaterUserInfoManager.getInstance().setUserInfo(bean);
mUserBean = bean;
viewBinding.tvUserName.setText(bean.getUser().getNickName());
if(TextUtils.isEmpty(bean.getUser().getPhonenumber())){
viewBinding.tvUserAccount.setText(bean.getUser().getEmail());
}else{
viewBinding.tvUserAccount.setText(bean.getUser().getPhonenumber());
}
}
@Override
public void updateUserInfoSuccess(BaseBean bean) {
}
@Override
public void updateUserPasswordSuccess(BaseBean bean) {
}

View File

@@ -266,4 +266,14 @@ public class MineFragment extends BaseFragment<MineFragmentBinding, MinePresente
public void getUserInfoSuccess(MineUserInfoBean bean) {
}
@Override
public void updateUserInfoSuccess(BaseBean bean) {
}
@Override
public void updateUserPasswordSuccess(BaseBean bean) {
}
}

View File

@@ -3,12 +3,14 @@ package com.ckkj.water.mine;
import android.Manifest;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.bumptech.glide.Glide;
import com.ckkj.water.ConstantUtil;
import com.ckkj.water.R;
import com.ckkj.water.base.BaseActivity;
import com.ckkj.water.base.entity.MineUserInfoBean;
@@ -40,6 +42,7 @@ import pub.devrel.easypermissions.EasyPermissions;
*/
public class MineInfomationActivity extends BaseActivity<MineInformationLayoutBinding, MinePresenter>
implements MineContract.MineView, EasyPermissions.PermissionCallbacks{
private MineUserInfoBean mUserBean;
@Override
public MinePresenter createPresenter() {
return new MinePresenter(new MineImpl());
@@ -48,7 +51,16 @@ public class MineInfomationActivity extends BaseActivity<MineInformationLayoutBi
@Override
public void initData(Bundle savedInstanceState) {
super.initData(savedInstanceState);
Bundle bundle = getIntent().getExtras();
if(bundle != null){
mUserBean = (MineUserInfoBean) bundle.getSerializable(ConstantUtil.USER_INFO_JSON_CONTENT);
viewBinding.tvNicknameValue.setText(mUserBean.getUser().getNickName());
if(TextUtils.isEmpty(mUserBean.getUser().getEmail())){
viewBinding.tvBindPhoneValue.setText(mUserBean.getUser().getPhonenumber());
}else{
viewBinding.tvBindPhoneValue.setText(mUserBean.getUser().getEmail());
}
}
ImmersionBar.with(this)
.statusBarColor(R.color.white) // 设置状态栏颜色
.statusBarDarkFont(true) // 设置状态栏字体为黑色
@@ -62,6 +74,7 @@ public class MineInfomationActivity extends BaseActivity<MineInformationLayoutBi
setClick(viewBinding.includedTitle.imgBack);
setClick(viewBinding.imgAvatar);
setClick(viewBinding.imgCamera);
setClick(viewBinding.rlNickname);
}
private void setClick(View view) {
@@ -99,6 +112,36 @@ public class MineInfomationActivity extends BaseActivity<MineInformationLayoutBi
}
}).show();
break;
case R.id.rl_nickname:
showEditDialog("修改昵称",
"请输入昵称",
mUserBean.getUser().getNickName(),
true,
"取消",
"确定", new OnDialogClick() {
@Override
public void onCancelClick() {
}
@Override
public void onConfirmClisk() {
}
@Override
public void onConfirmClisk(String content) {
showLoadingDialog();
mPresenter.updateUserInfo(content);
mUserBean.getUser().setNickName(content);
viewBinding.tvNicknameValue.setText(content);
}
@Override
public void onView1Click() {
}
});
break;
}
}
@@ -125,6 +168,20 @@ public class MineInfomationActivity extends BaseActivity<MineInformationLayoutBi
}
}
/**
* 获取个人信息成功
* @param bean
*/
@Override
public void updateUserInfoSuccess(BaseBean bean) {
hideDialogLoading();
}
@Override
public void updateUserPasswordSuccess(BaseBean bean) {
}
private void getCompressFile(File file) {
LubanCompressUtil.getInstance().getCompressFile(mContext, file, new LubanCompressUtil.CompressCallback() {
@@ -176,7 +233,8 @@ public class MineInfomationActivity extends BaseActivity<MineInformationLayoutBi
@Override
public void showError(String message) {
hideDialogLoading();
ToastUtil.showShort(mContext,message);
}
@Override
@@ -210,4 +268,6 @@ public class MineInfomationActivity extends BaseActivity<MineInformationLayoutBi
public void getUserInfoSuccess(MineUserInfoBean bean) {
}
}

View File

@@ -85,4 +85,14 @@ public class PsdManageActivity extends BaseActivity<PasswordManLayoutBinding, Mi
public void getUserInfoSuccess(MineUserInfoBean bean) {
}
@Override
public void updateUserInfoSuccess(BaseBean bean) {
}
@Override
public void updateUserPasswordSuccess(BaseBean bean) {
}
}

View File

@@ -72,11 +72,24 @@ public class ResetPsdActivity extends BaseActivity<ResetPsdLayoutBinding, MinePr
ToastUtil.showShort(mContext,getString(R.string.hint_input_psd_not_match));
return;
}
ToastUtil.showShort(mContext,"接口触发");
showLoadingDialog();
mPresenter.updateUserPsdByOld(viewBinding.etCurrentPsd.getText().toString(),
viewBinding.etInputConfirmPsd.getText().toString());
break;
}
}
/**
* 密码重置成功
* @param bean
*/
@Override
public void updateUserPasswordSuccess(BaseBean bean) {
hideDialogLoading();
ToastUtil.showShort(mContext,"密码重置成功");
finish();
}
@Override
public MinePresenter createPresenter() {
return new MinePresenter(new MineImpl());
@@ -89,7 +102,8 @@ public class ResetPsdActivity extends BaseActivity<ResetPsdLayoutBinding, MinePr
@Override
public void showError(String message) {
hideDialogLoading();
ToastUtil.showShort(mContext,message);
}
@Override
@@ -101,4 +115,11 @@ public class ResetPsdActivity extends BaseActivity<ResetPsdLayoutBinding, MinePr
public void getUserInfoSuccess(MineUserInfoBean bean) {
}
@Override
public void updateUserInfoSuccess(BaseBean bean) {
}
}

View File

@@ -206,4 +206,14 @@ public class SettingsActivity extends BaseActivity<ActivitySettingsLayoutBinding
public void getUserInfoSuccess(MineUserInfoBean bean) {
}
@Override
public void updateUserInfoSuccess(BaseBean bean) {
}
@Override
public void updateUserPasswordSuccess(BaseBean bean) {
}
}

View File

@@ -116,4 +116,14 @@ public class UserLogOffAccountActivity extends BaseActivity<UserLogOffActivityBi
public void getUserInfoSuccess(MineUserInfoBean bean) {
}
@Override
public void updateUserInfoSuccess(BaseBean bean) {
}
@Override
public void updateUserPasswordSuccess(BaseBean bean) {
}
}

View File

@@ -29,13 +29,22 @@ public class MineContract {
public interface DataModel{
//获取个人信息
void getUserInfo(Map<String,Object> map, CallBack callBack);
//更新个人信息
void updateUserInfo(JSONObject json, CallBack callBack);
//通过旧密码,修改新密码
void updateUserPwdByOld(JSONObject json, CallBack callBack);
}
public interface MineView extends IView {
//获取个人信息
void getUserInfoSuccess(MineUserInfoBean bean);
//更新个人信息成功
void updateUserInfoSuccess(BaseBean bean);
//密码重设完成
void updateUserPasswordSuccess(BaseBean bean);
}
public interface RecommendModel{

View File

@@ -4,6 +4,7 @@ import com.ckkj.water.base.entity.MineUserInfoBean;
import com.ckkj.water.login.mvp.LoginContract;
import com.ckkj.water.mine.entity.MemberComboEntity;
import com.ckkj.water.network.BaseBean;
import com.ckkj.water.network.LoginStateManager;
import com.ckkj.water.network.NetWorkManager;
import org.json.JSONObject;
@@ -59,4 +60,84 @@ public class MineImpl implements MineContract.DataModel {
}
});
}
/**
* 更新用户信息
* @param json
* @param callBack
*/
@Override
public void updateUserInfo(JSONObject json, MineContract.CallBack callBack) {
try {
NetWorkManager.getRequest().updateUserInfo(NetWorkManager.getToken(),NetWorkManager.toRequestBody(json))
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseBean>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull BaseBean bean) {
if (bean.getCode() == 200) {
callBack.success(bean);
} else {
callBack.fail(bean.getMessage());
}
}
@Override
public void onError(@NonNull Throwable e) {
callBack.fail(e.getMessage());
}
@Override
public void onComplete() {
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 通过旧密码更新密码
* @param json
* @param callBack
*/
@Override
public void updateUserPwdByOld(JSONObject json, MineContract.CallBack callBack) {
try {
NetWorkManager.getRequest().updatePasswordByOld(NetWorkManager.getToken(),NetWorkManager.toRequestBody(json))
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseBean>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull BaseBean bean) {
if (bean.getCode() == 200) {
callBack.success(bean);
} else {
callBack.fail(bean.getMessage());
}
}
@Override
public void onError(@NonNull Throwable e) {
callBack.fail(e.getMessage());
}
@Override
public void onComplete() {
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@@ -1,15 +1,20 @@
package com.ckkj.water.mine.mvp;
import android.text.Editable;
import android.text.TextUtils;
import com.ckkj.water.ConstantUtil;
import com.ckkj.water.base.BasePresenter;
import com.ckkj.water.base.entity.MineUserInfoBean;
import com.ckkj.water.base.entity.UserInfoEntity;
import com.ckkj.water.network.BaseBean;
import com.ckkj.water.utils.dataUtil.SharePreUtil;
import com.ckkj.water.utils.manager.WaterUserInfoManager;
import com.google.gson.Gson;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
@@ -49,4 +54,61 @@ public class MinePresenter extends BasePresenter<MineContract.MineView> {
});
}
/**
* 修改用户信息
* @param content
*/
public void updateUserInfo(String content) {
try {
JSONObject json = new JSONObject();
json.put("nickName", content);
impl.updateUserInfo(json, new MineContract.CallBack<BaseBean>() {
@Override
public void success(BaseBean bean) {
if(MinePresenter.this.getView() != null){
MinePresenter.this.getView().updateUserInfoSuccess(bean);
}
}
@Override
public void fail(String msg) {
if(MinePresenter.this.getView() != null){
MinePresenter.this.getView().showError(msg);
}
}
});
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
/**
* 通过旧密码更新密码
* @param oldPsd
* @param newPsd
*/
public void updateUserPsdByOld(String oldPsd, String newPsd) {
try {
JSONObject json = new JSONObject();
json.put("oldPassword", oldPsd);
json.put("password", newPsd);
impl.updateUserPwdByOld(json, new MineContract.CallBack<BaseBean>() {
@Override
public void success(BaseBean bean) {
if(MinePresenter.this.getView() != null){
MinePresenter.this.getView().updateUserPasswordSuccess(bean);
}
}
@Override
public void fail(String msg) {
if(MinePresenter.this.getView() != null){
MinePresenter.this.getView().showError(msg);
}
}
});
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
}

View File

@@ -43,6 +43,9 @@ public interface Request {
//获取个人信息
@GET("app/v1/getUserInfo")
Observable<BaseBean<MineUserInfoBean>> getMineUserInfo(@HeaderMap Map<String, String> headMap, @QueryMap Map<String, Object> map);
//修改个人信息
@PUT("app/v1/updataUser")
Observable<BaseBean> updateUserInfo(@HeaderMap Map<String, String> headMap, @Body RequestBody requestBody);
//首页设备列表
@GET("app/v1/deviceList")
@@ -57,6 +60,10 @@ public interface Request {
@PUT("app/v1/updateDeviceInfo")
Observable<BaseBean> updateDeviceInfo(@HeaderMap Map<String, String> headMap, @Body RequestBody requestBody);
//通过旧密码修改密码
@PUT("app/v1/updataPassword")
Observable<BaseBean> updatePasswordByOld(@HeaderMap Map<String, String> headMap, @Body RequestBody requestBody);
//解绑信息
// 示例:ids array[string]
//["2052921001527869441"]