Commit cbe7ff36 authored by 陈前's avatar 陈前

Merge remote-tracking branch 'origin/master'

parents 806d55ce 0b8f325d
......@@ -288,6 +288,7 @@ public class C {
public static final String addOrderMis = ROOT_URL + "addOrderMis";
public static final String addOrderPayMis = ROOT_URL + "addOrderPayMis";
public static final String querySaleorderByVipId = ROOT_URL + "query";
public static final String addRemark = ROOT_URL + "update";
}
public final class PAY {
......
......@@ -476,11 +476,14 @@ public final class ApiFactory {
return run(Api.getInstance().service.addOrderMis(saleorderParam));
}
public static Observable<com.xingdata.zzdpos.model.Saleorder> addOrderPayMis(com.xingdata
.zzdpos.model.Saleorder.Pay saleorderPay) {
public static Observable<com.xingdata.zzdpos.model.Saleorder> addOrderPayMis(com.xingdata.zzdpos.model.Saleorder.Pay saleorderPay) {
return run(Api.getInstance().service.addOrderPayMis(saleorderPay));
}
public static Observable<String> addRemark(String orderNo, String remark) {
return run(Api.getInstance().service.addRemark(orderNo, remark));
}
public static Observable<Pager<com.xingdata.zzdpos.model.Saleorder>>
querySaleorderByVipId(Long vipId, int pageNumber, int pageSize) {
return run(Api.getInstance().service.querySaleorderByVipId(vipId, pageNumber,
......@@ -605,6 +608,7 @@ public final class ApiFactory {
.observeOn(AndroidSchedulers.mainThread());
}
}
public static class CsDetail {
/**
* 添加库存盘点详情
......
......@@ -284,6 +284,8 @@ interface ApiService {
("pageSize") int
pageSize);
@POST(C.URL.SALEORDER.addRemark)
Observable<HttpMessage<String>> addRemark(@Query("orderNo") String orderNo, @Query("orderDesc1") String remark);
@POST(C.URL.USER.query)
Observable<HttpMessage<Pager<Vip>>> queryDetailByWD(@Query("wd") String keyword, @Query
......
......@@ -140,4 +140,13 @@ public abstract class BaseActivity<P extends BasePresenter, B extends ViewDataBi
}
super.onResume();
}
@Override
public void pop() {
if (getSupportFragmentManager().getFragments().size() > 1) {
super.pop();
} else {
finish();
}
}
}
......@@ -27,7 +27,7 @@ public class Ms extends RealmObject implements BaseModel, BaseBean {
* @return 是否可用
*/
public boolean isAvailable(Vip vip) {
return checkMsByDate() && checkMsByWeek() && checkMsByTime() && checkMsByVip(vip);
return checkMsByStatus() && checkMsByDate() && checkMsByWeek() && checkMsByTime() && checkMsByVip(vip);
}
public interface OnApplyListener {
......@@ -105,6 +105,15 @@ public class Ms extends RealmObject implements BaseModel, BaseBean {
}
}
/**
* 验证启动状态
*
* @return 是否通过验证
*/
private boolean checkMsByStatus() {
return msStatus == null || msStatus == 0;
}
/**
* 验证日期
......
......@@ -119,7 +119,7 @@ public class LoginPresenter extends LoginContract.Presenter {
@Override
public void downList(View view, int flag, LoadingDialog loadingDialog) {
Realm realm = DBFactory.getRealm();
RealmResults<Oper> opers = realm.where(Oper.class).findAll();
RealmResults<Oper> opers = realm.where(Oper.class).equalTo("operStatus", "0").findAll();
mView.openDownList(view, opers, flag);
}
......
......@@ -3,6 +3,7 @@ package com.xingdata.zzdpos.ui.settle;
import android.view.MotionEvent;
import com.blankj.utilcode.util.ActivityUtils;
import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.R;
......@@ -184,6 +185,9 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle
@Override
public void showPayFailFragment(Throwable throwable, Saleorder saleorder) {
if (throwable != null) {
LogUtils.e(throwable.getMessage());
}
this.start(mPayResultFragment.setResult(false).setSaleorder(saleorder));
this.showTitleBarByTitleMode(C.TITLE_MODE.TEXT);
mViewBinding.tvTitle.setText(R.string.settle_pay_result_title);
......
......@@ -265,11 +265,13 @@ public class SettlePresenter extends SettleContract.Presenter {
break;
default:
//支付失败
subscribeRemark(ApiFactory.Saleorder.addRemark(mSaleorder.getOrderNo(), response.getMsg()));
mView.showPayFailFragment(null, mSaleorder);
break;
}
},
throwable -> {
subscribeRemark(ApiFactory.Saleorder.addRemark(mSaleorder.getOrderNo(), throwable.getMessage()));
mView.showPayFailFragment(throwable, mSaleorder);
}
);
......@@ -321,11 +323,13 @@ public class SettlePresenter extends SettleContract.Presenter {
break;
default:
//支付失败
subscribeRemark(ApiFactory.Saleorder.addRemark(mSaleorder.getOrderNo(), response.getMsg()));
mView.showPayFailFragment(null, mSaleorder);
break;
}
},
throwable -> {
subscribeRemark(ApiFactory.Saleorder.addRemark(mSaleorder.getOrderNo(), throwable.getMessage()));
mView.showPayFailFragment(throwable, mSaleorder);
}
);
......@@ -396,7 +400,7 @@ public class SettlePresenter extends SettleContract.Presenter {
// }
// },
// throwable -> mView.showPayFailFragment(throwable, mSaleorder));
PayCenter.getInstance().query()
PayCenter.getInstance().query(payType)
.doFinally(() -> mView.dismissLoadingDialog())
.subscribe(response -> {
switch (response.getCode()) {
......@@ -410,9 +414,14 @@ public class SettlePresenter extends SettleContract.Presenter {
break;
default:
//支付失败
subscribeRemark(ApiFactory.Saleorder.addRemark(mSaleorder.getOrderNo(), response.getMsg()));
mView.showPayFailFragment(null, mSaleorder);
break;
}
}, throwable -> {
//支付失败
subscribeRemark(ApiFactory.Saleorder.addRemark(mSaleorder.getOrderNo(), throwable.getMessage()));
mView.showPayFailFragment(throwable, mSaleorder);
});
}
......@@ -455,6 +464,20 @@ public class SettlePresenter extends SettleContract.Presenter {
.subscribe(this::paySucc, this::payFail);
}
/**
* 订阅支付
*
* @param observable 数据源
*/
private void subscribeRemark(Observable<String> observable) {
mView.showLoadingDialog();
observable.doFinally(() -> mView.dismissLoadingDialog())
.subscribe(s -> {
}, throwable -> {
});
}
/**
* 提交订单
*/
......
......@@ -29,7 +29,7 @@ public final class SystemUtil {
*/
public static String getDeviceModel() {
// return DeviceUtils.getModel();
return "X990";
return "AECRC10";
}
......@@ -57,7 +57,7 @@ public final class SystemUtil {
e.printStackTrace();
}
}
return "test2019";
return "test2018";
// return deviceSN;
}
......
......@@ -68,10 +68,10 @@ public class PayCenter {
*
* @return 查询结果的Observable
*/
public Observable<Response> query() {
public Observable<Response> query(int payChannel) {
switch (mShopppp.getHost().getHostMapId()) {
case C.HOST.PAX:
return Factory.query();
return Factory.query(payChannel);
default:
return Observable.just(new Response(C.PAY_STATE.FAIL_CUSTOM, "未知渠道"));
}
......
package com.xingdata.zxpay.api;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
public class Factory {
protected static <T> Observable<T> run(Observable<T> observable) {
return observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
}
package com.xingdata.zxpay.api;
import com.blankj.utilcode.util.LogUtils;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.ObservableSource;
import io.reactivex.functions.Function;
public class RetryHelper implements Function<Observable<Throwable>, ObservableSource<?>> {
private int retryCount;
private int retryTime;
private int nowCount = 0;
public RetryHelper(int retryCount, int retryTime) {
this.retryCount = retryCount;
this.retryTime = retryTime;
}
@Override
public ObservableSource<?> apply(Observable<Throwable> throwableObservable) throws Exception {
return throwableObservable.flatMap((Function<Throwable, ObservableSource<?>>) throwable -> {
if (throwable instanceof IOException) {
if (++nowCount <= retryCount) {
LogUtils.e("重试时间:" + retryTime + "重试:" + nowCount);
return Observable.timer(retryTime, TimeUnit.MILLISECONDS);
}
return Observable.error(new IOException("支付超时"));
} else {
return Observable.error(throwable);
}
});
}
}
......@@ -6,6 +6,16 @@ class C {
*/
static final String VERSION = "V1.0";
/**
* 重试次数
*/
static final int RETRY_COUNT = 6;
/**
* 重试延迟时间
*/
static final int RETRY_DELAY_TIME = 5 * 1000;
/**
* 测试数据
*/
......
......@@ -5,17 +5,26 @@ import android.util.SparseArray;
import com.blankj.utilcode.util.TimeUtils;
import com.xingdata.zxpay.PayCenter;
import com.xingdata.zxpay.api.RetryHelper;
import java.text.SimpleDateFormat;
import java.util.Locale;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
public class Factory extends com.xingdata.zxpay.api.Factory {
private static SimpleDateFormat format = new SimpleDateFormat("yyyymmddhhmmss", Locale.getDefault());
private static SparseArray<String> orderMap = new SparseArray<>();
public static <T> Observable<T> run(Observable<T> observable) {
return observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.retryWhen(new RetryHelper(C.RETRY_COUNT, C.RETRY_DELAY_TIME));
}
/**
* 条码支付
*
......@@ -86,10 +95,21 @@ public class Factory extends com.xingdata.zxpay.api.Factory {
*
* @return 查询结果
*/
public static Observable<com.xingdata.zxpay.api.Response> query() {
public static Observable<com.xingdata.zxpay.api.Response> query(int payChannel) {
Request request = Request.create(C.METHOD.QUERY);
request.setOutTransactionNo(PayCenter.getInstance().mShopppp.getPosppp().getHposTrace());
request.setTimeStart(orderMap.get(request.getOutTransactionNo()));
switch (payChannel) {
case com.xingdata.zxpay.C.PAY_CHANNEL.ALI:
request.setKey(PayCenter.getInstance().mShopppp.getHshopKeyAlipay());
break;
case com.xingdata.zxpay.C.PAY_CHANNEL.WECHAT:
request.setKey(PayCenter.getInstance().mShopppp.getHshopKeyWechat());
break;
case com.xingdata.zxpay.C.PAY_CHANNEL.BANK:
request.setKey(PayCenter.getInstance().mShopppp.getHshopKeyUnipay());
break;
}
request.sign();
return run(Api.getInstance().service.action(request))
.map(new ResultFilter());
......
......@@ -43,7 +43,7 @@ class Response {
return method;
}
void setMethod(String method) {
public void setMethod(String method) {
this.method = method;
}
......@@ -51,7 +51,7 @@ class Response {
return agentId;
}
void setAgentId(String agentId) {
public void setAgentId(String agentId) {
this.agentId = agentId;
}
......@@ -59,7 +59,7 @@ class Response {
return mchId;
}
void setMchId(String mchId) {
public void setMchId(String mchId) {
this.mchId = mchId;
}
......@@ -67,7 +67,7 @@ class Response {
return code;
}
void setCode(String code) {
public void setCode(String code) {
this.code = code;
}
......@@ -75,7 +75,7 @@ class Response {
return msg;
}
void setMsg(String msg) {
public void setMsg(String msg) {
this.msg = msg;
}
......@@ -83,7 +83,7 @@ class Response {
return codeUrl;
}
void setCodeUrl(String codeUrl) {
public void setCodeUrl(String codeUrl) {
this.codeUrl = codeUrl;
}
}
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