Commit b01803d9 by 宁斌

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

parent f699e909
package com.gingersoft.gsa.cloud.table.mvp.model.bean; package com.gingersoft.gsa.cloud.table.mvp.model.bean;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils; import android.text.TextUtils;
import java.io.File; import java.io.File;
...@@ -16,7 +18,7 @@ import lombok.Setter; ...@@ -16,7 +18,7 @@ import lombok.Setter;
*/ */
@Getter @Getter
@Setter @Setter
public class SoldoutCtrFood { public class SoldoutCtrFood implements Parcelable {
private long id; private long id;
private int restaurantId; private int restaurantId;
...@@ -100,4 +102,55 @@ public class SoldoutCtrFood { ...@@ -100,4 +102,55 @@ public class SoldoutCtrFood {
} }
return ""; 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; 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 com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import lombok.Data; import lombok.Data;
...@@ -13,11 +17,47 @@ import lombok.Data; ...@@ -13,11 +17,47 @@ import lombok.Data;
* @描述: * @描述:
*/ */
@Data @Data
public class LoadFineEvent { public class LoadFineEvent implements Parcelable {
private int currFinePage; private int currFinePage;
private long productId; private long productId;
private int selectedMode; private int selectedMode;
private List<SoldoutCtrFood> soldoutCtrFoods; 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 ...@@ -1144,7 +1144,7 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
orderItem.setPrice(item.getUnit_price()); orderItem.setPrice(item.getUnit_price());
orderItem.setCost(item.getCost()); orderItem.setCost(item.getCost());
orderItem.setType(item.getType()); orderItem.setType(item.getType());
orderItem.setPrintSetIng(item.getPrintseting()); orderItem.setPrintSetIng(item.getPrintSeting());
orderItem.setAblediscount(item.getAblediscount()); orderItem.setAblediscount(item.getAblediscount());
orderItem.setScAble(item.getScAble()); orderItem.setScAble(item.getScAble());
if (item.canAbleDiscount()) { if (item.canAbleDiscount()) {
......
...@@ -20,6 +20,7 @@ import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils; ...@@ -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.component.ComponentName;
import com.gingersoft.gsa.cloud.database.bean.Discount; 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.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.request.OrderDiscountRequest;
import com.gingersoft.gsa.cloud.order.bean.response.OrderDiscountResponse; import com.gingersoft.gsa.cloud.order.bean.response.OrderDiscountResponse;
import com.gingersoft.gsa.cloud.order.bean.response.OrderResponse; import com.gingersoft.gsa.cloud.order.bean.response.OrderResponse;
...@@ -346,7 +347,19 @@ public abstract class BaseOrderPresenter2<M extends BaseOrderContract.Model, V e ...@@ -346,7 +347,19 @@ public abstract class BaseOrderPresenter2<M extends BaseOrderContract.Model, V e
couponDiscount.setSpend(orderDiscount.getSpend()); couponDiscount.setSpend(orderDiscount.getSpend());
couponDiscount.setDiscount(orderDiscount.getDiscountValue()); couponDiscount.setDiscount(orderDiscount.getDiscountValue());
couponDiscount.setAmount(orderDiscount.getDiscountAmount()); couponDiscount.setAmount(orderDiscount.getDiscountAmount());
mShoppingCart.addMultyDiscount(mShoppingCart.createCouponDiscount(couponDiscount, BillItem.BILL_ITEM_ORDER_SENT_STATUS)); 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 ...@@ -1146,7 +1159,7 @@ public abstract class BaseOrderPresenter2<M extends BaseOrderContract.Model, V e
orderItem.setPrice(item.getUnit_price()); orderItem.setPrice(item.getUnit_price());
orderItem.setCost(item.getCost()); orderItem.setCost(item.getCost());
orderItem.setType(item.getType()); orderItem.setType(item.getType());
orderItem.setPrintSetIng(item.getPrintseting()); orderItem.setPrintSetIng(item.getPrintSeting());
orderItem.setAblediscount(item.getAblediscount()); orderItem.setAblediscount(item.getAblediscount());
orderItem.setScAble(item.getScAble()); orderItem.setScAble(item.getScAble());
if (item.canAbleDiscount()) { if (item.canAbleDiscount()) {
......
...@@ -117,7 +117,6 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -117,7 +117,6 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
* 分檯弹窗 * 分檯弹窗
*/ */
private SplitTableDialog mSplitTableDialog; private SplitTableDialog mSplitTableDialog;
private DiscountDialog.Builder mDiscountDialog;
/** /**
* 整單折扣 * 整單折扣
*/ */
...@@ -138,6 +137,10 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -138,6 +137,10 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
//转移食品可多选 //转移食品可多选
mSelectMealAdapter.setSelectedMode(SelectMealAdapter.MULTIPLE_SELECTED); mSelectMealAdapter.setSelectedMode(SelectMealAdapter.MULTIPLE_SELECTED);
} }
initAction();
}
private void initAction() {
mNomalDiscountAction = BillDiscountAction.builder() mNomalDiscountAction = BillDiscountAction.builder()
.cashStr(cashStr) .cashStr(cashStr)
.context(IActivity) .context(IActivity)
...@@ -156,17 +159,13 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -156,17 +159,13 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
} }
}) })
.build(); .build();
mBillCouponAction = BillCouponAction.builder() mBillCouponAction = BillCouponAction.builder()
.context(IActivity) .context(IActivity)
.cashStr(cashStr) .cashStr(cashStr)
.listener(new BillCouponAction.OnCallBackListener() { .listener((coupon) -> {
@Override
public void preformAddCoupon(MemberWalletCoupon coupon) {
mShoppingCart.addMultyDiscount(mShoppingCart.createMemberWalletCoupon(coupon, BillItem.BILL_ITEM_NO_ORDER_STATUS)); mShoppingCart.addMultyDiscount(mShoppingCart.createMemberWalletCoupon(coupon, BillItem.BILL_ITEM_NO_ORDER_STATUS));
DoshokuOrder.getInstance().setBillItemStatus(DoshokuOrder.DISCOUNT_ITEM_TAG); DoshokuOrder.getInstance().setBillItemStatus(DoshokuOrder.DISCOUNT_ITEM_TAG);
updateBillInfo(); updateBillInfo();
}
}) })
.build(); .build();
} }
...@@ -1035,9 +1034,4 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -1035,9 +1034,4 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
return mFunctionList; return mFunctionList;
} }
public void closeDiscountDialog() {
if (mDiscountDialog != null) {
mDiscountDialog.closeDialog();
}
}
} }
...@@ -6,7 +6,9 @@ import com.gingersoft.gsa.cloud.common.bean.BaseResult; ...@@ -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.constans.FoodSummaryConstans;
import com.gingersoft.gsa.cloud.common.rxjava.ErrorHandleSingleSubscriber; import com.gingersoft.gsa.cloud.common.rxjava.ErrorHandleSingleSubscriber;
import com.gingersoft.gsa.cloud.database.bean.Discount; 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.order.order.BaseOrder;
import com.gingersoft.gsa.cloud.table.mvp.action.discount.MealDiscountAction;
import com.gingersoft.gsa.cloud.table.mvp.contract.NomalDiscountContract; import com.gingersoft.gsa.cloud.table.mvp.contract.NomalDiscountContract;
import com.jess.arms.integration.AppManager; import com.jess.arms.integration.AppManager;
import com.jess.arms.di.scope.FragmentScope; import com.jess.arms.di.scope.FragmentScope;
......
...@@ -219,41 +219,9 @@ public class FineChildAllPresenter extends BasePresenter<FineChildAllContract.Mo ...@@ -219,41 +219,9 @@ public class FineChildAllPresenter extends BasePresenter<FineChildAllContract.Mo
//获取数据 //获取数据
mModel.queryDB_ModifierByModModTasteVisibleQueryBuilder() mModel.queryDB_ModifierByModModTasteVisibleQueryBuilder()
.doOnError(new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
mFineItemOneList.clear();
}
})
.compose(RxLifecycleUtils.bindToLifecycle(mRootView)) .compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSingleSubscriber<List<Modifier>>(mErrorHandler) { .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 @Override
public void onSuccess(List<Modifier> modifierList) { public void onSuccess(List<Modifier> modifierList) {
if (modifierList == null || modifierList.size() == 0) { if (modifierList == null || modifierList.size() == 0) {
......
...@@ -23,6 +23,7 @@ import com.gingersoft.gsa.cloud.common.utils.LanguageUtils; ...@@ -23,6 +23,7 @@ import com.gingersoft.gsa.cloud.common.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.common.utils.MoneyUtil; import com.gingersoft.gsa.cloud.common.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils; import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.component.ComponentName; import com.gingersoft.gsa.cloud.component.ComponentName;
import com.gingersoft.gsa.cloud.database.AbstractDiscount;
import com.gingersoft.gsa.cloud.database.bean.ComboItem; import com.gingersoft.gsa.cloud.database.bean.ComboItem;
import com.gingersoft.gsa.cloud.database.bean.Discount; import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.gingersoft.gsa.cloud.database.bean.Food; import com.gingersoft.gsa.cloud.database.bean.Food;
...@@ -30,15 +31,19 @@ import com.gingersoft.gsa.cloud.database.bean.FoodCombo; ...@@ -30,15 +31,19 @@ import com.gingersoft.gsa.cloud.database.bean.FoodCombo;
import com.gingersoft.gsa.cloud.database.bean.Modifier; import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.database.utils.FoodDaoUtils; import com.gingersoft.gsa.cloud.database.utils.FoodDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.ModifierDaoUtils; import com.gingersoft.gsa.cloud.database.utils.ModifierDaoUtils;
import com.gingersoft.gsa.cloud.order.bean.discount.MemberWalletCoupon;
import com.gingersoft.gsa.cloud.order.bean.request.DeleteOrderRequest; import com.gingersoft.gsa.cloud.order.bean.request.DeleteOrderRequest;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail; import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.order.order.BaseOrder; import com.gingersoft.gsa.cloud.order.order.BaseOrder;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder; import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
import com.gingersoft.gsa.cloud.print.bean.PrintContent; import com.gingersoft.gsa.cloud.print.bean.PrintContent;
import com.gingersoft.gsa.cloud.print.bean.adapter.PrintContentAdapter; import com.gingersoft.gsa.cloud.print.bean.adapter.PrintContentAdapter;
import com.gingersoft.gsa.cloud.table.mvp.action.discount.MealCouponAction;
import com.gingersoft.gsa.cloud.table.mvp.action.discount.MealDiscountAction;
import com.gingersoft.gsa.cloud.table.mvp.action.meal.PrinterAction; import com.gingersoft.gsa.cloud.table.mvp.action.meal.PrinterAction;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.FoodReason; import com.gingersoft.gsa.cloud.table.mvp.model.bean.FoodReason;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood; import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.event.LoadFineEvent;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.AddOrderRequest; import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.AddOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.CreateOrderRequest; import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.CreateOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.presenter.BaseOrderPresenter; import com.gingersoft.gsa.cloud.table.mvp.presenter.BaseOrderPresenter;
...@@ -133,6 +138,14 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model, ...@@ -133,6 +138,14 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
List<SoldoutCtrFood> mSoldoutCtrList;//沽清食品數據 List<SoldoutCtrFood> mSoldoutCtrList;//沽清食品數據
private PrinterAction mPrinterAction; private PrinterAction mPrinterAction;
/**
* 食品折扣
*/
private MealDiscountAction mMealDiscountAction;
/**
* 食品優惠券
*/
private MealCouponAction mMealCouponAction;
private OrderDetail mCurrentOrderDetailBean; private OrderDetail mCurrentOrderDetailBean;
private boolean RvMealClicked; private boolean RvMealClicked;
...@@ -140,6 +153,43 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model, ...@@ -140,6 +153,43 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
@Inject @Inject
public SetMealPresenter(SetMealContract.Model model, SetMealContract.View rootView) { public SetMealPresenter(SetMealContract.Model model, SetMealContract.View rootView) {
super(model, rootView); super(model, rootView);
initAction();
}
private void initAction() {
mMealDiscountAction = MealDiscountAction.builder()
.context(mRootView.getActivity2())
.cashStr(cashStr)
.listener(new MealDiscountAction.OnCallBackListener() {
@Override
public void exclusiveRemoveOthers() {
//獨佔折扣刪除其他折扣
int start_position = mSelectMealAdapter.getSelect_full_start_position();
int end_position = mSelectMealAdapter.getSelect_full_end_position();
for (int i = mOrderMealList.size() - 1; i >= 0; i--) {
if (start_position <= i && i <= end_position) {
OrderDetail orderMealItem = mOrderMealList.get(i);
if (orderMealItem.getDiscount() != null) {
mOrderMealList.remove(i);
}
}
}
}
@Override
public void preformAddDiscount(Discount discount) {
addDiscountItem(discount);
}
})
.build();
mMealCouponAction = MealCouponAction.builder()
.context(mRootView.getActivity2())
.cashStr(cashStr)
.listener((discount) -> {
addCouponItem(discount);
})
.build();
} }
@Override @Override
...@@ -481,7 +531,7 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model, ...@@ -481,7 +531,7 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
//更新賬單金額 //更新賬單金額
updateBillInfo(); updateBillInfo();
// IActivity.setFineItemSlodoutListFull(mSoldoutCtrList); updateFineFragmentSoldoutList();
mRootView.setMealRvScrollToPosition(addPosition); mRootView.setMealRvScrollToPosition(addPosition);
} }
...@@ -519,6 +569,21 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model, ...@@ -519,6 +569,21 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
}); });
} }
public void discountAndCouponClick(AbstractDiscount discountBean) {
if (!discountAndCouponConditionFilter()) {
return;
}
if (discountBean instanceof MemberWalletCoupon) {
mMealCouponAction.setSelectMixOrderMealList(getSelectMixOrderMealList());
mMealCouponAction.action((MemberWalletCoupon) discountBean);
} else if (discountBean instanceof Discount) {
mMealDiscountAction.setSelectMixOrderMealList(getSelectMixOrderMealList());
mMealDiscountAction.action((Discount) discountBean);
} else {
//TODO
}
}
private void addFoodItemBefore(OrderDetail datasBean) { private void addFoodItemBefore(OrderDetail datasBean) {
int addPosition = addFoodItem(datasBean); int addPosition = addFoodItem(datasBean);
//这里主食品作为选中主体 //这里主食品作为选中主体
...@@ -658,6 +723,26 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model, ...@@ -658,6 +723,26 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
updateOrderFoodNumber(); updateOrderFoodNumber();
} }
private void addDiscountItem(Discount discount) {
//主食品ID
long id = getCurrParentFoodId();
mCurrentOrderDetailBean = OrderDetail.discountTransOrderDetail(discount, true, id, getDisountSourcePrice());
int addPosition = mSelectMealAdapter.addFoodItem(mCurrentOrderDetailBean);
mRootView.setMealRvScrollToPosition(addPosition);
//更新賬單金額
updateBillInfo();
}
private void addCouponItem(MemberWalletCoupon walletCoupon) {
//主食品ID
long id = getCurrParentFoodId();
mCurrentOrderDetailBean = OrderDetail.couponTransOrderDetail(walletCoupon, true, id, getDisountSourcePrice());
int addPosition = mSelectMealAdapter.addFoodItem(mCurrentOrderDetailBean);
mRootView.setMealRvScrollToPosition(addPosition);
//更新賬單金額
updateBillInfo();
}
/** /**
* 刪除食品 * 刪除食品
* *
...@@ -812,7 +897,6 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model, ...@@ -812,7 +897,6 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
/** /**
* 打印上菜紙 * 打印上菜紙
*
*/ */
private void printSendOrder() { private void printSendOrder() {
if (DoshokuOrder.getInstance().getNewFoodList() == null || DoshokuOrder.getInstance().getNewFoodList().size() <= 0) { if (DoshokuOrder.getInstance().getNewFoodList() == null || DoshokuOrder.getInstance().getNewFoodList().size() <= 0) {
...@@ -1060,7 +1144,8 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model, ...@@ -1060,7 +1144,8 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
return addPosition; return addPosition;
} }
private int getEndInsertPosition(List<OrderDetail> newOrderList, OrderDetail orderDetail, int currentI) { private int getEndInsertPosition(List<OrderDetail> newOrderList, OrderDetail orderDetail,
int currentI) {
boolean hasChildFood = false; boolean hasChildFood = false;
for (int i = currentI; i < newOrderList.size(); i++) { for (int i = currentI; i < newOrderList.size(); i++) {
OrderDetail item = newOrderList.get(i); OrderDetail item = newOrderList.get(i);
...@@ -1359,7 +1444,8 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model, ...@@ -1359,7 +1444,8 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
} }
} }
private void setModifierSoldoutCtrData(List<Modifier> modifierList, List<SoldoutCtrFood> soldoutCtrFoods) { private void setModifierSoldoutCtrData
(List<Modifier> modifierList, List<SoldoutCtrFood> soldoutCtrFoods) {
for (SoldoutCtrFood scc : soldoutCtrFoods) { for (SoldoutCtrFood scc : soldoutCtrFoods) {
for (Modifier modifier : modifierList) { for (Modifier modifier : modifierList) {
if (scc.getType() == MODIFIER_TYPE && scc.getModifierId() != null && modifier.getMid() != 0 && modifier.getMid() == scc.getModifierId()) { if (scc.getType() == MODIFIER_TYPE && scc.getModifierId() != null && modifier.getMid() != 0 && modifier.getMid() == scc.getModifierId()) {
...@@ -1729,6 +1815,14 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model, ...@@ -1729,6 +1815,14 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
return true; return true;
} }
private boolean discountAndCouponConditionFilter() {
//折扣金額是否>0
if (Double.doubleToLongBits(getDisountSourcePrice()) == 0) {
return false;
}
return true;
}
/** /**
* 獲取所要折扣金額 * 獲取所要折扣金額
* *
...@@ -1761,6 +1855,38 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model, ...@@ -1761,6 +1855,38 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
} }
/** /**
* 獲取當前選中的套餐食品組
*
* @return
*/
private List<OrderDetail> getSelectMixOrderMealList() {
List<OrderDetail> mixOrderMealList = new ArrayList<>();
int start_position = mSelectMealAdapter.getSelect_full_start_position();
int end_position = mSelectMealAdapter.getSelect_full_end_position();
for (int i = 0; i < mOrderMealList.size(); i++) {
if (start_position <= i && i <= end_position) {
mixOrderMealList.add(mOrderMealList.get(i));
}
}
return mixOrderMealList;
}
/**
* 獲取當前選擇主食品ID
* @return
*/
private long getCurrParentFoodId(){
long id = 0;
if (mSelectMealAdapter.getCurrentMainOrderDetail() != null) {
if (mCurrentOrderDetailBean.isNew()) {
id = mSelectMealAdapter.getCurrentMainOrderDetail().getProductId();
} else {
id = mSelectMealAdapter.getCurrentMainOrderDetail().getId();
}
}
return id;
}
/**
* 更新食品組,食品選中數量 * 更新食品組,食品選中數量
*/ */
public void updateOrderFoodNumber() { public void updateOrderFoodNumber() {
...@@ -1826,7 +1952,8 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model, ...@@ -1826,7 +1952,8 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
* @param deleteNumber * @param deleteNumber
* @return * @return
*/ */
private DeleteOrderRequest getDeleteOrderRequest(String ids, long reasonId, int maxNumber, int deleteNumber) { private DeleteOrderRequest getDeleteOrderRequest(String ids, long reasonId, int maxNumber,
int deleteNumber) {
List<DeleteOrderRequest.DeleteBean> mapsDelete = getMapsDelete(ids, maxNumber, deleteNumber); List<DeleteOrderRequest.DeleteBean> mapsDelete = getMapsDelete(ids, maxNumber, deleteNumber);
byte type = (byte) (mDoshokuOrder.isModifyOrder() ? 2 : 1); byte type = (byte) (mDoshokuOrder.isModifyOrder() ? 2 : 1);
long orderId = mDoshokuOrder.getOrderId(); long orderId = mDoshokuOrder.getOrderId();
...@@ -1849,7 +1976,8 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model, ...@@ -1849,7 +1976,8 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
* @param deleteNumber * @param deleteNumber
* @return * @return
*/ */
private List<DeleteOrderRequest.DeleteBean> getMapsDelete(String ids, int maxNumber, int deleteNumber) { private List<DeleteOrderRequest.DeleteBean> getMapsDelete(String ids, int maxNumber,
int deleteNumber) {
List<DeleteOrderRequest.DeleteBean> deleteMaps = new ArrayList<>(); List<DeleteOrderRequest.DeleteBean> deleteMaps = new ArrayList<>();
//取消食品id //取消食品id
String[] idsArray = ids.split(","); String[] idsArray = ids.split(",");
...@@ -1892,6 +2020,22 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model, ...@@ -1892,6 +2020,22 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
return str; return str;
} }
public LoadFineEvent getLoadFineData(int currFinePage) {
long productId = 0;
if (mCurrentOrderDetailBean != null) {
productId = mCurrentOrderDetailBean.getProductId();
}
//加載細項數據
List<SoldoutCtrFood> soldoutCtrList = mSoldoutCtrList;
int selectedMode = mSelectMealAdapter.getSelectedMode();
LoadFineEvent fineEvent = new LoadFineEvent();
fineEvent.setProductId(productId);
fineEvent.setCurrFinePage(currFinePage);
fineEvent.setSelectedMode(selectedMode);
fineEvent.setSoldoutCtrFoods(soldoutCtrList);
return fineEvent;
}
public OrderDetail getCurrentOrderDetailBean() { public OrderDetail getCurrentOrderDetailBean() {
return mCurrentOrderDetailBean; return mCurrentOrderDetailBean;
} }
......
...@@ -625,8 +625,6 @@ public class OrderContentActivity extends BaseFragmentActivity<OrderContentPrese ...@@ -625,8 +625,6 @@ public class OrderContentActivity extends BaseFragmentActivity<OrderContentPrese
} }
} else if (requestCode == ScanHelper.CALL_BACK_QR_RESULT) { } else if (requestCode == ScanHelper.CALL_BACK_QR_RESULT) {
mPresenter.closeDiscountDialog();
String qrCodeResult = data.getStringExtra("qrCodeResult"); String qrCodeResult = data.getStringExtra("qrCodeResult");
String encryptQRCode; String encryptQRCode;
try { try {
......
...@@ -62,9 +62,6 @@ public class DiscountDialogFragment extends BaseDialogFragment<BasePresenter> { ...@@ -62,9 +62,6 @@ public class DiscountDialogFragment extends BaseDialogFragment<BasePresenter> {
@BindView(R2.id.ll_container) @BindView(R2.id.ll_container)
QMUILinearLayout llContainer; QMUILinearLayout llContainer;
private CouponFragment couponFragment;
private NomalDiscountFragment billDiscountFragment;
private List<String> mTabList = new ArrayList<>(); private List<String> mTabList = new ArrayList<>();
private int mCurrentPageIndex = 0; private int mCurrentPageIndex = 0;
...@@ -154,7 +151,7 @@ public class DiscountDialogFragment extends BaseDialogFragment<BasePresenter> { ...@@ -154,7 +151,7 @@ public class DiscountDialogFragment extends BaseDialogFragment<BasePresenter> {
private List<Fragment> createFragments() { private List<Fragment> createFragments() {
List<Fragment> fragments = new ArrayList<>(); 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() { couponFragment.setOnCouponItemClickListener(new CouponFragment.OnCouponItemClickListener() {
@Override @Override
public void onItemClick(MemberWalletCoupon item, int position) { public void onItemClick(MemberWalletCoupon item, int position) {
...@@ -163,7 +160,7 @@ public class DiscountDialogFragment extends BaseDialogFragment<BasePresenter> { ...@@ -163,7 +160,7 @@ public class DiscountDialogFragment extends BaseDialogFragment<BasePresenter> {
} }
} }
}); });
billDiscountFragment = NomalDiscountFragment.newInstance(); NomalDiscountFragment billDiscountFragment = NomalDiscountFragment.newInstance();
billDiscountFragment.setOnDiscountItemClickListener(new NomalDiscountFragment.OnBillDiscountItemClickListener() { billDiscountFragment.setOnDiscountItemClickListener(new NomalDiscountFragment.OnBillDiscountItemClickListener() {
@Override @Override
public void onItemClick(Discount item, int position) { public void onItemClick(Discount item, int position) {
......
...@@ -118,25 +118,28 @@ public class DiscountFragment extends BaseFragment<BasePresenter> { ...@@ -118,25 +118,28 @@ public class DiscountFragment extends BaseFragment<BasePresenter> {
public void onDoubleTap(int index) { public void onDoubleTap(int index) {
} }
}); });
QMUITabSegmentUtils.setNomalTabSegmentStyle(tabSegment,viewPager); QMUITabSegmentUtils.setNomalTabSegmentStyle(tabSegment, viewPager);
} }
private List<Fragment> createFragments() { private List<Fragment> createFragments() {
List<Fragment> fragments = new ArrayList<>(); 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(); NomalDiscountFragment billDiscountFragment = NomalDiscountFragment.newInstance();
billDiscountFragment.setOnDiscountItemClickListener((item, position) -> { billDiscountFragment.setOnDiscountItemClickListener((item, position) -> {
if (onDiscountItemClickListener != null) { if (onDiscountItemClickListener != null) {
onDiscountItemClickListener.onBillDiscountClick(item, position); 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); fragments.add(billDiscountFragment);
MemberInfo memberInfo = DoshokuOrder.getInstance().getMemberInfo();
if (memberInfo != null) {
fragments.add(couponFragment);
}
return fragments; return fragments;
} }
......
...@@ -3,6 +3,7 @@ package com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand; ...@@ -3,6 +3,7 @@ package com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand;
import android.app.Activity; import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.os.Message;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
...@@ -59,15 +60,22 @@ public class FineChildAllFragment extends BaseFragment<FineChildAllPresenter> im ...@@ -59,15 +60,22 @@ public class FineChildAllFragment extends BaseFragment<FineChildAllPresenter> im
@BindView(R2.id.recycle_fine_item_kind_item) @BindView(R2.id.recycle_fine_item_kind_item)
RecyclerView 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"; private int modCol;
public final static String UPDATE_FINE_DATA_EVENT = "updateFineDataEvent"; public final static String UPDATE_FINE_DATA_EVENT = "updateFineSoldoutEvent";
public static FineChildAllFragment newInstance() { public static FineChildAllFragment newInstance() {
FineChildAllFragment fragment = new FineChildAllFragment(); FineChildAllFragment fragment = new FineChildAllFragment();
return fragment; 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 @Override
public void setupFragmentComponent(@NonNull AppComponent appComponent) { public void setupFragmentComponent(@NonNull AppComponent appComponent) {
...@@ -86,14 +94,20 @@ public class FineChildAllFragment extends BaseFragment<FineChildAllPresenter> im ...@@ -86,14 +94,20 @@ public class FineChildAllFragment extends BaseFragment<FineChildAllPresenter> im
@Override @Override
public void initData(@Nullable Bundle savedInstanceState) { public void initData(@Nullable Bundle savedInstanceState) {
final Bundle arguments = getArguments();
if (arguments != null) {
mLoadFineEvent = arguments.getParcelable("loadFineEvent");
}
modCol = GsaCloudApplication.uiStyleConfiguration.getModColumnValue(); modCol = GsaCloudApplication.uiStyleConfiguration.getModColumnValue();
mPresenter.initAdapter(); mPresenter.initAdapter();
mPresenter.initItemListener(mContext); mPresenter.initItemListener(mContext);
if (mLoadFineEvent != null) {
loadFineData(mLoadFineEvent);
}
} }
@Subscriber(tag = LOAD_FINE_DATA_EVENT, mode = ThreadMode.MAIN)
public void loadFineData(LoadFineEvent fineEvent) { public void loadFineData(LoadFineEvent fineEvent) {
final int currFinePage = fineEvent.getCurrFinePage(); final int currFinePage = fineEvent.getCurrFinePage();
final long productId = fineEvent.getProductId(); final long productId = fineEvent.getProductId();
...@@ -120,7 +134,7 @@ public class FineChildAllFragment extends BaseFragment<FineChildAllPresenter> im ...@@ -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) { public void updateFineItemSoldoutListFull(List<SoldoutCtrFood> soldoutListFull) {
setModifierSoldoutFoodList_Full(soldoutListFull); setModifierSoldoutFoodList_Full(soldoutListFull);
updateParentModifierSlodoutFoodList_Full(); updateParentModifierSlodoutFoodList_Full();
...@@ -128,7 +142,6 @@ public class FineChildAllFragment extends BaseFragment<FineChildAllPresenter> im ...@@ -128,7 +142,6 @@ public class FineChildAllFragment extends BaseFragment<FineChildAllPresenter> im
@Override @Override
public void setData(@Nullable Object data) { public void setData(@Nullable Object data) {
} }
public void setModifierSoldoutFoodList_Full(List<SoldoutCtrFood> soldoutCtrFoodList) { public void setModifierSoldoutFoodList_Full(List<SoldoutCtrFood> soldoutCtrFoodList) {
......
...@@ -107,10 +107,11 @@ public class RiceponMemberDialogFragment extends BaseDialogFragment<RiceponMembe ...@@ -107,10 +107,11 @@ public class RiceponMemberDialogFragment extends BaseDialogFragment<RiceponMembe
private TableBean.DataBean mCurrTableBean; private TableBean.DataBean mCurrTableBean;
private MemberInfo mMemberInfo; private MemberInfo mMemberInfo;
public static RiceponMemberDialogFragment newInstance(TableBean.DataBean currTableBean) { public static RiceponMemberDialogFragment newInstance(TableBean.DataBean currTableBean, MemberInfo memberInfo) {
RiceponMemberDialogFragment fragment = new RiceponMemberDialogFragment(); RiceponMemberDialogFragment fragment = new RiceponMemberDialogFragment();
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putParcelable("currTableBean", currTableBean); bundle.putParcelable("currTableBean", currTableBean);
bundle.putParcelable("memberInfo", memberInfo);
fragment.setArguments(bundle); fragment.setArguments(bundle);
return fragment; return fragment;
} }
...@@ -134,6 +135,7 @@ public class RiceponMemberDialogFragment extends BaseDialogFragment<RiceponMembe ...@@ -134,6 +135,7 @@ public class RiceponMemberDialogFragment extends BaseDialogFragment<RiceponMembe
public void onCreate(@Nullable Bundle savedInstanceState) { public void onCreate(@Nullable Bundle savedInstanceState) {
Bundle arguments = getArguments(); Bundle arguments = getArguments();
mCurrTableBean = arguments.getParcelable("currTableBean"); mCurrTableBean = arguments.getParcelable("currTableBean");
mMemberInfo = arguments.getParcelable("memberInfo");
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
} }
...@@ -142,6 +144,7 @@ public class RiceponMemberDialogFragment extends BaseDialogFragment<RiceponMembe ...@@ -142,6 +144,7 @@ public class RiceponMemberDialogFragment extends BaseDialogFragment<RiceponMembe
initTopbar(); initTopbar();
initAdapter(); initAdapter();
returnMemberInfo(mMemberInfo);
} }
@Override @Override
...@@ -265,6 +268,9 @@ public class RiceponMemberDialogFragment extends BaseDialogFragment<RiceponMembe ...@@ -265,6 +268,9 @@ public class RiceponMemberDialogFragment extends BaseDialogFragment<RiceponMembe
@Override @Override
public void returnMemberInfo(MemberInfo memberInfo) { public void returnMemberInfo(MemberInfo memberInfo) {
if (memberInfo == null) {
return;
}
this.mMemberInfo = memberInfo; this.mMemberInfo = memberInfo;
final List<SectionTextItem> memberInfoItems = getMemberInfoItem(memberInfo); final List<SectionTextItem> memberInfoItems = getMemberInfoItem(memberInfo);
if (mMemberInfoList.size() > 0) { if (mMemberInfoList.size() > 0) {
......
...@@ -6,6 +6,7 @@ import android.app.Dialog; ...@@ -6,6 +6,7 @@ import android.app.Dialog;
import android.content.Intent; import android.content.Intent;
import android.graphics.Color; import android.graphics.Color;
import android.os.Bundle; import android.os.Bundle;
import android.os.Message;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.SparseArray; import android.util.SparseArray;
import android.view.LayoutInflater; import android.view.LayoutInflater;
...@@ -44,8 +45,10 @@ import com.gingersoft.gsa.cloud.common.utils.LanguageUtils; ...@@ -44,8 +45,10 @@ import com.gingersoft.gsa.cloud.common.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.common.utils.other.SPUtils; import com.gingersoft.gsa.cloud.common.utils.other.SPUtils;
import com.gingersoft.gsa.cloud.component.ComponentName; import com.gingersoft.gsa.cloud.component.ComponentName;
import com.gingersoft.gsa.cloud.database.bean.ComboItem; import com.gingersoft.gsa.cloud.database.bean.ComboItem;
import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.gingersoft.gsa.cloud.database.bean.Food; import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.bean.Modifier; import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.order.bean.discount.MemberWalletCoupon;
import com.gingersoft.gsa.cloud.order.bean.response.OrderResponse; import com.gingersoft.gsa.cloud.order.bean.response.OrderResponse;
import com.gingersoft.gsa.cloud.order.billItem.BillItem; import com.gingersoft.gsa.cloud.order.billItem.BillItem;
import com.gingersoft.gsa.cloud.order.cart.ShoppingCart; import com.gingersoft.gsa.cloud.order.cart.ShoppingCart;
...@@ -72,12 +75,15 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.FoodAdapter; ...@@ -72,12 +75,15 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.FoodAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.FoodGroupAdapter; import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.FoodGroupAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ModifierAdapter; import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ModifierAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.SelectMealAdapter; import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.SelectMealAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.discount.DiscountFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.CancelFoodDialog; import com.gingersoft.gsa.cloud.table.mvp.ui.widget.CancelFoodDialog;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.ChooseNumberDialog; import com.gingersoft.gsa.cloud.table.mvp.ui.widget.ChooseNumberDialog;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.CustomFoodDialog; import com.gingersoft.gsa.cloud.table.mvp.ui.widget.CustomFoodDialog;
import com.gingersoft.gsa.cloud.ui.adapter.ViewPager2Adapter;
import com.gingersoft.gsa.cloud.ui.recylcler.Indicator.PagerConfig; import com.gingersoft.gsa.cloud.ui.recylcler.Indicator.PagerConfig;
import com.gingersoft.gsa.cloud.ui.recylcler.Indicator.PagerGridLayoutManager; import com.gingersoft.gsa.cloud.ui.recylcler.Indicator.PagerGridLayoutManager;
import com.gingersoft.gsa.cloud.ui.recylcler.Indicator.PagerGridSnapHelper; import com.gingersoft.gsa.cloud.ui.recylcler.Indicator.PagerGridSnapHelper;
import com.gingersoft.gsa.cloud.ui.utils.QMUITabSegmentUtils;
import com.gingersoft.gsa.cloud.ui.view.MyTableView; import com.gingersoft.gsa.cloud.ui.view.MyTableView;
import com.gingersoft.gsa.cloud.ui.view.SearchKeyBoardView; import com.gingersoft.gsa.cloud.ui.view.SearchKeyBoardView;
import com.gingersoft.gsa.cloud.ui.view.base.NoScrollRecyclerView; import com.gingersoft.gsa.cloud.ui.view.base.NoScrollRecyclerView;
...@@ -92,6 +98,10 @@ import com.jess.arms.utils.ArmsUtils; ...@@ -92,6 +98,10 @@ import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.alpha.QMUIAlphaTextView; import com.qmuiteam.qmui.alpha.QMUIAlphaTextView;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog; import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction; import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
import com.qmuiteam.qmui.widget.tab.QMUITab;
import com.qmuiteam.qmui.widget.tab.QMUITabBuilder;
import com.qmuiteam.qmui.widget.tab.QMUITabSegment;
import com.qmuiteam.qmui.widget.tab.QMUITabSegment2;
import org.simple.eventbus.EventBus; import org.simple.eventbus.EventBus;
import org.simple.eventbus.Subscriber; import org.simple.eventbus.Subscriber;
...@@ -181,19 +191,17 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S ...@@ -181,19 +191,17 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
@BindView(R2.id.scroll_combo) @BindView(R2.id.scroll_combo)
NestedScrollView scrollCombo; NestedScrollView scrollCombo;
// @BindView(R2.id.ll_fine) @BindView(R2.id.ll_fine)
// LinearLayout llFine; LinearLayout llFine;
// @BindView(R2.id.tab_fine) @BindView(R2.id.tabs_fine)
// MyTableView tabFine; QMUITabSegment2 tabSegmentFine;
// @BindView(R2.id.pager_fine) @BindView(R2.id.pager_fine)
// ViewPager2 vPager2Fine; ViewPager2 vPager2Fine;
@BindView(R2.id.meal_stand_search_keyboard_view) @BindView(R2.id.meal_stand_search_keyboard_view)
SearchKeyBoardView mealStandSearchKeyboardView; SearchKeyBoardView mealStandSearchKeyboardView;
@BindView(R2.id.fl_discount_fragment) @BindView(R2.id.fl_discount_fragment)
FrameLayout flDiscountFragment; FrameLayout flDiscountFragment;
@BindView(R2.id.fl_fine_fragment)
FrameLayout flFineFragment;
@BindView(R2.id.btn_select_all) @BindView(R2.id.btn_select_all)
QMUIAlphaTextView btnSelectAll; QMUIAlphaTextView btnSelectAll;
...@@ -251,8 +259,8 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S ...@@ -251,8 +259,8 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
private int comboColumn = 4; private int comboColumn = 4;
private int modColumn = 4; private int modColumn = 4;
private DiscountFragment discountFragment;
private CancelFoodDialog mCancelFoodDialog; private CancelFoodDialog mCancelFoodDialog;
private ChooseNumberDialog mChooseNumberDialog;
public static SetMealFragment newInstance() { public static SetMealFragment newInstance() {
SetMealFragment fragment = new SetMealFragment(); SetMealFragment fragment = new SetMealFragment();
...@@ -278,11 +286,13 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S ...@@ -278,11 +286,13 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
public void initData(@Nullable Bundle savedInstanceState) { public void initData(@Nullable Bundle savedInstanceState) {
mActivity = (MealStandActivity2) _mActivity; mActivity = (MealStandActivity2) _mActivity;
initUIStyleConfiguration(); discountFragment = findChildFragment(DiscountFragment.class);
initRecyclerConfiguration();
initViewMap(); initViewMap();
initAdapter(); initAdapter();
initLayoutManager(); initLayoutManager();
initClickListener(); initListener();
mPresenter.initMealData(); mPresenter.initMealData();
mPresenter.getCurrentSoldoutFood(); mPresenter.getCurrentSoldoutFood();
} }
...@@ -304,7 +314,7 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S ...@@ -304,7 +314,7 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
} }
} }
private void initUIStyleConfiguration() { private void initRecyclerConfiguration() {
foodGroupColumn = GsaCloudApplication.uiStyleConfiguration.getFoodGroupColumnValue(); foodGroupColumn = GsaCloudApplication.uiStyleConfiguration.getFoodGroupColumnValue();
foodGroupRow = GsaCloudApplication.uiStyleConfiguration.getFoodGroupRowValue(); foodGroupRow = GsaCloudApplication.uiStyleConfiguration.getFoodGroupRowValue();
foodColumn = GsaCloudApplication.uiStyleConfiguration.getFoodColumnValue(); foodColumn = GsaCloudApplication.uiStyleConfiguration.getFoodColumnValue();
...@@ -317,7 +327,7 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S ...@@ -317,7 +327,7 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
map.put(MealConstant.food_ViewMode, rvFood); map.put(MealConstant.food_ViewMode, rvFood);
map.put(MealConstant.combo_ViewMode, scrollCombo); map.put(MealConstant.combo_ViewMode, scrollCombo);
map.put(MealConstant.discount_ViewMode, flDiscountFragment); map.put(MealConstant.discount_ViewMode, flDiscountFragment);
map.put(MealConstant.fine_ViewMode, flFineFragment); map.put(MealConstant.fine_ViewMode, llFine);
map.put(MealConstant.keys_viewMode, mealStandSearchKeyboardView); map.put(MealConstant.keys_viewMode, mealStandSearchKeyboardView);
} }
...@@ -329,7 +339,7 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S ...@@ -329,7 +339,7 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
} else { } else {
btnTable.setText(dataBean.getTableName()); btnTable.setText(dataBean.getTableName());
} }
btnNumberman.setText("人數:" + dataBean.getPerson() + ""); btnNumberman.setText("人數:" + dataBean.getPerson());
} }
} }
...@@ -360,7 +370,7 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S ...@@ -360,7 +370,7 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
} }
} }
public void initClickListener() { public void initListener() {
mFoodAdapter.setOnItemClickListener((datasBean, position) -> { mFoodAdapter.setOnItemClickListener((datasBean, position) -> {
recordOperat(true); recordOperat(true);
mPresenter.foodItemClick(datasBean); mPresenter.foodItemClick(datasBean);
...@@ -389,6 +399,25 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S ...@@ -389,6 +399,25 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
recordOperat(true); recordOperat(true);
mPresenter.sendOrder(false, null); mPresenter.sendOrder(false, null);
}); });
//折扣,优惠券
if (discountFragment != null) {
discountFragment.setOnDiscountItemClickListener(new DiscountFragment.OnDiscountItemClickListener() {
@Override
public void onBillDiscountClick(Discount discountBean, int position) {
recordOperat(true);
LoganManager.w_tableMode(TAG, LoganManager.EVENT_ADD + "折扣【" + discountBean.getRemark() + "】");
mPresenter.discountAndCouponClick(discountBean);
}
@Override
public void onCouponClick(MemberWalletCoupon coupon, int position) {
recordOperat(true);
LoganManager.w_tableMode(TAG, LoganManager.EVENT_ADD + "優惠券【" + coupon.getCouponTypeName() + "】");
mPresenter.discountAndCouponClick(coupon);
}
});
}
} }
...@@ -450,38 +479,68 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S ...@@ -450,38 +479,68 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
} }
} }
@OnClick(R2.id.iv_fine_back)
void onFineBackViewClick(View view) {
setCurrViewMode(MealConstant.food_group_ViewMode, MealConstant.food_ViewMode);
}
/** /**
* 显示公共細項 * 显示公共細項
*/ */
public void showFineLayout(int currFinePage) { public void showFineLayout(int currFinePage) {
if (!isLoadFineFragment) {
isLoadFineFragment = true;
initFineViewPager(currFinePage);
} else {
vPager2Fine.setCurrentItem(currFinePage);
}
setCurrViewMode(MealConstant.fine_ViewMode); setCurrViewMode(MealConstant.fine_ViewMode);
final FineFragment childFragment = findChildFragment(FineFragment.class);
if (childFragment != null) {
if (isLoadFineFragment) {
childFragment.setCurrentItem(currFinePage);
return;
} }
long productId = 0;
if (mPresenter.getCurrentOrderDetailBean() != null) { private void initFineViewPager(int currFinePage) {
productId = mPresenter.getCurrentOrderDetailBean().getProductId(); String[] tabList = {"口味", "訊息"};
QMUITabBuilder builder = tabSegmentFine.tabBuilder();
for (final String tabTitle : tabList) {
QMUITab tab = builder
.setText(tabTitle)
.build(mContext);
tabSegmentFine.addTab(tab);
} }
//選中模式 vPager2Fine.setAdapter(new ViewPager2Adapter(this, createFragments()));
int selectedMode = mPresenter.getSelectMealAdapter().getSelectedMode(); vPager2Fine.setCurrentItem(currFinePage);
//設置沽清數據 tabSegmentFine.addOnTabSelectedListener(new QMUITabSegment.OnTabSelectedListener() {
List<SoldoutCtrFood> soldoutCtrFoods = mPresenter.getSoldoutCtrList();
LoadFineEvent fineEvent = new LoadFineEvent(); @Override
fineEvent.setCurrFinePage(currFinePage); public void onTabSelected(int index) {
fineEvent.setProductId(productId); LoganManager.w_tableMode(TAG, "當前頁面【" + tabList[index] + "】");
fineEvent.setSelectedMode(selectedMode); }
fineEvent.setSoldoutCtrFoods(soldoutCtrFoods);
//加载细项数据 @Override
EventBus.getDefault().post(fineEvent, FineChildAllFragment.LOAD_FINE_DATA_EVENT); public void onTabUnselected(int index) {
childFragment.setCurrentItem(currFinePage); }
isLoadFineFragment = true; @Override
public void onTabReselected(int index) {
} }
@Override
public void onDoubleTap(int index) {
}
});
QMUITabSegmentUtils.setNomalTabSegmentStyle(tabSegmentFine, vPager2Fine);
}
private List<Fragment> createFragments() {
LoadFineEvent loadFineData = mPresenter.getLoadFineData(0);
LoadFineEvent loadFineData2 = mPresenter.getLoadFineData(1);
List<Fragment> fragments = new ArrayList<>();
FineChildAllFragment modSasteFineItemFragment = FineChildAllFragment.newInstance(loadFineData);
FineChildAllFragment modMsgFineItemFragment = FineChildAllFragment.newInstance(loadFineData2);
fragments.add(modSasteFineItemFragment);
fragments.add(modMsgFineItemFragment);
return fragments;
} }
@Override @Override
...@@ -1000,7 +1059,7 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S ...@@ -1000,7 +1059,7 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
private void showRiceponMemberDialogFragment() { private void showRiceponMemberDialogFragment() {
recordOperat(false); recordOperat(false);
RiceponMemberDialogFragment dialogFragment = RiceponMemberDialogFragment.newInstance(DoshokuOrder.getInstance().getOpenTableInfo()); RiceponMemberDialogFragment dialogFragment = RiceponMemberDialogFragment.newInstance(DoshokuOrder.getInstance().getOpenTableInfo(),DoshokuOrder.getInstance().getMemberInfo());
dialogFragment.setOnUseMemberListener(new RiceponMemberDialogFragment.OnUseMemberListener() { dialogFragment.setOnUseMemberListener(new RiceponMemberDialogFragment.OnUseMemberListener() {
@Override @Override
public void onUseMember(MemberInfo memberInfo) { public void onUseMember(MemberInfo memberInfo) {
......
...@@ -2,13 +2,12 @@ ...@@ -2,13 +2,12 @@
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_bill_discount" android:id="@+id/rv_bill_discount"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:orientation="horizontal" android:orientation="horizontal" />
/>
</FrameLayout> </FrameLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="match_parent">
<com.scwang.smartrefresh.layout.SmartRefreshLayout <com.scwang.smartrefresh.layout.SmartRefreshLayout
android:id="@+id/refreshLayout" android:id="@+id/refreshLayout"
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_coupon" android:id="@+id/rv_coupon"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:layout_alignParentBottom="true" android:layout_alignParentBottom="true"
android:layout_gravity="bottom" android:layout_gravity="bottom"
android:orientation="horizontal" /> android:orientation="horizontal" />
......
...@@ -57,23 +57,9 @@ ...@@ -57,23 +57,9 @@
android:layout_above="@+id/ll_modify" android:layout_above="@+id/ll_modify"
android:visibility="gone"> 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 <fragment
android:id="@+id/fragment_fine" android:id="@+id/fragment_discount"
android:name="com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand.FineFragment" android:name="com.gingersoft.gsa.cloud.table.mvp.ui.fragment.discount.DiscountFragment"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" /> android:layout_height="wrap_content" />
</FrameLayout> </FrameLayout>
......
...@@ -4,17 +4,30 @@ ...@@ -4,17 +4,30 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/ll_fine" android:id="@+id/ll_fine"
android:layout_width="match_parent" 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 <com.qmuiteam.qmui.widget.tab.QMUITabSegment2
android:id="@+id/tabs_fine" android:id="@+id/tabs_fine"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/dp_45" android:layout_height="@dimen/dp_45" />
android:background="@drawable/shape_tab_panel_bg" />
<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 <androidx.viewpager2.widget.ViewPager2
android:id="@+id/pager_fine" android:id="@+id/pager_fine"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"/> android:layout_height="match_parent"/>
</LinearLayout> </LinearLayout>
\ No newline at end of file
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/ll_container" android:id="@+id/ll_container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:orientation="vertical"> android:orientation="vertical">
<com.qmuiteam.qmui.widget.tab.QMUITabSegment2 <com.qmuiteam.qmui.widget.tab.QMUITabSegment2
......
package com.gingersoft.gsa.cloud.common.core.member; package com.gingersoft.gsa.cloud.common.core.member;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils; import android.text.TextUtils;
import java.io.Serializable; import java.io.Serializable;
...@@ -14,7 +16,7 @@ import lombok.Data; ...@@ -14,7 +16,7 @@ import lombok.Data;
* 描述: * 描述:
*/ */
@Data @Data
public class MemberInfo implements Serializable { public class MemberInfo implements Parcelable {
/** /**
* ablediscount : 0 * ablediscount : 0
...@@ -190,8 +192,8 @@ public class MemberInfo implements Serializable { ...@@ -190,8 +192,8 @@ public class MemberInfo implements Serializable {
private MemberExpireDateBean memberExpireDate; private MemberExpireDateBean memberExpireDate;
private VaildTimeBean vaildTime; private VaildTimeBean vaildTime;
public MemberInfo() {
}
public String getLevelName(){ public String getLevelName(){
if(!TextUtils.isEmpty(levelName1)) { if(!TextUtils.isEmpty(levelName1)) {
...@@ -216,8 +218,18 @@ public class MemberInfo implements Serializable { ...@@ -216,8 +218,18 @@ public class MemberInfo implements Serializable {
return 0; return 0;
} }
public String getMemberName() {
if(!TextUtils.isEmpty(memberName)){
return memberName;
}
return getLevelName();
}
@Data @Data
public static class CreateTimeBean implements Serializable{ public static class CreateTimeBean implements Parcelable{
/** /**
* date : 28 * date : 28
* day : 4 * day : 4
...@@ -240,10 +252,52 @@ public class MemberInfo implements Serializable { ...@@ -240,10 +252,52 @@ public class MemberInfo implements Serializable {
private int timezoneOffset; private int timezoneOffset;
private int year; private int year;
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(this.date);
dest.writeInt(this.day);
dest.writeInt(this.hours);
dest.writeInt(this.minutes);
dest.writeInt(this.month);
dest.writeInt(this.seconds);
dest.writeLong(this.time);
dest.writeInt(this.timezoneOffset);
dest.writeInt(this.year);
}
protected CreateTimeBean(Parcel in) {
this.date = in.readInt();
this.day = in.readInt();
this.hours = in.readInt();
this.minutes = in.readInt();
this.month = in.readInt();
this.seconds = in.readInt();
this.time = in.readLong();
this.timezoneOffset = in.readInt();
this.year = in.readInt();
}
public static final Creator<CreateTimeBean> CREATOR = new Creator<CreateTimeBean>() {
@Override
public CreateTimeBean createFromParcel(Parcel source) {
return new CreateTimeBean(source);
}
@Override
public CreateTimeBean[] newArray(int size) {
return new CreateTimeBean[size];
}
};
} }
@Data @Data
public static class OptTimeBean implements Serializable{ public static class OptTimeBean implements Parcelable{
/** /**
* date : 25 * date : 25
* day : 6 * day : 6
...@@ -255,7 +309,6 @@ public class MemberInfo implements Serializable { ...@@ -255,7 +309,6 @@ public class MemberInfo implements Serializable {
* timezoneOffset : -480 * timezoneOffset : -480
* year : 120 * year : 120
*/ */
private int date; private int date;
private int day; private int day;
private int hours; private int hours;
...@@ -266,10 +319,52 @@ public class MemberInfo implements Serializable { ...@@ -266,10 +319,52 @@ public class MemberInfo implements Serializable {
private int timezoneOffset; private int timezoneOffset;
private int year; private int year;
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(this.date);
dest.writeInt(this.day);
dest.writeInt(this.hours);
dest.writeInt(this.minutes);
dest.writeInt(this.month);
dest.writeInt(this.seconds);
dest.writeLong(this.time);
dest.writeInt(this.timezoneOffset);
dest.writeInt(this.year);
}
protected OptTimeBean(Parcel in) {
this.date = in.readInt();
this.day = in.readInt();
this.hours = in.readInt();
this.minutes = in.readInt();
this.month = in.readInt();
this.seconds = in.readInt();
this.time = in.readLong();
this.timezoneOffset = in.readInt();
this.year = in.readInt();
}
public static final Creator<OptTimeBean> CREATOR = new Creator<OptTimeBean>() {
@Override
public OptTimeBean createFromParcel(Parcel source) {
return new OptTimeBean(source);
}
@Override
public OptTimeBean[] newArray(int size) {
return new OptTimeBean[size];
}
};
} }
@Data @Data
public static class UpdateTimeBean implements Serializable{ public static class UpdateTimeBean implements Parcelable{
/** /**
* date : 23 * date : 23
* day : 4 * day : 4
...@@ -281,7 +376,6 @@ public class MemberInfo implements Serializable { ...@@ -281,7 +376,6 @@ public class MemberInfo implements Serializable {
* timezoneOffset : -480 * timezoneOffset : -480
* year : 120 * year : 120
*/ */
private int date; private int date;
private int day; private int day;
private int hours; private int hours;
...@@ -292,10 +386,52 @@ public class MemberInfo implements Serializable { ...@@ -292,10 +386,52 @@ public class MemberInfo implements Serializable {
private int timezoneOffset; private int timezoneOffset;
private int year; private int year;
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(this.date);
dest.writeInt(this.day);
dest.writeInt(this.hours);
dest.writeInt(this.minutes);
dest.writeInt(this.month);
dest.writeInt(this.seconds);
dest.writeLong(this.time);
dest.writeInt(this.timezoneOffset);
dest.writeInt(this.year);
}
protected UpdateTimeBean(Parcel in) {
this.date = in.readInt();
this.day = in.readInt();
this.hours = in.readInt();
this.minutes = in.readInt();
this.month = in.readInt();
this.seconds = in.readInt();
this.time = in.readLong();
this.timezoneOffset = in.readInt();
this.year = in.readInt();
}
public static final Creator<UpdateTimeBean> CREATOR = new Creator<UpdateTimeBean>() {
@Override
public UpdateTimeBean createFromParcel(Parcel source) {
return new UpdateTimeBean(source);
}
@Override
public UpdateTimeBean[] newArray(int size) {
return new UpdateTimeBean[size];
}
};
} }
@Data @Data
public static class MemberExpireDateBean implements Serializable{ public static class MemberExpireDateBean implements Parcelable{
/** /**
* date : 25 * date : 25
* day : 6 * day : 6
...@@ -318,10 +454,51 @@ public class MemberInfo implements Serializable { ...@@ -318,10 +454,51 @@ public class MemberInfo implements Serializable {
private int timezoneOffset; private int timezoneOffset;
private int year; private int year;
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(this.date);
dest.writeInt(this.day);
dest.writeInt(this.hours);
dest.writeInt(this.minutes);
dest.writeInt(this.month);
dest.writeInt(this.seconds);
dest.writeLong(this.time);
dest.writeInt(this.timezoneOffset);
dest.writeInt(this.year);
}
protected MemberExpireDateBean(Parcel in) {
this.date = in.readInt();
this.day = in.readInt();
this.hours = in.readInt();
this.minutes = in.readInt();
this.month = in.readInt();
this.seconds = in.readInt();
this.time = in.readLong();
this.timezoneOffset = in.readInt();
this.year = in.readInt();
}
public static final Creator<MemberExpireDateBean> CREATOR = new Creator<MemberExpireDateBean>() {
@Override
public MemberExpireDateBean createFromParcel(Parcel source) {
return new MemberExpireDateBean(source);
}
@Override
public MemberExpireDateBean[] newArray(int size) {
return new MemberExpireDateBean[size];
}
};
} }
@Data @Data
public static class VaildTimeBean implements Serializable{ public static class VaildTimeBean implements Parcelable{
/** /**
* date : 25 * date : 25
* day : 6 * day : 6
...@@ -344,512 +521,202 @@ public class MemberInfo implements Serializable { ...@@ -344,512 +521,202 @@ public class MemberInfo implements Serializable {
private int timezoneOffset; private int timezoneOffset;
private int year; private int year;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getMemberNo() {
return memberNo;
}
public void setMemberNo(String memberNo) {
this.memberNo = memberNo;
}
public int getMemberDiscount() {
return memberDiscount;
}
public void setMemberDiscount(int memberDiscount) {
this.memberDiscount = memberDiscount;
}
public void setMemberPoint(float memberPoint) {
MemberPoint = memberPoint;
}
public String getMemberName() {
if(!TextUtils.isEmpty(memberName)){
return memberName;
}
return getLevelName();
}
public void setMemberName(String memberName) {
this.memberName = memberName;
}
public String getLevelName3() {
return levelName3;
}
public void setLevelName3(String levelName3) {
this.levelName3 = levelName3;
}
public String getLevelName2() {
return levelName2;
}
public void setLevelName2(String levelName2) {
this.levelName2 = levelName2;
}
public String getLevelName1() {
return levelName1;
}
public void setLevelName1(String levelName1) {
this.levelName1 = levelName1;
}
public void setLevelName(String levelName) {
this.levelName = levelName;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public int getBirthdaybonusratio() {
return birthdaybonusratio;
}
public void setBirthdaybonusratio(int birthdaybonusratio) {
this.birthdaybonusratio = birthdaybonusratio;
}
public int getCreditPoints() {
return creditPoints;
}
public void setCreditPoints(int creditPoints) {
this.creditPoints = creditPoints;
}
public int getBirthdayperiod() {
return birthdayperiod;
}
public void setBirthdayperiod(int birthdayperiod) {
this.birthdayperiod = birthdayperiod;
}
public int getExtendExpirePeriod() {
return extendExpirePeriod;
}
public void setExtendExpirePeriod(int extendExpirePeriod) {
this.extendExpirePeriod = extendExpirePeriod;
}
public int getBrCouponTypeId() {
return brCouponTypeId;
}
public void setBrCouponTypeId(int brCouponTypeId) {
this.brCouponTypeId = brCouponTypeId;
}
public int getLevelUpPeriod() {
return levelUpPeriod;
}
public void setLevelUpPeriod(int levelUpPeriod) {
this.levelUpPeriod = levelUpPeriod;
}
public int getGroupId() {
return groupId;
}
public void setGroupId(int groupId) {
this.groupId = groupId;
}
public int getSeq1() {
return seq1;
}
public void setSeq1(int seq1) {
this.seq1 = seq1;
}
public int getNextDownLevel() {
return nextDownLevel;
}
public void setNextDownLevel(int nextDownLevel) {
this.nextDownLevel = nextDownLevel;
}
public int getDiscount() {
return discount;
}
public void setDiscount(int discount) {
this.discount = discount;
}
public int getLanguage() {
return language;
}
public void setLanguage(int language) {
this.language = language;
}
public int getPoints() {
return points;
}
public void setPoints(int points) {
this.points = points;
}
public int getNegativePoints() {
return negativePoints;
}
public void setNegativePoints(int negativePoints) {
this.negativePoints = negativePoints;
}
public int getCouponTypeId() {
return couponTypeId;
}
public void setCouponTypeId(int couponTypeId) {
this.couponTypeId = couponTypeId;
}
public int getIsdefault() {
return isdefault;
}
public void setIsdefault(int isdefault) {
this.isdefault = isdefault;
}
public int getPointsVariable() {
return pointsVariable;
}
public void setPointsVariable(int pointsVariable) {
this.pointsVariable = pointsVariable;
}
public String getBrandName() {
return brandName;
}
public void setBrandName(String brandName) {
this.brandName = brandName;
}
public int getLevel() {
return level;
}
public void setLevel(int level) { @Override
this.level = level; public int describeContents() {
} return 0;
public int getNewCouponNum() {
return newCouponNum;
}
public void setNewCouponNum(int newCouponNum) {
this.newCouponNum = newCouponNum;
}
public int getIsVisible() {
return isVisible;
}
public void setIsVisible(int isVisible) {
this.isVisible = isVisible;
}
public int getIsDisplay() {
return isDisplay;
}
public void setIsDisplay(int isDisplay) {
this.isDisplay = isDisplay;
}
public int getVaildDays() {
return vaildDays;
}
public void setVaildDays(int vaildDays) {
this.vaildDays = vaildDays;
}
public int getBrandId() {
return brandId;
}
public void setBrandId(int brandId) {
this.brandId = brandId;
}
public float getPointRedeemCash() {
return pointRedeemCash;
}
public void setPointRedeemCash(float pointRedeemCash) {
this.pointRedeemCash = pointRedeemCash;
}
public int getAblediscount() {
return ablediscount;
}
public void setAblediscount(int ablediscount) {
this.ablediscount = ablediscount;
}
public float getExpireAfterDayClearPoints() {
return expireAfterDayClearPoints;
}
public void setExpireAfterDayClearPoints(float expireAfterDayClearPoints) {
this.expireAfterDayClearPoints = expireAfterDayClearPoints;
}
public double getExtendExpireAmount() {
return extendExpireAmount;
}
public void setExtendExpireAmount(double extendExpireAmount) {
this.extendExpireAmount = extendExpireAmount;
}
public String getFoodDesc3() {
return foodDesc3;
}
public void setFoodDesc3(String foodDesc3) {
this.foodDesc3 = foodDesc3;
}
public int getScCharge() {
return scCharge;
}
public void setScCharge(int scCharge) {
this.scCharge = scCharge;
}
public int getExtendValidDays() {
return extendValidDays;
}
public void setExtendValidDays(int extendValidDays) {
this.extendValidDays = extendValidDays;
}
public double getLevelUpAmount() {
return levelUpAmount;
}
public void setLevelUpAmount(double levelUpAmount) {
this.levelUpAmount = levelUpAmount;
}
public int getOptTimes() {
return optTimes;
}
public void setOptTimes(int optTimes) {
this.optTimes = optTimes;
}
public int getUpdateTimes() {
return updateTimes;
}
public void setUpdateTimes(int updateTimes) {
this.updateTimes = updateTimes;
}
public String getFoodDesc1() {
return foodDesc1;
}
public void setFoodDesc1(String foodDesc1) {
this.foodDesc1 = foodDesc1;
}
public String getFoodDesc2() {
return foodDesc2;
}
public void setFoodDesc2(String foodDesc2) {
this.foodDesc2 = foodDesc2;
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getPointenddate() {
return pointenddate;
}
public void setPointenddate(String pointenddate) {
this.pointenddate = pointenddate;
}
public String getUpdateBy() {
return updateBy;
}
public void setUpdateBy(String updateBy) {
this.updateBy = updateBy;
}
public int getBrPoints() {
return brPoints;
}
public void setBrPoints(int brPoints) {
this.brPoints = brPoints;
}
public String getOptTime() {
return optTime;
}
public void setOptTime(String optTime) {
this.optTime = optTime;
}
public int getCreateTimes() {
return createTimes;
}
public void setCreateTimes(int createTimes) {
this.createTimes = createTimes;
}
public int getBrCouponNum() {
return brCouponNum;
}
public void setBrCouponNum(int brCouponNum) {
this.brCouponNum = brCouponNum;
}
public int getPointRule() {
return pointRule;
}
public void setPointRule(int pointRule) {
this.pointRule = pointRule;
}
public int getFoodPrice() {
return foodPrice;
}
public void setFoodPrice(int foodPrice) {
this.foodPrice = foodPrice;
}
public String getCreateBy() {
return createBy;
}
public void setCreateBy(String createBy) {
this.createBy = createBy;
}
public int getPointoveryear() {
return pointoveryear;
}
public void setPointoveryear(int pointoveryear) {
this.pointoveryear = pointoveryear;
}
public String getLevelDesc() {
return levelDesc;
}
public void setLevelDesc(String levelDesc) {
this.levelDesc = levelDesc;
}
public int getPointUnit() {
return pointUnit;
}
public void setPointUnit(int pointUnit) {
this.pointUnit = pointUnit;
}
public int getNextUpLevel() {
return nextUpLevel;
}
public void setNextUpLevel(int nextUpLevel) {
this.nextUpLevel = nextUpLevel;
} }
public int getRestaurantId() { @Override
return restaurantId; public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(this.date);
dest.writeInt(this.day);
dest.writeInt(this.hours);
dest.writeInt(this.minutes);
dest.writeInt(this.month);
dest.writeInt(this.seconds);
dest.writeLong(this.time);
dest.writeInt(this.timezoneOffset);
dest.writeInt(this.year);
} }
public void setRestaurantId(int restaurantId) { protected VaildTimeBean(Parcel in) {
this.restaurantId = restaurantId; this.date = in.readInt();
this.day = in.readInt();
this.hours = in.readInt();
this.minutes = in.readInt();
this.month = in.readInt();
this.seconds = in.readInt();
this.time = in.readLong();
this.timezoneOffset = in.readInt();
this.year = in.readInt();
} }
public CreateTimeBean getCreateTime() { public static final Creator<VaildTimeBean> CREATOR = new Creator<VaildTimeBean>() {
return createTime; @Override
public VaildTimeBean createFromParcel(Parcel source) {
return new VaildTimeBean(source);
} }
public void setCreateTime(CreateTimeBean createTime) { @Override
this.createTime = createTime; public VaildTimeBean[] newArray(int size) {
return new VaildTimeBean[size];
} }
};
public UpdateTimeBean getUpdateTime() {
return updateTime;
} }
public void setUpdateTime(UpdateTimeBean updateTime) {
this.updateTime = updateTime;
}
public MemberExpireDateBean getMemberExpireDate() {
return memberExpireDate;
}
public void setMemberExpireDate(MemberExpireDateBean memberExpireDate) { @Override
this.memberExpireDate = memberExpireDate; public int describeContents() {
} return 0;
public VaildTimeBean getVaildTime() {
return vaildTime;
} }
public void setVaildTime(VaildTimeBean vaildTime) { @Override
this.vaildTime = vaildTime; public void writeToParcel(Parcel dest, int flags) {
} dest.writeLong(this.id);
dest.writeString(this.memberNo);
dest.writeInt(this.memberDiscount);
dest.writeFloat(this.MemberPoint);
dest.writeFloat(this.memberPoint);
dest.writeString(this.memberName);
dest.writeString(this.levelName3);
dest.writeString(this.levelName2);
dest.writeString(this.levelName1);
dest.writeString(this.levelName);
dest.writeString(this.phone);
dest.writeInt(this.birthdaybonusratio);
dest.writeInt(this.creditPoints);
dest.writeInt(this.birthdayperiod);
dest.writeInt(this.extendExpirePeriod);
dest.writeInt(this.brCouponTypeId);
dest.writeInt(this.levelUpPeriod);
dest.writeInt(this.groupId);
dest.writeInt(this.seq1);
dest.writeInt(this.nextDownLevel);
dest.writeInt(this.discount);
dest.writeInt(this.language);
dest.writeInt(this.points);
dest.writeInt(this.negativePoints);
dest.writeInt(this.couponTypeId);
dest.writeInt(this.isdefault);
dest.writeInt(this.pointsVariable);
dest.writeString(this.brandName);
dest.writeInt(this.level);
dest.writeInt(this.newCouponNum);
dest.writeInt(this.isVisible);
dest.writeInt(this.isDisplay);
dest.writeInt(this.vaildDays);
dest.writeInt(this.brandId);
dest.writeFloat(this.pointRedeemCash);
dest.writeInt(this.ablediscount);
dest.writeFloat(this.expireAfterDayClearPoints);
dest.writeDouble(this.extendExpireAmount);
dest.writeString(this.foodDesc3);
dest.writeInt(this.scCharge);
dest.writeInt(this.extendValidDays);
dest.writeDouble(this.levelUpAmount);
dest.writeInt(this.optTimes);
dest.writeInt(this.updateTimes);
dest.writeString(this.foodDesc1);
dest.writeString(this.foodDesc2);
dest.writeString(this.sid);
dest.writeString(this.pointenddate);
dest.writeString(this.updateBy);
dest.writeInt(this.brPoints);
dest.writeString(this.optTime);
dest.writeInt(this.createTimes);
dest.writeInt(this.brCouponNum);
dest.writeInt(this.pointRule);
dest.writeInt(this.foodPrice);
dest.writeString(this.createBy);
dest.writeInt(this.pointoveryear);
dest.writeString(this.levelDesc);
dest.writeInt(this.pointUnit);
dest.writeInt(this.nextUpLevel);
dest.writeInt(this.restaurantId);
dest.writeParcelable(this.createTime, flags);
dest.writeParcelable(this.updateTime, flags);
dest.writeParcelable(this.memberExpireDate, flags);
dest.writeParcelable(this.vaildTime, flags);
}
protected MemberInfo(Parcel in) {
this.id = in.readLong();
this.memberNo = in.readString();
this.memberDiscount = in.readInt();
this.MemberPoint = in.readFloat();
this.memberPoint = in.readFloat();
this.memberName = in.readString();
this.levelName3 = in.readString();
this.levelName2 = in.readString();
this.levelName1 = in.readString();
this.levelName = in.readString();
this.phone = in.readString();
this.birthdaybonusratio = in.readInt();
this.creditPoints = in.readInt();
this.birthdayperiod = in.readInt();
this.extendExpirePeriod = in.readInt();
this.brCouponTypeId = in.readInt();
this.levelUpPeriod = in.readInt();
this.groupId = in.readInt();
this.seq1 = in.readInt();
this.nextDownLevel = in.readInt();
this.discount = in.readInt();
this.language = in.readInt();
this.points = in.readInt();
this.negativePoints = in.readInt();
this.couponTypeId = in.readInt();
this.isdefault = in.readInt();
this.pointsVariable = in.readInt();
this.brandName = in.readString();
this.level = in.readInt();
this.newCouponNum = in.readInt();
this.isVisible = in.readInt();
this.isDisplay = in.readInt();
this.vaildDays = in.readInt();
this.brandId = in.readInt();
this.pointRedeemCash = in.readFloat();
this.ablediscount = in.readInt();
this.expireAfterDayClearPoints = in.readFloat();
this.extendExpireAmount = in.readDouble();
this.foodDesc3 = in.readString();
this.scCharge = in.readInt();
this.extendValidDays = in.readInt();
this.levelUpAmount = in.readDouble();
this.optTimes = in.readInt();
this.updateTimes = in.readInt();
this.foodDesc1 = in.readString();
this.foodDesc2 = in.readString();
this.sid = in.readString();
this.pointenddate = in.readString();
this.updateBy = in.readString();
this.brPoints = in.readInt();
this.optTime = in.readString();
this.createTimes = in.readInt();
this.brCouponNum = in.readInt();
this.pointRule = in.readInt();
this.foodPrice = in.readInt();
this.createBy = in.readString();
this.pointoveryear = in.readInt();
this.levelDesc = in.readString();
this.pointUnit = in.readInt();
this.nextUpLevel = in.readInt();
this.restaurantId = in.readInt();
this.createTime = in.readParcelable(CreateTimeBean.class.getClassLoader());
this.updateTime = in.readParcelable(UpdateTimeBean.class.getClassLoader());
this.memberExpireDate = in.readParcelable(MemberExpireDateBean.class.getClassLoader());
this.vaildTime = in.readParcelable(VaildTimeBean.class.getClassLoader());
}
public static final Creator<MemberInfo> CREATOR = new Creator<MemberInfo>() {
@Override
public MemberInfo createFromParcel(Parcel source) {
return new MemberInfo(source);
}
@Override
public MemberInfo[] newArray(int size) {
return new MemberInfo[size];
}
};
} }
...@@ -185,15 +185,13 @@ public class ShoppingCart { ...@@ -185,15 +185,13 @@ public class ShoppingCart {
public void delAllMultyDiscount() { public void delAllMultyDiscount() {
List<MultyDiscount> multyDiscountList = getMultyDiscountList(); List<MultyDiscount> multyDiscountList = getMultyDiscountList();
boolean result = multyDiscountList.removeAll(multyDiscountList); boolean result = multyDiscountList.removeAll(multyDiscountList);
int i = 100;
} }
/** /**
* 刪除所有單折扣 * 刪除所有單折扣
*/ */
public void delAllNomalDiscountList(List<NomalDiscount> nomalDiscountList) { public boolean delAllNomalDiscountList(List<NomalDiscount> nomalDiscountList) {
boolean result = getMultyDiscountList().removeAll(nomalDiscountList); return getMultyDiscountList().removeAll(nomalDiscountList);
int i = 100;
} }
/** /**
...@@ -232,17 +230,17 @@ public class ShoppingCart { ...@@ -232,17 +230,17 @@ public class ShoppingCart {
MultyDiscount memberLevelDiscount = new MemberLevelDiscount(discount.getMemberName(), status, multyDiscounts, discount); MultyDiscount memberLevelDiscount = new MemberLevelDiscount(discount.getMemberName(), status, multyDiscounts, discount);
return memberLevelDiscount; return memberLevelDiscount;
} }
//
/** // /**
* 將會員優惠券折扣添加到鏈條中 // * 將會員優惠券折扣添加到鏈條中
* // *
* @param discount // * @param discount
* @return // * @return
*/ // */
public MultyDiscount addMemberCouponDiscountToLinked(MultyDiscount multyDiscounts, CouponDiscountBean discount, int status) { // public MultyDiscount addMemberCouponDiscountToLinked(MultyDiscount multyDiscounts, CouponDiscountBean discount, int status) {
MultyDiscount couponDiscount = new MemberCouponDiscount(discount.getName(), status, multyDiscounts, discount); // MultyDiscount couponDiscount = new MemberCouponDiscount(discount.getName(), status, multyDiscounts, discount);
return couponDiscount; // return couponDiscount;
} // }
/** /**
* 將會員錢包折扣添加到鏈條中 * 將會員錢包折扣添加到鏈條中
...@@ -289,9 +287,11 @@ public class ShoppingCart { ...@@ -289,9 +287,11 @@ public class ShoppingCart {
multyDiscounts = addNomalDiscountToLinked(multyDiscounts, ((NomalDiscount) discount).getDiscount(), discount.getStatus()); multyDiscounts = addNomalDiscountToLinked(multyDiscounts, ((NomalDiscount) discount).getDiscount(), discount.getStatus());
} else if (discount instanceof MemberLevelDiscount) { } else if (discount instanceof MemberLevelDiscount) {
multyDiscounts = addMemberLevelDiscountToLinked(multyDiscounts, ((MemberLevelDiscount) discount).getMemberDiscount(), discount.getStatus()); 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 MemberCouponDiscount) {
}else if (discount instanceof MemberWalletCouponDiscount) { // multyDiscounts = addMemberCouponDiscountToLinked(multyDiscounts, ((MemberCouponDiscount) discount).getCouponDiscount(), discount.getStatus());
// }
else if (discount instanceof MemberWalletCouponDiscount) {
multyDiscounts = addMemberWalletCouponDiscountToLinked(multyDiscounts, ((MemberWalletCouponDiscount) discount).getWalletCoupon(), discount.getStatus()); multyDiscounts = addMemberWalletCouponDiscountToLinked(multyDiscounts, ((MemberWalletCouponDiscount) discount).getWalletCoupon(), discount.getStatus());
} }
multyDiscountArrays.add(multyDiscounts); multyDiscountArrays.add(multyDiscounts);
...@@ -360,12 +360,12 @@ public class ShoppingCart { ...@@ -360,12 +360,12 @@ public class ShoppingCart {
multyDiscounts = shoppingCart.addNomalDiscountToLinked(multyDiscounts, discount, 0); multyDiscounts = shoppingCart.addNomalDiscountToLinked(multyDiscounts, discount, 0);
shoppingCart.addMultyDiscount(multyDiscounts); shoppingCart.addMultyDiscount(multyDiscounts);
CouponDiscountBean couponDiscountBean = new CouponDiscountBean(); // CouponDiscountBean couponDiscountBean = new CouponDiscountBean();
couponDiscountBean.setCouponTypeName1("魚屋立減50元券"); // couponDiscountBean.setCouponTypeName1("魚屋立減50元券");
couponDiscountBean.setAmount(50); // couponDiscountBean.setAmount(50);
couponDiscountBean.setCouponType((byte) 2); // couponDiscountBean.setCouponType((byte) 2);
multyDiscounts = shoppingCart.addMemberCouponDiscountToLinked(multyDiscounts, couponDiscountBean, 0); // multyDiscounts = shoppingCart.addMemberWalletCouponDiscountToLinked(multyDiscounts, couponDiscountBean, 0);
shoppingCart.addMultyDiscount(multyDiscounts); // shoppingCart.addMultyDiscount(multyDiscounts);
MemberInfo memberInfo2 = new MemberInfo(); MemberInfo memberInfo2 = new MemberInfo();
memberInfo2.setMemberName("白金會員20%"); memberInfo2.setMemberName("白金會員20%");
......
...@@ -10,7 +10,9 @@ import com.gingersoft.gsa.cloud.database.bean.ComboItem; ...@@ -10,7 +10,9 @@ import com.gingersoft.gsa.cloud.database.bean.ComboItem;
import com.gingersoft.gsa.cloud.database.bean.Discount; import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.gingersoft.gsa.cloud.database.bean.Food; import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.bean.Modifier; import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.order.bean.discount.MemberWalletCoupon;
import com.gingersoft.gsa.cloud.order.bean.response.OrderResponse; import com.gingersoft.gsa.cloud.order.bean.response.OrderResponse;
import com.gingersoft.gsa.cloud.order.discount.MemberWalletCouponDiscount;
import com.gingersoft.gsa.cloud.order.discount.NomalDiscount; import com.gingersoft.gsa.cloud.order.discount.NomalDiscount;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder; import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
...@@ -97,11 +99,13 @@ public class OrderDetail implements Commodity, Serializable, Cloneable { ...@@ -97,11 +99,13 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
* 2:套餐 * 2:套餐
* 3:細項 * 3:細項
* 4:折扣 * 4:折扣
* 5:優惠券
*/ */
public static final byte FOOD_PROP = 1; public static final byte FOOD_PROP = 1;
public static final byte COMBO_PROP = 2; public static final byte COMBO_PROP = 2;
public static final byte MODIFIER_PROP = 3; public static final byte MODIFIER_PROP = 3;
public static final byte DISCOUNT_PROP = 4; public static final byte DISCOUNT_PROP = 4;
public static final byte COUPON_PROP = 5;
/*** /***
* 層級 * 層級
* 1:主食品 * 1:主食品
...@@ -210,6 +214,10 @@ public class OrderDetail implements Commodity, Serializable, Cloneable { ...@@ -210,6 +214,10 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
*/ */
private Discount discount; private Discount discount;
/** /**
* 會員優惠券實體
*/
private MemberWalletCoupon walletCoupon;
/**
* 折扣狀態#0:沒有折扣;1:有折扣未送單;2:折扣全部已送單; * 折扣狀態#0:沒有折扣;1:有折扣未送單;2:折扣全部已送單;
*/ */
private int discountStatus; private int discountStatus;
...@@ -321,6 +329,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable { ...@@ -321,6 +329,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
this.freeServiceCharge = orderDetail.freeServiceCharge; this.freeServiceCharge = orderDetail.freeServiceCharge;
this.additionalDiscount = orderDetail.additionalDiscount; this.additionalDiscount = orderDetail.additionalDiscount;
this.discount = orderDetail.discount; this.discount = orderDetail.discount;
this.walletCoupon = orderDetail.walletCoupon;
this.discountStatus = orderDetail.discountStatus; this.discountStatus = orderDetail.discountStatus;
this.status = orderDetail.status; this.status = orderDetail.status;
this.printSeting = orderDetail.printSeting; this.printSeting = orderDetail.printSeting;
...@@ -335,94 +344,6 @@ public class OrderDetail implements Commodity, Serializable, Cloneable { ...@@ -335,94 +344,6 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
this.cancelNumber = orderDetail.cancelNumber; this.cancelNumber = orderDetail.cancelNumber;
} }
public static long getSerialVersionUID() {
return serialVersionUID;
}
public void setModify(boolean modify) {
isModify = modify;
}
public int getModifyBeforeNumber() {
return modifyBeforeNumber;
}
public void setModifyBeforeNumber(int modifyBeforeNumber) {
this.modifyBeforeNumber = modifyBeforeNumber;
}
public String getCancelReason() {
return cancelReason;
}
public void setCancelReason(String cancelReason) {
this.cancelReason = cancelReason;
}
public int getReasonId() {
return reasonId;
}
public void setReasonId(int reasonId) {
this.reasonId = reasonId;
}
public int getCancelNumber() {
return cancelNumber;
}
public void setCancelNumber(int cancelNumber) {
this.cancelNumber = cancelNumber;
}
public static byte getFoodProp() {
return FOOD_PROP;
}
public static byte getComboProp() {
return COMBO_PROP;
}
public static byte getModifierProp() {
return MODIFIER_PROP;
}
public static byte getDiscountProp() {
return DISCOUNT_PROP;
}
public String getPrintSeting() {
return printSeting;
}
public void setPrintSeting(String printSeting) {
this.printSeting = printSeting;
}
public byte getScAble() {
return scAble;
}
public void setScAble(byte scAble) {
this.scAble = scAble;
}
public double getPointsAdd() {
return pointsAdd;
}
public void setPointsAdd(double pointsAdd) {
this.pointsAdd = pointsAdd;
}
public double getPointsRedeem() {
return pointsRedeem;
}
public void setPointsRedeem(double pointsRedeem) {
this.pointsRedeem = pointsRedeem;
}
public static byte getStatusNormal() { public static byte getStatusNormal() {
return STATUS_NORMAL; return STATUS_NORMAL;
} }
...@@ -452,406 +373,6 @@ public class OrderDetail implements Commodity, Serializable, Cloneable { ...@@ -452,406 +373,6 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
return isModify; return isModify;
} }
public int getSelected() {
return selected;
}
public boolean isIsfood() {
return isIsfood;
}
public int getParentIndex() {
return parentIndex;
}
public int getMyIndex() {
return myIndex;
}
public boolean isNew() {
return isNew;
}
public boolean isVisible() {
return visible;
}
public int getAutoMod() {
return autoMod;
}
public int getLimitQty() {
return limitQty;
}
public double getPERCENTAGE() {
return PERCENTAGE;
}
public int getProp() {
return prop;
}
public long getComid() {
return comid;
}
public long getMid() {
return mid;
}
public int getChangeBeforeQty() {
return changeBeforeQty;
}
public boolean isHasChild() {
return hasChild;
}
public int getBgColor() {
return bgColor;
}
public int getFontColor() {
return fontColor;
}
public int getComboLevel() {
return ComboLevel;
}
public boolean isComboAuto() {
return isComboAuto;
}
public long getId() {
return id;
}
public long getOrderId() {
return orderId;
}
public long getParentId() {
return parentId;
}
public String getProductName() {
return productName;
}
public long getProductId() {
return productId;
}
public double getUnit_price() {
return unit_price;
}
public double getLunchboxPrice() {
return lunchboxPrice;
}
public double getItemsPrice() {
return itemsPrice;
}
public int getNumber() {
return number;
}
public String getUserCouponNo() {
return userCouponNo;
}
public byte getType() {
return type;
}
public String getQmUseData() {
return qmUseData;
}
public String getRemark() {
return remark;
}
public String getItems() {
return items;
}
public Date getCreateTime() {
return createTime;
}
public long getAblediscount() {
return ablediscount;
}
public String getFtName() {
return ftName;
}
public String getMajorName() {
return majorName;
}
public void setSelected(int selected) {
this.selected = selected;
}
public void setIsfood(boolean isfood) {
isIsfood = isfood;
}
public void setParentIndex(int parentIndex) {
this.parentIndex = parentIndex;
}
public void setMyIndex(int myIndex) {
this.myIndex = myIndex;
}
public void setNew(boolean aNew) {
isNew = aNew;
}
public void setVisible(boolean visible) {
this.visible = visible;
}
public void setAutoMod(int autoMod) {
this.autoMod = autoMod;
}
public void setLimitQty(int limitQty) {
this.limitQty = limitQty;
}
public void setPERCENTAGE(double PERCENTAGE) {
this.PERCENTAGE = PERCENTAGE;
}
public void setProp(int prop) {
this.prop = prop;
}
public void setComid(long comid) {
this.comid = comid;
}
public void setMid(long mid) {
this.mid = mid;
}
public void setChangeBeforeQty(int changeBeforeQty) {
this.changeBeforeQty = changeBeforeQty;
}
public void setHasChild(boolean hasChild) {
this.hasChild = hasChild;
}
public void setBgColor(int bgColor) {
this.bgColor = bgColor;
}
public void setFontColor(int fontColor) {
this.fontColor = fontColor;
}
public void setComboLevel(int comboLevel) {
ComboLevel = comboLevel;
}
public void setComboAuto(boolean comboAuto) {
isComboAuto = comboAuto;
}
public Discount getDiscount() {
return discount;
}
public void setDiscount(Discount discount) {
this.discount = discount;
}
public void setId(long id) {
this.id = id;
}
public void setOrderId(long orderId) {
this.orderId = orderId;
}
public void setParentId(long parentId) {
this.parentId = parentId;
}
public void setProductName(String productName) {
this.productName = productName;
}
public void setProductId(long productId) {
this.productId = productId;
}
public long getParentProductId() {
return parentProductId;
}
public void setParentProductId(long parentProductId) {
this.parentProductId = parentProductId;
}
public void setUnit_price(double unit_price) {
this.unit_price = unit_price;
}
public void setLunchboxPrice(double lunchboxPrice) {
this.lunchboxPrice = lunchboxPrice;
}
public void setItemsPrice(double itemsPrice) {
this.itemsPrice = itemsPrice;
}
public void setNumber(int number) {
this.number = number;
}
public void setUserCouponNo(String userCouponNo) {
this.userCouponNo = userCouponNo;
}
public void setType(byte type) {
this.type = type;
}
public void setQmUseData(String qmUseData) {
this.qmUseData = qmUseData;
}
public void setRemark(String remark) {
this.remark = remark;
}
public void setItems(String items) {
this.items = items;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public void setAblediscount(long ablediscount) {
this.ablediscount = ablediscount;
}
public void setFtName(String ftName) {
this.ftName = ftName;
}
public void setMajorName(String majorName) {
this.majorName = majorName;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public Byte getStatus() {
return status;
}
public void setStatus(Byte status) {
this.status = status;
}
public int getItemType() {
return itemType;
}
public void setItemType(int itemType) {
this.itemType = itemType;
}
public String getPrintseting() {
return printSeting == null ? "" : printSeting;
}
public void setPrintseting(String printseting) {
this.printSeting = printseting;
}
public long getTopId() {
return topId;
}
public void setTopId(long topId) {
this.topId = topId;
}
public int getDiscountStatus() {
return discountStatus;
}
public void setDiscountStatus(int discountStatus) {
this.discountStatus = discountStatus;
}
public long getKtPrintMainItem() {
return ktPrintMainItem;
}
public void setKtPrintMainItem(long ktPrintMainItem) {
this.ktPrintMainItem = ktPrintMainItem;
}
public String getCurrentMaxNumber() {
return currentMaxNumber;
}
public void setCurrentMaxNumber(String currentMaxNumber) {
this.currentMaxNumber = currentMaxNumber;
}
public long getPrintFont() {
return printFont;
}
public void setPrintFont(long printFont) {
this.printFont = printFont;
}
public long getPrintToBill() {
return printToBill;
}
public void setPrintToBill(long printToBill) {
this.printToBill = printToBill;
}
public long getPrintTo() {
return printTo;
}
public void setPrintTo(long printTo) {
this.printTo = printTo;
}
public long getKtShowPrice() {
return ktShowPrice;
}
public void setKtShowPrice(long ktShowPrice) {
this.ktShowPrice = ktShowPrice;
}
/** /**
* @param type 是食品清單還是賬單 0清單 1賬單 * @param type 是食品清單還是賬單 0清單 1賬單
* @param productnameBeans 訂單食品項 * @param productnameBeans 訂單食品項
...@@ -1032,7 +553,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable { ...@@ -1032,7 +553,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
orderDetail.setUnit_price(orderDetailsBean.getPrice()); orderDetail.setUnit_price(orderDetailsBean.getPrice());
orderDetail.setPrice(orderDetailsBean.getPrice() * orderDetailsBean.getNumber()); orderDetail.setPrice(orderDetailsBean.getPrice() * orderDetailsBean.getNumber());
orderDetail.setVisible(orderDetailsBean.getStatus() == 0); orderDetail.setVisible(orderDetailsBean.getStatus() == 0);
orderDetail.setPrintseting(orderDetailsBean.getPrintSetIng()); orderDetail.setPrintSeting(orderDetailsBean.getPrintSetIng());
// orderDetail.setAutomod(foods.getAutomod()); // orderDetail.setAutomod(foods.getAutomod());
orderDetail.setKtPrintMainItem(orderDetailsBean.getKtPrintMainItem()); orderDetail.setKtPrintMainItem(orderDetailsBean.getKtPrintMainItem());
orderDetail.setPrintFont(orderDetailsBean.getPrintFont()); orderDetail.setPrintFont(orderDetailsBean.getPrintFont());
...@@ -1095,6 +616,11 @@ public class OrderDetail implements Commodity, Serializable, Cloneable { ...@@ -1095,6 +616,11 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
discount.setDiscountRecordId(discountBean.getId()); discount.setDiscountRecordId(discountBean.getId());
discount.setDiscountValue(discountBean.getDiscountValue()); discount.setDiscountValue(discountBean.getDiscountValue());
discount.setAmount(discountBean.getDiscountAmount()); discount.setAmount(discountBean.getDiscountAmount());
if (discountBean.getType() == 2) {
discount.setAbstractDiscountType(DiscountConstact.WALLET_COUPON_TYPE);
} else {
discount.setAbstractDiscountType(DiscountConstact.DISCOUNT_TYPE);
}
discount.setType(discountBean.getType()); discount.setType(discountBean.getType());
discount.setRemark(discountBean.getRemark()); discount.setRemark(discountBean.getRemark());
return discount; return discount;
...@@ -1153,7 +679,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable { ...@@ -1153,7 +679,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
orderDetail.setCost(food.getCost()); orderDetail.setCost(food.getCost());
orderDetail.setNumber(number); orderDetail.setNumber(number);
orderDetail.setOrderId(DoshokuOrder.getInstance().getOrderId()); orderDetail.setOrderId(DoshokuOrder.getInstance().getOrderId());
orderDetail.setPrintseting(food.getPrintSeting()); orderDetail.setPrintSeting(food.getPrintSeting());
orderDetail.setIsfood(true); orderDetail.setIsfood(true);
orderDetail.setNew(true); orderDetail.setNew(true);
orderDetail.setType(FOOD_TYPE); orderDetail.setType(FOOD_TYPE);
...@@ -1202,7 +728,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable { ...@@ -1202,7 +728,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
orderDetail.setType(FOOD_TYPE); orderDetail.setType(FOOD_TYPE);
orderDetail.setItemType(2); orderDetail.setItemType(2);
orderDetail.setProp(prop); orderDetail.setProp(prop);
orderDetail.setPrintseting(foodCombo.getPrintSeting()); orderDetail.setPrintSeting(foodCombo.getPrintSeting());
orderDetail.setAblediscount(foodCombo.getAblediscount()); orderDetail.setAblediscount(foodCombo.getAblediscount());
// orderDetail.setComboAuto(foodCombo.isAutoMode()); // orderDetail.setComboAuto(foodCombo.isAutoMode());
if (isRvMealClicked) { if (isRvMealClicked) {
...@@ -1254,7 +780,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable { ...@@ -1254,7 +780,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
} }
/** /**
* 折扣,優惠券轉換 * 折扣轉換
* *
* @param discount * @param discount
* @return * @return
...@@ -1275,11 +801,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable { ...@@ -1275,11 +801,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
orderDetail.setOrderId(DoshokuOrder.getInstance().getOrderId()); orderDetail.setOrderId(DoshokuOrder.getInstance().getOrderId());
orderDetail.setIsfood(false); orderDetail.setIsfood(false);
orderDetail.setNew(isNew); orderDetail.setNew(isNew);
if (discount.getFreeServiceCharge() == DiscountConstact.WALLET_COUPON_TYPE) {
orderDetail.setType(COUPON_TYPE);
} else {
orderDetail.setType(DISCOUNT_TYPE); orderDetail.setType(DISCOUNT_TYPE);
}
orderDetail.setProp(DISCOUNT_PROP); orderDetail.setProp(DISCOUNT_PROP);
orderDetail.setSelected(2); orderDetail.setSelected(2);
orderDetail.setItemType(2); orderDetail.setItemType(2);
...@@ -1289,6 +811,38 @@ public class OrderDetail implements Commodity, Serializable, Cloneable { ...@@ -1289,6 +811,38 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
return orderDetail; return orderDetail;
} }
/**
* 會員優惠券轉換
*
* @param walletCoupon
* @return
*/
public static OrderDetail couponTransOrderDetail(MemberWalletCoupon walletCoupon, boolean isNew, long id, double sourcePrice) {
double discountPrice = MemberWalletCouponDiscount.calculationCoupon(walletCoupon, sourcePrice);
OrderDetail orderDetail = new OrderDetail();
orderDetail.setProductName(walletCoupon.getCouponTypeName());
orderDetail.setId(walletCoupon.getId());
orderDetail.setTopId(id);
orderDetail.setParentId(id);
orderDetail.setProductId(walletCoupon.getId());
orderDetail.setNumber(1);
orderDetail.setPrice(discountPrice);
orderDetail.setUnit_price(discountPrice);
orderDetail.setOrderId(DoshokuOrder.getInstance().getOrderId());
orderDetail.setIsfood(false);
orderDetail.setNew(isNew);
orderDetail.setType(COUPON_TYPE);
orderDetail.setProp(COUPON_PROP);
orderDetail.setSelected(2);
orderDetail.setItemType(2);
orderDetail.setWalletCoupon(walletCoupon);
return orderDetail;
}
public static List<OrderDetail> transNewOrderDetails(List<OrderDetail> orderDetailList) { public static List<OrderDetail> transNewOrderDetails(List<OrderDetail> orderDetailList) {
List<OrderDetail> newOrderList = new ArrayList<>(); List<OrderDetail> newOrderList = new ArrayList<>();
for (OrderDetail orderDetail : orderDetailList) { for (OrderDetail orderDetail : orderDetailList) {
...@@ -1337,7 +891,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable { ...@@ -1337,7 +891,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
orderData.setProductName(bean.getPRODUCT_NAME()); orderData.setProductName(bean.getPRODUCT_NAME());
orderData.setPrice(Double.parseDouble(Objects.requireNonNull(bean.getPRICE()))); orderData.setPrice(Double.parseDouble(Objects.requireNonNull(bean.getPRICE())));
orderData.setNumber(Integer.parseInt(Objects.requireNonNull(bean.getNum()))); orderData.setNumber(Integer.parseInt(Objects.requireNonNull(bean.getNum())));
orderData.setPrintseting(bean.getPrintseting()); orderData.setPrintSeting(bean.getPrintseting());
orderData.setItemType(1); orderData.setItemType(1);
if (bean.getChild() != null) { if (bean.getChild() != null) {
for (OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX childBeanX : bean.getChild()) { for (OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX childBeanX : bean.getChild()) {
...@@ -1345,7 +899,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable { ...@@ -1345,7 +899,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
childOrderData.setProductName(childBeanX.getPRODUCT_NAME()); childOrderData.setProductName(childBeanX.getPRODUCT_NAME());
childOrderData.setPrice(Double.parseDouble(Objects.requireNonNull(childBeanX.getPRICE()))); childOrderData.setPrice(Double.parseDouble(Objects.requireNonNull(childBeanX.getPRICE())));
childOrderData.setNumber(Integer.parseInt(Objects.requireNonNull(childBeanX.getNum()))); childOrderData.setNumber(Integer.parseInt(Objects.requireNonNull(childBeanX.getNum())));
childOrderData.setPrintseting(childBeanX.getPrintseting()); childOrderData.setPrintSeting(childBeanX.getPrintseting());
childOrderData.setItemType(2); childOrderData.setItemType(2);
if (childBeanX.getChild() != null) { if (childBeanX.getChild() != null) {
for (OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX.ChildBean childBean : childBeanX.getChild()) { for (OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX.ChildBean childBean : childBeanX.getChild()) {
...@@ -1353,7 +907,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable { ...@@ -1353,7 +907,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
childOrderData2.setProductName(childBean.getPRODUCT_NAME()); childOrderData2.setProductName(childBean.getPRODUCT_NAME());
childOrderData2.setPrice(Double.parseDouble(Objects.requireNonNull(childBean.getPRICE()))); childOrderData2.setPrice(Double.parseDouble(Objects.requireNonNull(childBean.getPRICE())));
childOrderData2.setNumber(Integer.parseInt(Objects.requireNonNull(childBean.getNum()))); childOrderData2.setNumber(Integer.parseInt(Objects.requireNonNull(childBean.getNum())));
childOrderData2.setPrintseting(childBean.getPrintseting()); childOrderData2.setPrintSeting(childBean.getPrintseting());
childOrderData2.setItemType(3); childOrderData2.setItemType(3);
orderDetailList.add(childOrderData2); orderDetailList.add(childOrderData2);
} }
......
...@@ -2,8 +2,10 @@ package com.gingersoft.gsa.cloud.pay; ...@@ -2,8 +2,10 @@ package com.gingersoft.gsa.cloud.pay;
import androidx.fragment.app.FragmentActivity; 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.lifecycle.fragment.PayFlowFragment;
import com.gingersoft.gsa.cloud.pay.device.pos.PosPayAction; import com.gingersoft.gsa.cloud.pay.device.pos.PosPayAction;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.utils.Preconditions; import com.jess.arms.utils.Preconditions;
import lombok.Getter; import lombok.Getter;
...@@ -71,7 +73,7 @@ public class PaymentControl { ...@@ -71,7 +73,7 @@ public class PaymentControl {
} }
public void showPayFlowFragment(FragmentActivity fragmentActivity,RequestParms requestParms){ 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"); payFlowFragment.show(fragmentActivity.getSupportFragmentManager(), "PayFlowDialogFragment");
} }
......
...@@ -7,7 +7,6 @@ import androidx.fragment.app.Fragment; ...@@ -7,7 +7,6 @@ import androidx.fragment.app.Fragment;
import com.gingersoft.gsa.cloud.pay.RequestParms; import com.gingersoft.gsa.cloud.pay.RequestParms;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.constant.YedpayConstant; import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.constant.YedpayConstant;
import com.gingersoft.gsa.cloud.pay.lifecycle.presenter.PayFlowPresenter;
/** /**
* @作者: bin * @作者: 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 android.app.Application;
import com.gingersoft.gsa.cloud.common.bean.BaseResult; 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.gingersoft.gsa.cloud.pay.lifecycle.model.service.PayFlowService;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager; import com.jess.arms.integration.IRepositoryManager;
...@@ -12,7 +13,7 @@ import com.jess.arms.di.scope.FragmentScope; ...@@ -12,7 +13,7 @@ import com.jess.arms.di.scope.FragmentScope;
import javax.inject.Inject; 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 io.reactivex.Single;
import okhttp3.RequestBody; import okhttp3.RequestBody;
...@@ -22,7 +23,7 @@ import okhttp3.RequestBody; ...@@ -22,7 +23,7 @@ import okhttp3.RequestBody;
* ================================================ * ================================================
* Description: * Description:
* <p> * <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="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow 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">Star me</a>
...@@ -31,14 +32,14 @@ import okhttp3.RequestBody; ...@@ -31,14 +32,14 @@ import okhttp3.RequestBody;
* ================================================ * ================================================
*/ */
@FragmentScope @FragmentScope
public class PayFlowModel extends BaseModel implements PayFlowContract.Model { public class YedpayModel extends BaseModel implements YedpayContract.Model {
@Inject @Inject
Gson mGson; Gson mGson;
@Inject @Inject
Application mApplication; Application mApplication;
@Inject @Inject
public PayFlowModel(IRepositoryManager repositoryManager) { public YedpayModel(IRepositoryManager repositoryManager) {
super(repositoryManager); super(repositoryManager);
} }
...@@ -49,16 +50,15 @@ public class PayFlowModel extends BaseModel implements PayFlowContract.Model { ...@@ -49,16 +50,15 @@ public class PayFlowModel extends BaseModel implements PayFlowContract.Model {
this.mApplication = null; this.mApplication = null;
} }
@Override @Override
public Single<BaseResult> yedPayFindSaleStatus(RequestBody body) { public Single<BaseResult> findSaleStatus(RequestBody body) {
return mRepositoryManager.obtainRetrofitService(PayFlowService.class) return mRepositoryManager.obtainRetrofitService(YedpayService.class)
.yedPayFindSaleStatus(body); .findSaleStatus(body);
} }
@Override @Override
public Single<BaseResult> yedPayRefundOrder(RequestBody body) { public Single<BaseResult> refundOrder(RequestBody body) {
return mRepositoryManager.obtainRetrofitService(PayFlowService.class) return mRepositoryManager.obtainRetrofitService(YedpayService.class)
.yedPayRefundOrder(body); .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.app.Application;
import android.content.Intent;
import android.net.Uri;
import com.gingersoft.gsa.cloud.common.bean.BaseResult; import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.rxjava.ErrorHandleSingleSubscriber; 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.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.pay.PayStep; import com.gingersoft.gsa.cloud.pay.PayStep;
import com.gingersoft.gsa.cloud.pay.PaymentControl; import com.gingersoft.gsa.cloud.pay.PaymentControl;
import com.gingersoft.gsa.cloud.pay.RequestParms; import com.gingersoft.gsa.cloud.pay.RequestParms;
import com.gingersoft.gsa.cloud.pay.ResultCallback; 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.yedpay.YedpayCommand;
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.constant.YedpayConstant; 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.integration.AppManager;
import com.jess.arms.di.scope.FragmentScope; import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.mvp.BasePresenter; import com.jess.arms.mvp.BasePresenter;
...@@ -28,7 +27,7 @@ import okhttp3.RequestBody; ...@@ -28,7 +27,7 @@ import okhttp3.RequestBody;
import javax.inject.Inject; 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; import com.jess.arms.utils.RxLifecycleUtils;
...@@ -36,7 +35,7 @@ import com.jess.arms.utils.RxLifecycleUtils; ...@@ -36,7 +35,7 @@ import com.jess.arms.utils.RxLifecycleUtils;
* ================================================ * ================================================
* Description: * Description:
* <p> * <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="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow 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">Star me</a>
...@@ -45,7 +44,7 @@ import com.jess.arms.utils.RxLifecycleUtils; ...@@ -45,7 +44,7 @@ import com.jess.arms.utils.RxLifecycleUtils;
* ================================================ * ================================================
*/ */
@FragmentScope @FragmentScope
public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFlowContract.View> { public class YedpayPresenter extends BasePresenter<YedpayContract.Model, YedpayContract.View> {
@Inject @Inject
RxErrorHandler mErrorHandler; RxErrorHandler mErrorHandler;
@Inject @Inject
...@@ -59,7 +58,7 @@ public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFl ...@@ -59,7 +58,7 @@ public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFl
private ResultCallback mResultCallback; private ResultCallback mResultCallback;
@Inject @Inject
public PayFlowPresenter(PayFlowContract.Model model, PayFlowContract.View rootView) { public YedpayPresenter(YedpayContract.Model model, YedpayContract.View rootView) {
super(model, rootView); super(model, rootView);
} }
...@@ -72,7 +71,8 @@ public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFl ...@@ -72,7 +71,8 @@ public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFl
this.mApplication = null; 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() RequestBody requestBody = new FormBody.Builder()
.add("transactionId", transactionId) .add("transactionId", transactionId)
.add("orderId", orderId + "") .add("orderId", orderId + "")
...@@ -80,7 +80,7 @@ public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFl ...@@ -80,7 +80,7 @@ public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFl
.add("restaurantId", restaurantId + "") .add("restaurantId", restaurantId + "")
.build(); .build();
mModel.yedPayFindSaleStatus(requestBody) mModel.findSaleStatus(requestBody)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread()) .subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
...@@ -129,14 +129,14 @@ public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFl ...@@ -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() RequestBody requestBody = new FormBody.Builder()
.add("refundReason", refundReason) .add("refundReason", refundReason)
.add("orderId", String.valueOf(orderId)) .add("orderId", String.valueOf(orderId))
.add("payType", String.valueOf(payType)) .add("payType", String.valueOf(payType))
.add("restaurantId", String.valueOf(restaurantId)) .add("restaurantId", String.valueOf(restaurantId))
.build(); .build();
mModel.yedPayRefundOrder(requestBody) mModel.refundOrder(requestBody)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread()) .subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
...@@ -173,7 +173,7 @@ public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFl ...@@ -173,7 +173,7 @@ public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFl
this.mRequestParms = requestParms; this.mRequestParms = requestParms;
this.mResultCallback = mRequestParms.getResultCallback(); this.mResultCallback = mRequestParms.getResultCallback();
setCallbackBy(requestParms); mRequestParms.setCallback(yedpayCommand);
switch (requestParms.getAction()) { switch (requestParms.getAction()) {
case SALE: case SALE:
...@@ -185,16 +185,19 @@ public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFl ...@@ -185,16 +185,19 @@ public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFl
} }
} }
private void setCallbackBy(RequestParms requestParms) { private YedpayCommand yedpayCommand = new YedpayCommand() {
if (AppDevices.isHywebPos()) {
requestParms.setCallback(new HywebCommandImp()); @Override
} else if (AppDevices.isBBPos()) { public void callSaleUri(String uri) {
requestParms.setCallback(new BBposCommandImp()); Uri uri2 = Uri.parse(uri);
} else if (AppDevices.isYedpay()) { Intent intent = new Intent(Intent.ACTION_VIEW, uri2);
requestParms.setCallback(new YedpayCommandImp(mRootView.getFragment(), this, mRequestParms)); mRootView.getFragment().startActivityForResult(intent, YedpayConstant.CallRequestCode.SALE_REQUEST_CODE);
} else {
requestParms.setCallback(new YedpayCommandImp(mRootView.getFragment(), this, mRequestParms));
} }
@Override
public void refundResult(boolean result) {
refundOrder(mRequestParms.getRefundReason(), mRequestParms.getOrderId(), mRequestParms.getPayType(), mRequestParms.getResturantId());
} }
};
} }
...@@ -32,17 +32,11 @@ public interface PayFlowContract { ...@@ -32,17 +32,11 @@ public interface PayFlowContract {
void showStatusLoadingDialog(PayStep status); void showStatusLoadingDialog(PayStep status);
void startActivityForResult(Intent intent);
Fragment getFragment(); Fragment getFragment();
} }
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存 //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel { 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; ...@@ -3,6 +3,7 @@ package com.gingersoft.gsa.cloud.pay.lifecycle.di.component;
import dagger.BindsInstance; import dagger.BindsInstance;
import dagger.Component; import dagger.Component;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.contract.YedpayContract;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.pay.lifecycle.di.module.PayFlowModule; import com.gingersoft.gsa.cloud.pay.lifecycle.di.module.PayFlowModule;
...@@ -10,6 +11,7 @@ import com.gingersoft.gsa.cloud.pay.lifecycle.contract.PayFlowContract; ...@@ -10,6 +11,7 @@ import com.gingersoft.gsa.cloud.pay.lifecycle.contract.PayFlowContract;
import com.jess.arms.di.scope.FragmentScope; import com.jess.arms.di.scope.FragmentScope;
import com.gingersoft.gsa.cloud.pay.lifecycle.fragment.PayFlowFragment; import com.gingersoft.gsa.cloud.pay.lifecycle.fragment.PayFlowFragment;
import com.jess.arms.mvp.BasePresenter;
/** /**
......
package com.gingersoft.gsa.cloud.pay.lifecycle.di.module; package com.gingersoft.gsa.cloud.pay.lifecycle.di.module;
import com.jess.arms.di.scope.FragmentScope;
import dagger.Binds; import dagger.Binds;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
import com.gingersoft.gsa.cloud.pay.lifecycle.contract.PayFlowContract; 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; ...@@ -26,5 +23,5 @@ import com.gingersoft.gsa.cloud.pay.lifecycle.model.PayFlowModel;
public abstract class PayFlowModule { public abstract class PayFlowModule {
@Binds @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; package com.gingersoft.gsa.cloud.pay.lifecycle.fragment;
import android.content.Intent; import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.ColorDrawable;
import android.os.Bundle; import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.Window; import android.view.Window;
import android.view.WindowManager;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
...@@ -18,23 +15,19 @@ import androidx.annotation.NonNull; ...@@ -18,23 +15,19 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment; 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.R;
import com.gingersoft.gsa.cloud.order.R2; import com.gingersoft.gsa.cloud.order.R2;
import com.gingersoft.gsa.cloud.pay.PayAction; import com.gingersoft.gsa.cloud.pay.PayAction;
import com.gingersoft.gsa.cloud.pay.PayStep; 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.lifecycle.di.component.DaggerPayFlowComponent;
import com.gingersoft.gsa.cloud.pay.RequestParms; import com.gingersoft.gsa.cloud.pay.RequestParms;
import com.gingersoft.gsa.cloud.pay.view.customstatus.CustomStatusView; 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.BaseDialogFragment;
import com.jess.arms.base.BaseFragment;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
import com.gingersoft.gsa.cloud.pay.lifecycle.contract.PayFlowContract; 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; import butterknife.BindView;
...@@ -53,7 +46,7 @@ import static com.jess.arms.utils.Preconditions.checkNotNull; ...@@ -53,7 +46,7 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a> * <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) @BindView(R2.id.ll_container)
LinearLayout ll_container; LinearLayout ll_container;
...@@ -102,15 +95,13 @@ public class PayFlowFragment extends BaseDialogFragment<PayFlowPresenter> implem ...@@ -102,15 +95,13 @@ public class PayFlowFragment extends BaseDialogFragment<PayFlowPresenter> implem
@Override @Override
public void initData(@Nullable Bundle savedInstanceState) { public void initData(@Nullable Bundle savedInstanceState) {
Bundle arguments = getArguments(); Bundle arguments = getArguments();
requestParms = (RequestParms) arguments.getParcelable("requestParms"); requestParms = arguments.getParcelable("requestParms");
action = requestParms.getAction(); action = requestParms.getAction();
tv_status.setText(mLoadingText); tv_status.setText(mLoadingText);
ll_container.setLayoutParams(new FrameLayout.LayoutParams((int) (ArmsUtils.getScreenWidth(mContext) * 0.4), (int) (ArmsUtils.getScreenWidth(mContext) * 0.4))); ll_container.setLayoutParams(new FrameLayout.LayoutParams((int) (ArmsUtils.getScreenWidth(mContext) * 0.4), (int) (ArmsUtils.getScreenWidth(mContext) * 0.4)));
showStatusLoadingDialog(PayStep.LOADING); showStatusLoadingDialog(PayStep.LOADING);
mPresenter.excutePayFlow(requestParms);
} }
@Override @Override
...@@ -190,34 +181,6 @@ public class PayFlowFragment extends BaseDialogFragment<PayFlowPresenter> implem ...@@ -190,34 +181,6 @@ public class PayFlowFragment extends BaseDialogFragment<PayFlowPresenter> implem
}, mCancelDelayMillis); }, 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 @Override
public Fragment getFragment() { 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