詹子聪 vor 5 Jahren
Ursprung
Commit
b43410b88c

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

@@ -104,5 +104,9 @@ public interface ApiService {
     @POST("/eden/api/setApiConfig")
     Observable<BaseResponse<String>> setApiConfig(@Query("isApiVipOnly") boolean isApiVipOnly);
 
+    /**收藏或取消收藏*/
+    @POST("/eden/api/favGoods")
+    Observable<BaseResponse<String>> favGoods(@Query("goodsId") long goodsId);
+
 
 }

+ 1 - 1
app/src/main/java/com/itant/shibei/bean/BeiUser.java

@@ -16,7 +16,7 @@ public class BeiUser implements Serializable {
     public String token;
     public long registerTimeMillis;
     public long lastLoginTimeMillis;
-    public boolean isVip;
+    public boolean vip;
     public String deviceId;
     public String lastIp;
     public int themeMode;

+ 1 - 1
app/src/main/java/com/itant/shibei/ui/home/about/AboutFragment.java

@@ -59,7 +59,7 @@ public class AboutFragment extends BaseMVPFragment implements View.OnClickListen
             return;
         }
 
-        boolean isActive = UserInfoManager.getInstance().getBeiUser().isVip;
+        boolean isActive = UserInfoManager.getInstance().getBeiUser().vip;
         String title = String.format(TITLE_FORMAT, SystemTool.getVersionName(getActivity()), isActive ? "(已激活)" : "(未激活)");
         tv_title.setText(title);
         if (isActive) {

+ 1 - 1
app/src/main/java/com/itant/shibei/ui/home/coupon/TemplateAdapter.java

@@ -103,7 +103,7 @@ public class TemplateAdapter extends BaseQuickAdapter<String, BaseViewHolder> {
                 });
 
         iv_template.setOnClickListener(v -> {
-            if (!UserInfoManager.getInstance().getBeiUser().isVip) {
+            if (!UserInfoManager.getInstance().getBeiUser().vip) {
                 ToastTool.showShort("请先激活会员");
                 if (mContext instanceof TabActivity) {
                     ((TabActivity) mContext).setCurrentPage(2);

+ 24 - 10
app/src/main/java/com/itant/shibei/ui/home/goods/GoodsAdapter.java

@@ -1,10 +1,9 @@
 package com.itant.shibei.ui.home.goods;
 
-import android.content.Context;
+import android.app.Activity;
 import android.content.Intent;
 import android.graphics.drawable.Drawable;
 import android.text.TextUtils;
-import android.view.View;
 import android.widget.ImageView;
 
 import androidx.annotation.NonNull;
@@ -24,12 +23,15 @@ import com.itant.shibei.manager.UserInfoManager;
 import com.itant.shibei.tool.StringTool;
 import com.itant.shibei.ui.TabActivity;
 import com.itant.shibei.ui.home.goods.detail.GoodsDetailActivity;
-import com.itant.shibei.ui.home.goods.play.VideoPlayActivity;
 import com.makeramen.roundedimageview.RoundedImageView;
 import com.miekir.common.utils.ToastTool;
 
 import java.util.List;
 
+import rx_activity_result2.RxActivityResult;
+
+import static android.app.Activity.RESULT_OK;
+
 /**
  *
  *
@@ -38,10 +40,10 @@ import java.util.List;
  * Description: 首页商品适配器
  */
 public class GoodsAdapter extends BaseQuickAdapter<GoodsBean, BaseViewHolder> {
-    private Context mContext;
+    private Activity mContext;
     private int mRadius;
 
-    public GoodsAdapter(Context context, @Nullable List<GoodsBean> data) {
+    public GoodsAdapter(Activity context, @Nullable List<GoodsBean> data) {
         super(R.layout.item_goods, data);
         mRadius = (int) context.getResources().getDimension(R.dimen.margin_ss);
         mContext = context;
@@ -55,7 +57,7 @@ public class GoodsAdapter extends BaseQuickAdapter<GoodsBean, BaseViewHolder> {
         holder.setText(R.id.tv_see_num, String.format(GoodsDetailActivity.FORMATTER_SEE_NUM, StringTool.getNumberString(goodsBean.seeNum)));
 
         holder.setOnClickListener(R.id.cv_goods, v -> {
-            if (!UserInfoManager.getInstance().getBeiUser().isVip) {
+            if (!UserInfoManager.getInstance().getBeiUser().vip) {
                 ToastTool.showShort("请先激活会员");
                 if (mContext instanceof TabActivity) {
                     ((TabActivity) mContext).setCurrentPage(2);
@@ -71,7 +73,19 @@ public class GoodsAdapter extends BaseQuickAdapter<GoodsBean, BaseViewHolder> {
             // 跳到详情界面
             Intent detailIntent = new Intent(mContext, GoodsDetailActivity.class);
             detailIntent.putExtra(GoodsDetailActivity.KEY_GOODS, goodsBean);
-            mContext.startActivity(detailIntent);
+            RxActivityResult.on(mContext).startIntent(detailIntent)
+                    .filter(result -> result.resultCode() == RESULT_OK)
+                    .doOnNext(result -> {
+                        // 刷新成功
+                        GoodsBean afterBean = (GoodsBean) result.data().getSerializableExtra(GoodsDetailActivity.KEY_GOODS);
+                        if (afterBean != null) {
+                            goodsBean.isFavorite = afterBean.isFavorite;
+                            goodsBean.favNum = afterBean.favNum;
+                            goodsBean.seeNum = afterBean.seeNum;
+                            notifyItemChanged(holder.getLayoutPosition());
+                        }
+                    })
+                    .subscribe();
         });
 
         // 解决图片错乱
@@ -111,14 +125,14 @@ public class GoodsAdapter extends BaseQuickAdapter<GoodsBean, BaseViewHolder> {
                     }
                 });
 
-        View fl_video_play = holder.getView(R.id.fl_video_play);
+        /*View fl_video_play = holder.getView(R.id.fl_video_play);
         View iv_video_play = holder.getView(R.id.iv_video_play);
         if (!TextUtils.isEmpty(goodsBean.videoUrl)) {
             iv_video_play.setVisibility(View.VISIBLE);
             fl_video_play.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
-                    if (!UserInfoManager.getInstance().getBeiUser().isVip) {
+                    if (!UserInfoManager.getInstance().getBeiUser().vip) {
                         ToastTool.showShort("请先激活会员");
                         if (mContext instanceof TabActivity) {
                             ((TabActivity) mContext).setCurrentPage(2);
@@ -140,7 +154,7 @@ public class GoodsAdapter extends BaseQuickAdapter<GoodsBean, BaseViewHolder> {
             });
         } else {
             iv_video_play.setVisibility(View.GONE);
-        }
+        }*/
 
         // 暂时不需要长按弹出操作
         /*if (UserInfoManager.getInstance().isLogin() &&

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

@@ -120,7 +120,6 @@ public class GoodsFragment extends BaseMVPFragment implements IGoodsView, ITopAc
                 })
                 .setPositiveButton("禁用", (DialogInterface dialog, int which) -> {
                     dialog.dismiss();
-                    // todo 禁用
                 })
                 .setNegativeButton("删除", (DialogInterface dialog, int which) -> {
                     dialog.dismiss();

+ 58 - 1
app/src/main/java/com/itant/shibei/ui/home/goods/detail/GoodsDetailActivity.java

@@ -2,9 +2,12 @@ package com.itant.shibei.ui.home.goods.detail;
 
 import android.os.Bundle;
 import android.text.TextUtils;
+import android.view.Menu;
+import android.view.MenuItem;
 import android.view.View;
 import android.widget.TextView;
 
+import androidx.annotation.NonNull;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 
@@ -12,6 +15,10 @@ import com.itant.shibei.R;
 import com.itant.shibei.base.BaseBeiActivity;
 import com.itant.shibei.ui.home.goods.GoodsBean;
 import com.itant.shibei.ui.home.goods.MagnetBean;
+import com.itant.shibei.ui.mine.fav.FavPresenter;
+import com.itant.shibei.ui.mine.fav.IFavView;
+import com.miekir.common.utils.ToastTool;
+import com.miekir.mvp.presenter.InjectPresenter;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -23,10 +30,13 @@ import java.util.List;
  * @date 2020/9/1 18:18
  * Description: 详情界面
  */
-public class GoodsDetailActivity extends BaseBeiActivity implements View.OnClickListener {
+public class GoodsDetailActivity extends BaseBeiActivity implements View.OnClickListener, IFavView {
     public static final String FORMATTER_SEE_NUM = "浏览%s次";
     public static final String FORMATTER_FAV_NUM = "收藏%s次";
 
+    @InjectPresenter
+    FavPresenter favPresenter;
+
     public static final String KEY_GOODS = "goods";
     private TextView tv_title;
     private TextView tv_desc;
@@ -56,6 +66,8 @@ public class GoodsDetailActivity extends BaseBeiActivity implements View.OnClick
         if (mGoodsBean == null) {
             return;
         }
+        mGoodsBean.seeNum = mGoodsBean.seeNum+1;
+        setResult(RESULT_OK, getIntent().putExtra(KEY_GOODS, mGoodsBean));
 
         tv_title = findViewById(R.id.tv_title);
         tv_desc = findViewById(R.id.tv_desc);
@@ -98,6 +110,33 @@ public class GoodsDetailActivity extends BaseBeiActivity implements View.OnClick
         tv_fav_num.setText(String.format(FORMATTER_FAV_NUM, mGoodsBean.favNum));
     }
 
+    private MenuItem item;
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        getMenuInflater().inflate(R.menu.menu_done, menu);
+        item = menu.findItem(R.id.action_done);
+        if (mGoodsBean.isFavorite) {
+            item.setTitle("  已收藏  ");
+        } else {
+            item.setTitle("  收藏  ");
+        }
+        return super.onCreateOptionsMenu(menu);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
+        switch (item.getItemId()) {
+            case R.id.action_done:
+                // 收藏或者取消收藏
+                showLoading();
+                favPresenter.favGoods(mGoodsBean.id);
+                break;
+            default:
+                break;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
     @Override
     public void onClick(View v) {
         switch (v.getId()) {
@@ -105,4 +144,22 @@ public class GoodsDetailActivity extends BaseBeiActivity implements View.OnClick
                 break;
         }
     }
+
+    @Override
+    public void onFavResult(boolean success, String result) {
+        dismissLoading();
+        if (success) {
+            mGoodsBean.isFavorite = !mGoodsBean.isFavorite;
+            if (mGoodsBean.isFavorite) {
+                item.setTitle("  已收藏  ");
+                mGoodsBean.favNum = mGoodsBean.favNum+1;
+            } else {
+                item.setTitle("  收藏  ");
+                mGoodsBean.favNum = mGoodsBean.favNum-1;
+            }
+            tv_fav_num.setText(String.format(FORMATTER_FAV_NUM, mGoodsBean.favNum));
+            setResult(RESULT_OK, getIntent().putExtra(KEY_GOODS, mGoodsBean));
+        }
+        ToastTool.showShort(result);
+    }
 }

+ 47 - 0
app/src/main/java/com/itant/shibei/ui/mine/fav/FavPresenter.java

@@ -0,0 +1,47 @@
+package com.itant.shibei.ui.mine.fav;
+
+import android.text.TextUtils;
+
+import com.itant.shibei.base.ApiService;
+import com.itant.shibei.net.RetrofitHelper;
+import com.miekir.mvp.presenter.BasePresenter;
+import com.miekir.network.core.base.BaseObserver;
+
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
+/**
+ * Copyright (C), 2019-2020, Miekir
+ *
+ * @author Miekir
+ * @date 2020/8/20 19:18
+ * Description:
+ */
+public class FavPresenter extends BasePresenter<IFavView> {
+
+    /**
+     * 获取配置信息
+     */
+    public void favGoods(long goodsId) {
+        RetrofitHelper.getInstance()
+                .getRequestApi(ApiService.class)
+                .favGoods(goodsId)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new BaseObserver<String>() {
+                    @Override
+                    public void onSuccess(String result) {
+                        if (getView() != null) {
+                            getView().onFavResult(true, result);
+                        }
+                    }
+
+                    @Override
+                    public void onFailure(Throwable e, String errMsg) {
+                        if (getView() != null) {
+                            getView().onFavResult(false, TextUtils.isEmpty(errMsg) ? e.getMessage() : errMsg);
+                        }
+                    }
+                });
+    }
+}

+ 13 - 0
app/src/main/java/com/itant/shibei/ui/mine/fav/IFavView.java

@@ -0,0 +1,13 @@
+package com.itant.shibei.ui.mine.fav;
+
+import com.miekir.mvp.view.IView;
+
+/**
+ *
+ *
+ * @author Miekir
+ * @date 2020/7/8 19:44
+ */
+public interface IFavView extends IView {
+    void onFavResult(boolean success, String result);
+}