Commit b1ce80e8 authored by 小费同学阿's avatar 小费同学阿 💬

功能修复:

商户app商品编辑显示下架原因
parent 4deff8e6
......@@ -2,15 +2,25 @@ package com.xx.merchanthbh.data.http.respons
import com.xx.merchanthbh.data.http.requst.body.BrankBean
class ProductBean(var businessId:String,var commodityName:String ,var commodityPrice:Double , var detailImagesList:MutableList<Filebean> ,
var commodityCode:String,//商品编号
var fileList: MutableList<Filebean>,// 商品图片
var categoryName:String ,//分类名称
var commodityDescriptionText :String,//商品描述
var status:String ,//商品状态 1-待提交 2-待审核 3-已上架 4-未上架 5-已驳回
var brandName:String, //商品品牌
var brandAuthorization :BrankBean?=null,var categoryNameStr:String?="",var categoryId:String ="",var recentDeactivatedLog:RecentRejectionLogBean?=null
class ProductBean(
var businessId: String,
var commodityName: String,
var commodityPrice: Double,
var detailImagesList: MutableList<Filebean>,
var commodityCode: String,//商品编号
var fileList: MutableList<Filebean>,// 商品图片
var categoryName: String,//分类名称
var commodityDescriptionText: String,//商品描述
var status: String,//商品状态 1-待提交 2-待审核 3-已上架 4-未上架 5-已驳回
var brandName: String, //商品品牌
var brandAuthorization: BrankBean? = null,
var categoryNameStr: String? = "",
var categoryId: String = "",
var recentDeactivatedLog: RecentRejectionLogBean? = null
) {
}
data class RecentRejectionLogBean(var mark:String)
\ No newline at end of file
data class RecentRejectionLogBean(/*下架原因*/var mark: String,
/*操作人*/var operator: String
)
\ No newline at end of file
package com.xx.merchanthbh.data.http.respons
/*驳回原因*/
class RejectionShelfBean(
/**/
var deFlag: Boolean,
/*操作人*/
var operator: String,
/*下架原因*/
var remark: String
) {
}
\ No newline at end of file
package com.xx.merchanthbh.dialog
import android.content.Context
import android.view.Gravity
import android.view.WindowManager
import androidx.databinding.ObservableField
import com.xx.merchanthbh.R
import com.xx.merchanthbh.databinding.DialogOffshelfReasonBinding
import com.xx.merchanthbh.databinding.DialogRejectionReasonBinding
import com.xx.xxviewlibrary.base.xxBaseDialog
import me.jessyan.autosize.utils.AutoSizeUtils
class OffShelfDialog(context: Context, private val rejectionPerson: String, private val rejectionReason: String) : xxBaseDialog<DialogOffshelfReasonBinding>(context) {
var rejectionPersons = ObservableField("")
var rejectionReasons = ObservableField("")
override fun InitView(): DialogSet {
return DialogSet(
R.layout.dialog_offshelf_reason, true,
Gravity.CENTER_VERTICAL, true, WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.WRAP_CONTENT
)
}
override fun InitData() {
binding.offShelfDialog = this
binding.btnConfirm.setOnClickListener {
dismiss()
}
/*给反驳原因赋值*/
rejectionPersons.set(rejectionPerson);
/*给反驳原因赋值*/
rejectionReasons.set(rejectionReason);
}
}
\ No newline at end of file
......@@ -6,7 +6,9 @@ import android.view.View
import com.xx.merchanthbh.BR
import com.xx.merchanthbh.R
import com.xx.merchanthbh.data.http.requst.AddProductRequest
import com.xx.merchanthbh.data.http.respons.RejectionShelfBean
import com.xx.merchanthbh.databinding.ActivityAddProductBinding
import com.xx.merchanthbh.dialog.OffShelfDialog
import com.xx.xxviewlibrary.base.xxBaseRecyclerViewAdapter.OnItemClick
import com.xx.xxviewlibrary.utils.AddImgAdapter
import com.xx.xxviewlibrary.witget.model.FileBean
......@@ -57,6 +59,27 @@ class AddProductActivity : BaseActivity<ActivityAddProductBinding, AddProductVie
binding.btnAapDraft.visibility= View.GONE;
}
/*下架原因回显*/
val rejectionReason = viewModel.remark.value
viewModel.showOffShelfDialog.observe(
this
) { show: RejectionShelfBean? ->
val rejectionPerson = viewModel.operator.value
val rejectionReason = viewModel.remark.value
val rejectionDialog =
OffShelfDialog(this, rejectionPerson!!, rejectionReason!!)
rejectionDialog.show()
}
// 如果有下架原因则显示控件
viewModel.remark.observe(this) { remark: String? ->
if (remark != null) {
// binding.rejectReasonTip.visibility = View.VISIBLE
}
}
}
......
......@@ -2,6 +2,7 @@ package com.xx.merchanthbh.ui.addproduct;
import android.app.Application;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
......@@ -17,6 +18,7 @@ import com.xx.merchanthbh.data.http.respons.BoothBean;
import com.xx.merchanthbh.data.http.respons.CategoryBean;
import com.xx.merchanthbh.data.http.respons.Filebean;
import com.xx.merchanthbh.data.http.respons.ProductBean;
import com.xx.merchanthbh.data.http.respons.RejectionShelfBean;
import com.xx.merchanthbh.dialog.BoothListDialog;
import com.xx.merchanthbh.dialog.ProductTypeDialog;
import com.xx.merchanthbh.dialog.data.ProductTypeProvider;
......@@ -46,7 +48,12 @@ import me.goldze.mvvmhabit.utils.StringUtils;
import me.goldze.mvvmhabit.utils.ToastUtils;
public class AddProductViewModel extends BaseViewModel<AddProductRequest> {
/*操作人*/
public MutableLiveData<String> operator = new MutableLiveData<>(null);
/*下架原因*/
public MutableLiveData<String> remark = new MutableLiveData<>(null);
//展示下架原因弹窗
public MutableLiveData<RejectionShelfBean> showOffShelfDialog = new MutableLiveData<>();
public String goodsId=null;
......@@ -337,6 +344,21 @@ public class AddProductViewModel extends BaseViewModel<AddProductRequest> {
}).subscribe(new ApiDisposableObserver<ProductBean>() {
@Override
public void onSuccess(ProductBean resultBean) {
/*下架原因字段判空*/
if (resultBean.getStatus().equals("4")) {
/*获取下架人*/
if (resultBean.getRecentDeactivatedLog() != null && resultBean.getRecentDeactivatedLog().getOperator() != null && !resultBean.getRecentDeactivatedLog().getMark().isEmpty()) {
operator.setValue(resultBean.getRecentDeactivatedLog().getOperator());
} else {
Log.e("下架人为空", "RecentDeactivatedLog or its operator is null or empty");
}
/*获取下架原因*/
if (resultBean.getRecentDeactivatedLog() != null && resultBean.getRecentDeactivatedLog().getMark() != null && !resultBean.getRecentDeactivatedLog().getMark().isEmpty()) {
remark.setValue(resultBean.getRecentDeactivatedLog().getMark());
} else {
Log.e("下架原因为空", "RecentDeactivatedLog or its mark is null or empty");
}
}
if (resultBean.getRecentDeactivatedLog()==null)
{
......@@ -410,10 +432,14 @@ public class AddProductViewModel extends BaseViewModel<AddProductRequest> {
brandDeleteGone.set(View.GONE);
}
public void showReason(View view)
{
showCommTextDialog(new RefuseDialogBean(RecentRejectionStr,"确定",null,"下架意见"), new CommTextDialog.onAcceptCallBack() {
/**
* 查看商品下架原因
*/
public void showReason(View view) {
boolean deFlag = true;
RejectionShelfBean rejectionShelfBean = new RejectionShelfBean(deFlag, operator.getValue(),remark.getValue());
showOffShelfDialog.postValue(rejectionShelfBean);
/* showCommTextDialog(new RefuseDialogBean(RecentRejectionStr,"确定",null,"下架意见"), new CommTextDialog.onAcceptCallBack() {
@Override
public void acceptBack() {
......@@ -423,7 +449,7 @@ public class AddProductViewModel extends BaseViewModel<AddProductRequest> {
public void refuseBack() {
}
});
});*/
}
}
package com.xx.merchanthbh.ui.productdetail
import android.os.Bundle
import android.view.View
import com.xx.merchanthbh.BR
import com.xx.merchanthbh.R
import com.xx.merchanthbh.data.http.requst.AddProductRequest
import com.xx.merchanthbh.data.http.respons.RejectionBean
import com.xx.merchanthbh.data.http.respons.RejectionShelfBean
import com.xx.merchanthbh.databinding.ActivityDetailProductBinding
import com.xx.merchanthbh.ui.addproduct.AddProductViewModel
import com.xx.xxviewlibrary.base.xxBaseRecyclerViewAdapter
import com.xx.xxviewlibrary.utils.AddImgAdapter
import com.xx.merchanthbh.dialog.OffShelfDialog
import com.xx.merchanthbh.dialog.RejectionDialog
import com.xx.xxviewlibrary.utils.ImgAdapter
import com.xx.xxviewlibrary.witget.model.FileBean
import me.goldze.mvvmhabit.base.BaseActivity
class ProductDetailActivity: BaseActivity<ActivityDetailProductBinding, ProductDetailViewModel>() {
class ProductDetailActivity : BaseActivity<ActivityDetailProductBinding, ProductDetailViewModel>() {
override fun initContentView(savedInstanceState: Bundle?): Int {
return R.layout.activity_detail_product
}
......@@ -25,22 +26,25 @@ class ProductDetailActivity: BaseActivity<ActivityDetailProductBinding, ProductD
super.initData()
viewModel.getInfo(intent.getStringExtra("goodsId"));
viewModel.productAdapter= ImgAdapter(this,ArrayList())
binding.rvAapProduct.adapter=viewModel.productAdapter
viewModel.productAdapter = ImgAdapter(this, ArrayList())
binding.rvAapProduct.adapter = viewModel.productAdapter
viewModel.detailAdapter= ImgAdapter(this,ArrayList())
binding.rvAapDetail.adapter=viewModel.detailAdapter
viewModel.brandAdapter= ImgAdapter(this,ArrayList())
binding.rvAapDetailBrand.adapter=viewModel.brandAdapter
viewModel.detailAdapter = ImgAdapter(this, ArrayList())
binding.rvAapDetail.adapter = viewModel.detailAdapter
viewModel.brandAdapter = ImgAdapter(this, ArrayList())
binding.rvAapDetailBrand.adapter = viewModel.brandAdapter
}
override fun initViewModel(): ProductDetailViewModel {
val lm: AddProductRequest = AddProductRequest()
return ProductDetailViewModel(application,lm)
return ProductDetailViewModel(application, lm)
}
}
\ No newline at end of file
......@@ -2,80 +2,67 @@ package com.xx.merchanthbh.ui.productdetail;
import android.app.Application;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.databinding.ObservableField;
import androidx.lifecycle.MutableLiveData;
import com.huantansheng.easyphotos.callback.SelectCallback;
import com.huantansheng.easyphotos.models.album.entity.Photo;
import com.xx.merchanthbh.R;
import com.xx.merchanthbh.data.http.requst.AddProductRequest;
import com.xx.merchanthbh.data.http.respons.CategoryBean;
import com.xx.merchanthbh.data.http.respons.Filebean;
import com.xx.merchanthbh.data.http.respons.ProductBean;
import com.xx.merchanthbh.dialog.BoothListDialog;
import com.xx.merchanthbh.dialog.ProductTypeDialog;
import com.xx.merchanthbh.data.http.respons.RejectionBean;
import com.xx.merchanthbh.data.http.respons.RejectionShelfBean;
import com.xx.merchanthbh.dialog.data.ProductTypeProvider;
import com.xx.merchanthbh.dialog.data.TextListProvider;
import com.xx.xxviewlibrary.base.xxBaseDialog;
import com.xx.xxviewlibrary.utils.AddImgAdapter;
import com.xx.xxviewlibrary.utils.ImgAdapter;
import com.xx.xxviewlibrary.witget.model.FileBean;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.functions.Consumer;
import me.goldze.mvvmhabit.base.BaseViewModel;
import me.goldze.mvvmhabit.http.ApiDisposableObserver;
import me.goldze.mvvmhabit.http.BaseResponse;
import me.goldze.mvvmhabit.utils.RxUtils;
import me.goldze.mvvmhabit.utils.StringUtils;
import me.goldze.mvvmhabit.utils.ToastUtils;
public class ProductDetailViewModel extends BaseViewModel<AddProductRequest> {
public class ProductDetailViewModel extends BaseViewModel<AddProductRequest> {
public String goodsId=null;
public String goodsId = null;
public MutableLiveData<String> name;
public MutableLiveData<Integer> brandGone=new MutableLiveData(View.GONE);
public MutableLiveData<Integer> imgGone=new MutableLiveData(View.GONE);
public MutableLiveData<Integer> brandGone = new MutableLiveData(View.GONE);
public MutableLiveData<Integer> imgGone = new MutableLiveData(View.GONE);
/**
* productAdapter 商品图片
* detailAdapter 详细图片
*/
public ImgAdapter productAdapter,detailAdapter,brandAdapter;
public ImgAdapter productAdapter, detailAdapter, brandAdapter;
public ProductTypeProvider categoryDialogData;
public ObservableField<String> pNumber= new ObservableField<>("");
public ObservableField<String> pNumber = new ObservableField<>("");
public ObservableField<String> pName= new ObservableField<>("");
public ObservableField<String> pName = new ObservableField<>("");
public ObservableField<String> pDescribe= new ObservableField<>("");
public ObservableField<String> pDescribe = new ObservableField<>("");
public ObservableField<String> pPrice= new ObservableField<>("");
public ObservableField<String> pPrice = new ObservableField<>("");
public ObservableField<String> pType= new ObservableField<>("请选择");
public ObservableField<String> pType = new ObservableField<>("请选择");
public String typeId="";
public String typeId = "";
public ObservableField<String> pBrand= new ObservableField<>();
public ObservableField<String> pBrand = new ObservableField<>();
public String brandID=null;
public String brandID = null;
public ProductDetailViewModel(@NonNull Application application) {
super(application);
......@@ -100,19 +87,18 @@ public class ProductDetailViewModel extends BaseViewModel<AddProductRequest> {
/**
* 获取商品详情
*
* @param id
*/
public void getInfo(String id)
{
public void getInfo(String id) {
goodsId=id;
goodsId = id;
model.getProductInfo(id).compose(RxUtils.schedulersTransformer()) //线程调度
.doOnSubscribe(ProductDetailViewModel.this)
.doOnSubscribe (new Consumer<Disposable>() {
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
......@@ -121,53 +107,42 @@ public class ProductDetailViewModel extends BaseViewModel<AddProductRequest> {
@Override
public void onSuccess(ProductBean resultBean) {
if (!TextUtils.isEmpty(resultBean.getCommodityCode()))
{
/*驳回原因赋值*/
if (!TextUtils.isEmpty(resultBean.getCommodityCode())) {
pNumber.set(resultBean.getCommodityCode());
}
pName.set(resultBean.getCommodityName());
for (Filebean bean:resultBean.getFileList())
{
productAdapter.mList.add(new FileBean(bean.getBusinessId(),bean.getUrl()));
for (Filebean bean : resultBean.getFileList()) {
productAdapter.mList.add(new FileBean(bean.getBusinessId(), bean.getUrl()));
}
productAdapter.notifyDataSetChanged();
//详细图片
if (resultBean.getDetailImagesList()==null || resultBean.getDetailImagesList().size()<=0)
{
if (resultBean.getDetailImagesList() == null || resultBean.getDetailImagesList().size() <= 0) {
imgGone.setValue(View.GONE);
}else {
} else {
imgGone.setValue(View.VISIBLE);
for (Filebean bean:resultBean.getDetailImagesList())
{
detailAdapter.mList.add(new FileBean(bean.getBusinessId(),bean.getUrl()));
for (Filebean bean : resultBean.getDetailImagesList()) {
detailAdapter.mList.add(new FileBean(bean.getBusinessId(), bean.getUrl()));
}
detailAdapter.notifyDataSetChanged();
}
if (resultBean.getBrandAuthorization()==null)
{
if (resultBean.getBrandAuthorization() == null) {
brandGone.setValue(View.GONE);
}else {
} else {
brandGone.setValue(View.VISIBLE);
for (Filebean bean:resultBean.getBrandAuthorization().getFileList())
{
brandAdapter.mList.add(new FileBean(bean.getBusinessId(),bean.getUrl()));
for (Filebean bean : resultBean.getBrandAuthorization().getFileList()) {
brandAdapter.mList.add(new FileBean(bean.getBusinessId(), bean.getUrl()));
}
brandAdapter.notifyDataSetChanged();
}
pType.set(resultBean.getCategoryNameStr());
pPrice.set(resultBean.getCommodityPrice()+"");
pPrice.set(resultBean.getCommodityPrice() + "");
if (!TextUtils.isEmpty(resultBean.getCommodityDescriptionText())) {
pDescribe.set(resultBean.getCommodityDescriptionText());
......@@ -188,5 +163,4 @@ public class ProductDetailViewModel extends BaseViewModel<AddProductRequest> {
}
}
......@@ -45,7 +45,6 @@
android:layout_margin="17dp"
android:background="@drawable/bg_white_radius_12"
android:orientation="vertical">
<com.xx.xxviewlibrary.witget.XxFormEdit
android:layout_width="match_parent"
android:layout_height="wrap_content"
......
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<!--下架原因弹窗ui-->
<variable
name="offShelfDialog"
type="com.xx.merchanthbh.dialog.OffShelfDialog" />
<import type="me.goldze.mvvmhabit.binding.viewadapter.recyclerview.LayoutManagers" />
<import type="me.goldze.mvvmhabit.binding.viewadapter.recyclerview.LineManagers" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:background="@drawable/bg_white_radius_12">
<LinearLayout
android:id="@+id/ll_tips"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="22dp"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:lineSpacingExtra="22dp"
android:text="下架原因"
android:textColor="#FF333333"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="26dp"
android:layout_marginTop="22dp"
android:layout_marginRight="26dp"
android:gravity="center"
android:lineSpacingExtra="5dp"
android:text='@{"下架人: " + offShelfDialog.rejectionPersons}'
android:textColor="#FF333333"
android:textSize="18sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="26dp"
android:layout_marginTop="22dp"
android:layout_marginRight="26dp"
android:gravity="center"
android:lineSpacingExtra="5dp"
android:text='@{"下架人: " + offShelfDialog.rejectionReasons}'
android:textColor="#FF333333"
android:textSize="18sp" />
</LinearLayout>
<!--分割线-->
<View
android:id="@+id/divider"
android:layout_width="wrap_content"
android:layout_height="1dp"
android:layout_below="@id/ll_tips"
android:layout_marginTop="35dp"
android:background="@drawable/divider" />
<TextView
android:id="@+id/btn_confirm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/divider"
android:layout_marginTop="16.5dp"
android:layout_marginBottom="21dp"
android:gravity="center"
android:text="确定"
android:textColor="#FF5971A4"
android:textSize="16sp"
android:textStyle="bold" />
</RelativeLayout>
</RelativeLayout>
</LinearLayout>
</layout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment