From b5e9f0de3bd864f5667e610f80538a46c067a43a Mon Sep 17 00:00:00 2001 From: fengjignqi <15192412330@163.com> Date: Mon, 29 Jun 2026 17:59:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=BE=E7=89=87=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ckkj/water/MyApplication.java | 3 +- .../com/ckkj/water/guide/LaunchActivity.java | 5 +- .../ckkj/water/history/mvp/HistoryImpl.java | 1 - .../com/ckkj/water/main/MainContract.java | 2 +- .../com/ckkj/water/main/MainPresenter.java | 4 - .../water/main/activity/MainActivity.java | 4 +- .../com/ckkj/water/mine/AppThemActivity.java | 4 +- .../ckkj/water/mine/ChangePhoneActivity.java | 5 +- .../ckkj/water/mine/MineCenterFragment.java | 13 +--- .../water/mine/MineInfomationActivity.java | 33 ++++++-- .../ckkj/water/mine/PsdManageActivity.java | 4 +- .../com/ckkj/water/mine/ResetPsdActivity.java | 4 +- .../com/ckkj/water/mine/SettingsActivity.java | 4 +- .../water/mine/UserLogOffAccountActivity.java | 6 +- .../entity/MineUserInfoBean.java | 5 +- .../com/ckkj/water/mine/mvp/MineContract.java | 11 +-- .../com/ckkj/water/mine/mvp/MineImpl.java | 76 +++++++++++++++++-- .../ckkj/water/mine/mvp/MinePresenter.java | 35 ++++++--- .../java/com/ckkj/water/network/Request.java | 8 +- .../water/permission/PermissionActivity.java | 5 +- .../utils/manager/WaterUserInfoManager.java | 3 +- 21 files changed, 153 insertions(+), 82 deletions(-) rename app/src/main/java/com/ckkj/water/{base => mine}/entity/MineUserInfoBean.java (97%) diff --git a/app/src/main/java/com/ckkj/water/MyApplication.java b/app/src/main/java/com/ckkj/water/MyApplication.java index 9561ca7..3da71a1 100644 --- a/app/src/main/java/com/ckkj/water/MyApplication.java +++ b/app/src/main/java/com/ckkj/water/MyApplication.java @@ -11,9 +11,8 @@ import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import com.ckkj.water.base.entity.MineUserInfoBean; +import com.ckkj.water.mine.entity.MineUserInfoBean; import com.google.gson.Gson; -import com.ckkj.water.login.entity.LoginEntity; import com.ckkj.water.network.NetWorkManager; import com.ckkj.water.utils.dataUtil.SharePreUtil; import com.ckkj.water.utils.manager.LanguageManager; diff --git a/app/src/main/java/com/ckkj/water/guide/LaunchActivity.java b/app/src/main/java/com/ckkj/water/guide/LaunchActivity.java index 7e3fc9b..f8d7ff8 100644 --- a/app/src/main/java/com/ckkj/water/guide/LaunchActivity.java +++ b/app/src/main/java/com/ckkj/water/guide/LaunchActivity.java @@ -7,14 +7,12 @@ import android.view.View; import com.ckkj.water.AppConfig; import com.ckkj.water.login.LoginActivity; -import com.ckkj.water.login.RegisterActivity; -import com.ckkj.water.login.RegisterSuccessActivity; import com.gyf.immersionbar.ImmersionBar; import com.ckkj.water.ConstantUtil; import com.ckkj.water.MyApplication; 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.GuideLayoutBinding; import com.ckkj.water.main.MainContract; import com.ckkj.water.main.MainImpl; @@ -27,7 +25,6 @@ import com.ckkj.water.utils.dataUtil.SharePreUtil; import com.ckkj.water.utils.manager.ActivityManager; import me.jessyan.autosize.internal.CancelAdapt; -import me.jessyan.autosize.internal.CustomAdapt; /** * @author fengxiaoyang diff --git a/app/src/main/java/com/ckkj/water/history/mvp/HistoryImpl.java b/app/src/main/java/com/ckkj/water/history/mvp/HistoryImpl.java index 979d194..b4e6733 100644 --- a/app/src/main/java/com/ckkj/water/history/mvp/HistoryImpl.java +++ b/app/src/main/java/com/ckkj/water/history/mvp/HistoryImpl.java @@ -1,6 +1,5 @@ package com.ckkj.water.history.mvp; -import com.ckkj.water.base.entity.MineUserInfoBean; import com.ckkj.water.history.entity.WaterStatisticsEntity; import com.ckkj.water.history.entity.WateringRecord; import com.ckkj.water.network.BaseBean; diff --git a/app/src/main/java/com/ckkj/water/main/MainContract.java b/app/src/main/java/com/ckkj/water/main/MainContract.java index 224969f..1073065 100644 --- a/app/src/main/java/com/ckkj/water/main/MainContract.java +++ b/app/src/main/java/com/ckkj/water/main/MainContract.java @@ -1,7 +1,7 @@ package com.ckkj.water.main; import com.ckkj.water.base.IView; -import com.ckkj.water.base.entity.MineUserInfoBean; +import com.ckkj.water.mine.entity.MineUserInfoBean; import com.ckkj.water.main.entity.CheckVersionEntity; import com.ckkj.water.network.BaseBean; diff --git a/app/src/main/java/com/ckkj/water/main/MainPresenter.java b/app/src/main/java/com/ckkj/water/main/MainPresenter.java index fb9d791..fa6bc4d 100644 --- a/app/src/main/java/com/ckkj/water/main/MainPresenter.java +++ b/app/src/main/java/com/ckkj/water/main/MainPresenter.java @@ -1,11 +1,7 @@ package com.ckkj.water.main; import com.ckkj.water.base.BasePresenter; -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.mvp.MineImpl; -import com.ckkj.water.network.BaseBean; import org.json.JSONObject; diff --git a/app/src/main/java/com/ckkj/water/main/activity/MainActivity.java b/app/src/main/java/com/ckkj/water/main/activity/MainActivity.java index 795d8de..845b9e9 100644 --- a/app/src/main/java/com/ckkj/water/main/activity/MainActivity.java +++ b/app/src/main/java/com/ckkj/water/main/activity/MainActivity.java @@ -18,13 +18,12 @@ import com.ckkj.water.mine.MineCenterFragment; import com.ckkj.water.plan.WaterPlanFragment; import com.ckkj.water.utils.manager.ThemeManager; import com.gyf.immersionbar.ImmersionBar; -import com.ckkj.water.AppConfig; import com.ckkj.water.ConstantUtil; import com.ckkj.water.EventMessage; import com.ckkj.water.R; import com.ckkj.water.adapter.ViewPageAdapter; 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.MainActivityLayoutBinding; import com.ckkj.water.dialog.DialogAppUpdate; import com.ckkj.water.main.MainContract; @@ -33,7 +32,6 @@ import com.ckkj.water.main.MainPresenter; import com.ckkj.water.main.entity.CheckVersionEntity; import com.ckkj.water.network.BaseBean; import com.ckkj.water.utils.AppInfoUtil; -import com.ckkj.water.utils.dataUtil.SharePreUtil; import com.ckkj.water.utils.manager.ActivityManager; import com.ckkj.water.utils.manager.WaterUserInfoManager; import com.ckkj.water.utils.show.ToastUtil; diff --git a/app/src/main/java/com/ckkj/water/mine/AppThemActivity.java b/app/src/main/java/com/ckkj/water/mine/AppThemActivity.java index 4a58adb..1c94c3d 100644 --- a/app/src/main/java/com/ckkj/water/mine/AppThemActivity.java +++ b/app/src/main/java/com/ckkj/water/mine/AppThemActivity.java @@ -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 permissions; private List roles; + private String url; + @NoArgsConstructor @Data @@ -77,5 +79,6 @@ public class MineUserInfoBean implements Serializable { private Object roleId; private Object oldPassword; private List roles; + } } diff --git a/app/src/main/java/com/ckkj/water/mine/mvp/MineContract.java b/app/src/main/java/com/ckkj/water/mine/mvp/MineContract.java index 44df4e5..1806d9a 100644 --- a/app/src/main/java/com/ckkj/water/mine/mvp/MineContract.java +++ b/app/src/main/java/com/ckkj/water/mine/mvp/MineContract.java @@ -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); } diff --git a/app/src/main/java/com/ckkj/water/mine/mvp/MineImpl.java b/app/src/main/java/com/ckkj/water/mine/mvp/MineImpl.java index afebba8..255fadd 100644 --- a/app/src/main/java/com/ckkj/water/mine/mvp/MineImpl.java +++ b/app/src/main/java/com/ckkj/water/mine/mvp/MineImpl.java @@ -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>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + } + + @Override + public void onNext(@NonNull BaseBean 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()); + } } } diff --git a/app/src/main/java/com/ckkj/water/mine/mvp/MinePresenter.java b/app/src/main/java/com/ckkj/water/mine/mvp/MinePresenter.java index cc1c01f..70b8f7f 100644 --- a/app/src/main/java/com/ckkj/water/mine/mvp/MinePresenter.java +++ b/app/src/main/java/com/ckkj/water/mine/mvp/MinePresenter.java @@ -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 { /** * 上传图片 - * @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() { + @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()); + } + } } } diff --git a/app/src/main/java/com/ckkj/water/network/Request.java b/app/src/main/java/com/ckkj/water/network/Request.java index 3016426..d76e82b 100644 --- a/app/src/main/java/com/ckkj/water/network/Request.java +++ b/app/src/main/java/com/ckkj/water/network/Request.java @@ -2,7 +2,7 @@ package com.ckkj.water.network; -import com.ckkj.water.base.entity.MineUserInfoBean; +import com.ckkj.water.mine.entity.MineUserInfoBean; import com.ckkj.water.history.entity.WaterStatisticsEntity; import com.ckkj.water.history.entity.WateringRecord; import com.ckkj.water.index.entity.WaterDeviceEntity; @@ -20,6 +20,7 @@ import retrofit2.http.Body; import retrofit2.http.DELETE; import retrofit2.http.GET; import retrofit2.http.HeaderMap; +import retrofit2.http.Multipart; import retrofit2.http.POST; import retrofit2.http.PUT; import retrofit2.http.Part; @@ -54,8 +55,9 @@ public interface Request { Observable updateUserInfo(@HeaderMap Map headMap, @Body RequestBody requestBody); //上传图片 - @PUT("app/v1/uploadImage") - Observable uploadImage(@HeaderMap Map headMap,@Part MultipartBody.Part file); + @Multipart + @POST("app/v1/uploadImage") + Observable> uploadImage(@HeaderMap Map headMap,@Part MultipartBody.Part file); diff --git a/app/src/main/java/com/ckkj/water/permission/PermissionActivity.java b/app/src/main/java/com/ckkj/water/permission/PermissionActivity.java index 03130a6..42c9133 100644 --- a/app/src/main/java/com/ckkj/water/permission/PermissionActivity.java +++ b/app/src/main/java/com/ckkj/water/permission/PermissionActivity.java @@ -5,16 +5,13 @@ import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.view.View; -import android.widget.Toast; import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; -import com.ckkj.water.ConstantUtil; import com.ckkj.water.R; import com.ckkj.water.base.BaseActivity; -import com.ckkj.water.base.BaseActivityNoP; -import com.ckkj.water.base.entity.MineUserInfoBean; +import com.ckkj.water.mine.entity.MineUserInfoBean; import com.ckkj.water.databinding.PermissionLayoutBinding; import com.ckkj.water.main.MainContract; import com.ckkj.water.main.MainImpl; diff --git a/app/src/main/java/com/ckkj/water/utils/manager/WaterUserInfoManager.java b/app/src/main/java/com/ckkj/water/utils/manager/WaterUserInfoManager.java index 16495f1..d339f3a 100644 --- a/app/src/main/java/com/ckkj/water/utils/manager/WaterUserInfoManager.java +++ b/app/src/main/java/com/ckkj/water/utils/manager/WaterUserInfoManager.java @@ -4,8 +4,7 @@ import android.content.Context; import com.ckkj.water.AppConfig; import com.ckkj.water.ConstantUtil; -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.entity.LoginEntity; import com.ckkj.water.utils.dataUtil.SharePreUtil;