浏览代码

删除京东商品

詹子聪 5 年之前
父节点
当前提交
cb232c9d7f

+ 4 - 0
app/build.gradle

@@ -84,6 +84,10 @@ dependencies {
     // RxActivityResult
     implementation 'com.github.VictorAlbertos:RxActivityResult:0.5.0-2.x'
 
+    // 调试过程中可以查看详细的网络请求与相应
+    debugImplementation 'com.readystatesoftware.chuck:library:1.1.0'
+    releaseImplementation 'com.readystatesoftware.chuck:library-no-op:1.1.0'
+
 }
 repositories {
     mavenCentral()

+ 4 - 0
app/src/main/java/com/itant/shibei/base/ApiService.java

@@ -41,4 +41,8 @@ public interface ApiService {
     /**新增京东商品*/
     @POST("/shibei/api/addGoods")
     Observable<BaseResponse<String>> addGoods(@Body GoodsBean body);
+
+    /**删除京东商品*/
+    @GET("/shibei/api/deleteGoodsById")
+    Observable<BaseResponse<String>> deleteGoodsById(@Query("goodsId") long goodsId);
 }

+ 26 - 2
network/src/main/java/com/miekir/network/core/RetrofitHelper.java

@@ -1,13 +1,19 @@
-package com.miekir.network.core;
+package com.itant.shibei.net;
 
 import android.content.Context;
 
+import com.itant.shibei.manager.UserInfoManager;
 import com.miekir.network.BuildConfig;
+import com.miekir.network.core.RetrofitInstaller;
 import com.readystatesoftware.chuck.ChuckInterceptor;
 
+import java.io.IOException;
 import java.util.concurrent.TimeUnit;
 
+import okhttp3.Interceptor;
 import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.Response;
 import retrofit2.Retrofit;
 import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
 import retrofit2.converter.gson.GsonConverterFactory;
@@ -79,8 +85,26 @@ public class RetrofitHelper {
      * @return 默认的请求设置
      */
     public OkHttpClient getDefaultOkHttpClient() {
+        Interceptor headInterceptor = new Interceptor() {
+            @Override
+            public Response intercept(Chain chain) throws IOException {
+                String token = "";
+                String email = "";
+                if (UserInfoManager.getInstance().isLogin()) {
+                    token = UserInfoManager.getInstance().getBeiUser().token;
+                    email = UserInfoManager.getInstance().getBeiUser().email;
+                }
+                Request request = chain.request()
+                        .newBuilder()
+                        .addHeader("token", token)
+                        .addHeader("email", email)
+                        .build();
+                return chain.proceed(request);
+            }
+        };
+
         return new OkHttpClient.Builder()
-                //.addInterceptor(headInterceptor)
+                .addInterceptor(headInterceptor)
                 //.addInterceptor(interceptor)
                 //.addInterceptor(dataInterceptor)
                 .addInterceptor(new ChuckInterceptor(mContext))

+ 2 - 1
app/src/main/java/com/itant/shibei/ui/home/GoodsAdapter.java

@@ -112,7 +112,8 @@ public class GoodsAdapter extends CommonAdapter<GoodsBean> {
                     }
                 });
 
-        if (TextUtils.equals("[email protected]", UserInfoManager.getInstance().getBeiUser().email)) {
+        if (UserInfoManager.getInstance().isLogin() &&
+                TextUtils.equals("[email protected]", UserInfoManager.getInstance().getBeiUser().email)) {
             View view = holder.getView(R.id.cv_goods);
             view.setOnLongClickListener(v -> {
                 if (goodsLongClickListener != null) {

+ 19 - 6
app/src/main/java/com/itant/shibei/ui/home/GoodsFragment.java

@@ -16,6 +16,7 @@ import com.itant.shibei.base.ITopActionListener;
 import com.itant.shibei.bean.GoodsBean;
 import com.itant.shibei.ui.mine.goods.AddGoodsActivity;
 import com.itant.shibei.widget.DividerItemDecoration;
+import com.miekir.common.utils.ToastTool;
 import com.miekir.mvp.presenter.InjectPresenter;
 import com.miekir.mvp.view.BaseMVPFragment;
 
@@ -67,9 +68,7 @@ public class GoodsFragment extends BaseMVPFragment implements IGoodsView, ITopAc
         DividerItemDecoration decoration = new DividerItemDecoration(dividerWidth);
         rv_goods.addItemDecoration(decoration);
         mAdapter = new GoodsAdapter(getActivity(), mGoodsList);
-        mAdapter.setGoodsLongClickListener(position -> {
-            showAdminDialog(position);
-        });
+        mAdapter.setGoodsLongClickListener(this::showAdminDialog);
         rv_goods.setAdapter(mAdapter);
 
         // 获取数据
@@ -82,8 +81,7 @@ public class GoodsFragment extends BaseMVPFragment implements IGoodsView, ITopAc
     private void showAdminDialog(int position) {
         AlertDialog alertDialog = new AlertDialog.Builder(getActivity())
                 .setMessage("选择操作")
-                .setNegativeButton("取消", (dialog, which) -> dialog.dismiss())
-                .setNeutralButton("修改", (dialog, which) -> {
+                .setPositiveButton("修改", (dialog, which) -> {
                     dialog.dismiss();
                     Intent modifyIntent = new Intent(getActivity(), AddGoodsActivity.class);
                     modifyIntent.putExtra(AddGoodsActivity.KEY_MODIFY_GOODS, mGoodsList.get(position));
@@ -94,7 +92,10 @@ public class GoodsFragment extends BaseMVPFragment implements IGoodsView, ITopAc
                                 mAdapter.notifyItemChanged(position);
                             });
                 })
-                .setPositiveButton("删除", (DialogInterface dialog, int which) -> {
+                .setNeutralButton("取消", (dialog, which) -> {
+                    dialog.dismiss();
+                })
+                .setNegativeButton("删除", (DialogInterface dialog, int which) -> {
                     dialog.dismiss();
                     showDeleteDialog(position);
                 }).create();
@@ -107,12 +108,14 @@ public class GoodsFragment extends BaseMVPFragment implements IGoodsView, ITopAc
      * 是否删除商品
      */
     private void showDeleteDialog(int position) {
+        GoodsBean goodsBean = mGoodsList.get(position);
         AlertDialog alertDialog = new AlertDialog.Builder(getActivity())
                 .setMessage("确定删除当前商品?")
                 .setNegativeButton("取消", (dialog, which) -> dialog.dismiss())
                 .setPositiveButton("确定", (DialogInterface dialog, int which) -> {
                     dialog.dismiss();
                     // todo 删除商品
+                    mPresenter.deleteGoodsById(position, goodsBean.id);
                 }).create();
         alertDialog.show();
     }
@@ -145,6 +148,16 @@ public class GoodsFragment extends BaseMVPFragment implements IGoodsView, ITopAc
 
     }
 
+    @Override
+    public void onDeleteGoodsResult(int position, boolean success, String message) {
+        if (success) {
+            mAdapter.notifyItemRemoved(position);
+            ToastTool.showShort("删除成功");
+        } else {
+            ToastTool.showShort(message);
+        }
+    }
+
     @Override
     public void onTopAction() {
         rv_goods.smoothScrollToPosition(0);

+ 31 - 1
app/src/main/java/com/itant/shibei/ui/home/GoodsPresenter.java

@@ -1,11 +1,19 @@
 package com.itant.shibei.ui.home;
 
+import android.text.TextUtils;
+
+import com.itant.shibei.base.ApiService;
 import com.itant.shibei.bean.GoodsBean;
+import com.itant.shibei.net.RetrofitHelper;
 import com.itant.shibei.tool.DataTool;
 import com.miekir.mvp.presenter.BasePresenter;
+import com.miekir.network.core.base.BaseObserver;
 
 import java.util.List;
 
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
 /**
  *
  *
@@ -14,11 +22,33 @@ import java.util.List;
  * Description: 商品的相关数据接口处理
  */
 public class GoodsPresenter extends BasePresenter<IGoodsView> {
-
     public void getGoodsData() {
         List<GoodsBean> goodsList = DataTool.getGoodsList();
         if (getView() != null) {
             getView().onGoodsDataCome(goodsList);
         }
     }
+
+    public void deleteGoodsById(int position, long goodsId) {
+        RetrofitHelper.getInstance()
+                .getRequestApi(ApiService.class)
+                .deleteGoodsById(goodsId)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new BaseObserver<String>() {
+                    @Override
+                    public void onSuccess(String result) {
+                        if (getView() != null) {
+                            getView().onDeleteGoodsResult(position, true, result);
+                        }
+                    }
+
+                    @Override
+                    public void onFailure(Throwable e, String errMsg) {
+                        if (getView() != null) {
+                            getView().onDeleteGoodsResult(position, false, TextUtils.isEmpty(errMsg) ? "删除失败"+e.getMessage() : errMsg);
+                        }
+                    }
+                });
+    }
 }

+ 1 - 0
app/src/main/java/com/itant/shibei/ui/home/IGoodsView.java

@@ -14,4 +14,5 @@ import java.util.List;
  */
 public interface IGoodsView extends IView {
     void onGoodsDataCome(List<GoodsBean> goodsList);
+    void onDeleteGoodsResult(int position, boolean success, String message);
 }

+ 1 - 1
app/src/main/java/com/itant/shibei/ui/mine/forget/ForgetPresenter.java

@@ -4,8 +4,8 @@ import android.text.TextUtils;
 
 import com.itant.shibei.base.ApiService;
 import com.itant.shibei.bean.BeiUser;
+import com.itant.shibei.net.RetrofitHelper;
 import com.miekir.mvp.presenter.BasePresenter;
-import com.miekir.network.core.RetrofitHelper;
 import com.miekir.network.core.base.BaseObserver;
 
 import java.util.HashMap;

+ 1 - 1
app/src/main/java/com/itant/shibei/ui/mine/goods/AddGoodsPresenter.java

@@ -4,8 +4,8 @@ import android.text.TextUtils;
 
 import com.itant.shibei.base.ApiService;
 import com.itant.shibei.bean.GoodsBean;
+import com.itant.shibei.net.RetrofitHelper;
 import com.miekir.mvp.presenter.BasePresenter;
-import com.miekir.network.core.RetrofitHelper;
 import com.miekir.network.core.base.BaseObserver;
 
 import io.reactivex.android.schedulers.AndroidSchedulers;

+ 1 - 1
app/src/main/java/com/itant/shibei/ui/mine/login/LoginPresenter.java

@@ -4,8 +4,8 @@ import android.text.TextUtils;
 
 import com.itant.shibei.base.ApiService;
 import com.itant.shibei.bean.BeiUser;
+import com.itant.shibei.net.RetrofitHelper;
 import com.miekir.mvp.presenter.BasePresenter;
-import com.miekir.network.core.RetrofitHelper;
 import com.miekir.network.core.base.BaseObserver;
 
 import io.reactivex.android.schedulers.AndroidSchedulers;

+ 1 - 1
app/src/main/java/com/itant/shibei/ui/mine/register/CodePresenter.java

@@ -1,8 +1,8 @@
 package com.itant.shibei.ui.mine.register;
 
 import com.itant.shibei.base.ApiService;
+import com.itant.shibei.net.RetrofitHelper;
 import com.miekir.mvp.presenter.BasePresenter;
-import com.miekir.network.core.RetrofitHelper;
 import com.miekir.network.core.base.BaseObserver;
 
 import io.reactivex.android.schedulers.AndroidSchedulers;

+ 1 - 1
app/src/main/java/com/itant/shibei/ui/mine/register/fill/RegisterPresenter.java

@@ -4,8 +4,8 @@ import android.text.TextUtils;
 
 import com.itant.shibei.base.ApiService;
 import com.itant.shibei.bean.BeiUser;
+import com.itant.shibei.net.RetrofitHelper;
 import com.miekir.mvp.presenter.BasePresenter;
-import com.miekir.network.core.RetrofitHelper;
 import com.miekir.network.core.base.BaseObserver;
 
 import java.util.HashMap;

+ 1 - 3
network/build.gradle

@@ -62,7 +62,5 @@ dependencies {
     api 'com.squareup.retrofit2:converter-gson:2.2.0'
     // 使用 retrofit + rx + gson 实现网络请求与解析end<-----
 
-    // 调试过程中可以查看详细的网络请求与相应
-    debugImplementation 'com.readystatesoftware.chuck:library:1.1.0'
-    releaseImplementation 'com.readystatesoftware.chuck:library-no-op:1.1.0'
+
 }