From 596d0bcbacd8dde70f0bbcfdf07db5cf694220ef Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期三, 08 一月 2025 09:33:20 +0800
Subject: [PATCH] 1.修复上传文件取消上传还会上传bug 2.添加上传视频功能 3.添加关闭activity时关闭上传功能。

---
 app/src/main/java/com/dayu/pipirrapp/tool/FileUploadUtils.java       |   58 ++++++++
 app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java             |   52 +++++--
 app/src/main/java/com/dayu/pipirrapp/bean/net/UplodFileState.java    |   24 +++
 app/src/main/java/com/dayu/pipirrapp/net/Constants.java              |    7 
 app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java |   57 +++++--
 app/src/main/res/layout/activity_change_pass_word.xml                |   12 +
 app/src/main/java/com/dayu/pipirrapp/net/RetrofitClient.java         |    6 
 app/src/main/java/com/dayu/pipirrapp/utils/ToastUtil.java            |   24 ++
 app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java  |   46 +++--
 app/src/main/res/layout/item_add_filter_image.xml                    |   30 ++--
 app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java  |   52 +++++-
 app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java       |   18 +-
 app/src/main/java/com/dayu/pipirrapp/net/ApiService.java             |   12 +
 app/build.gradle                                                     |    9 +
 14 files changed, 302 insertions(+), 105 deletions(-)

diff --git a/app/build.gradle b/app/build.gradle
index 39ae300..7cd0c47 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -50,7 +50,11 @@
     }
 
     buildTypes {
+        debug{
+            buildConfigField "boolean", "DEBUG", "true"
+        }
         release {
+            buildConfigField "boolean", "DEBUG", "false"
             minifyEnabled false
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
         }
@@ -59,7 +63,10 @@
         sourceCompatibility JavaVersion.VERSION_1_8
         targetCompatibility JavaVersion.VERSION_1_8
     }
-
+    // 鍚敤 buildConfig 鐗规��
+    buildFeatures {
+        buildConfig true
+    }
     dataBinding {
         enabled = true;
     }
diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java
index d56f0b0..dea3805 100644
--- a/app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java
+++ b/app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java
@@ -30,10 +30,12 @@
 import com.dayu.pipirrapp.net.BaseResponse;
 import com.dayu.pipirrapp.net.subscribers.SubscriberListener;
 import com.dayu.pipirrapp.net.upload.UploadFileListener;
+import com.dayu.pipirrapp.tool.FileUploadUtils;
 import com.dayu.pipirrapp.tool.FullyGridLayoutManager;
 import com.dayu.pipirrapp.tool.GlideEngine;
 import com.dayu.pipirrapp.tool.ImageFileCompressEngine;
 import com.dayu.pipirrapp.utils.CommonKeyName;
+import com.dayu.pipirrapp.utils.MyLog;
 import com.dayu.pipirrapp.utils.ServiceUtils;
 import com.dayu.pipirrapp.utils.ToastUtil;
 import com.dayu.pipirrapp.view.TitleBar;
