图片上传
This commit is contained in:
@@ -5,7 +5,7 @@ import android.view.View;
|
||||
|
||||
import com.ckkj.water.R;
|
||||
import com.ckkj.water.base.BaseActivity;
|
||||
import com.ckkj.water.base.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.mine.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.databinding.AppThemeChangeLayoutBinding;
|
||||
import com.ckkj.water.mine.mvp.MineContract;
|
||||
import com.ckkj.water.mine.mvp.MineImpl;
|
||||
@@ -124,7 +124,7 @@ public class AppThemActivity extends BaseActivity<AppThemeChangeLayoutBinding, M
|
||||
}
|
||||
|
||||
@Override
|
||||
public void uploadImageSuccess(BaseBean bean) {
|
||||
public void uploadImageSuccess(MineUserInfoBean bean) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import android.os.CountDownTimer;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
|
||||
import com.ckkj.water.base.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.mine.entity.MineUserInfoBean;
|
||||
import com.gyf.immersionbar.ImmersionBar;
|
||||
import com.ckkj.water.R;
|
||||
import com.ckkj.water.base.BaseActivity;
|
||||
@@ -14,7 +14,6 @@ import com.ckkj.water.mine.mvp.MineContract;
|
||||
import com.ckkj.water.mine.mvp.MineImpl;
|
||||
import com.ckkj.water.mine.mvp.MinePresenter;
|
||||
import com.ckkj.water.network.BaseBean;
|
||||
import com.ckkj.water.utils.manager.WaterUserInfoManager;
|
||||
import com.ckkj.water.utils.number.PhoneNumberUtils;
|
||||
import com.ckkj.water.utils.show.ToastUtil;
|
||||
|
||||
@@ -153,7 +152,7 @@ public class ChangePhoneActivity extends BaseActivity<ChangePhoneActivityBinding
|
||||
}
|
||||
|
||||
@Override
|
||||
public void uploadImageSuccess(BaseBean bean) {
|
||||
public void uploadImageSuccess(MineUserInfoBean bean) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,6 @@ package com.ckkj.water.mine;
|
||||
|
||||
import static android.view.View.INVISIBLE;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
@@ -11,12 +10,9 @@ import com.ckkj.water.AppConfig;
|
||||
import com.ckkj.water.ConstantUtil;
|
||||
import com.ckkj.water.R;
|
||||
import com.ckkj.water.base.BaseFragment;
|
||||
import com.ckkj.water.base.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.databinding.MineFragmentBinding;
|
||||
import com.ckkj.water.mine.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.databinding.MineFragmentLayoutBinding;
|
||||
import com.ckkj.water.login.LoginActivity;
|
||||
import com.ckkj.water.main.entity.CheckVersionEntity;
|
||||
import com.ckkj.water.mine.entity.MemberComboEntity;
|
||||
import com.ckkj.water.mine.mvp.MineContract;
|
||||
import com.ckkj.water.mine.mvp.MineImpl;
|
||||
import com.ckkj.water.mine.mvp.MinePresenter;
|
||||
@@ -26,16 +22,11 @@ import com.ckkj.water.utils.manager.ActivityManager;
|
||||
import com.ckkj.water.utils.manager.LanguageManager;
|
||||
import com.ckkj.water.utils.manager.ThemeManager;
|
||||
import com.ckkj.water.utils.manager.WaterUserInfoManager;
|
||||
import com.ckkj.water.utils.show.ToastUtil;
|
||||
import com.google.gson.Gson;
|
||||
import com.gyf.immersionbar.ImmersionBar;
|
||||
import com.lxj.xpopup.XPopup;
|
||||
import com.lxj.xpopup.interfaces.OnSelectListener;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import de.greenrobot.event.EventBus;
|
||||
|
||||
/**
|
||||
* @author fengxiaoyang
|
||||
* @date 2026/5/16
|
||||
@@ -166,7 +157,7 @@ public class MineCenterFragment extends BaseFragment<MineFragmentLayoutBinding,
|
||||
}
|
||||
|
||||
@Override
|
||||
public void uploadImageSuccess(BaseBean bean) {
|
||||
public void uploadImageSuccess(MineUserInfoBean bean) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -13,15 +13,14 @@ 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;
|
||||
import com.ckkj.water.mine.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.databinding.MineInformationLayoutBinding;
|
||||
import com.ckkj.water.mine.mvp.MineContract;
|
||||
import com.ckkj.water.mine.mvp.MineImpl;
|
||||
import com.ckkj.water.mine.mvp.MinePresenter;
|
||||
import com.ckkj.water.network.BaseBean;
|
||||
import com.ckkj.water.utils.LubanCompressUtil;
|
||||
import com.ckkj.water.utils.PreviewFileUtil;
|
||||
import com.ckkj.water.utils.dataUtil.FileUtil;
|
||||
import com.ckkj.water.utils.dataUtil.SharePreUtil;
|
||||
import com.ckkj.water.utils.manager.ThemeManager;
|
||||
import com.ckkj.water.utils.manager.WaterUserInfoManager;
|
||||
import com.ckkj.water.utils.show.ToastUtil;
|
||||
@@ -198,8 +197,32 @@ public class MineInfomationActivity extends BaseActivity<MineInformationLayoutBi
|
||||
}
|
||||
|
||||
@Override
|
||||
public void uploadImageSuccess(BaseBean bean) {
|
||||
public void uploadImageSuccess(MineUserInfoBean bean) {
|
||||
hideDialogLoading();
|
||||
// 后端约定:data 为上传后的头像访问URL(String)
|
||||
String avatarUrl = bean.getUrl();
|
||||
if (TextUtils.isEmpty(avatarUrl)) {
|
||||
ToastUtil.showShort(mContext, getString(R.string.avatar_update_success));
|
||||
return;
|
||||
}
|
||||
|
||||
// 更新内存中的用户信息
|
||||
if (mUserBean != null && mUserBean.getUser() != null) {
|
||||
mUserBean.getUser().setAvatar(avatarUrl);
|
||||
WaterUserInfoManager.getInstance().setUserInfo(mUserBean);
|
||||
}
|
||||
|
||||
// 缓存头像地址到本地
|
||||
SharePreUtil.putString(ConstantUtil.SHARE_PRE_NAME, mContext,
|
||||
ConstantUtil.USER_INFO_AVATAR, avatarUrl);
|
||||
|
||||
// 刷新头像显示
|
||||
Glide.with(mContext)
|
||||
.load(avatarUrl)
|
||||
.error(mContext.getDrawable(R.mipmap.icon_mine_user_head_defaul))
|
||||
.into(viewBinding.imgAvatar);
|
||||
|
||||
ToastUtil.showShort(mContext, getString(R.string.avatar_update_success));
|
||||
}
|
||||
|
||||
|
||||
@@ -225,7 +248,7 @@ public class MineInfomationActivity extends BaseActivity<MineInformationLayoutBi
|
||||
return;
|
||||
}
|
||||
|
||||
//Todo 开始上传图片
|
||||
// 上传图片
|
||||
mPresenter.uploadImage(file);
|
||||
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import android.view.View;
|
||||
|
||||
import com.ckkj.water.R;
|
||||
import com.ckkj.water.base.BaseActivity;
|
||||
import com.ckkj.water.base.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.mine.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.databinding.PasswordManLayoutBinding;
|
||||
import com.ckkj.water.login.ForgetPasswordActivity;
|
||||
import com.ckkj.water.mine.mvp.MineContract;
|
||||
@@ -103,7 +103,7 @@ public class PsdManageActivity extends BaseActivity<PasswordManLayoutBinding, Mi
|
||||
}
|
||||
|
||||
@Override
|
||||
public void uploadImageSuccess(BaseBean bean) {
|
||||
public void uploadImageSuccess(MineUserInfoBean bean) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import android.view.View;
|
||||
|
||||
import com.ckkj.water.R;
|
||||
import com.ckkj.water.base.BaseActivity;
|
||||
import com.ckkj.water.base.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.mine.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.databinding.ResetPsdLayoutBinding;
|
||||
import com.ckkj.water.mine.mvp.MineContract;
|
||||
import com.ckkj.water.mine.mvp.MineImpl;
|
||||
@@ -97,7 +97,7 @@ public class ResetPsdActivity extends BaseActivity<ResetPsdLayoutBinding, MinePr
|
||||
}
|
||||
|
||||
@Override
|
||||
public void uploadImageSuccess(BaseBean bean) {
|
||||
public void uploadImageSuccess(MineUserInfoBean bean) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.view.View;
|
||||
|
||||
import com.ckkj.water.base.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.mine.entity.MineUserInfoBean;
|
||||
import com.gyf.immersionbar.ImmersionBar;
|
||||
import com.ckkj.water.AppConfig;
|
||||
import com.ckkj.water.EventMessage;
|
||||
@@ -226,7 +226,7 @@ public class SettingsActivity extends BaseActivity<ActivitySettingsLayoutBinding
|
||||
}
|
||||
|
||||
@Override
|
||||
public void uploadImageSuccess(BaseBean bean) {
|
||||
public void uploadImageSuccess(MineUserInfoBean bean) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import android.os.CountDownTimer;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
|
||||
import com.ckkj.water.base.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.mine.entity.MineUserInfoBean;
|
||||
import com.gyf.immersionbar.ImmersionBar;
|
||||
import com.ckkj.water.AppConfig;
|
||||
import com.ckkj.water.R;
|
||||
@@ -15,8 +15,6 @@ import com.ckkj.water.mine.mvp.MineContract;
|
||||
import com.ckkj.water.mine.mvp.MineImpl;
|
||||
import com.ckkj.water.mine.mvp.MinePresenter;
|
||||
import com.ckkj.water.network.BaseBean;
|
||||
import com.ckkj.water.utils.manager.WaterUserInfoManager;
|
||||
import com.ckkj.water.utils.number.PhoneNumberUtils;
|
||||
import com.ckkj.water.utils.show.ToastUtil;
|
||||
|
||||
|
||||
@@ -133,7 +131,7 @@ public class UserLogOffAccountActivity extends BaseActivity<UserLogOffActivityBi
|
||||
}
|
||||
|
||||
@Override
|
||||
public void uploadImageSuccess(BaseBean bean) {
|
||||
public void uploadImageSuccess(MineUserInfoBean bean) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
package com.ckkj.water.mine.entity;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @author fengxiaoyang
|
||||
* @date 2025/7/28
|
||||
* @description TODO: 描述该类的作用
|
||||
*/
|
||||
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class MineUserInfoBean implements Serializable {
|
||||
|
||||
|
||||
/**
|
||||
* 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 : []
|
||||
*/
|
||||
|
||||
private UserBean user;
|
||||
private List<?> permissions;
|
||||
private List<?> roles;
|
||||
private String url;
|
||||
|
||||
|
||||
@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;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,18 +1,11 @@
|
||||
package com.ckkj.water.mine.mvp;
|
||||
|
||||
import com.ckkj.water.base.IView;
|
||||
import com.ckkj.water.base.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.login.mvp.LoginContract;
|
||||
import com.ckkj.water.main.entity.CheckVersionEntity;
|
||||
import com.ckkj.water.mine.entity.InviteeRecordEntity;
|
||||
import com.ckkj.water.mine.entity.MemberComboEntity;
|
||||
import com.ckkj.water.mine.entity.RecommendDataEntity;
|
||||
import com.ckkj.water.mine.entity.RewardRecordEntity;
|
||||
import com.ckkj.water.mine.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.network.BaseBean;
|
||||
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@@ -50,7 +43,7 @@ public class MineContract {
|
||||
//退出登录
|
||||
void logOutSuccess(BaseBean bean);
|
||||
//上传图片成功
|
||||
void uploadImageSuccess(BaseBean bean);
|
||||
void uploadImageSuccess(MineUserInfoBean bean);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,15 +1,12 @@
|
||||
package com.ckkj.water.mine.mvp;
|
||||
|
||||
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.mine.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.network.BaseBean;
|
||||
import com.ckkj.water.network.LoginStateManager;
|
||||
import com.ckkj.water.network.NetWorkManager;
|
||||
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.List;
|
||||
import java.io.File;
|
||||
import java.util.Map;
|
||||
|
||||
import io.reactivex.Observer;
|
||||
@@ -17,6 +14,9 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.annotations.NonNull;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
import okhttp3.MediaType;
|
||||
import okhttp3.MultipartBody;
|
||||
import okhttp3.RequestBody;
|
||||
|
||||
/**
|
||||
* @author fengxiaoyang
|
||||
@@ -143,11 +143,73 @@ public class MineImpl implements MineContract.DataModel {
|
||||
|
||||
/**
|
||||
* 上传图片
|
||||
* @param json
|
||||
* @param callBack
|
||||
*
|
||||
* @param json 预留参数,目前接口不需要,但保留扩展能力(例如上传类型/用户ID等)
|
||||
* @param callBack 上传结果回调
|
||||
*/
|
||||
@Override
|
||||
public void uploadImage(JSONObject json, MineContract.CallBack callBack) {
|
||||
File file = null;
|
||||
if (json != null && json.has("file")) {
|
||||
try {
|
||||
String path = json.getString("file");
|
||||
if (path != null && !path.isEmpty()) {
|
||||
file = new File(path);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
if (file == null || !file.exists()) {
|
||||
callBack.fail("文件不存在");
|
||||
return;
|
||||
}
|
||||
|
||||
// 推断 MIME 类型:根据后缀决定 image/jpeg 或 image/png,其它统一用 image/jpeg
|
||||
String fileName = file.getName().toLowerCase();
|
||||
MediaType mediaType;
|
||||
if (fileName.endsWith(".png")) {
|
||||
mediaType = MediaType.parse("image/png");
|
||||
} else if (fileName.endsWith(".jpg") || fileName.endsWith(".jpeg")) {
|
||||
mediaType = MediaType.parse("image/jpeg");
|
||||
} else {
|
||||
mediaType = MediaType.parse("image/jpeg");
|
||||
}
|
||||
RequestBody requestBody = RequestBody.create(mediaType, file);
|
||||
// 参数名固定为 "file",与后端约定一致
|
||||
MultipartBody.Part part = MultipartBody.Part.createFormData("file", file.getName(), requestBody);
|
||||
|
||||
try {
|
||||
NetWorkManager.getRequest().uploadImage(NetWorkManager.getToken(), part)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.unsubscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(new Observer<BaseBean<MineUserInfoBean>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseBean<MineUserInfoBean> bean) {
|
||||
if (bean.getCode() == 200) {
|
||||
callBack.success(bean.getData());
|
||||
} 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();
|
||||
callBack.fail(e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,10 @@
|
||||
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.mine.entity.MineUserInfoBean;
|
||||
import com.ckkj.water.login.mvp.LoginContract;
|
||||
import com.ckkj.water.login.mvp.LoginImpl;
|
||||
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;
|
||||
@@ -139,9 +131,32 @@ public class MinePresenter extends BasePresenter<MineContract.MineView> {
|
||||
|
||||
/**
|
||||
* 上传图片
|
||||
* @param file
|
||||
* @param file 已压缩后的图片文件
|
||||
*/
|
||||
public void uploadImage(File file) {
|
||||
try {
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("file", file == null ? "" : file.getAbsolutePath());
|
||||
impl.uploadImage(json, new MineContract.CallBack<MineUserInfoBean>() {
|
||||
@Override
|
||||
public void success(MineUserInfoBean bean) {
|
||||
if (MinePresenter.this.getView() != null) {
|
||||
MinePresenter.this.getView().uploadImageSuccess(bean);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fail(String msg) {
|
||||
if (MinePresenter.this.getView() != null) {
|
||||
MinePresenter.this.getView().showError(msg);
|
||||
}
|
||||
}
|
||||
});
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
if (getView() != null) {
|
||||
getView().showError(e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user