Commit b01803d9 by 宁斌

1、添加部分會員優惠券邏輯

parent f699e909
package com.gingersoft.gsa.cloud.table.mvp.model.bean;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
import java.io.File;
......@@ -16,7 +18,7 @@ import lombok.Setter;
*/
@Getter
@Setter
public class SoldoutCtrFood {
public class SoldoutCtrFood implements Parcelable {
private long id;
private int restaurantId;
......@@ -100,4 +102,55 @@ public class SoldoutCtrFood {
}
return "";
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeLong(this.id);
dest.writeInt(this.restaurantId);
dest.writeLong(this.brandId);
dest.writeValue(this.foodId);
dest.writeValue(this.modifierId);
dest.writeByte(this.type);
dest.writeInt(this.remainingNumber);
dest.writeInt(this.useNumber);
dest.writeString(this.foodName);
dest.writeString(this.foodName1);
dest.writeString(this.foodName2);
dest.writeByte(this.isStop ? (byte) 1 : (byte) 0);
dest.writeInt(this.selected);
}
protected SoldoutCtrFood(Parcel in) {
this.id = in.readLong();
this.restaurantId = in.readInt();
this.brandId = in.readLong();
this.foodId = (Long) in.readValue(Long.class.getClassLoader());
this.modifierId = (Long) in.readValue(Long.class.getClassLoader());
this.type = in.readByte();
this.remainingNumber = in.readInt();
this.useNumber = in.readInt();
this.foodName = in.readString();
this.foodName1 = in.readString();
this.foodName2 = in.readString();
this.isStop = in.readByte() != 0;
this.selected = in.readInt();
}
public static final Creator<SoldoutCtrFood> CREATOR = new Creator<SoldoutCtrFood>() {
@Override
public SoldoutCtrFood createFromParcel(Parcel source) {
return new SoldoutCtrFood(source);
}
@Override
public SoldoutCtrFood[] newArray(int size) {
return new SoldoutCtrFood[size];
}
};
}
package com.gingersoft.gsa.cloud.table.mvp.model.bean.event;
import android.os.Parcel;
import android.os.Parcelable;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
......@@ -13,11 +17,47 @@ import lombok.Data;
* @描述:
*/
@Data
public class LoadFineEvent {
public class LoadFineEvent implements Parcelable {
private int currFinePage;
private long productId;
private int selectedMode;
private List<SoldoutCtrFood> soldoutCtrFoods;
public LoadFineEvent(){
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(this.currFinePage);
dest.writeLong(this.productId);
dest.writeInt(this.selectedMode);
dest.writeList(this.soldoutCtrFoods);
}
public LoadFineEvent(Parcel in) {
this.currFinePage = in.readInt();
this.productId = in.readLong();
this.selectedMode = in.readInt();
this.soldoutCtrFoods = new ArrayList<SoldoutCtrFood>();
in.readList(this.soldoutCtrFoods, SoldoutCtrFood.class.getClassLoader());
}
public static final Creator<LoadFineEvent> CREATOR = new Creator<LoadFineEvent>() {
@Override
public LoadFineEvent createFromParcel(Parcel source) {
return new LoadFineEvent(source);
}
@Override
public LoadFineEvent[] newArray(int size) {
return new LoadFineEvent[size];
}
};
}
......@@ -1144,7 +1144,7 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
orderItem.setPrice(item.getUnit_price());
orderItem.setCost(item.getCost());
orderItem.setType(item.getType());
orderItem.setPrintSetIng(item.getPrintseting());
orderItem.setPrintSetIng(item.getPrintSeting());
orderItem.setAblediscount(item.getAblediscount());
orderItem.setScAble(item.getScAble());
if (item.canAbleDiscount()) {
......
......@@ -20,6 +20,7 @@ import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.component.ComponentName;
import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.gingersoft.gsa.cloud.order.bean.discount.CouponDiscountBean;
import com.gingersoft.gsa.cloud.order.bean.discount.MemberWalletCoupon;
import com.gingersoft.gsa.cloud.order.bean.request.OrderDiscountRequest;
import com.gingersoft.gsa.cloud.order.bean.response.OrderDiscountResponse;
import com.gingersoft.gsa.cloud.order.bean.response.OrderResponse;
......@@ -346,7 +347,19 @@ public abstract class BaseOrderPresenter2<M extends BaseOrderContract.Model, V e
couponDiscount.setSpend(orderDiscount.getSpend());
couponDiscount.setDiscount(orderDiscount.getDiscountValue());
couponDiscount.setAmount(orderDiscount.getDiscountAmount());
mShoppingCart.addMultyDiscount(mShoppingCart.createCouponDiscount(couponDiscount, BillItem.BILL_ITEM_ORDER_SENT_STATUS));
// MemberWalletCoupon memberWalletCoupon = new MemberWalletCoupon();
// memberWalletCoupon.setDiscountRecordId(orderDiscount.getId());
// memberWalletCoupon.setCouponTypeName1(orderDiscount.getRemark());
// memberWalletCoupon.setCouponTypeName2(orderDiscount.getRemark2());
// memberWalletCoupon.setCouponTypeName3(orderDiscount.getRemark3());
// memberWalletCoupon.setAccumulate(orderDiscount.getAccumulate());
// memberWalletCoupon.setSpend(orderDiscount.getSpend());
// memberWalletCoupon.setDiscount(orderDiscount.getDiscountValue());
// memberWalletCoupon.setAmount(orderDiscount.getDiscountAmount());
// mShoppingCart.addMultyDiscount(mShoppingCart.createMemberWalletCoupon(couponDiscount, BillItem.BILL_ITEM_ORDER_SENT_STATUS));
}
}
}
......@@ -1146,7 +1159,7 @@ public abstract class BaseOrderPresenter2<M extends BaseOrderContract.Model, V e
orderItem.setPrice(item.getUnit_price());
orderItem.setCost(item.getCost());
orderItem.setType(item.getType());
orderItem.setPrintSetIng(item.getPrintseting());
orderItem.setPrintSetIng(item.getPrintSeting());
orderItem.setAblediscount(item.getAblediscount());
orderItem.setScAble(item.getScAble());
if (item.canAbleDiscount()) {
......
......@@ -117,7 +117,6 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
* 分檯弹窗
*/
private SplitTableDialog mSplitTableDialog;
private DiscountDialog.Builder mDiscountDialog;
/**
* 整單折扣
*/
......@@ -138,6 +137,10 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
//转移食品可多选
mSelectMealAdapter.setSelectedMode(SelectMealAdapter.MULTIPLE_SELECTED);
}
initAction();
}
private void initAction() {
mNomalDiscountAction = BillDiscountAction.builder()
.cashStr(cashStr)
.context(IActivity)
......@@ -156,17 +159,13 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
}
})
.build();
mBillCouponAction = BillCouponAction.builder()
.context(IActivity)
.cashStr(cashStr)
.listener(new BillCouponAction.OnCallBackListener() {
@Override
public void preformAddCoupon(MemberWalletCoupon coupon) {
.listener((coupon) -> {
mShoppingCart.addMultyDiscount(mShoppingCart.createMemberWalletCoupon(coupon, BillItem.BILL_ITEM_NO_ORDER_STATUS));
DoshokuOrder.getInstance().setBillItemStatus(DoshokuOrder.DISCOUNT_ITEM_TAG);
updateBillInfo();
}
})
.build();
}
......@@ -1035,9 +1034,4 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
return mFunctionList;
}
public void closeDiscountDialog() {
if (mDiscountDialog != null) {
mDiscountDialog.closeDialog();
}
}
}
......@@ -6,7 +6,9 @@ import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.constans.FoodSummaryConstans;
import com.gingersoft.gsa.cloud.common.rxjava.ErrorHandleSingleSubscriber;
import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.order.order.BaseOrder;
import com.gingersoft.gsa.cloud.table.mvp.action.discount.MealDiscountAction;
import com.gingersoft.gsa.cloud.table.mvp.contract.NomalDiscountContract;
import com.jess.arms.integration.AppManager;
import com.jess.arms.di.scope.FragmentScope;
......
......@@ -219,41 +219,9 @@ public class FineChildAllPresenter extends BasePresenter<FineChildAllContract.Mo
//获取数据
mModel.queryDB_ModifierByModModTasteVisibleQueryBuilder()
.doOnError(new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
mFineItemOneList.clear();
}
})
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSingleSubscriber<List<Modifier>>(mErrorHandler) {
// @Override
// public void onError(Throwable t) {
// super.onError(t);
// }
//
// @Override
// public void onComplete() {
// super.onComplete();
// }
//
// @Override
// public void onNext(List<Modifier> modifierList) {
// if (modifierList == null || modifierList.size() == 0) {
// mFineItemOneList.clear();
// mFineItemAllAdapter.notifyDataSetChanged();
// return;
// }
//
// setFid(modifierList, fid);
//
// mFineItemOneList.clear();
// mFineItemOneList.addAll(modifierList);
// mRootView.setFineItemAllRecycleSpanCount(mFineItemOneList.size());
// mFineItemAllAdapter.notifyDataSetChanged();
// }
@Override
public void onSuccess(List<Modifier> modifierList) {
if (modifierList == null || modifierList.size() == 0) {
......
......@@ -625,8 +625,6 @@ public class OrderContentActivity extends BaseFragmentActivity<OrderContentPrese
}
} else if (requestCode == ScanHelper.CALL_BACK_QR_RESULT) {
mPresenter.closeDiscountDialog();
String qrCodeResult = data.getStringExtra("qrCodeResult");
String encryptQRCode;
try {
......
......@@ -62,9 +62,6 @@ public class DiscountDialogFragment extends BaseDialogFragment<BasePresenter> {
@BindView(R2.id.ll_container)
QMUILinearLayout llContainer;
private CouponFragment couponFragment;
private NomalDiscountFragment billDiscountFragment;
private List<String> mTabList = new ArrayList<>();
private int mCurrentPageIndex = 0;
......@@ -154,7 +151,7 @@ public class DiscountDialogFragment extends BaseDialogFragment<BasePresenter> {
private List<Fragment> createFragments() {
List<Fragment> fragments = new ArrayList<>();
couponFragment = CouponFragment.newInstance(CouponFragment.BILL_LIMIT_DISCOUNT);
CouponFragment couponFragment = CouponFragment.newInstance(CouponFragment.BILL_LIMIT_DISCOUNT);
couponFragment.setOnCouponItemClickListener(new CouponFragment.OnCouponItemClickListener() {
@Override
public void onItemClick(MemberWalletCoupon item, int position) {
......@@ -163,7 +160,7 @@ public class DiscountDialogFragment extends BaseDialogFragment<BasePresenter> {
}
}
});
billDiscountFragment = NomalDiscountFragment.newInstance();
NomalDiscountFragment billDiscountFragment = NomalDiscountFragment.newInstance();
billDiscountFragment.setOnDiscountItemClickListener(new NomalDiscountFragment.OnBillDiscountItemClickListener() {
@Override
public void onItemClick(Discount item, int position) {
......
......@@ -118,25 +118,28 @@ public class DiscountFragment extends BaseFragment<BasePresenter> {
public void onDoubleTap(int index) {
}
});
QMUITabSegmentUtils.setNomalTabSegmentStyle(tabSegment,viewPager);
QMUITabSegmentUtils.setNomalTabSegmentStyle(tabSegment, viewPager);
}
private List<Fragment> createFragments() {
List<Fragment> fragments = new ArrayList<>();
CouponFragment couponFragment = CouponFragment.newInstance(CouponFragment.FOOD_LIMIT_DISCOUNT);
couponFragment.setOnCouponItemClickListener((item, position) -> {
if (onDiscountItemClickListener != null) {
onDiscountItemClickListener.onCouponClick(item, position);
}
});
NomalDiscountFragment billDiscountFragment = NomalDiscountFragment.newInstance();
billDiscountFragment.setOnDiscountItemClickListener((item, position) -> {
if (onDiscountItemClickListener != null) {
onDiscountItemClickListener.onBillDiscountClick(item, position);
}
});
fragments.add(couponFragment);
CouponFragment couponFragment = CouponFragment.newInstance(CouponFragment.FOOD_LIMIT_DISCOUNT);
couponFragment.setOnCouponItemClickListener((item, position) -> {
if (onDiscountItemClickListener != null) {
onDiscountItemClickListener.onCouponClick(item, position);
}
});
fragments.add(billDiscountFragment);
MemberInfo memberInfo = DoshokuOrder.getInstance().getMemberInfo();
if (memberInfo != null) {
fragments.add(couponFragment);
}
return fragments;
}
......
......@@ -3,6 +3,7 @@ package com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
......@@ -59,15 +60,22 @@ public class FineChildAllFragment extends BaseFragment<FineChildAllPresenter> im
@BindView(R2.id.recycle_fine_item_kind_item)
RecyclerView recycle_fine_item_kind_item;
private int modCol;
private LoadFineEvent mLoadFineEvent;
public final static String LOAD_FINE_DATA_EVENT = "loadFineDataEvent";
public final static String UPDATE_FINE_DATA_EVENT = "updateFineDataEvent";
private int modCol;
public final static String UPDATE_FINE_DATA_EVENT = "updateFineSoldoutEvent";
public static FineChildAllFragment newInstance() {
FineChildAllFragment fragment = new FineChildAllFragment();
return fragment;
}
public static FineChildAllFragment newInstance(LoadFineEvent loadFineEvent) {
FineChildAllFragment fragment = new FineChildAllFragment();
Bundle bundle = new Bundle();
bundle.putParcelable("loadFineEvent", loadFineEvent);
fragment.setArguments(bundle);
return fragment;
}
@Override
public void setupFragmentComponent(@NonNull AppComponent appComponent) {
......@@ -86,14 +94,20 @@ public class FineChildAllFragment extends BaseFragment<FineChildAllPresenter> im
@Override
public void initData(@Nullable Bundle savedInstanceState) {
final Bundle arguments = getArguments();
if (arguments != null) {
mLoadFineEvent = arguments.getParcelable("loadFineEvent");
}
modCol = GsaCloudApplication.uiStyleConfiguration.getModColumnValue();
mPresenter.initAdapter();
mPresenter.initItemListener(mContext);
if (mLoadFineEvent != null) {
loadFineData(mLoadFineEvent);
}
}
@Subscriber(tag = LOAD_FINE_DATA_EVENT, mode = ThreadMode.MAIN)
public void loadFineData(LoadFineEvent fineEvent) {
final int currFinePage = fineEvent.getCurrFinePage();
final long productId = fineEvent.getProductId();
......@@ -120,7 +134,7 @@ public class FineChildAllFragment extends BaseFragment<FineChildAllPresenter> im
}
}
@Subscriber(tag = UPDATE_FINE_DATA_EVENT, mode = ThreadMode.MAIN)
@Subscriber(tag = FineChildAllFragment.UPDATE_FINE_DATA_EVENT, mode = ThreadMode.MAIN)
public void updateFineItemSoldoutListFull(List<SoldoutCtrFood> soldoutListFull) {
setModifierSoldoutFoodList_Full(soldoutListFull);
updateParentModifierSlodoutFoodList_Full();
......@@ -128,7 +142,6 @@ public class FineChildAllFragment extends BaseFragment<FineChildAllPresenter> im
@Override
public void setData(@Nullable Object data) {
}
public void setModifierSoldoutFoodList_Full(List<SoldoutCtrFood> soldoutCtrFoodList) {
......
......@@ -107,10 +107,11 @@ public class RiceponMemberDialogFragment extends BaseDialogFragment<RiceponMembe
private TableBean.DataBean mCurrTableBean;
private MemberInfo mMemberInfo;
public static RiceponMemberDialogFragment newInstance(TableBean.DataBean currTableBean) {
public static RiceponMemberDialogFragment newInstance(TableBean.DataBean currTableBean, MemberInfo memberInfo) {
RiceponMemberDialogFragment fragment = new RiceponMemberDialogFragment();
Bundle bundle = new Bundle();
bundle.putParcelable("currTableBean", currTableBean);
bundle.putParcelable("memberInfo", memberInfo);
fragment.setArguments(bundle);
return fragment;
}
......@@ -134,6 +135,7 @@ public class RiceponMemberDialogFragment extends BaseDialogFragment<RiceponMembe
public void onCreate(@Nullable Bundle savedInstanceState) {
Bundle arguments = getArguments();
mCurrTableBean = arguments.getParcelable("currTableBean");
mMemberInfo = arguments.getParcelable("memberInfo");
super.onCreate(savedInstanceState);
}
......@@ -142,6 +144,7 @@ public class RiceponMemberDialogFragment extends BaseDialogFragment<RiceponMembe
initTopbar();
initAdapter();
returnMemberInfo(mMemberInfo);
}
@Override
......@@ -265,6 +268,9 @@ public class RiceponMemberDialogFragment extends BaseDialogFragment<RiceponMembe
@Override
public void returnMemberInfo(MemberInfo memberInfo) {
if (memberInfo == null) {
return;
}
this.mMemberInfo = memberInfo;
final List<SectionTextItem> memberInfoItems = getMemberInfoItem(memberInfo);
if (mMemberInfoList.size() > 0) {
......
......@@ -2,13 +2,12 @@
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_bill_discount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
/>
android:layout_height="match_parent"
android:orientation="horizontal" />
</FrameLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="match_parent">
<com.scwang.smartrefresh.layout.SmartRefreshLayout
android:id="@+id/refreshLayout"
......@@ -12,7 +12,7 @@
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_coupon"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_gravity="bottom"
android:orientation="horizontal" />
......
......@@ -57,23 +57,9 @@
android:layout_above="@+id/ll_modify"
android:visibility="gone">
<!-- <fragment-->
<!-- android:id="@+id/fragment_discount"-->
<!-- android:name="com.gingersoft.gsa.cloud.table.mvp.ui.fragment.discount.DiscountFragment"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content" />-->
</FrameLayout>
<FrameLayout
android:id="@+id/fl_fine_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/ll_modify"
android:visibility="gone">
<fragment
android:id="@+id/fragment_fine"
android:name="com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand.FineFragment"
android:id="@+id/fragment_discount"
android:name="com.gingersoft.gsa.cloud.table.mvp.ui.fragment.discount.DiscountFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</FrameLayout>
......
......@@ -4,17 +4,30 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/ll_fine"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shape_tab_panel_bg">
<com.qmuiteam.qmui.widget.tab.QMUITabSegment2
android:id="@+id/tabs_fine"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_45"
android:background="@drawable/shape_tab_panel_bg" />
android:layout_height="@dimen/dp_45" />
<ImageView
android:id="@+id/iv_fine_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:padding="@dimen/dp_10"
android:src="@drawable/ic_black_back" />
</FrameLayout>
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/pager_fine"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
\ No newline at end of file
......@@ -3,7 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/ll_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical">
<com.qmuiteam.qmui.widget.tab.QMUITabSegment2
......
......@@ -185,15 +185,13 @@ public class ShoppingCart {
public void delAllMultyDiscount() {
List<MultyDiscount> multyDiscountList = getMultyDiscountList();
boolean result = multyDiscountList.removeAll(multyDiscountList);
int i = 100;
}
/**
* 刪除所有單折扣
*/
public void delAllNomalDiscountList(List<NomalDiscount> nomalDiscountList) {
boolean result = getMultyDiscountList().removeAll(nomalDiscountList);
int i = 100;
public boolean delAllNomalDiscountList(List<NomalDiscount> nomalDiscountList) {
return getMultyDiscountList().removeAll(nomalDiscountList);
}
/**
......@@ -232,17 +230,17 @@ public class ShoppingCart {
MultyDiscount memberLevelDiscount = new MemberLevelDiscount(discount.getMemberName(), status, multyDiscounts, discount);
return memberLevelDiscount;
}
/**
* 將會員優惠券折扣添加到鏈條中
*
* @param discount
* @return
*/
public MultyDiscount addMemberCouponDiscountToLinked(MultyDiscount multyDiscounts, CouponDiscountBean discount, int status) {
MultyDiscount couponDiscount = new MemberCouponDiscount(discount.getName(), status, multyDiscounts, discount);
return couponDiscount;
}
//
// /**
// * 將會員優惠券折扣添加到鏈條中
// *
// * @param discount
// * @return
// */
// public MultyDiscount addMemberCouponDiscountToLinked(MultyDiscount multyDiscounts, CouponDiscountBean discount, int status) {
// MultyDiscount couponDiscount = new MemberCouponDiscount(discount.getName(), status, multyDiscounts, discount);
// return couponDiscount;
// }
/**
* 將會員錢包折扣添加到鏈條中
......@@ -289,9 +287,11 @@ public class ShoppingCart {
multyDiscounts = addNomalDiscountToLinked(multyDiscounts, ((NomalDiscount) discount).getDiscount(), discount.getStatus());
} else if (discount instanceof MemberLevelDiscount) {
multyDiscounts = addMemberLevelDiscountToLinked(multyDiscounts, ((MemberLevelDiscount) discount).getMemberDiscount(), discount.getStatus());
} else if (discount instanceof MemberCouponDiscount) {
multyDiscounts = addMemberCouponDiscountToLinked(multyDiscounts, ((MemberCouponDiscount) discount).getCouponDiscount(), discount.getStatus());
}else if (discount instanceof MemberWalletCouponDiscount) {
}
// else if (discount instanceof MemberCouponDiscount) {
// multyDiscounts = addMemberCouponDiscountToLinked(multyDiscounts, ((MemberCouponDiscount) discount).getCouponDiscount(), discount.getStatus());
// }
else if (discount instanceof MemberWalletCouponDiscount) {
multyDiscounts = addMemberWalletCouponDiscountToLinked(multyDiscounts, ((MemberWalletCouponDiscount) discount).getWalletCoupon(), discount.getStatus());
}
multyDiscountArrays.add(multyDiscounts);
......@@ -360,12 +360,12 @@ public class ShoppingCart {
multyDiscounts = shoppingCart.addNomalDiscountToLinked(multyDiscounts, discount, 0);
shoppingCart.addMultyDiscount(multyDiscounts);
CouponDiscountBean couponDiscountBean = new CouponDiscountBean();
couponDiscountBean.setCouponTypeName1("魚屋立減50元券");
couponDiscountBean.setAmount(50);
couponDiscountBean.setCouponType((byte) 2);
multyDiscounts = shoppingCart.addMemberCouponDiscountToLinked(multyDiscounts, couponDiscountBean, 0);
shoppingCart.addMultyDiscount(multyDiscounts);
// CouponDiscountBean couponDiscountBean = new CouponDiscountBean();
// couponDiscountBean.setCouponTypeName1("魚屋立減50元券");
// couponDiscountBean.setAmount(50);
// couponDiscountBean.setCouponType((byte) 2);
// multyDiscounts = shoppingCart.addMemberWalletCouponDiscountToLinked(multyDiscounts, couponDiscountBean, 0);
// shoppingCart.addMultyDiscount(multyDiscounts);
MemberInfo memberInfo2 = new MemberInfo();
memberInfo2.setMemberName("白金會員20%");
......
......@@ -2,8 +2,10 @@ package com.gingersoft.gsa.cloud.pay;
import androidx.fragment.app.FragmentActivity;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.contract.YedpayContract;
import com.gingersoft.gsa.cloud.pay.lifecycle.fragment.PayFlowFragment;
import com.gingersoft.gsa.cloud.pay.device.pos.PosPayAction;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.utils.Preconditions;
import lombok.Getter;
......@@ -71,7 +73,7 @@ public class PaymentControl {
}
public void showPayFlowFragment(FragmentActivity fragmentActivity,RequestParms requestParms){
PayFlowFragment payFlowFragment = PayFlowFragment.newInstance(requestParms);
PayFlowFragment<BasePresenter<YedpayContract.Model, YedpayContract.View>> payFlowFragment = PayFlowFragment.newInstance(requestParms);
payFlowFragment.show(fragmentActivity.getSupportFragmentManager(), "PayFlowDialogFragment");
}
......
......@@ -7,7 +7,6 @@ import androidx.fragment.app.Fragment;
import com.gingersoft.gsa.cloud.pay.RequestParms;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.constant.YedpayConstant;
import com.gingersoft.gsa.cloud.pay.lifecycle.presenter.PayFlowPresenter;
/**
* @作者: bin
......
package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.contract;
import android.content.Intent;
import androidx.fragment.app.Fragment;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.pay.PayStep;
import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel;
import io.reactivex.Single;
import okhttp3.RequestBody;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/30/2021 16:23
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public interface YedpayContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
void showStatusLoadingDialog(PayStep status);
void startActivityForResult(Intent intent);
Fragment getFragment();
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel {
Single<BaseResult> findSaleStatus(RequestBody body);
Single<BaseResult> refundOrder(RequestBody body);
}
}
package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.di.component;
import dagger.BindsInstance;
import dagger.Component;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.di.module.YedpayModule;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.contract.YedpayContract;
import com.jess.arms.di.scope.FragmentScope;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.fragment.YedpayFragment;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/30/2021 16:23
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@FragmentScope
@Component(modules = YedpayModule.class, dependencies = AppComponent.class)
public interface YedpayComponent {
void inject(YedpayFragment fragment);
@Component.Builder
interface Builder {
@BindsInstance
YedpayComponent.Builder view(YedpayContract.View view);
YedpayComponent.Builder appComponent(AppComponent appComponent);
YedpayComponent build();
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.di.module;
import com.jess.arms.di.scope.FragmentScope;
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.contract.YedpayContract;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.model.YedpayModel;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/30/2021 16:23
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@Module
public abstract class YedpayModule {
@Binds
abstract YedpayContract.Model bindYedpayModel(YedpayModel model);
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.fragment;
import android.content.Intent;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.gingersoft.gsa.cloud.order.R;
import com.gingersoft.gsa.cloud.order.R2;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.constant.YedpayConstant;
import com.gingersoft.gsa.cloud.pay.lifecycle.fragment.PayFlowFragment;
import com.gingersoft.gsa.cloud.pay.view.customstatus.CustomStatusView;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.contract.YedpayContract;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.presenter.YedpayPresenter;
import butterknife.BindView;
import static com.jess.arms.utils.Preconditions.checkNotNull;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/30/2021 16:23
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public class YedpayFragment extends PayFlowFragment<YedpayPresenter> implements YedpayContract.View {
@BindView(R2.id.ll_container)
LinearLayout ll_container;
@BindView(R2.id.as_status)
CustomStatusView as_status;
@BindView(R2.id.tv_status)
TextView tv_status;
// public static PayFlowFragment newInstance(RequestParms parms) {
// PayFlowFragment fragment = new PayFlowFragment();
// Bundle bundle = new Bundle();
// bundle.putParcelable("requestParms", parms);
// fragment.setArguments(bundle);
// return fragment;
// }
@Override
public void setupFragmentComponent(@NonNull AppComponent appComponent) {
DaggerYedpayComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
.build()
.inject(this);
}
@Override
public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
getDialog().setCancelable(false);
return inflater.inflate(R.layout.dialog_pay_loading, container, false);
}
@Override
public void onStart() {
super.onStart();
mWindow.setBackgroundDrawable(new ColorDrawable(ArmsUtils.getColor(mContext, R.color.trans)));
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
// mPresenter.excutePayFlow(requestParms);
}
@Override
public void setData(@Nullable Object data) {
}
@Override
public void showLoading(String message) {
}
@Override
public void hideLoading() {
}
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.makeText(mContext, message);
}
@Override
public void launchActivity(@NonNull Intent intent) {
checkNotNull(intent);
ArmsUtils.startActivity(intent);
}
@Override
public void killMyself() {
super.killMyself();
}
// @Override
// public void onActivityResult(int requestCode, int resultCode, @Nullable Intent intent) {
// super.onActivityResult(requestCode, resultCode, intent);
// LoganManager.w_code(TAG, "onActivityResult->" + "resultCode=" + resultCode + " requestCode=" + requestCode);
// if (resultCode == android.app.Activity.RESULT_OK) {
// switch (requestCode) {
// case YedpayConstant.CallRequestCode.SALE_REQUEST_CODE: {
// if (intent.getExtras() != null) {
// String status = (String) intent.getExtras().get("status");
// String transaction_id = (String) intent.getExtras().get("transaction_id");
// LoganManager.w_code(TAG, "onActivityResult-》" + "status=" + status + " transaction_id=" + transaction_id);
// mPresenter.yedPayUpdateStatus(transaction_id, requestParms.getOrderId(), requestParms.getPayType(), requestParms.getResturantId());
// }
// break;
// }
// default:
// showStatusLoadingDialog(PayStep.FAILURE);
// break;
// }
// } else {
// showStatusLoadingDialog(PayStep.FAILURE);
// }
// }
@Override
public void startActivityForResult(Intent intent) {
startActivityForResult(intent, YedpayConstant.CallRequestCode.SALE_REQUEST_CODE);
}
@Override
public Fragment getFragment() {
return this;
}
}
package com.gingersoft.gsa.cloud.pay.lifecycle.model;
package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.model;
import android.app.Application;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.model.service.YedpayService;
import com.gingersoft.gsa.cloud.pay.lifecycle.model.service.PayFlowService;
import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager;
......@@ -12,7 +13,7 @@ import com.jess.arms.di.scope.FragmentScope;
import javax.inject.Inject;
import com.gingersoft.gsa.cloud.pay.lifecycle.contract.PayFlowContract;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.contract.YedpayContract;
import io.reactivex.Single;
import okhttp3.RequestBody;
......@@ -22,7 +23,7 @@ import okhttp3.RequestBody;
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/15/2021 14:44
* Created by MVPArmsTemplate on 04/30/2021 16:23
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
......@@ -31,14 +32,14 @@ import okhttp3.RequestBody;
* ================================================
*/
@FragmentScope
public class PayFlowModel extends BaseModel implements PayFlowContract.Model {
public class YedpayModel extends BaseModel implements YedpayContract.Model {
@Inject
Gson mGson;
@Inject
Application mApplication;
@Inject
public PayFlowModel(IRepositoryManager repositoryManager) {
public YedpayModel(IRepositoryManager repositoryManager) {
super(repositoryManager);
}
......@@ -49,16 +50,15 @@ public class PayFlowModel extends BaseModel implements PayFlowContract.Model {
this.mApplication = null;
}
@Override
public Single<BaseResult> yedPayFindSaleStatus(RequestBody body) {
return mRepositoryManager.obtainRetrofitService(PayFlowService.class)
.yedPayFindSaleStatus(body);
public Single<BaseResult> findSaleStatus(RequestBody body) {
return mRepositoryManager.obtainRetrofitService(YedpayService.class)
.findSaleStatus(body);
}
@Override
public Single<BaseResult> yedPayRefundOrder(RequestBody body) {
return mRepositoryManager.obtainRetrofitService(PayFlowService.class)
.yedPayRefundOrder(body);
public Single<BaseResult> refundOrder(RequestBody body) {
return mRepositoryManager.obtainRetrofitService(YedpayService.class)
.refundOrder(body);
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.model.service;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import io.reactivex.Single;
import me.jessyan.retrofiturlmanager.RetrofitUrlManager;
import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.Headers;
import retrofit2.http.POST;
/**
* @作者: bin
* @創建時間: 2021-04-30 16:27
* @更新時間: 2021-04-30 16:27
* @描述:
*/
public interface YedpayService {
@Headers({"Domain-Name: ricepon_pay"})
@POST("gsaYedPay/updatePayStatus" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Single<BaseResult> findSaleStatus(@Body RequestBody requestBody);
@Headers({"Domain-Name: ricepon_pay"})
@POST("gsaYedPay/refund" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Single<BaseResult> refundOrder(@Body RequestBody requestBody);
}
package com.gingersoft.gsa.cloud.pay.lifecycle.presenter;
package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.presenter;
import android.app.Application;
import android.content.Intent;
import android.net.Uri;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.rxjava.ErrorHandleSingleSubscriber;
import com.gingersoft.gsa.cloud.common.utils.AppDevices;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.pay.PayStep;
import com.gingersoft.gsa.cloud.pay.PaymentControl;
import com.gingersoft.gsa.cloud.pay.RequestParms;
import com.gingersoft.gsa.cloud.pay.ResultCallback;
import com.gingersoft.gsa.cloud.pay.device.pos.bbpos.BBposCommandImp;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.HywebCommandImp;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.YedpayCommandImp;
import com.gingersoft.gsa.cloud.pay.lifecycle.model.bean.YedpayFindSaleStatusBean;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.YedpayCommand;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.constant.YedpayConstant;
import com.gingersoft.gsa.cloud.pay.lifecycle.model.bean.YedpayFindSaleStatusBean;
import com.jess.arms.integration.AppManager;
import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.mvp.BasePresenter;
......@@ -28,7 +27,7 @@ import okhttp3.RequestBody;
import javax.inject.Inject;
import com.gingersoft.gsa.cloud.pay.lifecycle.contract.PayFlowContract;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.contract.YedpayContract;
import com.jess.arms.utils.RxLifecycleUtils;
......@@ -36,7 +35,7 @@ import com.jess.arms.utils.RxLifecycleUtils;
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/15/2021 14:44
* Created by MVPArmsTemplate on 04/30/2021 16:23
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
......@@ -45,7 +44,7 @@ import com.jess.arms.utils.RxLifecycleUtils;
* ================================================
*/
@FragmentScope
public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFlowContract.View> {
public class YedpayPresenter extends BasePresenter<YedpayContract.Model, YedpayContract.View> {
@Inject
RxErrorHandler mErrorHandler;
@Inject
......@@ -59,7 +58,7 @@ public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFl
private ResultCallback mResultCallback;
@Inject
public PayFlowPresenter(PayFlowContract.Model model, PayFlowContract.View rootView) {
public YedpayPresenter(YedpayContract.Model model, YedpayContract.View rootView) {
super(model, rootView);
}
......@@ -72,7 +71,8 @@ public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFl
this.mApplication = null;
}
public void yedPayUpdateStatus(String transactionId, long orderId, int payType, int restaurantId) {
public void findSaleStatus(String transactionId, long orderId, int payType, int restaurantId) {
RequestBody requestBody = new FormBody.Builder()
.add("transactionId", transactionId)
.add("orderId", orderId + "")
......@@ -80,7 +80,7 @@ public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFl
.add("restaurantId", restaurantId + "")
.build();
mModel.yedPayFindSaleStatus(requestBody)
mModel.findSaleStatus(requestBody)
.subscribeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
......@@ -129,14 +129,14 @@ public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFl
});
}
public void yedPayRefundOrder(String refundReason, long orderId, int payType, int restaurantId) {
public void refundOrder(String refundReason, long orderId, int payType, int restaurantId) {
RequestBody requestBody = new FormBody.Builder()
.add("refundReason", refundReason)
.add("orderId", String.valueOf(orderId))
.add("payType", String.valueOf(payType))
.add("restaurantId", String.valueOf(restaurantId))
.build();
mModel.yedPayRefundOrder(requestBody)
mModel.refundOrder(requestBody)
.subscribeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
......@@ -173,7 +173,7 @@ public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFl
this.mRequestParms = requestParms;
this.mResultCallback = mRequestParms.getResultCallback();
setCallbackBy(requestParms);
mRequestParms.setCallback(yedpayCommand);
switch (requestParms.getAction()) {
case SALE:
......@@ -185,16 +185,19 @@ public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFl
}
}
private void setCallbackBy(RequestParms requestParms) {
if (AppDevices.isHywebPos()) {
requestParms.setCallback(new HywebCommandImp());
} else if (AppDevices.isBBPos()) {
requestParms.setCallback(new BBposCommandImp());
} else if (AppDevices.isYedpay()) {
requestParms.setCallback(new YedpayCommandImp(mRootView.getFragment(), this, mRequestParms));
} else {
requestParms.setCallback(new YedpayCommandImp(mRootView.getFragment(), this, mRequestParms));
private YedpayCommand yedpayCommand = new YedpayCommand() {
@Override
public void callSaleUri(String uri) {
Uri uri2 = Uri.parse(uri);
Intent intent = new Intent(Intent.ACTION_VIEW, uri2);
mRootView.getFragment().startActivityForResult(intent, YedpayConstant.CallRequestCode.SALE_REQUEST_CODE);
}
@Override
public void refundResult(boolean result) {
refundOrder(mRequestParms.getRefundReason(), mRequestParms.getOrderId(), mRequestParms.getPayType(), mRequestParms.getResturantId());
}
};
}
......@@ -32,17 +32,11 @@ public interface PayFlowContract {
void showStatusLoadingDialog(PayStep status);
void startActivityForResult(Intent intent);
Fragment getFragment();
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel {
Single<BaseResult> yedPayFindSaleStatus(RequestBody body);
Single<BaseResult> yedPayRefundOrder(RequestBody body);
}
}
......@@ -3,6 +3,7 @@ package com.gingersoft.gsa.cloud.pay.lifecycle.di.component;
import dagger.BindsInstance;
import dagger.Component;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.contract.YedpayContract;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.pay.lifecycle.di.module.PayFlowModule;
......@@ -10,6 +11,7 @@ import com.gingersoft.gsa.cloud.pay.lifecycle.contract.PayFlowContract;
import com.jess.arms.di.scope.FragmentScope;
import com.gingersoft.gsa.cloud.pay.lifecycle.fragment.PayFlowFragment;
import com.jess.arms.mvp.BasePresenter;
/**
......
package com.gingersoft.gsa.cloud.pay.lifecycle.di.module;
import com.jess.arms.di.scope.FragmentScope;
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import com.gingersoft.gsa.cloud.pay.lifecycle.contract.PayFlowContract;
import com.gingersoft.gsa.cloud.pay.lifecycle.model.PayFlowModel;
import com.jess.arms.mvp.BaseModel;
/**
......@@ -26,5 +23,5 @@ import com.gingersoft.gsa.cloud.pay.lifecycle.model.PayFlowModel;
public abstract class PayFlowModule {
@Binds
abstract PayFlowContract.Model bindPayFlowModel(PayFlowModel model);
abstract PayFlowContract.Model bindPayFlowModel(BaseModel model);
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.pay.lifecycle.fragment;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.TextView;
......@@ -18,23 +15,19 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.order.R;
import com.gingersoft.gsa.cloud.order.R2;
import com.gingersoft.gsa.cloud.pay.PayAction;
import com.gingersoft.gsa.cloud.pay.PayStep;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.constant.YedpayConstant;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.contract.YedpayContract;
import com.gingersoft.gsa.cloud.pay.lifecycle.di.component.DaggerPayFlowComponent;
import com.gingersoft.gsa.cloud.pay.RequestParms;
import com.gingersoft.gsa.cloud.pay.view.customstatus.CustomStatusView;
import com.gingersoft.gsa.cloud.pay.widget.StatusLoadingDialog;
import com.jess.arms.base.BaseDialogFragment;
import com.jess.arms.base.BaseFragment;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.utils.ArmsUtils;
import com.gingersoft.gsa.cloud.pay.lifecycle.contract.PayFlowContract;
import com.gingersoft.gsa.cloud.pay.lifecycle.presenter.PayFlowPresenter;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import butterknife.BindView;
......@@ -53,7 +46,7 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public class PayFlowFragment extends BaseDialogFragment<PayFlowPresenter> implements PayFlowContract.View {
public class PayFlowFragment<P extends BasePresenter> extends BaseDialogFragment implements PayFlowContract.View {
@BindView(R2.id.ll_container)
LinearLayout ll_container;
......@@ -102,15 +95,13 @@ public class PayFlowFragment extends BaseDialogFragment<PayFlowPresenter> implem
@Override
public void initData(@Nullable Bundle savedInstanceState) {
Bundle arguments = getArguments();
requestParms = (RequestParms) arguments.getParcelable("requestParms");
requestParms = arguments.getParcelable("requestParms");
action = requestParms.getAction();
tv_status.setText(mLoadingText);
ll_container.setLayoutParams(new FrameLayout.LayoutParams((int) (ArmsUtils.getScreenWidth(mContext) * 0.4), (int) (ArmsUtils.getScreenWidth(mContext) * 0.4)));
showStatusLoadingDialog(PayStep.LOADING);
mPresenter.excutePayFlow(requestParms);
}
@Override
......@@ -190,34 +181,6 @@ public class PayFlowFragment extends BaseDialogFragment<PayFlowPresenter> implem
}, mCancelDelayMillis);
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
LoganManager.w_code(TAG, "onActivityResult->" + "resultCode=" + resultCode + " requestCode=" + requestCode);
if (resultCode == android.app.Activity.RESULT_OK) {
switch (requestCode) {
case YedpayConstant.CallRequestCode.SALE_REQUEST_CODE: {
if (intent.getExtras() != null) {
String status = (String) intent.getExtras().get("status");
String transaction_id = (String) intent.getExtras().get("transaction_id");
LoganManager.w_code(TAG, "onActivityResult-》" + "status=" + status + " transaction_id=" + transaction_id);
mPresenter.yedPayUpdateStatus(transaction_id, requestParms.getOrderId(), requestParms.getPayType(), requestParms.getResturantId());
}
break;
}
default:
showStatusLoadingDialog(PayStep.FAILURE);
break;
}
} else {
showStatusLoadingDialog(PayStep.FAILURE);
}
}
@Override
public void startActivityForResult(Intent intent) {
startActivityForResult(intent, YedpayConstant.CallRequestCode.SALE_REQUEST_CODE);
}
@Override
public Fragment getFragment() {
......
package com.gingersoft.gsa.cloud.pay.lifecycle.model.bean;
/**
* @作者: bin
* @創建時間: 2021-04-15 18:46
* @更新時間: 2021-04-15 18:46
* @描述:
*/
public class YedPayRefundBean {
}
package com.gingersoft.gsa.cloud.pay.lifecycle.model.bean;
import lombok.Data;
/**
* @作者: bin
* @創建時間: 2021-04-15 18:46
* @更新時間: 2021-04-15 18:46
* @描述:
*/
@Data
public class YedpayFindSaleStatusBean {
/**
* 訂單id
*/
private long orderId = -1L;
/**
* 支付状态:0 未支付 1 支付失败 2 支持成功 3 已支付未到账 4.支付中 5.已退款 6.廢棄(第二次結賬)
*/
private Integer status;
/**
* 交易id
*/
private String transactionId;
/**
* 退款id
*/
private String refundId;
}
package com.gingersoft.gsa.cloud.pay.lifecycle.model.service;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import io.reactivex.Single;
import io.reactivex.Single;
import me.jessyan.retrofiturlmanager.RetrofitUrlManager;
import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Query;
/**
* Created by Wyh on 2020/1/17.
*/
public interface PayFlowService {
@Headers({"Domain-Name: ricepon_pay"})
@POST("posPay/getTxnId" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Single<BaseResult> getTxnId(@Query("type") int type, @Query("parm") String parm, @Query("gsposShopId") String shopName, @Query("tableId") int tableId, @Query("tableNumber") String tableNumber);
@Headers({"Domain-Name: ricepon_pay"})
@POST("posPay/getRefundTxnId" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Single<BaseResult> getRefundTxnId(@Query("tableId") int tableId, @Query("tableNumber") String tableNumber, @Query("memberId") long memberId);
@Headers({"Domain-Name: ricepon_pay"})
@POST("posPay/getCancelTxnId" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Single<BaseResult> getCancelTxnId(@Query("tableId") int tableId, @Query("tableNumber") String tableNumber, @Query("memberId") long memberId);
@Headers({"Domain-Name: ricepon_pay"})
@POST("orderPay/updatePosRefund" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Single<BaseResult> updatePosRefund(@Query("tableId") int tableId, @Query("memberId") Long memberId, @Query("couponMemberId") long couponMemberId, @Query("couponNo") String couponNo, @Query("restaurantId") int restaurantId);
@Headers({"Domain-Name: ricepon_pay"})
@POST("member/getMemberWalletList" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Single<BaseResult> getMemberWalletList(@Query("brandId") int brandId, @Query("memberId") long memberId, @Query("limitType") long limitType, @Query("pageIndex") long pageIndex, @Query("pageSize") long pageSize);
@Headers({"Domain-Name: ricepon_pay"})
@POST("orderPay/add" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Single<BaseResult> add(@Query("tableId") int tableId, @Query("tableNumber") String tableNumber, @Query("memberId") long memberId);
@Headers({"Domain-Name: ricepon_pay"})
@POST("posPay/updatePosCancel" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Single<BaseResult> updatePosCancel(@Query("tableId") int tableId, @Query("tableNumber") String tableNumber, @Query("memberId") long memberId);
@Headers({"Domain-Name: ricepon_pay"})
@POST("gsaYedPay/updatePayStatus" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Single<BaseResult> yedPayFindSaleStatus(@Body RequestBody requestBody);
@Headers({"Domain-Name: ricepon_pay"})
@POST("gsaYedPay/refund" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Single<BaseResult> yedPayRefundOrder(@Body RequestBody requestBody);
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
\ No newline at end of file
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