ReceiptViewModel.java 9.66 KB
package com.naji.xiaotao.receipt.vm;

import android.content.Context;
import android.content.Intent;
import android.databinding.ObservableBoolean;
import android.databinding.ObservableField;
import android.databinding.ObservableInt;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;

import com.naji.xiaotao.cart.entity.CartEntity;
import com.naji.xiaotao.cart.service.CartApiService;
import com.naji.xiaotao.http.RetrofitClient;
import com.naji.xiaotao.login.entity.SellerConfig;
import com.naji.xiaotao.login.service.LoginApiService;
import com.naji.xiaotao.order.ui.OrderActivity;
import com.naji.xiaotao.order.ui.OrderAffirmActivity;
import com.naji.xiaotao.receipt.entity.ReceiptEntity;
import com.naji.xiaotao.receipt.service.ReceipApiService;

import java.text.DecimalFormat;
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.base.BaseViewModel;
import me.goldze.mvvmhabit.base.TitleViewModel;
import me.goldze.mvvmhabit.binding.command.BindingAction;
import me.goldze.mvvmhabit.binding.command.BindingCommand;
import me.goldze.mvvmhabit.http.BaseResponse;
import me.goldze.mvvmhabit.http.ResponseThrowable;
import me.goldze.mvvmhabit.utils.KLog;
import me.goldze.mvvmhabit.utils.RxUtils;
import me.goldze.mvvmhabit.utils.SPUtils;
import me.goldze.mvvmhabit.utils.ToastUtils;

public class ReceiptViewModel extends BaseViewModel{

    public ObservableField<String> no=new ObservableField<>();//单号
    public ObservableField<String> tableid=new ObservableField<>();//台号
    public ObservableField<String> title=new ObservableField<>();//标题
    public ObservableField<String> name=new ObservableField<>();//名称
    public ObservableField<String> shuihao=new ObservableField<>();//税号
    public ObservableField<String> address=new ObservableField<>();//单位地址
    public ObservableField<String> phonenum=new ObservableField<>();//电话号码
    public ObservableField<String> bank=new ObservableField<>();//开户银行
    public ObservableField<String> bankno=new ObservableField<>();//银行账号

    public ObservableInt bottomVisibility=new ObservableInt(View.GONE);

    public TitleViewModel titleViewModel;
    private String orderid;
    private boolean isWaitingSure;

    private float countPrice;//订单金额
    private int countTotal;//订单人数

    private String isSetMealFee;//是否设置餐位费
    private String meelFee;//餐位费

    public ReceiptViewModel(Context context,String orderid,boolean isWaitingSure){
        super(context);
        titleViewModel=new TitleViewModel(context,"发票详情");
        this.orderid=orderid;
        this.isWaitingSure=isWaitingSure;
    }

    public BindingCommand orderDetailCommand=new BindingCommand(new BindingAction() {
        @Override
        public void call() {
            if(isWaitingSure){
                Intent intent=new Intent(context,OrderAffirmActivity.class);
                intent.putExtra("orderid",orderid);
                context.startActivity(intent);
            }else{
                Intent intent=new Intent(context, OrderActivity.class);
                intent.putExtra("orderid",orderid);
                context.startActivity(intent);
            }
        }
    });

    @Override
    public void onCreate() {
        super.onCreate();
        getOrderDetail();
        getReceiptDetail();
    }

    //获取订单详情
    private void getOrderDetail(){
        HashMap<String,String> params=new HashMap<>();
        params.put("orderid",orderid);
        params.put("status","1");//0 购物车中菜品 1 已下单菜品
        RetrofitClient.getInstance().create(CartApiService.class)
                .getOrderById(params)
                .compose(RxUtils.schedulersTransformer())
                .compose(RxUtils.exceptionTransformer())
                .doOnSubscribe(new Consumer<Disposable>() {
                    @Override
                    public void accept(Disposable disposable) throws Exception {
                        showDialog();
                    }
                })
                .subscribe(new Consumer<BaseResponse<List<CartEntity>>>() {

                    @Override
                    public void accept(BaseResponse<List<CartEntity>> listBaseResponse) throws Exception {
                        dismissDialog();
                        if(listBaseResponse.getRet()==200){
                            no.set("单号:"+listBaseResponse.getData().get(0).getOrder().get(0).getRow_num());
                            tableid.set("台号:"+listBaseResponse.getData().get(0).getOrder().get(0).getTablename());
                            countTotal=listBaseResponse.getData().get(0).getCountTotal();
                            countPrice=listBaseResponse.getData().get(0).getCountPirce();
                            getSellerConfig(listBaseResponse.getData().get(0).getOrder().get(0).getPnum());
                        }else{
                            ToastUtils.showShort(listBaseResponse.getMsg());
                        }
                    }
                }, new Consumer<ResponseThrowable>() {
                    @Override
                    public void accept(ResponseThrowable throwable) throws Exception {
                        dismissDialog();
                        ToastUtils.showShort(throwable.msg);
                        throwable.printStackTrace();
                    }
                });
    }

