ClearDialogFragment.java 9.6 KB
package com.naji.xiaotao.cart.ui;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.DialogFragment;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Toast;

import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.naji.xiaotao.R;
import com.naji.xiaotao.cart.adapter.ClearAdapter;
import com.naji.xiaotao.cart.entity.ClearDetail;
import com.naji.xiaotao.cart.entity.ClearOutter;
import com.naji.xiaotao.cart.service.CartApiService;
import com.naji.xiaotao.common.dialog.RightDialog;
import com.naji.xiaotao.cookbook.bean.OuterEntity;
import com.naji.xiaotao.http.RetrofitClient;
import com.naji.xiaotao.order.ui.OrderActivity;
import com.naji.xiaotao.tangshi.service.TangshiApiService;
import com.naji.xiaotao.tangshi.ui.TangShiActivity;
import com.naji.xiaotao.util.DialogUtil;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import me.goldze.mvvmhabit.http.BaseResponse;
import me.goldze.mvvmhabit.http.ResponseThrowable;
import me.goldze.mvvmhabit.utils.MaterialDialogUtils;
import me.goldze.mvvmhabit.utils.RxUtils;
import me.goldze.mvvmhabit.utils.SPUtils;
import me.goldze.mvvmhabit.utils.ToastUtils;

public class ClearDialogFragment extends DialogFragment{

    private RecyclerView mRecyclerview;
    private ClearAdapter mAdapter;
    private ClearOutter clearOutter;
    private String orderid;
    private String sellerid;
    private boolean isFast;//是否快餐
    private List<ClearDetail> mDatas=new ArrayList<>();

    private Context context;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        context=getContext();
        clearOutter=getArguments().getParcelable("clearOuter");
        orderid=getArguments().getString("orderid");
        sellerid= SPUtils.getInstance("user_info").getString("sellerid");
        isFast=getArguments().getBoolean("isFast");
        mDatas.addAll(clearOutter.getMin_num());
        for(ClearDetail detail:clearOutter.getClear_error()){
            detail.setMin_num("0");
            mDatas.add(detail);
        }
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.dialog_clear,container);
        mRecyclerview=view.findViewById(R.id.recyclerview);
        mRecyclerview.setLayoutManager(new LinearLayoutManager(getContext(),LinearLayoutManager.VERTICAL,false));
        mAdapter=new ClearAdapter(getContext(),mDatas);
        mRecyclerview.setAdapter(mAdapter);
        view.findViewById(R.id.think_again).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dismiss();
            }
        });
        view.findViewById(R.id.place_order).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dismiss();
                DialogUtil.showDialog(context);
                for(int i=0;i<mDatas.size();i++){
                    ClearDetail detail=mDatas.get(i);
                    String id=detail.getId();
                    int num=Integer.parseInt(detail.getCount())-Integer.parseInt(detail.getMin_num());
                    String type="";
                    if(detail.getMin_num().equals("0")){
                        type="clear_error";
                    }else{
                        type="min_num";
                    }
                    clearCookbookRequest(detail.getCookbookid(),detail.getSpecid(),id,num+"",i,type);
                }
            }
        });
        return view;
    }

    //去除数量不足菜品或卖光菜品
    private void clearCookbookRequest(String cookbookid,String specid,String id, String num, final int i,String type){
        Map<String,String> params=new HashMap<>();
        params.put("orderid",orderid);
        params.put("cookbookid",cookbookid);
        params.put("type",type);//min_num 菜品不足 clear_error卖光了
        params.put("id",id);//清楚主键idmin_
        params.put("num",num);//清楚数量
        if(!TextUtils.isEmpty(specid)){
            params.put("specid",specid);
        }
        RetrofitClient.getInstance().create(CartApiService.class)
                .clearCookbook(params)
                .compose(RxUtils.schedulersTransformer())
                .compose(RxUtils.exceptionTransformer())
                .doOnSubscribe(new Consumer<Disposable>() {
                    @Override
                    public void accept(Disposable disposable) throws Exception {

                    }
                })
                .subscribe(new Consumer<BaseResponse<List<String>>>() {
                    @Override
                    public void accept(BaseResponse<List<String>> listBaseResponse) throws Exception {
                        if(listBaseResponse.getRet()==200){
                            if(i==mDatas.size()-1){//去除掉最后一件商品后下单
                                placeOrderRequest();
                            }
                        }else{
                            DialogUtil.dismissDialog();
                            ToastUtils.showShort(listBaseResponse.getMsg());
                        }
                    }
                }, new Consumer<ResponseThrowable>() {
                    @Override
                    public void accept(ResponseThrowable responseThrowable) throws Exception {
                        DialogUtil.dismissDialog();
                        responseThrowable.printStackTrace();
                        ToastUtils.showShort(responseThrowable.msg);
                    }
                });
    }

    //下单接口
    private void placeOrderRequest(){
        Map<String,String> params=new HashMap<>();
        params.put("sellerid",sellerid);
        params.put("orderid",orderid);
        if(TextUtils.isEmpty(getArguments().getString("fromSource"))){
            params.put("type","1");//下单1、加菜2
        }else{
            params.put("type","2");//下单1、加菜2
        }
        params.put("identity","2");//1 顾客 2 服务员
        RetrofitClient.getInstance().create(CartApiService.class)
                .placeOrder(params)
                .compose(RxUtils.schedulersTransformer())
                .compose(RxUtils.exceptionTransformer())
                .doOnSubscribe(new Consumer<Disposable>() {
                    @Override
                    public void accept(Disposable disposable) throws Exception {

                    }
                })
                .subscribe(new Consumer<BaseResponse<List<String>>>() {
                    @Override
                    public void accept(BaseResponse<List<String>> listBaseResponse) throws Exception {
                        DialogUtil.dismissDialog();
                        if(listBaseResponse.getRet()==200){
                            final RightDialog dialog=new RightDialog();
                            Bundle bundle=new Bundle();
                            bundle.putString("msg","下单成功");
                            dialog.setArguments(bundle);
                            new Handler().postDelayed(new Runnable() {
                                @Override
                                public void run() {
                                    dialog.dismiss();
                                    if(isFast){//快速点餐直接跳到订单详情
                                        Intent intent=new Intent(context, OrderActivity.class);
                                        intent.putExtra("orderid",orderid);
                                        context.startActivity(intent);
                                    }else{
                                        context.startActivity(new Intent(context, TangShiActivity.class));
                                    }
                                }
                            }, 1000);
                            dialog.show(((AppCompatActivity)context).getSupportFragmentManager(),"rightDialog");
                        }else{
                            ToastUtils.showShort(listBaseResponse.getMsg());
                        }
                    }
                }, new Consumer<ResponseThrowable>() {
                    @Override
                    public void accept(ResponseThrowable responseThrowable) throws Exception {
                        DialogUtil.dismissDialog();
                        responseThrowable.printStackTrace();
                        ToastUtils.showShort(responseThrowable.msg);
                    }
                });
    }

    @Override
    public void onStart() {
        super.onStart();
        getDialog().setCanceledOnTouchOutside(false);
        Window window=getDialog().getWindow();
        WindowManager.LayoutParams lp=window.getAttributes();
        DisplayMetrics dm=new DisplayMetrics();
        window.getWindowManager().getDefaultDisplay().getMetrics(dm);
        window.setLayout((int) (dm.widthPixels*0.9),ViewGroup.LayoutParams.WRAP_CONTENT);
    }


}