ソースを参照

修改京东商品

詹子聪 6 年 前
コミット
e370acefa5

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

@@ -1,5 +1,7 @@
 package com.itant.shibei.bean;
 
+import java.io.Serializable;
+
 /**
  *
  *
@@ -7,7 +9,7 @@ package com.itant.shibei.bean;
  * @date 2020/7/5 21:50
  * Description: 商品实体
  */
-public class GoodsBean {
+public class GoodsBean implements Serializable {
     public static final int TYPE_RECOMMEND = 0;
     public static final int TYPE_TECHNOLOGY = 1;
     public static final int TYPE_LIFE = 2;

+ 28 - 6
app/src/main/java/com/itant/shibei/ui/home/GoodsAdapter.java

@@ -22,6 +22,7 @@ import com.itant.library.recyclerview.base.ViewHolder;
 import com.itant.shibei.R;
 import com.itant.shibei.bean.GoodsBean;
 import com.itant.shibei.common.ConstantString;
+import com.itant.shibei.manager.UserInfoManager;
 import com.itant.shibei.tool.StringTool;
 import com.miekir.common.utils.ActivityTool;
 
@@ -90,12 +91,9 @@ public class GoodsAdapter extends CommonAdapter<GoodsBean> {
             tv_reason.setText(goodsBean.reason);
         }
 
-        holder.setOnClickListener(R.id.cv_goods, new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                String goodsUrl = goodsBean.goodsUrl;
-                ActivityTool.openUrl((Activity) mContext, goodsUrl);
-            }
+        holder.setOnClickListener(R.id.cv_goods, v -> {
+            String goodsUrl = goodsBean.goodsUrl;
+            ActivityTool.openUrl((Activity) mContext, goodsUrl);
         });
 
         AppCompatImageView aciv_goods = holder.getView(R.id.aciv_goods);
@@ -113,5 +111,29 @@ public class GoodsAdapter extends CommonAdapter<GoodsBean> {
                         aciv_goods.setImageDrawable(resource);
                     }
                 });
+
+        if (TextUtils.equals("[email protected]", UserInfoManager.getInstance().getBeiUser().email)) {
+            View view = holder.getView(R.id.cv_goods);
+            view.setOnLongClickListener(v -> {
+                if (goodsLongClickListener != null) {
+                    goodsLongClickListener.onGoodsLongClick(position);
+                }
+                return false;
+            });
+        }
+    }
+
+    private GoodsLongClickListener goodsLongClickListener;
+
+    public GoodsLongClickListener getGoodsLongClickListener() {
+        return goodsLongClickListener;
+    }
+
+    public void setGoodsLongClickListener(GoodsLongClickListener goodsLongClickListener) {
+        this.goodsLongClickListener = goodsLongClickListener;
+    }
+
+    public interface GoodsLongClickListener {
+        void onGoodsLongClick(int position);
     }
 }

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

@@ -1,16 +1,20 @@
 package com.itant.shibei.ui.home;
 
+import android.content.DialogInterface;
+import android.content.Intent;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.ImageView;
 
 import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 
 import com.itant.shibei.R;
 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.mvp.presenter.InjectPresenter;
 import com.miekir.mvp.view.BaseMVPFragment;
@@ -18,6 +22,10 @@ import com.miekir.mvp.view.BaseMVPFragment;
 import java.util.ArrayList;
 import java.util.List;
 
