Selaa lähdekoodia

B端 下载合同并查看 列表实现何优化

ZhangXinYu 6 vuotta sitten
vanhempi
commit
dbb25f6cfb

+ 11 - 1
app/src/main/java/com/webrain/happywork/ui/activity/MineOrderDetailActivity.java

@@ -1,5 +1,6 @@
 package com.webrain.happywork.ui.activity;
 
+import android.Manifest;
 import android.os.Bundle;
 import android.text.TextUtils;
 import android.view.View;
@@ -8,6 +9,7 @@ import android.widget.TextView;
 
 import com.webrain.baselibrary.AppConstant;
 import com.webrain.baselibrary.utils.DateUtils;
+import com.webrain.baselibrary.utils.PermissionsUtils;
 import com.webrain.happywork.R;
 import com.webrain.happywork.bean.OrderBean;
 import com.webrain.happywork.bean.RequirementBean;
@@ -17,6 +19,7 @@ import com.webrain.happywork.ui.mvp.presenter.MineOrderDetailPresenter;
 
 import butterknife.BindView;
 import butterknife.OnClick;
+import io.reactivex.functions.Consumer;
 
 public class MineOrderDetailActivity extends BaseActivity<MineOrderDetailPresenter> implements MineOrderDetailContacts.IMineOrderDetailView {
     @BindView(R.id.tv_price)
@@ -136,7 +139,14 @@ public class MineOrderDetailActivity extends BaseActivity<MineOrderDetailPresent
     public void onClick(View view) {
         switch (view.getId()) {
             case R.id.btn_look:
-                mvpPresenter.downWorkContract();
+                PermissionsUtils.requestPermissionToast((BaseActivity) mContext, new Consumer<Boolean>() {
+                    @Override
+                    public void accept(Boolean aBoolean) {
+                        if (aBoolean) {
+                            mvpPresenter.downWorkContract();
+                        }
+                    }
+                }, Manifest.permission.WRITE_EXTERNAL_STORAGE);
                 break;
             case R.id.btn_sure:
                 mvpPresenter.requestOrderSure();

+ 6 - 1
app/src/main/java/com/webrain/happywork/ui/adapter/listview/MineOrderListAdapter.java

@@ -105,16 +105,21 @@ public class MineOrderListAdapter extends BaseListAdapter<OrderBean, MineOrderLi
                 } else if (obj.getStatus() == AppConstant.ORDER_STATE_FINISH) {
                     tvState.setText(R.string.order_finish);
                 }
+                if (TextUtils.isEmpty(obj.getWorkContract()))
+                    tvLookContract.setVisibility(View.GONE);
 
             }
         }
 
-        @OnClick(R.id.tv_check_order)
+        @OnClick({R.id.tv_check_order, R.id.tv_look_contract})
         public void onClick(View view) {
             switch (view.getId()) {
                 case R.id.tv_check_order:
                     ((MineOrderListActivity) mContext).mvpPresenter.requestOrderSure(orderBean);
                     break;
+                case R.id.tv_look_contract:
+                    ((MineOrderListActivity) mContext).mvpPresenter.downWorkContract(orderBean);
+                    break;
             }
         }
     }

+ 4 - 0
app/src/main/java/com/webrain/happywork/ui/mvp/contacts/MineOrderListContacts.java

