Jelajahi Sumber

收藏和取消收藏

詹子聪 5 tahun lalu
induk
melakukan
2211057b19

+ 3 - 0
app/src/main/java/com/miekir/ym/base/ApiService.java

@@ -59,6 +59,9 @@ public interface ApiService {
     @GET("shibei/api/getCouponListByKeyword")
     Observable<BaseResponse<List<CouponBean>>> getCouponListByKeyword(@Query("keywords") String keyword, @Query("pageNum") int pageNum, @Query("pageSize") int pageSize);
 
+    /**收藏或取消收藏*/
+    @POST("/shibei/api/favGoods")
+    Observable<BaseResponse<String>> favCoupon(@Query("couponId") long couponId);
 
 
 //    /*----------------------------------------升级信息----------------------------------------*/

+ 18 - 1
app/src/main/java/com/miekir/ym/ui/home/coupon/CouponAdapter.java

@@ -1,5 +1,6 @@
 package com.miekir.ym.ui.home.coupon;
 
+import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.graphics.drawable.Drawable;
@@ -20,9 +21,14 @@ import com.miekir.ym.R;
 import com.miekir.ym.listener.ItemLongClickListener;
 import com.miekir.ym.manager.UserInfoManager;
 import com.miekir.ym.ui.home.coupon.detail.CouponDetailActivity;
+import com.miekir.ym.ui.home.more.add.AddCouponActivity;
 
 import java.util.List;
 
+import rx_activity_result2.RxActivityResult;
+
+import static android.app.Activity.RESULT_OK;
+
 
 /**
  * @author Miekir
@@ -82,7 +88,18 @@ public class CouponAdapter extends BaseQuickAdapter<CouponBean, BaseViewHolder>
             }
             Intent detailIntent = new Intent(mContext, CouponDetailActivity.class);
             detailIntent.putExtra(CouponDetailActivity.KEY_COUPON_DETAIL, couponBean);
-            mContext.startActivity(detailIntent);
+            RxActivityResult.on((Activity) mContext)
+                    .startIntent(detailIntent)
+                    .filter(result -> result.resultCode() == RESULT_OK)
+                    .doOnNext(result -> {
+                        // 修改商品成功之后刷新item
+                        CouponBean modifiedBean = (CouponBean) result.data().getSerializableExtra(AddCouponActivity.KEY_MODIFY_COUPON);
+                        if (modifiedBean == null) {
+                            return;
+                        }
+                        couponBean.updateData(modifiedBean);
+                        notifyItemChanged(holder.getAdapterPosition());
+                    }).subscribe();
         });
 
         view.setOnLongClickListener(v -> {

+ 1 - 0
app/src/main/java/com/miekir/ym/ui/home/coupon/CouponBean.java

@@ -89,6 +89,7 @@ public class CouponBean implements Serializable {
     public void updateData(CouponBean couponBean) {
         this.couponType = couponBean.couponType;
         this.couponName = couponBean.couponName;
+        this.isFavorite = couponBean.isFavorite;
         this.couponContent = couponBean.couponContent;
         this.coverUrl = couponBean.coverUrl;
         this.jumpUrl = couponBean.jumpUrl;

+ 58 - 17
app/src/main/java/com/miekir/ym/ui/home/coupon/detail/CouponDetailActivity.kt

@@ -1,12 +1,16 @@
 package com.miekir.ym.ui.home.coupon.detail
 
 import android.os.Bundle
+import android.view.Menu
+import android.view.MenuItem
 import android.webkit.WebChromeClient
 import android.webkit.WebSettings
 import android.webkit.WebViewClient
 import com.miekir.common.utils.ToastTool
+import com.miekir.mvp.presenter.InjectPresenter
 import com.miekir.ym.R
 import com.miekir.ym.base.YangActivity
+import com.miekir.ym.manager.UserInfoManager
 import com.miekir.ym.ui.home.coupon.CouponBean
 import kotlinx.android.synthetic.main.activity_coupon_detail.*
 
@@ -17,12 +21,15 @@ import kotlinx.android.synthetic.main.activity_coupon_detail.*
  * @date 2020/11/25 16:46
  * Description: 优惠券详情
  */
-class CouponDetailActivity : YangActivity() {
+class CouponDetailActivity : YangActivity(), IFavView {
     companion object {
         const val KEY_COUPON_DETAIL = "coupon_detail"
     }
 
-    private var couponBean : CouponBean? = null;
+    private var mCouponBean : CouponBean? = null
+
+    @InjectPresenter
+    var favPresenter: FavPresenter? = null
 
     override fun getLayoutId(): Int {
         return R.layout.activity_coupon_detail
@@ -30,9 +37,9 @@ class CouponDetailActivity : YangActivity() {
 
     override fun initViews(savedInstanceState: Bundle?) {
         setTitle("优惠详情")
-        couponBean = intent.getSerializableExtra(KEY_COUPON_DETAIL) as CouponBean
+        mCouponBean = intent.getSerializableExtra(KEY_COUPON_DETAIL) as CouponBean
 
-        if (couponBean == null) {
+        if (mCouponBean == null) {
             ToastTool.showShort("获取优惠链接失败")
             return
         }
@@ -58,7 +65,7 @@ class CouponDetailActivity : YangActivity() {
         wv_coupon_detail.webChromeClient = WebChromeClient()
         wv_coupon_detail.webViewClient = WebViewClient()
         // 解决中文乱码
-        wv_coupon_detail.loadUrl(couponBean!!.jumpUrl)
+        wv_coupon_detail.loadUrl(mCouponBean!!.jumpUrl)
     }
 
     override fun onDestroy() {
@@ -66,17 +73,51 @@ class CouponDetailActivity : YangActivity() {
         wv_coupon_detail.destroy()
     }
 
-//    private var item: MenuItem? = null
-//    override fun onCreateOptionsMenu(menu: Menu): Boolean {
-//        // todo 收藏与取消收藏
-//        menuInflater.inflate(R.menu.menu_done, menu)
-//        item = menu.findItem(R.id.action_done)
-//        if (couponBean!!.isFavorite) {
-//            item!!.title = "已收藏"
-//        } else {
-//            item!!.title = "收藏"
-//        }
-//        return super.onCreateOptionsMenu(menu)
-//    }
+    private var item: MenuItem? = null
+    override fun onCreateOptionsMenu(menu: Menu): Boolean {
+        // 没登录的话,就不要显示收藏按钮
+        if (!UserInfoManager.getInstance().isLogin) {
+            return super.onCreateOptionsMenu(menu)
+        }
+        // 收藏与取消收藏
+        menuInflater.inflate(R.menu.menu_done, menu)
+        item = menu.findItem(R.id.action_done)
+        if (mCouponBean!!.favorite) {
+            item!!.title = "已收藏"
+        } else {
+            item!!.title = "收藏"
+        }
+        return super.onCreateOptionsMenu(menu)
+    }
 
+    override fun onOptionsItemSelected(item: MenuItem): Boolean {
+        when (item.itemId) {
+            R.id.action_done -> {
+                // 收藏或者取消收藏
+                showLoading()
+                favPresenter?.favGoods(mCouponBean!!.id)
+            }
+            else -> {
+            }
+        }
+        return super.onOptionsItemSelected(item)
+    }
+
+    override fun onFavResult(success: Boolean, code: Int) {
+        if (success) {
+            mCouponBean!!.favorite = !mCouponBean!!.favorite
+            if (mCouponBean!!.favorite) {
+                item!!.title = "已收藏"
+            } else {
+                item!!.title = "收藏"
+            }
+            setResult(
+                RESULT_OK,
+                intent.putExtra(KEY_COUPON_DETAIL, mCouponBean)
+            )
+            ToastTool.showShort("操作成功")
+        } else {
+            ToastTool.showShort("操作失败")
+        }
+    }
 }

+ 51 - 0
app/src/main/java/com/miekir/ym/ui/home/coupon/detail/FavPresenter.java

@@ -0,0 +1,51 @@
+package com.miekir.ym.ui.home.coupon.detail;
+
+import com.miekir.mvp.presenter.BasePresenter;
+import com.miekir.network.constant.Code;
+import com.miekir.network.widget.observe.NetMvpObserver;
+import com.miekir.ym.base.ApiService;
+import com.miekir.ym.net.RetrofitHelper;
+
+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) {
+        NetMvpObserver observer = new NetMvpObserver<String>(this) {
+            @Override
+            public void onSuccess(int code, String result) {
+                post(view -> view.onFavResult(true, Code.SUCCESS));
+            }
+
+            @Override
+            public void onFailure(int code, Throwable e, String errMsg) {
+                post(view -> view.onFavResult(false, Code.FAILURE));
+            }
+        };
+
+        mProgressDisposableList.add(observer);
+
+        RetrofitHelper.getInstance()
+                .getRequestApi(ApiService.class)
+                .favCoupon(goodsId)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(observer);
+    }
+
+    @Override
+    public void onInit() {
+
+    }
+}

+ 13 - 0
app/src/main/java/com/miekir/ym/ui/home/coupon/detail/IFavView.java

@@ -0,0 +1,13 @@
+package com.miekir.ym.ui.home.coupon.detail;
+
+import com.miekir.mvp.view.IView;
+
+/**
+ *
+ *
+ * @author Miekir
+ * @date 2020/7/8 19:44
+ */
+public interface IFavView extends IView {
+    void onFavResult(boolean success, int code);
+}