    //获取商家配置
    private void getSellerConfig(final String pnum){
        Map<String,String> params=new HashMap<>();
        params.put("sellerid", SPUtils.getInstance("user_info").getString("sellerid"));
        params.put("type","1");//1堂食配置 2外卖配置
        RetrofitClient.getInstance().create(LoginApiService.class)
                .getSellerConfig(params)
                .compose(RxUtils.schedulersTransformer())
                .compose(RxUtils.exceptionTransformer())
                .doOnSubscribe(new Consumer<Disposable>() {
                    @Override
                    public void accept(Disposable disposable) throws Exception {

                    }
                })
                .subscribe(new Consumer<BaseResponse<List<SellerConfig>>>() {
                    @Override
                    public void accept(BaseResponse<List<SellerConfig>> listBaseResponse) throws Exception {
                        if(listBaseResponse.getRet()==200){
                            KLog.d("sssssssssssss");
                            isSetMealFee=listBaseResponse.getData().get(0).getIs_set_meal_fee();
                            meelFee=listBaseResponse.getData().get(0).getMeal_fee();
                            if(isSetMealFee.equals("1")){
                                countPrice+=Float.parseFloat(meelFee)*Integer.parseInt(pnum);
                            }
                            String all= new DecimalFormat("##0.00").format(countPrice);
                            title.set("已点"+countTotal+"个菜,共计¥"+all);
                        }
                    }

                }, new Consumer<ResponseThrowable>() {
                    @Override
                    public void accept(ResponseThrowable responseThrowable) throws Exception {

                    }
                });
    }

    //获取发票详情
    private void getReceiptDetail(){
        RetrofitClient.getInstance().create(ReceipApiService.class)
                .getReceiptDetail(orderid)
                .compose(RxUtils.schedulersTransformer())
                .compose(RxUtils.exceptionTransformer())
                .doOnSubscribe(new Consumer<Disposable>() {
                    @Override
                    public void accept(Disposable disposable) throws Exception {

                    }
                })
                .subscribe(new Consumer<BaseResponse<List<ReceiptEntity>>>() {
                    @Override
                    public void accept(BaseResponse<List<ReceiptEntity>> listBaseResponse) throws Exception {
                        if(listBaseResponse.getRet()==200){
                            if(listBaseResponse.getData()!=null&&listBaseResponse.getData().size()>0)
                                if(listBaseResponse.getData()!=null&&listBaseResponse.getData().size()>0){
                                    name.set(listBaseResponse.getData().get(0).getTitle());
                                    if(listBaseResponse.getData().get(0).getType().equals("0")){
                                        bottomVisibility.set(View.VISIBLE);
                                        shuihao.set(listBaseResponse.getData().get(0).getTaxnumber());
                                        address.set(listBaseResponse.getData().get(0).getCompanyaddress());
                                        phonenum.set(listBaseResponse.getData().get(0).getTelephone());
                                        bank.set(listBaseResponse.getData().get(0).getBankname());
                                        bankno.set(listBaseResponse.getData().get(0).getBankaccount());
                                    }else{
                                        bottomVisibility.set(View.GONE);
                                    }
                                }
                        }else{
                            ToastUtils.showShort(listBaseResponse.getMsg());
                        }
                    }
                }, new Consumer<ResponseThrowable>() {
                    @Override
                    public void accept(ResponseThrowable throwable) throws Exception {
                        throwable.printStackTrace();
                        ToastUtils.showShort(throwable.msg);
                    }
                });

    }
}