Commit 37119422 authored by 王海's avatar 王海

Merge remote-tracking branch 'origin/master'

parents 7896d488 ffa03f52
...@@ -920,8 +920,7 @@ public final class ApiFactory { ...@@ -920,8 +920,7 @@ public final class ApiFactory {
} }
public static class Recard { public static class Recard {
public static Observable<String> checkPwd(Long vipId, String cardNo, String pwd) { public static Observable<Boolean> checkPwd(Long vipId, String cardNo, String pwd) {
return Api.getInstance().service.checkPwd(vipId, cardNo, pwd) return Api.getInstance().service.checkPwd(vipId, cardNo, pwd)
.onErrorReturn(new ErrorFilter<>()) .onErrorReturn(new ErrorFilter<>())
.map(new ResultFilter<>()) .map(new ResultFilter<>())
......
...@@ -39,6 +39,7 @@ import io.reactivex.Observable; ...@@ -39,6 +39,7 @@ import io.reactivex.Observable;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.http.Body; import retrofit2.http.Body;
import retrofit2.http.Field; import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST; import retrofit2.http.POST;
import retrofit2.http.Query; import retrofit2.http.Query;
...@@ -248,7 +249,8 @@ interface ApiService { ...@@ -248,7 +249,8 @@ interface ApiService {
Observable<HttpMessage<Vip>> detailUser(@Query("wd") String keyword); Observable<HttpMessage<Vip>> detailUser(@Query("wd") String keyword);
@POST(C.URL.RECARD.checkPwd) @POST(C.URL.RECARD.checkPwd)
Observable<HttpMessage<String>> checkPwd(@Field("vipId") Long vipId, @Query("cardNo") String @FormUrlEncoded
Observable<HttpMessage<Boolean>> checkPwd(@Field("vipId") Long vipId, @Query("cardNo") String
cardNo, @Field("pwd") String pwd); cardNo, @Field("pwd") String pwd);
@POST(C.URL.RECARD.fullVip) @POST(C.URL.RECARD.fullVip)
...@@ -393,5 +395,4 @@ interface ApiService { ...@@ -393,5 +395,4 @@ interface ApiService {
@Query("pageSize") int pageSize); @Query("pageSize") int pageSize);
} }
...@@ -16,7 +16,7 @@ import com.xingdata.zzdpos.model.Vip; ...@@ -16,7 +16,7 @@ import com.xingdata.zzdpos.model.Vip;
import com.xingdata.zzdpos.ui.dialog.LoadingDialog; import com.xingdata.zzdpos.ui.dialog.LoadingDialog;
import com.xingdata.zzdpos.ui.main.MainActivity; import com.xingdata.zzdpos.ui.main.MainActivity;
import com.xingdata.zzdpos.ui.settle.fragment.CashPayFragment; import com.xingdata.zzdpos.ui.settle.fragment.CashPayFragment;
import com.xingdata.zzdpos.ui.settle.fragment.PasswordFragment; import com.xingdata.zzdpos.ui.settle.dialog.PasswordDialog;
import com.xingdata.zzdpos.ui.settle.fragment.PayResultFragment; import com.xingdata.zzdpos.ui.settle.fragment.PayResultFragment;
import com.xingdata.zzdpos.ui.settle.fragment.SettleFragment; import com.xingdata.zzdpos.ui.settle.fragment.SettleFragment;
import com.xingdata.zzdpos.ui.settle.fragment.TicketFragment; import com.xingdata.zzdpos.ui.settle.fragment.TicketFragment;
...@@ -33,7 +33,7 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle ...@@ -33,7 +33,7 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle
private VipFragment mVipFragment = new VipFragment(); private VipFragment mVipFragment = new VipFragment();
private CashPayFragment mCashPayFragment = new CashPayFragment(); private CashPayFragment mCashPayFragment = new CashPayFragment();
private PasswordFragment mPasswordFragment = new PasswordFragment(); private PasswordDialog mPasswordDialog = new PasswordDialog();
private PayResultFragment mPayResultFragment = new PayResultFragment(); private PayResultFragment mPayResultFragment = new PayResultFragment();
private LoadingDialog mLoadingDialog = new LoadingDialog(); private LoadingDialog mLoadingDialog = new LoadingDialog();
...@@ -61,6 +61,11 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle ...@@ -61,6 +61,11 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle
}); });
} }
@Override
public void showMsg(String msg) {
mPasswordDialog.dismiss();
}
@Override @Override
public void setSettleFragmentBySettleMode(int settleMode) { public void setSettleFragmentBySettleMode(int settleMode) {
mSettleFragment.setViewBySettleMode(settleMode); mSettleFragment.setViewBySettleMode(settleMode);
...@@ -111,7 +116,6 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle ...@@ -111,7 +116,6 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle
@Override @Override
public void loadSaleorder(Saleorder saleorder) { public void loadSaleorder(Saleorder saleorder) {
mSettleFragment.loadSaleorder(saleorder); mSettleFragment.loadSaleorder(saleorder);
mCashPayFragment.loadSaleorder(saleorder);
} }
@Override @Override
...@@ -120,14 +124,14 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle ...@@ -120,14 +124,14 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle
} }
@Override @Override
public void showPayFragment(int payChannel) { public void showPayFragment(Saleorder saleorder) {
switch (payChannel) { switch (saleorder.getPayType()) {
case C.PAY_CHANNEL.CASH: case C.PAY_CHANNEL.CASH:
this.start(mCashPayFragment); this.start(mCashPayFragment.setSaleorder(saleorder));
break; break;
case C.PAY_CHANNEL.TALLY: case C.PAY_CHANNEL.TALLY:
case C.PAY_CHANNEL.CARD: case C.PAY_CHANNEL.CARD:
mPasswordFragment.show(this); mPasswordDialog.setSaleorder(saleorder).show(this);
break; break;
} }
} }
...@@ -166,6 +170,11 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle ...@@ -166,6 +170,11 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle
ActivityUtils.startActivity(this, MainActivity.class); ActivityUtils.startActivity(this, MainActivity.class);
} }
@Override
public void dismissPasswordDialog() {
}
/** /**
* 根据titleMode显示TitleBar * 根据titleMode显示TitleBar
......
...@@ -14,6 +14,13 @@ interface SettleContract { ...@@ -14,6 +14,13 @@ interface SettleContract {
interface View extends BaseView { interface View extends BaseView {
/**
* 显示信息
*
* @param msg 信息内容
*/
void showMsg(String msg);
/** /**
* 设置初始化结算页面 * 设置初始化结算页面
* *
...@@ -88,9 +95,9 @@ interface SettleContract { ...@@ -88,9 +95,9 @@ interface SettleContract {
/** /**
* 显示支付页面 * 显示支付页面
* *
* @param payChannel 支付渠道 * @param saleorder 订单信息
*/ */
void showPayFragment(int payChannel); void showPayFragment(Saleorder saleorder);
/** /**
* 改变锁定状态 * 改变锁定状态
...@@ -129,6 +136,12 @@ interface SettleContract { ...@@ -129,6 +136,12 @@ interface SettleContract {
*/ */
void backToMainActivity(); void backToMainActivity();
/**
* 关闭密码页面
*/
void dismissPasswordDialog();
} }
abstract class Presenter extends BasePresenter<View> { abstract class Presenter extends BasePresenter<View> {
......
...@@ -209,7 +209,7 @@ public class SettlePresenter extends SettleContract.Presenter { ...@@ -209,7 +209,7 @@ public class SettlePresenter extends SettleContract.Presenter {
@Override @Override
public void clickPayChannelView(int payChannel) { public void clickPayChannelView(int payChannel) {
mSaleorder.setPayType(payChannel); mSaleorder.setPayType(payChannel);
mView.showPayFragment(payChannel); mView.showPayFragment(mSaleorder);
} }
@Override @Override
...@@ -231,6 +231,13 @@ public class SettlePresenter extends SettleContract.Presenter { ...@@ -231,6 +231,13 @@ public class SettlePresenter extends SettleContract.Presenter {
@Override @Override
public void payInCard(Long cardNo, String password) { public void payInCard(Long cardNo, String password) {
ApiFactory.Recard.checkPwd(mVip.getVipId(), String.valueOf(cardNo), password).subscribe(
b -> {
mView.dismissPasswordDialog();
subscribePay(commitOrder().flatMap(orderNo -> ApiFactory.Saleorder.addOrderPayMis(mSaleorder.pay(orderNo, C.PAY_CHANNEL.CARD, String.valueOf(cardNo)))));
},
throwable -> mView.showMsg("密码错误")
);
} }
@Override @Override
......
package com.xingdata.zzdpos.ui.settle.dialog;
import android.support.annotation.Nullable;
import android.support.design.widget.BottomSheetBehavior;
import android.support.v7.widget.GridLayoutManager;
import android.view.View;
import android.widget.TextView;
import com.blankj.utilcode.util.LogUtils;
import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseAdapter;
import com.xingdata.zzdpos.base.BaseSheetDialog;
import com.xingdata.zzdpos.databinding.DialogPasswordBinding;
import com.xingdata.zzdpos.databinding.ItemPasswordBinding;
import com.xingdata.zzdpos.model.Saleorder;
import com.xingdata.zzdpos.ui.settle.SettlePresenter;
import com.xingdata.zzdpos.util.ConvertUtil;
import com.xingdata.zzdpos.util.RecyclerViewUtil;
import java.util.ArrayList;
import java.util.List;
public class PasswordDialog extends BaseSheetDialog<SettlePresenter, DialogPasswordBinding> {
private PasswordAdapter mPasswordAdapter;
private Long mPayAmt;
private int mPayType;
@Override
protected boolean isTransparentBackground() {
return true;
}
private List<Integer> mValues;
@Override
public int getLayoutId() {
return R.layout.dialog_password;
}
@Override
public void initView() {
mValues = new ArrayList<>();
for (int i = 0; i < 6; i++) {
mValues.add(-1);
}
mPasswordAdapter = new PasswordAdapter(mValues);
mViewBinding.rlPassword.setAdapter(mPasswordAdapter);
mViewBinding.rlPassword.setLayoutManager(new GridLayoutManager(mContext, 6));
mViewBinding.rlPassword.addItemDecoration(new RecyclerViewUtil.GridSpacingItemDecoration(6, mContext.getResources().getDimensionPixelOffset(R.dimen.view_line_L1), true));
mViewBinding.tvAmt.setText(ConvertUtil.fenToYuan(mPayAmt, true));
if (mPayType == C.PAY_CHANNEL.CARD)
mViewBinding.tvType.setText(R.string.settle_pay_card_hint);
if (mPayType == C.PAY_CHANNEL.TALLY)
mViewBinding.tvType.setText(R.string.settle_pay_tally_hint);
View.OnClickListener mOnClickListener = view -> {
switch (view.getId()) {
case R.id.tv_del:
delete();
break;
case R.id.tv_clear:
clear();
break;
case R.id.tv_settle:
settle();
break;
default:
if (view instanceof TextView) {
String str = ((TextView) view).getText().toString();
for (int i = 0; i < mPasswordAdapter.getData().size(); i++) {
if (mPasswordAdapter.getData().get(i) < 0) {
mPasswordAdapter.setData(i, Integer.valueOf(str));
break;
}
}
}
break;
}
LogUtils.e(mPasswordAdapter.getData());
};
mViewBinding.setOnClick(mOnClickListener);
}
/**
* 设置订单信息
*
* @param saleorder 订单信息
* @return this
*/
public PasswordDialog setSaleorder(Saleorder saleorder) {
mPayType = saleorder.getPayType();
mPayAmt = saleorder.getOrderPayAmt();
return this;
}
@Override
public void onStart() {
super.onStart();
//默认全屏展开
mBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
}
/**
* 删除
*/
private void delete() {
for (int i = mPasswordAdapter.getData().size() - 1; i >= 0; i--) {
if (mPasswordAdapter.getData().get(i) >= 0) {
mPasswordAdapter.setData(i, -1);
break;
}
}
LogUtils.e(mPasswordAdapter.getData());
}
/**
* 结账
*/
private void settle() {
StringBuilder strPassword = new StringBuilder();
for (int i = 0; i < mValues.size(); i++) {
strPassword.append(mValues.get(i));
}
if (strPassword.length() < 6) return;
mPresenter.payInCard(0L, strPassword.toString());
}
/**
* 清空
*/
private void clear() {
mValues = new ArrayList<>();
for (int i = 0; i < 6; i++) {
mValues.add(-1);
}
mPasswordAdapter.setNewData(mValues);
}
private class PasswordAdapter extends BaseAdapter<Integer, ItemPasswordBinding> {
PasswordAdapter(@Nullable List<Integer> data) {
super(R.layout.item_password, data);
}
@Override
protected void convert(ItemPasswordBinding mViewBinding, Integer item) {
mViewBinding.setCount(item);
}
}
}
...@@ -31,13 +31,15 @@ public class CashPayFragment extends BaseFragment<SettlePresenter, FragmentPayCa ...@@ -31,13 +31,15 @@ public class CashPayFragment extends BaseFragment<SettlePresenter, FragmentPayCa
} }
/** /**
* 加载订单信息 * 设置订单信息
* *
* @param saleorder 订单信息 * @param saleorder 订单信息
* @return this
*/ */
public void loadSaleorder(Saleorder saleorder) { public CashPayFragment setSaleorder(Saleorder saleorder) {
this.mOrderAmt = saleorder.getOrderPayAmt(); this.mOrderAmt = saleorder.getOrderPayAmt();
this.mInputerView.setValue(ConvertUtil.fenToYuan(saleorder.getOrderPayAmt())); this.mInputerView.setValue(ConvertUtil.fenToYuan(saleorder.getOrderPayAmt()));
return this;
} }
/** /**
......
package com.xingdata.zzdpos.ui.settle.fragment;
import com.blankj.utilcode.util.FragmentUtils;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseSheetDialog;
import com.xingdata.zzdpos.databinding.DialogPasswordBinding;
import com.xingdata.zzdpos.ui.settle.SettlePresenter;
import com.xingdata.zzdpos.ui.settle.view.InputerView;
public class PasswordFragment extends BaseSheetDialog<SettlePresenter, DialogPasswordBinding> {
private InputerView<SettlePresenter> mInputerView = new InputerView<>();
@Override
protected boolean isTransparentBackground() {
return true;
}
@Override
public int getLayoutId() {
return R.layout.dialog_password;
}
@Override
public void initView() {
FragmentUtils.add(getFragmentManager(), mInputerView, R.id.f_inputer);
}
}
package com.xingdata.zzdpos.ui.store.dialog; package com.xingdata.zzdpos.ui.store.dialog;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.support.design.widget.BottomSheetBehavior;
import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.LinearLayoutManager;
import com.xingdata.zzdpos.R; import com.xingdata.zzdpos.R;
...@@ -64,6 +65,13 @@ public class CartDialog extends BaseSheetDialog<StorePresenter, DialogStoreCartB ...@@ -64,6 +65,13 @@ public class CartDialog extends BaseSheetDialog<StorePresenter, DialogStoreCartB
mViewBinding.tvClear.setOnClickListener(view -> mPresenter.clearCart()); mViewBinding.tvClear.setOnClickListener(view -> mPresenter.clearCart());
} }
@Override
public void onStart() {
super.onStart();
//默认全屏展开
mBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
}
/** /**
* 加载订单信息 * 加载订单信息
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/transparent" />
</shape>
\ No newline at end of file
This diff is collapsed.
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/all_line_width" android:layout_height="@dimen/all_line_width"
android:layout_marginTop="@dimen/all_margin" android:layout_marginTop="@dimen/all_spacing"
android:background="@color/gray_huanggai" /> android:background="@color/gray_huanggai" />
<android.support.constraint.ConstraintLayout <android.support.constraint.ConstraintLayout
......
<?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>
<variable
name="count"
type="int" />
</data>
<LinearLayout
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@color/white_caocao">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text='@{count&lt;0 ?"":@string/password}'
android:textColor="@color/black_baozheng"
android:textSize="@dimen/all_title_size" />
</LinearLayout>
</layout>
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
<string name="all_yes"></string> <string name="all_yes"></string>
<string name="visible">visible</string> <string name="visible">visible</string>
<string name="gone">gone</string> <string name="gone">gone</string>
<string name="password">*</string>
<!--返回--> <!--返回-->
<string name="all_go_back">返回</string> <string name="all_go_back">返回</string>
...@@ -523,6 +524,8 @@ ...@@ -523,6 +524,8 @@
<string name="settle_balance">账户余额</string> <string name="settle_balance">账户余额</string>
<string name="settle_saledetail_hint">商品详情</string> <string name="settle_saledetail_hint">商品详情</string>
<string name="settle_dis_hint">优惠项目</string> <string name="settle_dis_hint">优惠项目</string>
<string name="settle_pay_card_hint">会员账户支付</string>
<string name="settle_pay_tally_hint">本次赊账金额</string>
<!--支付里的Vip--> <!--支付里的Vip-->
<string name="settle_vip_search_hint">请输入会员手机号</string> <string name="settle_vip_search_hint">请输入会员手机号</string>
......
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