+import rx_activity_result2.RxActivityResult;
+
+import static android.app.Activity.RESULT_OK;
+
 /**
  *
  *
@@ -59,12 +67,56 @@ 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);
+        });
         rv_goods.setAdapter(mAdapter);
 
         // 获取数据
         mPresenter.getGoodsData();
     }
 
+    /**
+     * 修改商品或者删除商品
+     */
+    private void showAdminDialog(int position) {
+        AlertDialog alertDialog = new AlertDialog.Builder(getActivity())
+                .setMessage("选择操作")
+                .setNegativeButton("取消", (dialog, which) -> dialog.dismiss())
+                .setNeutralButton("修改", (dialog, which) -> {
+                    dialog.dismiss();
+                    Intent modifyIntent = new Intent(getActivity(), AddGoodsActivity.class);
+                    modifyIntent.putExtra(AddGoodsActivity.KEY_MODIFY_GOODS, mGoodsList.get(position));
+                    RxActivityResult.on(getActivity()).startIntent(modifyIntent)
+                            .filter(result -> result.resultCode() == RESULT_OK)
+                            .subscribe(result -> {
+                                // 修改商品成功之后刷新item
+                                mAdapter.notifyItemChanged(position);
+                            });
+                })
+                .setPositiveButton("删除", (DialogInterface dialog, int which) -> {
+                    dialog.dismiss();
+                    showDeleteDialog(position);
+                }).create();
+        alertDialog.setCanceledOnTouchOutside(false);
+        alertDialog.setCancelable(false);
+        alertDialog.show();
+    }
+
+    /**
+     * 是否删除商品
+     */
+    private void showDeleteDialog(int position) {
+        AlertDialog alertDialog = new AlertDialog.Builder(getActivity())
+                .setMessage("确定删除当前商品?")
+                .setNegativeButton("取消", (dialog, which) -> dialog.dismiss())
+                .setPositiveButton("确定", (DialogInterface dialog, int which) -> {
+                    dialog.dismiss();
+                    // todo 删除商品
+                }).create();
+        alertDialog.show();
+    }
+
     @Override
     public void onGoodsDataCome(List<GoodsBean> goodsList) {
         // todo 分页或者刷新

+ 49 - 19
app/src/main/java/com/itant/shibei/ui/mine/goods/AddGoodsActivity.java

@@ -19,6 +19,8 @@ import com.miekir.mvp.presenter.InjectPresenter;
  * Description: 登录界面
  */
 public class AddGoodsActivity extends BaseBeiActivity implements View.OnClickListener, IAddGoodsView {
+    public static final String KEY_MODIFY_GOODS = "key_modify_goods";
+
     private TextInputEditText et_goods_title;
     private TextInputEditText et_cover_url;
     private TextInputEditText et_desc;
@@ -35,6 +37,8 @@ public class AddGoodsActivity extends BaseBeiActivity implements View.OnClickLis
     private CheckBox cb_self;
     private CheckBox cb_enable;
 
+    private GoodsBean mGoodsBean;
+
     @InjectPresenter
     AddGoodsPresenter presenter;
 
@@ -62,6 +66,29 @@ public class AddGoodsActivity extends BaseBeiActivity implements View.OnClickLis
         cb_self = findViewById(R.id.cb_self);
         cb_enable = findViewById(R.id.cb_enable);
         ViewTool.setOnClickListener(this, this, new int[]{R.id.btn_add_goods});
+
+        mGoodsBean = (GoodsBean) getIntent().getSerializableExtra(KEY_MODIFY_GOODS);
+        if (mGoodsBean != null) {
+            initGoods();
+        }
+    }
+
+    private void initGoods() {
+        et_goods_title.setText(mGoodsBean.title);
+        et_cover_url.setText(mGoodsBean.coverImageUrl);
+        et_desc.setText(mGoodsBean.description);
+        et_reason.setText(mGoodsBean.reason);
+        et_old_price.setText(String.valueOf(mGoodsBean.oldPrice));
+        et_now_price.setText(String.valueOf(mGoodsBean.nowPrice));
+        et_province.setText(mGoodsBean.province);
+        et_coupon.setText(mGoodsBean.couponInfo);
+        et_goods_url.setText(mGoodsBean.goodsUrl);
+        et_sales_per_month.setText(String.valueOf(mGoodsBean.salesPerMonth));
+        et_good_comment_percent.setText(String.valueOf(mGoodsBean.goodCommentPercent));
+        et_shop_name.setText(mGoodsBean.shopName);
+        et_comment_num.setText(String.valueOf(mGoodsBean.commentNum));
+        cb_self.setChecked(mGoodsBean.isSelfBusiness);
+        cb_enable.setChecked(mGoodsBean.enable);
     }
 
     @Override
@@ -85,27 +112,29 @@ public class AddGoodsActivity extends BaseBeiActivity implements View.OnClickLis
                 boolean isSelf = cb_self.isChecked();
                 boolean isEnable = cb_enable.isChecked();
 
-                GoodsBean goodsBean = new GoodsBean();
-                goodsBean.title = title;
-                goodsBean.coverImageUrl = coverUrl;
-                goodsBean.description = description;
-                goodsBean.reason = reason;
-                goodsBean.oldPrice = oldPrice;
-                goodsBean.nowPrice = nowPrice;
-                goodsBean.rebate = rebate;
-                goodsBean.province = province;
-                goodsBean.shopName = shopName;
-                goodsBean.couponInfo = coupon;
-                goodsBean.goodsUrl = goodsUrl;
-                goodsBean.salesPerMonth = Long.parseLong(salesPerMonth);
-                goodsBean.goodCommentPercent = Double.parseDouble(goodCommentPercent);
-                goodsBean.commentNum = Long.parseLong(commentNum);
-                goodsBean.isSelfBusiness = isSelf;
-                goodsBean.enable = isEnable;
-                goodsBean.hasCoupon = !TextUtils.isEmpty(coupon);
+                if (mGoodsBean == null) {
+                    mGoodsBean = new GoodsBean();
+                }
+                mGoodsBean.title = title;
+                mGoodsBean.coverImageUrl = coverUrl;
+                mGoodsBean.description = description;
+                mGoodsBean.reason = reason;
+                mGoodsBean.oldPrice = oldPrice;
+                mGoodsBean.nowPrice = nowPrice;
+                mGoodsBean.rebate = rebate;
+                mGoodsBean.province = province;
+                mGoodsBean.shopName = shopName;
+                mGoodsBean.couponInfo = coupon;
+                mGoodsBean.goodsUrl = goodsUrl;
+                mGoodsBean.salesPerMonth = Long.parseLong(salesPerMonth);
+                mGoodsBean.goodCommentPercent = Double.parseDouble(goodCommentPercent);
+                mGoodsBean.commentNum = Long.parseLong(commentNum);
+                mGoodsBean.isSelfBusiness = isSelf;
+                mGoodsBean.enable = isEnable;
+                mGoodsBean.hasCoupon = !TextUtils.isEmpty(coupon);
 
                 showLoading();
-                presenter.addGoods(goodsBean);
+                presenter.addGoods(mGoodsBean);
                 break;
             default:
                 break;
@@ -117,6 +146,7 @@ public class AddGoodsActivity extends BaseBeiActivity implements View.OnClickLis
         dismissLoading();
         ToastTool.showShort(message);
         if (success) {
+            setResult(RESULT_OK);
             finish();
         }
     }

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

@@ -35,7 +35,7 @@ public class AddGoodsPresenter extends BasePresenter<IAddGoodsView> {
                     @Override
                     public void onFailure(Throwable e, String errMsg) {
                         if (getView() != null) {
-                            getView().onAddGoodsResult(false, TextUtils.isEmpty(errMsg) ? "添加失败"+e.getMessage() : errMsg);
+                            getView().onAddGoodsResult(false, TextUtils.isEmpty(errMsg) ? "操作失败"+e.getMessage() : errMsg);
                         }
                     }
                 });