@@ -23,6 +23,8 @@ public class MineOrderListContacts {
 
         void requestOrderSure(OrderBean bean);
 
+        void downWorkContract(OrderBean bean);
+
     }
 
     public interface IMineOrderListModel {
@@ -30,6 +32,8 @@ public class MineOrderListContacts {
 
         void requestOrderSure(MvpDataCallBack<Object> callBack, OrderBean bean);
 
+        void downWorkContract(MvpDataCallBack<String> callBack, OrderBean bean, String filePath);
+
         boolean isLastPage();
 
         boolean isLoading();

+ 1 - 0
app/src/main/java/com/webrain/happywork/ui/mvp/model/MineOrderDetailModel.java

@@ -118,6 +118,7 @@ public class MineOrderDetailModel extends BaseModel implements MineOrderDetailCo
      *
      * @param callBack
      */
+    @Override
     public void downWorkContract(final MvpDataCallBack<String> callBack, final String filePath) {
         if (mOrderBean != null && !TextUtils.isEmpty(mOrderBean.getWorkContract())) {
             new OrderSubscribe(mContext).requestDownloadFileUrl(mOrderBean.getWorkContract(), new ApiFileObserver<ResponseBody>(mContext, true) {

+ 34 - 0
app/src/main/java/com/webrain/happywork/ui/mvp/model/MineOrderListModel.java

@@ -2,21 +2,26 @@ package com.webrain.happywork.ui.mvp.model;
 
 
 import android.content.Context;
+import android.text.TextUtils;
 
 import com.webrain.happywork.bean.OrderBean;
 import com.webrain.happywork.bean.api.ApiOrderListBean;
 import com.webrain.happywork.bean.base.ApiNormalBean;
 import com.webrain.happywork.callback.MvpDataCallBack;
+import com.webrain.happywork.http.ApiFileObserver;
 import com.webrain.happywork.http.ApiObserver;
 import com.webrain.happywork.http.RetrofitHttpParams;
 import com.webrain.happywork.http.exception.ApiException;
 import com.webrain.happywork.http.subscribe.OrderSubscribe;
 import com.webrain.happywork.ui.base.BaseModel;
 import com.webrain.happywork.ui.mvp.contacts.MineOrderListContacts;
+import com.webrain.happywork.utils.FileUtils;
 
 import java.util.ArrayList;
 import java.util.List;
 
+import okhttp3.ResponseBody;
+
 public class MineOrderListModel extends BaseModel implements MineOrderListContacts.IMineOrderListModel {
 
     private List<OrderBean> mListData = new ArrayList<>();//需求列表数据
@@ -108,6 +113,35 @@ public class MineOrderListModel extends BaseModel implements MineOrderListContac
     }
 
     /**
+     * 下载合同
+     *
+     * @param callBack
+     */
+    @Override
+    public void downWorkContract(final MvpDataCallBack<String> callBack, OrderBean mOrderBean, final String filePath) {
+        if (mOrderBean != null && !TextUtils.isEmpty(mOrderBean.getWorkContract())) {
+            new OrderSubscribe(mContext).requestDownloadFileUrl(mOrderBean.getWorkContract(), new ApiFileObserver<ResponseBody>(mContext, true) {
+                @Override
+                public void onSuccess(ResponseBody data) {
+                    boolean result = FileUtils.saveFile(data, filePath);
+                    if (result)
+                        callBack.onData(filePath);
+                }
+
+                @Override
+                public void onError(ResponseBody data, ApiException exception) {
+                    super.onError(data, exception);
+                    callBack.onError(exception);
+                }
+
+                @Override
+                public void onFinish() {
+                }
+            });
+        }
+    }
+
+    /**
      * 是否最后一页
      *
      * @return

+ 27 - 0
app/src/main/java/com/webrain/happywork/ui/mvp/presenter/MineOrderListPresenter.java

@@ -6,6 +6,7 @@ import android.widget.TextView;
 
 import com.webrain.baselibrary.AppConstant;
 import com.webrain.baselibrary.utils.ToastUtils;
+import com.webrain.happywork.AppCacheManager;
 import com.webrain.happywork.R;
 import com.webrain.happywork.bean.OrderBean;
 import com.webrain.happywork.callback.MvpDataCallBack;
@@ -14,7 +15,9 @@ import com.webrain.happywork.ui.activity.MineOrderListActivity;
 import com.webrain.happywork.ui.base.BasePresenter;
 import com.webrain.happywork.ui.mvp.contacts.MineOrderListContacts;
 import com.webrain.happywork.ui.mvp.model.MineOrderListModel;
+import com.webrain.happywork.utils.FileUtils;
 
+import java.io.File;
 import java.util.List;
 
 public class MineOrderListPresenter extends BasePresenter<MineOrderListActivity> implements MineOrderListContacts.IMineOrderListPresenter {
@@ -86,4 +89,28 @@ public class MineOrderListPresenter extends BasePresenter<MineOrderListActivity>
             }, bean);
         }
     }
+
+    /**
+     * 下载合同
+     *
+     * @param bean
+     */
+    @Override
+    public void downWorkContract(OrderBean bean) {
+        if (isViewAttach() && bean != null) {
+            String filePath = FileUtils.getCaCheFilePath() + File.separator + AppCacheManager.getInstance().getLoginModel().getId() + "_" + bean.getId() + ".pdf";
+            if (FileUtils.isFileExit(filePath)) {
+                FileUtils.openFileIntent(mvpReference.get(), new File(filePath));
+            } else {
+                mMineOrderModel.downWorkContract(new MvpDataCallBack<String>() {
+                    @Override
+                    public void onData(String data) {
+                        if (isViewAttach()) {
+                            FileUtils.openFileIntent(mvpReference.get(), new File(data));
+                        }
+                    }
+                }, bean, filePath);
+            }
+        }
+    }
 }