Commit cbe7ff36 authored by 陈前's avatar 陈前

Merge remote-tracking branch 'origin/master'

parents 806d55ce 0b8f325d
...@@ -288,6 +288,7 @@ public class C { ...@@ -288,6 +288,7 @@ public class C {
public static final String addOrderMis = ROOT_URL + "addOrderMis"; public static final String addOrderMis = ROOT_URL + "addOrderMis";
public static final String addOrderPayMis = ROOT_URL + "addOrderPayMis"; public static final String addOrderPayMis = ROOT_URL + "addOrderPayMis";
public static final String querySaleorderByVipId = ROOT_URL + "query"; public static final String querySaleorderByVipId = ROOT_URL + "query";
public static final String addRemark = ROOT_URL + "update";
} }
public final class PAY { public final class PAY {
......
...@@ -476,11 +476,14 @@ public final class ApiFactory { ...@@ -476,11 +476,14 @@ public final class ApiFactory {
return run(Api.getInstance().service.addOrderMis(saleorderParam)); return run(Api.getInstance().service.addOrderMis(saleorderParam));
} }
public static Observable<com.xingdata.zzdpos.model.Saleorder> addOrderPayMis(com.xingdata public static Observable<com.xingdata.zzdpos.model.Saleorder> addOrderPayMis(com.xingdata.zzdpos.model.Saleorder.Pay saleorderPay) {
.zzdpos.model.Saleorder.Pay saleorderPay) {
return run(Api.getInstance().service.addOrderPayMis(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>> public static Observable<Pager<com.xingdata.zzdpos.model.Saleorder>>
querySaleorderByVipId(Long vipId, int pageNumber, int pageSize) { querySaleorderByVipId(Long vipId, int pageNumber, int pageSize) {
return run(Api.getInstance().service.querySaleorderByVipId(vipId, pageNumber, return run(Api.getInstance().service.querySaleorderByVipId(vipId, pageNumber,
...@@ -605,6 +608,7 @@ public final class ApiFactory { ...@@ -605,6 +608,7 @@ public final class ApiFactory {
.observeOn(AndroidSchedulers.mainThread()); .observeOn(AndroidSchedulers.mainThread());
} }
} }
public static class CsDetail { public static class CsDetail {
/** /**
* 添加库存盘点详情 * 添加库存盘点详情
......
...@@ -284,6 +284,8 @@ interface ApiService { ...@@ -284,6 +284,8 @@ interface ApiService {
("pageSize") int ("pageSize") int
pageSize); pageSize);
@POST(C.URL.SALEORDER.addRemark)
Observable<HttpMessage<String>> addRemark(@Query("orderNo") String orderNo, @Query("orderDesc1") String remark);
@POST(C.URL.USER.query) @POST(C.URL.USER.query)
Observable<HttpMessage<Pager<Vip>>> queryDetailByWD(@Query("wd") String keyword, @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 ...@@ -140,4 +140,13 @@ public abstract class BaseActivity<P extends BasePresenter, B extends ViewDataBi
} }
super.onResume(); 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 { ...@@ -27,7 +27,7 @@ public class Ms extends RealmObject implements BaseModel, BaseBean {
* @return 是否可用 * @return 是否可用
*/ */
public boolean isAvailable(Vip vip) { public boolean isAvailable(Vip vip) {
return checkMsByDate() && checkMsByWeek() && checkMsByTime() && checkMsByVip(vip); return checkMsByStatus() && checkMsByDate() && checkMsByWeek() && checkMsByTime() && checkMsByVip(vip);
} }
public interface OnApplyListener { public interface OnApplyListener {
...@@ -105,6 +105,15 @@ public class Ms extends RealmObject implements BaseModel, BaseBean { ...@@ -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 { ...@@ -119,7 +119,7 @@ public class LoginPresenter extends LoginContract.Presenter {
@Override @Override
public void downList(View view, int flag, LoadingDialog loadingDialog) { public void downList(View view, int flag, LoadingDialog loadingDialog) {
Realm realm = DBFactory.getRealm(); 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); mView.openDownList(view, opers, flag);
} }
......
...@@ -3,6 +3,7 @@ package com.xingdata.zzdpos.ui.settle; ...@@ -3,6 +3,7 @@ package com.xingdata.zzdpos.ui.settle;
import android.view.MotionEvent; import android.view.MotionEvent;
import com.blankj.utilcode.util.ActivityUtils; import com.blankj.utilcode.util.ActivityUtils;
import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.ToastUtils; import com.blankj.utilcode.util.ToastUtils;
import com.xingdata.zzdpos.C; import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.R; import com.xingdata.zzdpos.R;
...@@ -184,6 +185,9 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle ...@@ -184,6 +185,9 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle
@Override @Override
public void showPayFailFragment(Throwable throwable, Saleorder saleorder) { public void showPayFailFragment(Throwable throwable, Saleorder saleorder) {
if (throwable != null) {
LogUtils.e(throwable.getMessage());
}
this.start(mPayResultFragment.setResult(false).setSaleorder(saleorder)); this.start(mPayResultFragment.setResult(false).setSaleorder(saleorder));
this.showTitleBarByTitleMode(C.TITLE_MODE.TEXT); this.showTitleBarByTitleMode(C.TITLE_MODE.TEXT);
mViewBinding.tvTitle.setText(R.string.settle_pay_result_title); mViewBinding.tvTitle.setText(R.string.settle_pay_result_title);
......
...@@ -265,11 +265,13 @@ public class SettlePresenter extends SettleContract.Presenter { ...@@ -265,11 +265,13 @@ public class SettlePresenter extends SettleContract.Presenter {
break; break;
default: default:
//支付失败 //支付失败
subscribeRemark(ApiFactory.Saleorder.addRemark(mSaleorder.getOrderNo(), response.getMsg()));
mView.showPayFailFragment(null, mSaleorder); mView.showPayFailFragment(null, mSaleorder);
break; break;
} }
}, },
throwable -> { throwable -> {
subscribeRemark(ApiFactory.Saleorder.addRemark(mSaleorder.getOrderNo(), throwable.getMessage()));
mView.showPayFailFragment(throwable, mSaleorder); mView.showPayFailFragment(throwable, mSaleorder);
} }
); );
...@@ -321,11 +323,13 @@ public class SettlePresenter extends SettleContract.Presenter { ...@@ -321,11 +323,13 @@ public class SettlePresenter extends SettleContract.Presenter {
break; break;
default: default:
//支付失败 //支付失败
subscribeRemark(ApiFactory.Saleorder.addRemark(mSaleorder.getOrderNo(), response.getMsg()));
mView.showPayFailFragment(null, mSaleorder); mView.showPayFailFragment(null, mSaleorder);
break; break;
} }
}, },
throwable -> { throwable -> {
subscribeRemark(ApiFactory.Saleorder.addRemark(mSaleorder.getOrderNo(), throwable.getMessage()));
mView.showPayFailFragment(throwable, mSaleorder); mView.showPayFailFragment(throwable, mSaleorder);
} }
); );
...@@ -396,7 +400,7 @@ public class SettlePresenter extends SettleContract.Presenter { ...@@ -396,7 +400,7 @@ public class SettlePresenter extends SettleContract.Presenter {
// } // }
// }, // },
// throwable -> mView.showPayFailFragment(throwable, mSaleorder)); // throwable -> mView.showPayFailFragment(throwable, mSaleorder));
PayCenter.getInstance().query() PayCenter.getInstance().query(payType)
.doFinally(() -> mView.dismissLoadingDialog()) .doFinally(() -> mView.dismissLoadingDialog())
.subscribe(response -> { .subscribe(response -> {
switch (response.getCode()) { switch (response.getCode()) {
...@@ -410,9 +414,14 @@ public class SettlePresenter extends SettleContract.Presenter { ...@@ -410,9 +414,14 @@ public class SettlePresenter extends SettleContract.Presenter {
break; break;
default: default:
//支付失败 //支付失败
subscribeRemark(ApiFactory.Saleorder.addRemark(mSaleorder.getOrderNo(), response.getMsg()));
mView.showPayFailFragment(null, mSaleorder); mView.showPayFailFragment(null, mSaleorder);
break; break;
} }
}, throwable -> {
//支付失败
subscribeRemark(ApiFactory.Saleorder.addRemark(mSaleorder.getOrderNo(), throwable.getMessage()));
mView.showPayFailFragment(throwable, mSaleorder);
}); });
} }
...@@ -455,6 +464,20 @@ public class SettlePresenter extends SettleContract.Presenter { ...@@ -455,6 +464,20 @@ public class SettlePresenter extends SettleContract.Presenter {
.subscribe(this::paySucc, this::payFail); .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 { ...@@ -29,7 +29,7 @@ public final class SystemUtil {
*/ */
public static String getDeviceModel() { public static String getDeviceModel() {
// return DeviceUtils.getModel(); // return DeviceUtils.getModel();
return "X990"; return "AECRC10";
} }
...@@ -57,7 +57,7 @@ public final class SystemUtil { ...@@ -57,7 +57,7 @@ public final class SystemUtil {
e.printStackTrace(); e.printStackTrace();
} }
} }
return "test2019"; return "test2018";
// return deviceSN; // return deviceSN;
} }
......
...@@ -68,10 +68,10 @@ public class PayCenter { ...@@ -68,10 +68,10 @@ public class PayCenter {
* *
* @return 查询结果的Observable * @return 查询结果的Observable
*/ */
public Observable<Response> query() { public Observable<Response> query(int payChannel) {
switch (mShopppp.getHost().getHostMapId()) { switch (mShopppp.getHost().getHostMapId()) {
case C.HOST.PAX: case C.HOST.PAX:
return Factory.query(); return Factory.query(payChannel);
default: default:
return Observable.just(new Response(C.PAY_STATE.FAIL_CUSTOM, "未知渠道")); return Observable.just(new Response(C.PAY_STATE.FAIL_CUSTOM, "未知渠道"));
} }
......
package com.xingdata.zxpay.api; package com.xingdata.zxpay.api;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
public class Factory { 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 { ...@@ -6,6 +6,16 @@ class C {
*/ */
static final String VERSION = "V1.0"; 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; ...@@ -5,17 +5,26 @@ import android.util.SparseArray;
import com.blankj.utilcode.util.TimeUtils; import com.blankj.utilcode.util.TimeUtils;
import com.xingdata.zxpay.PayCenter; import com.xingdata.zxpay.PayCenter;
import com.xingdata.zxpay.api.RetryHelper;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Locale; import java.util.Locale;
import io.reactivex.Observable; import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
public class Factory extends com.xingdata.zxpay.api.Factory { public class Factory extends com.xingdata.zxpay.api.Factory {
private static SimpleDateFormat format = new SimpleDateFormat("yyyymmddhhmmss", Locale.getDefault()); private static SimpleDateFormat format = new SimpleDateFormat("yyyymmddhhmmss", Locale.getDefault());
private static SparseArray<String> orderMap = new SparseArray<>(); 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 { ...@@ -86,10 +95,21 @@ public class Factory extends com.xingdata.zxpay.api.Factory {
* *
* @return 查询结果 * @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 request = Request.create(C.METHOD.QUERY);
request.setOutTransactionNo(PayCenter.getInstance().mShopppp.getPosppp().getHposTrace()); request.setOutTransactionNo(PayCenter.getInstance().mShopppp.getPosppp().getHposTrace());
request.setTimeStart(orderMap.get(request.getOutTransactionNo())); 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(); request.sign();
return run(Api.getInstance().service.action(request)) return run(Api.getInstance().service.action(request))
.map(new ResultFilter()); .map(new ResultFilter());
......
...@@ -43,7 +43,7 @@ class Response { ...@@ -43,7 +43,7 @@ class Response {
return method; return method;
} }
void setMethod(String method) { public void setMethod(String method) {
this.method = method; this.method = method;
} }
...@@ -51,7 +51,7 @@ class Response { ...@@ -51,7 +51,7 @@ class Response {
return agentId; return agentId;
} }
void setAgentId(String agentId) { public void setAgentId(String agentId) {
this.agentId = agentId; this.agentId = agentId;
} }
...@@ -59,7 +59,7 @@ class Response { ...@@ -59,7 +59,7 @@ class Response {
return mchId; return mchId;
} }
void setMchId(String mchId) { public void setMchId(String mchId) {
this.mchId = mchId; this.mchId = mchId;
} }
...@@ -67,7 +67,7 @@ class Response { ...@@ -67,7 +67,7 @@ class Response {
return code; return code;
} }
void setCode(String code) { public void setCode(String code) {
this.code = code; this.code = code;
} }
...@@ -75,7 +75,7 @@ class Response { ...@@ -75,7 +75,7 @@ class Response {
return msg; return msg;
} }
void setMsg(String msg) { public void setMsg(String msg) {
this.msg = msg; this.msg = msg;
} }
...@@ -83,7 +83,7 @@ class Response { ...@@ -83,7 +83,7 @@ class Response {
return codeUrl; return codeUrl;
} }
void setCodeUrl(String codeUrl) { public void setCodeUrl(String codeUrl) {
this.codeUrl = 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