Commit 896475ed authored by zhang_z's avatar zhang_z

密码;

parent b9c53427
......@@ -458,7 +458,7 @@ public final class ApiFactory {
public static Observable<Pager<Trule>> truleQuery() {
return Api.getInstance().service.truleQuery(System.currentTimeMillis() + "")
.onErrorReturn(new
ErrorFilter<>()).map(new ResultFilter<>()).subscribeOn(Schedulers.io())
ErrorFilter<>()).map(new ResultFilter<>()).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.retryWhen(new RetryHelper(3));
}
......@@ -753,7 +753,7 @@ public final class ApiFactory {
public static class Sta {
/**
/**
* /**
* 查询统计详情
*/
public static Observable<com.xingdata.zzdpos.model.Sta> querySta() {
......@@ -871,8 +871,8 @@ public final class ApiFactory {
.retryWhen(new RetryHelper(3));
}
public static Observable<Pager<Vip>> getVipList(int pageNumber,String vipLevel) {
return Api.getInstance().service.getVipList(vipLevel,pageNumber, 12)
public static Observable<Pager<Vip>> getVipList(int pageNumber, String vipLevel) {
return Api.getInstance().service.getVipList(vipLevel, pageNumber, 12)
.onErrorReturn(new ErrorFilter<>())
.map(new ResultFilter<>())
.subscribeOn(Schedulers.io())
......@@ -911,8 +911,7 @@ public final class ApiFactory {
}
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)
.onErrorReturn(new ErrorFilter<>())
.map(new ResultFilter<>())
......
......@@ -39,6 +39,7 @@ import io.reactivex.Observable;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;
import retrofit2.http.Query;
......@@ -244,7 +245,8 @@ interface ApiService {
Observable<HttpMessage<Vip>> detailUser(@Query("wd") String keyword);
@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);
@POST(C.URL.RECARD.fullVip)
......@@ -389,5 +391,4 @@ interface ApiService {
@Query("pageSize") int pageSize);
}
......@@ -16,7 +16,7 @@ import com.xingdata.zzdpos.model.Vip;
import com.xingdata.zzdpos.ui.dialog.LoadingDialog;
import com.xingdata.zzdpos.ui.main.MainActivity;
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.SettleFragment;
import com.xingdata.zzdpos.ui.settle.fragment.TicketFragment;
......@@ -33,7 +33,7 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle
private VipFragment mVipFragment = new VipFragment();
private CashPayFragment mCashPayFragment = new CashPayFragment();
private PasswordFragment mPasswordFragment = new PasswordFragment();
private PasswordDialog mPasswordDialog = new PasswordDialog();
private PayResultFragment mPayResultFragment = new PayResultFragment();
private LoadingDialog mLoadingDialog = new LoadingDialog();
......@@ -61,6 +61,11 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle
});
}
@Override
public void showMsg(String msg) {
mPasswordDialog.dismiss();
}
@Override
public void setSettleFragmentBySettleMode(int settleMode) {
mSettleFragment.setViewBySettleMode(settleMode);
......@@ -111,7 +116,6 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle
@Override
public void loadSaleorder(Saleorder saleorder) {
mSettleFragment.loadSaleorder(saleorder);
mCashPayFragment.loadSaleorder(saleorder);
}
@Override
......@@ -120,14 +124,14 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle
}
@Override
public void showPayFragment(int payChannel) {
switch (payChannel) {
public void showPayFragment(Saleorder saleorder) {
switch (saleorder.getPayType()) {
case C.PAY_CHANNEL.CASH:
this.start(mCashPayFragment);
this.start(mCashPayFragment.setSaleorder(saleorder));
break;
case C.PAY_CHANNEL.TALLY:
case C.PAY_CHANNEL.CARD:
mPasswordFragment.show(this);
mPasswordDialog.setSaleorder(saleorder).show(this);
break;
}
}
......@@ -166,6 +170,11 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle
ActivityUtils.startActivity(this, MainActivity.class);
}
@Override
public void dismissPasswordDialog() {
}
/**
* 根据titleMode显示TitleBar
......
......@@ -14,6 +14,13 @@ interface SettleContract {
interface View extends BaseView {
/**
* 显示信息
*
* @param msg 信息内容
*/
void showMsg(String msg);
/**
* 设置初始化结算页面
*
......@@ -88,9 +95,9 @@ interface SettleContract {
/**
* 显示支付页面
*
* @param payChannel 支付渠道
* @param saleorder 订单信息
*/
void showPayFragment(int payChannel);
void showPayFragment(Saleorder saleorder);
/**
* 改变锁定状态
......@@ -129,6 +136,12 @@ interface SettleContract {
*/
void backToMainActivity();
/**
* 关闭密码页面
*/
void dismissPasswordDialog();
}
abstract class Presenter extends BasePresenter<View> {
......
......@@ -209,7 +209,7 @@ public class SettlePresenter extends SettleContract.Presenter {
@Override
public void clickPayChannelView(int payChannel) {
mSaleorder.setPayType(payChannel);
mView.showPayFragment(payChannel);
mView.showPayFragment(mSaleorder);
}
@Override
......@@ -231,6 +231,13 @@ public class SettlePresenter extends SettleContract.Presenter {
@Override
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
......
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);
}
/**
* 设置订单信息
*
* @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);
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);
}
/**
* 删除
*/
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
}
/**
* 加载订单信息
* 设置订单信息
*
* @param saleorder 订单信息
* @return this
*/
public void loadSaleorder(Saleorder saleorder) {
public CashPayFragment setSaleorder(Saleorder saleorder) {
this.mOrderAmt = 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);
}
}
This diff is collapsed.
......@@ -74,7 +74,7 @@
<View
android:layout_width="match_parent"
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.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 @@
<string name="all_yes"></string>
<string name="visible">visible</string>
<string name="gone">gone</string>
<string name="password">*</string>
<!--返回-->
<string name="all_go_back">返回</string>
......@@ -523,6 +524,8 @@
<string name="settle_balance">账户余额</string>
<string name="settle_saledetail_hint">商品详情</string>
<string name="settle_dis_hint">优惠项目</string>
<string name="settle_pay_card_hint">会员账户支付</string>
<string name="settle_pay_tally_hint">本次赊账金额</string>
<!--支付里的Vip-->
<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