@@ -141,6 +143,11 @@
             @Override
             public void onDeleteClick(int position) {
                 deleteItem(position);
+            }
+
+            @Override
+            public void onReUpload(UplodFileState uplodFileState) {
+                uplodeImg(uplodFileState);
             }
         });
         binding.dealButton.setOnClickListener(v -> {
@@ -270,6 +277,7 @@
             Log.i(TAG, "瑁佸壀瀹介珮: " + media.getCropImageWidth() + "x" + media.getCropImageHeight());
             Log.i(TAG, "鏂囦欢澶у皬: " + PictureFileUtils.formatAccurateUnitFileSize(media.getSize()));
             Log.i(TAG, "鏂囦欢鏃堕暱: " + media.getDuration());
+            Log.i(TAG, "鎵╁睍鍚�: " + media.getMimeType());
             String compressPath = media.getCompressPath();
             //鍒ゆ柇鏄惁鏈夎繖涓矾寰勶紝娌℃湁鐨勮瘽涓婁紶璇ュ浘鐗囧苟娣诲姞uplodFileStates涓�
             if (TextUtils.isEmpty(compressPath)) {
@@ -278,6 +286,13 @@
             if (!existingPaths.contains(compressPath)) {
                 UplodFileState uplodFileState = new UplodFileState();
                 uplodFileState.setFilePath(compressPath);
+                if (compressPath.toLowerCase().endsWith(".mp4") || compressPath.toLowerCase().endsWith(".avi") || compressPath.toLowerCase().endsWith(".mkv") || compressPath.toLowerCase().endsWith(".mov")) {
+                    // 杩欐槸瑙嗛鏂囦欢
+                    uplodFileState.setUploadType(UplodFileState.VIDEO_TYPE);
+                } else {
+                    uplodFileState.setUploadType(UplodFileState.IMG_TYPE);
+                }
+                uplodFileState.setExtName(media.getMimeType());
                 uplodFileStates.put(compressPath, uplodFileState);
                 // 鎵ц涓婁紶鍥剧墖鐨勬搷浣�
                 uplodeImg(uplodFileState);
@@ -318,11 +333,7 @@
 
     //涓婁紶鍥剧墖
     private void uplodeImg(UplodFileState uplodFileState) {
-        ApiManager.getInstance().uploadFile(this, uplodFileState, state -> {
-
-            uplodFileStates.replace(state.getFilePath(), state);
-            mAdapter.updateProgress(uplodFileState);
-        }, mAdapter);
+        FileUploadUtils.uploadFile(this, uplodFileState, uplodFileStates, mAdapter);
     }
 
     /**
@@ -372,20 +383,35 @@
     protected void onDestroy() {
         super.onDestroy();
         LiveEventBus.get(CommonKeyName.locationData).removeObserver(locationObserver);
+        FileUploadUtils.cancelAllCall(uplodFileStates);
     }
 
     /**
      * 棰勮鍜屽浘鐗囧垪琛ㄥ垹闄ゅ浘鐗囨椂澶勭悊鍒犻櫎浜嬩欢
      */
     private void deleteItem(int position) {
-        try {
-            Call<BaseResponse> mCall = uplodFileStates.get(position).getThisCall();
-            if (mCall != null) {
-                mCall.cancel();
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
+        LocalMedia localMedia = mAdapter.getData().get(position);
+        String path;
+        UplodFileState uplodFileState;
+        if (TextUtils.isEmpty(localMedia.getCompressPath())) {
+            uplodFileState = uplodFileStates.get(localMedia.getRealPath());
+        } else {
+            uplodFileState = uplodFileStates.get(localMedia.getCompressPath());
         }
-        uplodFileStates.remove(position);
+        if (uplodFileState != null) {
+            path = uplodFileState.getFilePath();
+            try {
+                Call<BaseResponse> mCall = uplodFileStates.get(path).getThisCall();
+                if (mCall != null) {
+                    mCall.cancel();
+                    MyLog.d("progressRequestBody>>>" + "cancel銆嬨�嬨�媝ath:" + path);
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            uplodFileStates.remove(path);
+        }
+
     }
+
 }
diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java
index aa18d33..fef6b3d 100644
--- a/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java
+++ b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java
@@ -29,6 +29,7 @@
 import com.dayu.pipirrapp.net.BaseResponse;
 import com.dayu.pipirrapp.net.subscribers.SubscriberListener;
 import com.dayu.pipirrapp.net.upload.UploadFileListener;
+import com.dayu.pipirrapp.tool.FileUploadUtils;
 import com.dayu.pipirrapp.tool.FullyGridLayoutManager;
 import com.dayu.pipirrapp.tool.GlideEngine;
 import com.dayu.pipirrapp.tool.ImageFileCompressEngine;
@@ -79,8 +80,8 @@
     private final List<LocalMedia> mData = new ArrayList<>();
     private ActivityResultLauncher<Intent> launcherResult;
     private ImageEngine imageEngine;
-//    List<UplodFileState> uplodFileStates = new ArrayList<>();
-Map<String, UplodFileState> uplodFileStates = new HashMap<>();
+    //    List<UplodFileState> uplodFileStates = new ArrayList<>();
+    Map<String, UplodFileState> uplodFileStates = new HashMap<>();
     String workOrderId;
     LatLonBean latLonBean;
 
@@ -143,6 +144,12 @@
             @Override
             public void onDeleteClick(int position) {
                 deleteItem(position);
+            }
+
+            @Override
+            public void onReUpload(UplodFileState uplodFileState) {
+                uplodFileState.setState(UplodFileState.STATE_UPDING);
+                uplodeImg(uplodFileState);
             }
         });
         binding.dealButton.setOnClickListener(v -> {
@@ -265,9 +272,18 @@
             Log.i(TAG, "鏂囦欢鏃堕暱: " + media.getDuration());
             String compressPath = media.getCompressPath();
             //鍒ゆ柇鏄惁鏈夎繖涓矾寰勶紝娌℃湁鐨勮瘽涓婁紶璇ュ浘鐗�
+            if (TextUtils.isEmpty(compressPath)) {
+                compressPath = media.getRealPath();
+            }
             if (!existingPaths.contains(compressPath)) {
                 UplodFileState uplodFileState = new UplodFileState();
                 uplodFileState.setFilePath(compressPath);
+                if (compressPath.toLowerCase().endsWith(".mp4") || compressPath.toLowerCase().endsWith(".avi") || compressPath.toLowerCase().endsWith(".mkv") || compressPath.toLowerCase().endsWith(".mov")) {
+                    // 杩欐槸瑙嗛鏂囦欢
+                    uplodFileState.setUploadType(UplodFileState.VIDEO_TYPE);
+                }else {
+                    uplodFileState.setUploadType(UplodFileState.IMG_TYPE);
+                }
                 uplodFileStates.put(compressPath, uplodFileState);
                 // 鎵ц涓婁紶鍥剧墖鐨勬搷浣�
                 uplodeImg(uplodFileState);
@@ -306,13 +322,7 @@
 
     //涓婁紶鍥剧墖
     private void uplodeImg(UplodFileState uplodFileState) {
-        ApiManager.getInstance().uploadFile(this, uplodFileState, new UploadFileListener() {
-            @Override
-            public void onBack(UplodFileState state) {
-                uplodFileStates.replace(state.getFilePath(), state);
-                mAdapter.updateProgress(uplodFileState);
-            }
-        }, mAdapter);
+        FileUploadUtils.uploadFile(this, uplodFileState, uplodFileStates, mAdapter);
     }
 
     /**
@@ -363,20 +373,33 @@
     protected void onDestroy() {
         super.onDestroy();
         LiveEventBus.get(CommonKeyName.locationData).removeObserver(locationObserver);
+        FileUploadUtils.cancelAllCall(uplodFileStates);
     }
 
     /**
      * 棰勮鍜屽浘鐗囧垪琛ㄥ垹闄ゅ浘鐗囨椂澶勭悊鍒犻櫎浜嬩欢
      */
     private void deleteItem(int position) {
-        try {
-            Call<BaseResponse> mCall = uplodFileStates.get(position).getThisCall();
-            if (mCall != null) {
-                mCall.cancel();
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
+        LocalMedia localMedia = mAdapter.getData().get(position);
+        String path;
+        UplodFileState uplodFileState;
+        if (TextUtils.isEmpty(localMedia.getCompressPath())) {
+            uplodFileState = uplodFileStates.get(localMedia.getRealPath());
+        } else {
+            uplodFileState = uplodFileStates.get(localMedia.getCompressPath());
         }
-        uplodFileStates.remove(position);
+        if (uplodFileState != null) {
+            path = uplodFileState.getFilePath();
+            try {
+                Call<BaseResponse> mCall = uplodFileStates.get(path).getThisCall();
+                if (mCall != null) {
+                    mCall.cancel();
+                    MyLog.d("progressRequestBody>>>" + "cancel銆嬨�嬨�媝ath:" + path);
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            uplodFileStates.remove(path);
+        }
     }
 }
diff --git a/app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java b/app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java
index 71b52a3..7302fde 100644
--- a/app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java
+++ b/app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java
@@ -122,6 +122,7 @@
             });
             viewHolder.mIvDel.setVisibility(View.INVISIBLE);
             viewHolder.circleProgressView.setVisibility(View.GONE);
+            viewHolder.maskLayerBg.setVisibility(View.GONE);
         } else {
             //鍒犻櫎鍥剧墖
             viewHolder.mIvDel.setVisibility(View.VISIBLE);
@@ -163,19 +164,16 @@
             }
 
             // 鏇存柊杩涘害
-            UplodFileState uplodFileState;
-            if (TextUtils.isEmpty(media.getCompressPath())) {
-                uplodFileState = fileStates.get(media.getRealPath());
-            } else {
-                uplodFileState = fileStates.get(media.getCompressPath());
-            }
-
-
+            UplodFileState uplodFileState = TextUtils.isEmpty(media.getCompressPath())
+                    ? fileStates.get(media.getRealPath())
+                    : fileStates.get(media.getCompressPath());
             if (uplodFileState != null) {
                 uplodFileState.setAdapterPosition(position);
                 MyLog.d("progressRequestBodyHolder>>>" + "State:" + uplodFileState.getState() + ">>>position:" + position + ">>>Progress: " + uplodFileState.getProgress());
 
                 if (uplodFileState.getState() == UplodFileState.STATE_UPDING) {
+                    MyLog.d("progressRequestBodyHolder>>>" + "姝e湪涓婁紶");
+                    viewHolder.postError.setVisibility(View.GONE);
                     if (uplodFileState.getProgress() < 100) {
                         viewHolder.maskLayerBg.setVisibility(View.VISIBLE);
                         viewHolder.circleProgressView.setVisibility(View.VISIBLE);
@@ -185,10 +183,12 @@
                         viewHolder.circleProgressView.setVisibility(View.GONE);
                         viewHolder.maskLayerBg.setVisibility(View.GONE);
                     }
-                } else if (fileStates.get(media.getCompressPath()).getState() == UplodFileState.STATE_DONE) {
+                } else if (uplodFileState.getState() == UplodFileState.STATE_DONE) {
+                    MyLog.d("progressRequestBodyHolder>>>" + "瀹屾垚");
                     viewHolder.maskLayerBg.setVisibility(View.GONE);
                     viewHolder.circleProgressView.setVisibility(View.GONE);
                 } else {
+                    MyLog.d("progressRequestBodyHolder>>>" + "閿欒");
                     viewHolder.maskLayerBg.setVisibility(View.VISIBLE);
                     viewHolder.postError.setVisibility(View.VISIBLE);
                     viewHolder.circleProgressView.setVisibility(View.GONE);
@@ -202,11 +202,14 @@
                     int adapterPosition = viewHolder.getAbsoluteAdapterPosition();
                     mItemClickListener.onItemClick(v, adapterPosition);
                 });
+                viewHolder.postError.setOnClickListener(v -> {
+                    mItemClickListener.onReUpload(uplodFileState);
+                });
             }
 
             if (mItemLongClickListener != null) {
                 viewHolder.itemView.setOnLongClickListener(v -> {
-                    int adapterPosition = viewHolder.getAbsoluteAdapterPosition();
+                    int adapterPosition = viewHolder.getBindingAdapterPosition();
                     mItemLongClickListener.onItemLongClick(viewHolder, adapterPosition, v);
                     return true;
                 });
@@ -224,20 +227,18 @@
 
         // 鏇存柊杩涘害鍙傛暟
         if (fileStates.containsKey(uplodFileState.getFilePath())) {
+            // 鑾峰彇宸叉湁鐨� UplodFileState 瀵硅薄骞舵洿鏂拌繘搴�
+            UplodFileState existingState = fileStates.get(uplodFileState.getFilePath());
+            int position = existingState.getAdapterPosition();
+            existingState.setState(uplodFileState.getState());
             if (uplodFileState.getState() == 0) {
-                // 鑾峰彇宸叉湁鐨� UplodFileState 瀵硅薄骞舵洿鏂拌繘搴�
-                UplodFileState existingState = fileStates.get(uplodFileState.getFilePath());
+                existingState.setState(uplodFileState.getState());
                 existingState.setProgress(uplodFileState.getProgress()); // 鏇存柊杩涘害
                 // 鑾峰彇杩涘害鏇存柊椤圭殑浣嶇疆
-                int position = existingState.getAdapterPosition();
-                if (position != RecyclerView.NO_POSITION) {
-                    // 閫氱煡閫傞厤鍣ㄥ埛鏂版寚瀹氫綅缃殑椤�
-                    notifyItemChanged(position);
-                }
-            } else if (uplodFileState.getState() == 2) {
-
             }
-
+            if (position != RecyclerView.NO_POSITION) {
+                notifyItemChanged(position);
+            }
         }
     }
 
@@ -267,6 +268,11 @@
          * @param position
          */
         void onDeleteClick(int position);
+
+        /**
+         * 涓婁紶澶辫触鍚庨噸鏂颁笂浼�
+         */
+        void onReUpload(UplodFileState uplodFileState);
     }
 
     private OnItemLongClickListener mItemLongClickListener;
diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/net/UplodFileState.java b/app/src/main/java/com/dayu/pipirrapp/bean/net/UplodFileState.java
index 9b8f46d..32f489e 100644
--- a/app/src/main/java/com/dayu/pipirrapp/bean/net/UplodFileState.java
+++ b/app/src/main/java/com/dayu/pipirrapp/bean/net/UplodFileState.java
@@ -18,6 +18,10 @@
     public final static int STATE_DONE = 1;
     //涓婁紶澶辫触
     public final static int STATE_ERROR = 2;
+    //鍥剧墖绫诲瀷
+    public final static int IMG_TYPE = 1;
+    //瑙嗛绫诲瀷
+    public final static int VIDEO_TYPE = 2;
 
     //0姝e湪涓婁紶 1涓婁紶瀹屾垚 2涓婁紶澶辫触
     int state = 0;
@@ -35,6 +39,26 @@
     int progress;
     //adapter涓殑position
     int adapterPosition = -1;
+    //涓婁紶绫诲瀷
+    int uploadType;
+    //鎵╁睍鍚�
+    String extName;
+
+    public String getExtName() {
+        return extName;
+    }
+
+    public void setExtName(String extName) {
+        this.extName = extName;
+    }
+
+    public int getUploadType() {
+        return uploadType;
+    }
+
+    public void setUploadType(int uploadType) {
+        this.uploadType = uploadType;
+    }
 
     public int getAdapterPosition() {
         return adapterPosition;
diff --git a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
index aff517f..90d36d6 100644
--- a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
+++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
@@ -556,13 +556,16 @@
     public void setMapMarker(MarkerBean markerBean) {
         if (markerBean != null) {
             if (webViewIsFinished) {
-                mWebView.evaluateJavascript("javascript:addMarker(\"" + markerBean.getId() + "\",\"" + markerBean.getLng() + "\",\"" + markerBean.getLat() + "\",\"" + markerBean.getName() + "\")", new ValueCallback<String>() {
-                    @Override
-                    public void onReceiveValue(String value) {
-                    }
-                });
-                markerBeanSet.put(markerBean.getId(), markerBean);
-
+                if (!TextUtils.isEmpty(markerBean.getLng()) && !TextUtils.isEmpty(markerBean.getLat())) {
+                    mWebView.evaluateJavascript("javascript:addMarker(\"" + markerBean.getId() + "\",\"" + markerBean.getLng() + "\",\"" + markerBean.getLat() + "\",\"" + markerBean.getName() + "\")", new ValueCallback<String>() {
+                        @Override
+                        public void onReceiveValue(String value) {
+                        }
+                    });
+                    markerBeanSet.put(markerBean.getId(), markerBean);
+                } else {
+                    MyLog.d("setMapMarker>" + markerBean.getName() + "缁忕含搴︿负绌�");
+                }
             } else {
                 webNoFinishMarkerData.add(markerBean);
             }
@@ -752,7 +755,6 @@
             confirmDialog.show();
         });
     }
-
 
 
     @Override
diff --git a/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java b/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java
index b040919..7e5671c 100644
--- a/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java
+++ b/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java
@@ -1,5 +1,8 @@
 package com.dayu.pipirrapp.net;
 
+import static com.dayu.pipirrapp.bean.net.UplodFileState.STATE_DONE;
+import static com.dayu.pipirrapp.bean.net.UplodFileState.STATE_ERROR;
+import static com.dayu.pipirrapp.bean.net.UplodFileState.STATE_UPDING;
 import static com.luck.picture.lib.thread.PictureThreadUtils.runOnUiThread;
 
 import android.annotation.SuppressLint;
@@ -290,15 +293,17 @@
 //    }
 
     /**
-     * 涓婁紶鏂囦欢
+     * 涓婁紶鍥剧墖鏂囦欢
      *
      * @param context
      * @param uplodData
      * @param listener
      */
     public void uploadFile(final Context context, final UplodFileState uplodData, final UploadFileListener listener, final AddPictureAdapter adapter) {
-        MyLog.d("progressRequestBody>>>" + "path:" + uplodData.getFilePath());
+
         if (!TextUtils.isEmpty(uplodData.getFilePath())) {
+            MyLog.d("progressRequestBody>>>" + "path:" + uplodData.getFilePath()+">>>uploadType:"+uplodData.getUploadType());
+            uplodData.setState(STATE_UPDING);
             File file = new File(uplodData.getFilePath());
             RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
             ProgressRequestBody progressRequestBody = new ProgressRequestBody(requestBody, (bytesWritten, contentLength, done) -> {
@@ -318,23 +323,38 @@
             });
             MultipartBody.Part body = MultipartBody.Part.createFormData("file", file.getName(), progressRequestBody);
             RequestBody description = RequestBody.create(MediaType.parse("text/plain"), "file description");
-            Call<BaseResponse> uploadFile = apiService.uploadFile(body, description);
+            Call<BaseResponse> uploadFile = null;
+            switch (uplodData.getUploadType()) {
+                case UplodFileState.IMG_TYPE:
+                    uploadFile = apiService.uploadImgFile(body, description);
+                    break;
+                case UplodFileState.VIDEO_TYPE:
+                    uploadFile = apiService.uploadVideoFile(body, description);
+                    break;
+                default:
+                    uploadFile = apiService.uploadImgFile(body, description);
+                    break;
+            }
+
             uplodData.setThisCall(uploadFile);
             uploadFile.enqueue(new Callback<BaseResponse>() {
                 @Override
                 public void onResponse(Call<BaseResponse> call, Response<BaseResponse> response) {
                     if (response.body() != null) {
                         if (response.body().isSuccess()) {
-                            uplodData.setState(1);
+                            uplodData.setState(STATE_DONE);
                             uplodData.setPostId(((LinkedTreeMap) response.body().getContent()).get("id").toString());
                             uplodData.setWebPath(((LinkedTreeMap) response.body().getContent()).get("webPath").toString());
                             listener.onBack(uplodData);
                         } else {
+                            MyLog.d("progressRequestBody>>>" + response.body().getMsg());
                             if (uplodData.getNumber() <= uplodFilerepeatSize) {
                                 uplodData.setNumber(uplodData.getNumber() + 1);
-                                uplodData.setState(2);
+                                uplodData.setState(STATE_ERROR);
                                 uploadFile(context, uplodData, listener, adapter);
                             } else {
+                                uplodData.setState(STATE_ERROR);
+                                uplodData.setNumber(0);
                                 listener.onBack(uplodData);
                             }
                         }
@@ -343,22 +363,24 @@
 
                 @Override
                 public void onFailure(Call<BaseResponse> call, Throwable t) {
-                    MyLog.d("progressRequestBody>>>" + "onFailure:");
-                    if (uplodData.getNumber() <= uplodFilerepeatSize) {
-                        uplodData.setNumber(uplodData.getNumber() + 1);
-                        uplodData.setState(2);
-                        uploadFile(context, uplodData, listener, adapter);
-                    } else {
-                        listener.onBack(uplodData);
+                    MyLog.d("progressRequestBody>>>" + "onFailure:" + t.getMessage());
+                    if (!t.getMessage().equals("Canceled")) {
+                        uplodData.setState(STATE_ERROR);
+                        if (uplodData.getNumber() <= uplodFilerepeatSize) {
+                            uplodData.setNumber(uplodData.getNumber() + 1);
+                            uploadFile(context, uplodData, listener, adapter);
+                        } else {
+                            uplodData.setNumber(0);
+                            listener.onBack(uplodData);
+                        }
                     }
+
                 }
             });
         } else {
-            uplodData.setState(UplodFileState.STATE_ERROR);
+            uplodData.setState(STATE_ERROR);
             listener.onBack(uplodData);
         }
-
-
     }
 
 
diff --git a/app/src/main/java/com/dayu/pipirrapp/net/ApiService.java b/app/src/main/java/com/dayu/pipirrapp/net/ApiService.java
index 9f34339..1bafe3b 100644
--- a/app/src/main/java/com/dayu/pipirrapp/net/ApiService.java
+++ b/app/src/main/java/com/dayu/pipirrapp/net/ApiService.java
@@ -41,7 +41,7 @@
     Observable<BaseResponse> requestPost(@Url String url, @Body Map<String, Object> params);
 
     @GET()
-    Observable<BaseResponse> requestGet(@Url String url, @QueryMap Map<String, Object> params,@Header("token") String token);
+    Observable<BaseResponse> requestGet(@Url String url, @QueryMap Map<String, Object> params, @Header("token") String token);
 
     @GET()
     Observable<BaseResponse> requestGet(@Url String url);
@@ -58,11 +58,15 @@
     Call<BaseResponse> uploadFiles(@PartMap Map<String, RequestBody> map);
 
     @Multipart
-    @POST(Constants.BASE_URL + "/app/webFile/upPhoto")
-    Call<BaseResponse> uploadFile(@Part MultipartBody.Part file,@Part("description") RequestBody description);
+    @POST(Constants.BASE_UPLOAD_FILE_URL + "/app/webFile/upPhoto")
+    Call<BaseResponse> uploadImgFile(@Part MultipartBody.Part file, @Part("description") RequestBody description);
+
+    @Multipart
+    @POST(Constants.BASE_UPLOAD_FILE_URL + "/app/webFile/upVideo")
+    Call<BaseResponse> uploadVideoFile(@Part MultipartBody.Part file, @Part("description") RequestBody description);
 
     //鑾峰彇楠岃瘉鐮�
-    @GET(Constants.BASE_URL+"/app/captcha/get")
+    @GET(Constants.BASE_URL + "/app/captcha/get")
     Observable<CodeResult> getCode(@QueryMap Map<String, Object> params);
 
     @GET()
diff --git a/app/src/main/java/com/dayu/pipirrapp/net/Constants.java b/app/src/main/java/com/dayu/pipirrapp/net/Constants.java
index 1bb800f..9b4d3d1 100644
--- a/app/src/main/java/com/dayu/pipirrapp/net/Constants.java
+++ b/app/src/main/java/com/dayu/pipirrapp/net/Constants.java
@@ -6,9 +6,10 @@
  * Description:
  */
 public class Constants {
-//    public static final String BASE_URL = "http://192.168.10.52:8088";
-public static final String BASE_URL = "https://no253541tf71.vicp.fun";
-//public static final String BASE_URL = "http://fve2iz.natappfree.cc";
+    //    public static final String BASE_URL = "http://192.168.10.52:8088";
+    public static final String BASE_URL = "https://no253541tf71.vicp.fun";
+    //public static final String BASE_URL = "http://fve2iz.natappfree.cc";
+    public static final String BASE_UPLOAD_FILE_URL = "https://no253541tf71.vicp.fun";
     /**
      * 浠h〃璇锋眰鎴愬姛
      */
diff --git a/app/src/main/java/com/dayu/pipirrapp/net/RetrofitClient.java b/app/src/main/java/com/dayu/pipirrapp/net/RetrofitClient.java
index fada46d..16facdb 100644
--- a/app/src/main/java/com/dayu/pipirrapp/net/RetrofitClient.java
+++ b/app/src/main/java/com/dayu/pipirrapp/net/RetrofitClient.java
@@ -1,6 +1,8 @@
 package com.dayu.pipirrapp.net;
 
 
+import com.dayu.pipirrapp.BuildConfig;
+
 import java.util.concurrent.TimeUnit;
 
 import okhttp3.OkHttpClient;
@@ -35,9 +37,9 @@
         builder.addInterceptor(new MyIntercepterApplication());
         //娣诲姞鏃ュ織鎷︽埅鍣�
         //娣诲姞鏁版嵁璇锋眰缁熶竴澶勭悊鎷︽埅鍣�
-//        if (BuildConfig.DEBUG) {
+        if (BuildConfig.DEBUG) {
         builder.addInterceptor(loggingInterceptor);
-//        }
+        }
 
         OkHttpClient client = builder.build();
 //        // 鍒涘缓GsonBuilder骞惰缃暱鏁村瀷搴忓垪鍖栫瓥鐣ヤ负瀛楃涓�
diff --git a/app/src/main/java/com/dayu/pipirrapp/tool/FileUploadUtils.java b/app/src/main/java/com/dayu/pipirrapp/tool/FileUploadUtils.java
new file mode 100644
index 0000000..5755332
--- /dev/null
+++ b/app/src/main/java/com/dayu/pipirrapp/tool/FileUploadUtils.java
@@ -0,0 +1,58 @@
+package com.dayu.pipirrapp.tool;
+
+import android.content.Context;
+
+import com.dayu.pipirrapp.adapter.AddPictureAdapter;
+import com.dayu.pipirrapp.bean.net.UplodFileState;
+import com.dayu.pipirrapp.net.ApiManager;
+import com.dayu.pipirrapp.net.BaseResponse;
+import com.dayu.pipirrapp.net.upload.UploadFileListener;
+
+import java.util.Map;
+
+import retrofit2.Call;
+
+/**
+ * FileUploadUtils -
+ *
+ * @author zuoxiao
+ * @version 1.0
+ * @since 2025-01-03
+ */
+public class FileUploadUtils {
+
+
+    /**
+     * 涓婁紶鍥剧墖鏂囦欢
+     *
+     * @param context
+     * @param uplodFileState
+     * @param uplodFileStates
+     * @param adapter
+     */
+    public static void uploadFile(Context context, UplodFileState uplodFileState, Map<String, UplodFileState> uplodFileStates, AddPictureAdapter adapter) {
+        ApiManager.getInstance().uploadFile(context, uplodFileState, state -> {
+            uplodFileStates.replace(state.getFilePath(), state);
+            adapter.updateProgress(uplodFileState);
+        }, adapter);
+    }
+
+    /**
+     *  褰撳叧闂璦ctivity鏃跺叧闂墍鏈夎姹�
+     * @param uplodFileStates
+     */
+    public static void cancelAllCall(Map<String, UplodFileState> uplodFileStates){
+        try {
+            for(UplodFileState uplodFileState:uplodFileStates.values()){
+                Call<BaseResponse> mCall =uplodFileState.getThisCall();
+                if (mCall != null) {
+                    mCall.cancel();
+                }
+            }
+        } catch (Exception e) {
+           e.printStackTrace();
+        }
+
+    }
+
+}
diff --git a/app/src/main/java/com/dayu/pipirrapp/utils/ToastUtil.java b/app/src/main/java/com/dayu/pipirrapp/utils/ToastUtil.java
index 2a4ae79..4c95f5b 100644
--- a/app/src/main/java/com/dayu/pipirrapp/utils/ToastUtil.java
+++ b/app/src/main/java/com/dayu/pipirrapp/utils/ToastUtil.java
@@ -15,21 +15,35 @@
     }
 
     public static void showToastShort(Context context, String s) {
-        if (s != null) {
-            if (!TextUtils.isEmpty(s))
-                makeText(context, s, Toast.LENGTH_SHORT).show();
+
+        if (!TextUtils.isEmpty(s)) {
+            if (context != null) {
+                if (!TextUtils.isEmpty(context.getPackageName())) {
+                    makeText(context, s, Toast.LENGTH_SHORT).show();
+                }
+            }
         }
+
     }
 
     public static void showToastLong(Context context, String s) {
         if (!TextUtils.isEmpty(s)) {
-            makeText(context, s, Toast.LENGTH_LONG).show();
+            if (context != null) {
+                if (!TextUtils.isEmpty(context.getPackageName())) {
+                    makeText(context, s, Toast.LENGTH_LONG).show();
+                }
+            }
         }
     }
 
     public static void showToast(Context context, String s) {
         if (s != null) {
-            makeText(context, s, Toast.LENGTH_LONG).show();
+            if (context != null) {
+                if (!TextUtils.isEmpty(context.getPackageName())) {
+                    makeText(context, s, Toast.LENGTH_LONG).show();
+                }
+            }
+
         }
     }
 
diff --git a/app/src/main/res/layout/activity_change_pass_word.xml b/app/src/main/res/layout/activity_change_pass_word.xml
index 3387ea3..5045cd7 100644
--- a/app/src/main/res/layout/activity_change_pass_word.xml
+++ b/app/src/main/res/layout/activity_change_pass_word.xml
@@ -18,8 +18,10 @@
         android:layout_marginTop="10dp"
         android:background="@color/white"
         android:hint="璇疯緭鍏ユ棫瀵嗙爜"
+        android:maxLines="1"
         android:paddingLeft="20dp"
-        android:paddingRight="20dp" />
+        android:paddingRight="20dp"
+        android:singleLine="true" />
 
 
     <TextView
@@ -38,8 +40,10 @@
         android:background="@color/white"
         android:hint="璇疯緭鍏ユ柊瀵嗙爜"
         android:inputType="textPassword"
+        android:maxLines="1"
         android:paddingLeft="20dp"
-        android:paddingRight="20dp" />
+        android:paddingRight="20dp"
+        android:singleLine="true" />
 
     <EditText
         android:id="@+id/newPsTwo"
@@ -49,8 +53,10 @@
         android:background="@color/white"
         android:hint="鍐嶆杈撳叆鏂板瘑鐮�"
         android:inputType="textPassword"
+        android:maxLines="1"
         android:paddingLeft="20dp"
-        android:paddingRight="20dp" />
+        android:paddingRight="20dp"
+        android:singleLine="true" />
 
 
     <TextView
diff --git a/app/src/main/res/layout/item_add_filter_image.xml b/app/src/main/res/layout/item_add_filter_image.xml
index 929c680..e69b66b 100644
--- a/app/src/main/res/layout/item_add_filter_image.xml
+++ b/app/src/main/res/layout/item_add_filter_image.xml
@@ -11,18 +11,7 @@
         android:layout_height="match_parent"
         tools:src="@color/app_color_f6" />
 
-    <ImageView
-        android:id="@+id/iv_del"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_alignTop="@id/fiv"
-        android:layout_alignRight="@id/fiv"
-        android:paddingLeft="10dp"
-        android:paddingBottom="10dp"
-        android:scaleType="centerInside"
-        android:src="@mipmap/ic_item_delete"
-        android:visibility="gone"
-        tools:visibility="visible" />
+
 
     <TextView
         android:id="@+id/tv_duration"
@@ -48,6 +37,7 @@
         android:id="@+id/mask_layer_bg"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
+        android:visibility="gone"
         android:background="@color/mask_layer_bg">
 
         <com.king.view.circleprogressview.CircleProgressView
@@ -56,6 +46,7 @@
             android:layout_height="wrap_content"
             android:layout_centerHorizontal="true"
             android:layout_centerVertical="true"
+            app:cpvLabelTextSize="15sp"
             app:cpvShowTick="false"
             app:cpvStrokeWidth="2dp" />
 
@@ -63,9 +54,20 @@
             android:id="@+id/postError"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
-            android:layout_margin="40dp"
+            android:padding="20dp"
             android:src="@drawable/ic_error_picture" />
     </RelativeLayout>
 
-
+    <ImageView
+        android:id="@+id/iv_del"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignTop="@id/fiv"
+        android:layout_alignRight="@id/fiv"
+        android:paddingLeft="10dp"
+        android:paddingBottom="10dp"
+        android:scaleType="centerInside"
+        android:src="@mipmap/ic_item_delete"
+        android:visibility="gone"
+        tools:visibility="visible" />
 </com.luck.picture.lib.widget.SquareRelativeLayout>
\ No newline at end of file

--
Gitblit v1.8.0