Commit b01803d9 by 宁斌

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

parent f699e909
package com.gingersoft.gsa.cloud.table.mvp.model.bean;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
import java.io.File;
......@@ -16,7 +18,7 @@ import lombok.Setter;
*/
@Getter
@Setter
public class SoldoutCtrFood {
public class SoldoutCtrFood implements Parcelable {
private long id;
private int restaurantId;
......@@ -100,4 +102,55 @@ public class SoldoutCtrFood {
}
return "";
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeLong(this.id);
dest.writeInt(this.restaurantId);
dest.writeLong(this.brandId);
dest.writeValue(this.foodId);
dest.writeValue(this.modifierId);
dest.writeByte(this.type);
dest.writeInt(this.remainingNumber);
dest.writeInt(this.useNumber);
dest.writeString(this.foodName);
dest.writeString(this.foodName1);
dest.writeString(this.foodName2);
dest.writeByte(this.isStop ? (byte) 1 : (byte) 0);
dest.writeInt(this.selected);
}
protected SoldoutCtrFood(Parcel in) {
this.id = in.readLong();
this.restaurantId = in.readInt();
this.brandId = in.readLong();
this.foodId = (Long) in.readValue(Long.class.getClassLoader());
this.modifierId = (Long) in.readValue(Long.class.getClassLoader());
this.type = in.readByte();
this.remainingNumber = in.readInt();
this.useNumber = in.readInt();
this.foodName = in.readString();
this.foodName1 = in.readString();
this.foodName2 = in.readString();
this.isStop = in.readByte() != 0;
this.selected = in.readInt();
}
public static final Creator<SoldoutCtrFood> CREATOR = new Creator<SoldoutCtrFood>() {
@Override
public SoldoutCtrFood createFromParcel(Parcel source) {
return new SoldoutCtrFood(source);
}
@Override
public SoldoutCtrFood[] newArray(int size) {
return new SoldoutCtrFood[size];
}
};
}
package com.gingersoft.gsa.cloud.table.mvp.model.bean.event;
import android.os.Parcel;
import android.os.Parcelable;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
......@@ -13,11 +17,47 @@ import lombok.Data;
* @描述:
*/
@Data
public class LoadFineEvent {
public class LoadFineEvent implements Parcelable {
private int currFinePage;
private long productId;
private int selectedMode;
private List<SoldoutCtrFood> soldoutCtrFoods;
public LoadFineEvent(){
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(this.currFinePage);
dest.writeLong(this.productId);
dest.writeInt(this.selectedMode);
dest.writeList(this.soldoutCtrFoods);
}
public LoadFineEvent(Parcel in) {
this.currFinePage = in.readInt();
this.productId = in.readLong();
this.selectedMode = in.readInt();
this.soldoutCtrFoods = new ArrayList<SoldoutCtrFood>();
in.readList(this.soldoutCtrFoods, SoldoutCtrFood.class.getClassLoader());
}
public static final Creator<LoadFineEvent> CREATOR = new Creator<LoadFineEvent>() {
@Override
public LoadFineEvent createFromParcel(Parcel source) {
return new LoadFineEvent(source);
}
@Override
public LoadFineEvent[] newArray(int size) {
return new LoadFineEvent[size];
}
};
}
......@@ -1144,7 +1144,7 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
orderItem.setPrice(item.getUnit_price());
orderItem.setCost(item.getCost());
orderItem.setType(item.getType());
orderItem.setPrintSetIng(item.getPrintseting());
orderItem.setPrintSetIng(item.getPrintSeting());
orderItem.setAblediscount(item.getAblediscount());
orderItem.setScAble(item.getScAble());
if (item.canAbleDiscount()) {
......
......@@ -20,6 +20,7 @@ import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.component.ComponentName;
import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.gingersoft.gsa.cloud.order.bean.discount.CouponDiscountBean;
import com.gingersoft.gsa.cloud.order.bean.discount.MemberWalletCoupon;
import com.gingersoft.gsa.cloud.order.bean.request.OrderDiscountRequest;
import com.gingersoft.gsa.cloud.order.bean.response.OrderDiscountResponse;
import com.gingersoft.gsa.cloud.order.bean.response.OrderResponse;
......@@ -346,7 +347,19 @@ public abstract class BaseOrderPresenter2<M extends BaseOrderContract.Model, V e
couponDiscount.setSpend(orderDiscount.getSpend());
couponDiscount.setDiscount(orderDiscount.getDiscountValue());
couponDiscount.setAmount(orderDiscount.getDiscountAmount());
mShoppingCart.addMultyDiscount(mShoppingCart.createCouponDiscount(couponDiscount, BillItem.BILL_ITEM_ORDER_SENT_STATUS));
// MemberWalletCoupon memberWalletCoupon = new MemberWalletCoupon();
// memberWalletCoupon.setDiscountRecordId(orderDiscount.getId());
// memberWalletCoupon.setCouponTypeName1(orderDiscount.getRemark());
// memberWalletCoupon.setCouponTypeName2(orderDiscount.getRemark2());
// memberWalletCoupon.setCouponTypeName3(orderDiscount.getRemark3());
// memberWalletCoupon.setAccumulate(orderDiscount.getAccumulate());
// memberWalletCoupon.setSpend(orderDiscount.getSpend());
// memberWalletCoupon.setDiscount(orderDiscount.getDiscountValue());
// memberWalletCoupon.setAmount(orderDiscount.getDiscountAmount());
// mShoppingCart.addMultyDiscount(mShoppingCart.createMemberWalletCoupon(couponDiscount, BillItem.BILL_ITEM_ORDER_SENT_STATUS));
}
}
}
......@@ -1146,7 +1159,7 @@ public abstract class BaseOrderPresenter2<M extends BaseOrderContract.Model, V e
orderItem.setPrice(item.getUnit_price());
orderItem.setCost(item.getCost());
orderItem.setType(item.getType());
orderItem.setPrintSetIng(item.getPrintseting());
orderItem.setPrintSetIng(item.getPrintSeting());
orderItem.setAblediscount(item.getAblediscount());
orderItem.setScAble(item.getScAble());
if (item.canAbleDiscount()) {
......
......@@ -117,7 +117,6 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
* 分檯弹窗
*/
private SplitTableDialog mSplitTableDialog;
private DiscountDialog.Builder mDiscountDialog;
/**
* 整單折扣
*/
......@@ -138,6 +137,10 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
//转移食品可多选
mSelectMealAdapter.setSelectedMode(SelectMealAdapter.MULTIPLE_SELECTED);
}
initAction();
}
private void initAction() {
mNomalDiscountAction = BillDiscountAction.builder()
.cashStr(cashStr)
.context(IActivity)
......@@ -156,17 +159,13 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
}
})
.build();
mBillCouponAction = BillCouponAction.builder()
.context(IActivity)
.cashStr(cashStr)
.listener(new BillCouponAction.OnCallBackListener() {
@Override
public void preformAddCoupon(MemberWalletCoupon coupon) {
mShoppingCart.addMultyDiscount(mShoppingCart.createMemberWalletCoupon(coupon, BillItem.BILL_ITEM_NO_ORDER_STATUS));
DoshokuOrder.getInstance().setBillItemStatus(DoshokuOrder.DISCOUNT_ITEM_TAG);
updateBillInfo();
}
.listener((coupon) -> {
mShoppingCart.addMultyDiscount(mShoppingCart.createMemberWalletCoupon(coupon, BillItem.BILL_ITEM_NO_ORDER_STATUS));
DoshokuOrder.getInstance().setBillItemStatus(DoshokuOrder.DISCOUNT_ITEM_TAG);
updateBillInfo();
})
.build();
}
......@@ -1035,9 +1034,4 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
return mFunctionList;
}
public void closeDiscountDialog() {
if (mDiscountDialog != null) {
mDiscountDialog.closeDialog();
}
}
}
......@@ -6,7 +6,9 @@ import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.constans.FoodSummaryConstans;
import com.gingersoft.gsa.cloud.common.rxjava.ErrorHandleSingleSubscriber;
import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.order.order.BaseOrder;
import com.gingersoft.gsa.cloud.table.mvp.action.discount.MealDiscountAction;
import com.gingersoft.gsa.cloud.table.mvp.contract.NomalDiscountContract;
import com.jess.arms.integration.AppManager;
import com.jess.arms.di.scope.FragmentScope;
......
......@@ -219,41 +219,9 @@ public class FineChildAllPresenter extends BasePresenter<FineChildAllContract.Mo
//获取数据
mModel.queryDB_ModifierByModModTasteVisibleQueryBuilder()
.doOnError(new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
mFineItemOneList.clear();
}
})
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSingleSubscriber<List<Modifier>>(mErrorHandler) {
// @Override
// public void onError(Throwable t) {
// super.onError(t);
// }
//
// @Override
// public void onComplete() {
// super.onComplete();
// }
//
// @Override
// public void onNext(List<Modifier> modifierList) {
// if (modifierList == null || modifierList.size() == 0) {
// mFineItemOneList.clear();
// mFineItemAllAdapter.notifyDataSetChanged();
// return;
// }
//
// setFid(modifierList, fid);
//
// mFineItemOneList.clear();
// mFineItemOneList.addAll(modifierList);
// mRootView.setFineItemAllRecycleSpanCount(mFineItemOneList.size());
// mFineItemAllAdapter.notifyDataSetChanged();
// }
@Override
public void onSuccess(List<Modifier> modifierList) {
if (modifierList == null || modifierList.size() == 0) {
......
......@@ -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.gson.GsonUtils;
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.Discount;
import com.gingersoft.gsa.cloud.database.bean.Food;
......@@ -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.utils.FoodDaoUtils;
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.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.order.order.BaseOrder;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
import com.gingersoft.gsa.cloud.print.bean.PrintContent;
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.model.bean.FoodReason;
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.CreateOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.presenter.BaseOrderPresenter;
......@@ -133,6 +138,14 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
List<SoldoutCtrFood> mSoldoutCtrList;//沽清食品數據
private PrinterAction mPrinterAction;
/**
* 食品折扣
*/
private MealDiscountAction mMealDiscountAction;
/**
* 食品優惠券
*/
private MealCouponAction mMealCouponAction;
private OrderDetail mCurrentOrderDetailBean;
private boolean RvMealClicked;
......@@ -140,6 +153,43 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
@Inject
public SetMealPresenter(SetMealContract.Model model, SetMealContract.View 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
......@@ -481,7 +531,7 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
//更新賬單金額
updateBillInfo();
// IActivity.setFineItemSlodoutListFull(mSoldoutCtrList);
updateFineFragmentSoldoutList();
mRootView.setMealRvScrollToPosition(addPosition);
}
......@@ -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) {
int addPosition = addFoodItem(datasBean);
//这里主食品作为选中主体
......@@ -658,6 +723,26 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
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,
/**
* 打印上菜紙
*
*/
private void printSendOrder() {
if (DoshokuOrder.getInstance().getNewFoodList() == null || DoshokuOrder.getInstance().getNewFoodList().size() <= 0) {
......@@ -1060,7 +1144,8 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
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;
for (int i = currentI; i < newOrderList.size(); i++) {
OrderDetail item = newOrderList.get(i);
......@@ -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 (Modifier modifier : modifierList) {
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,
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,
}
/**
* 獲取當前選中的套餐食品組
*
* @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() {
......@@ -1826,7 +1952,8 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
* @param deleteNumber
* @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);
byte type = (byte) (mDoshokuOrder.isModifyOrder() ? 2 : 1);
long orderId = mDoshokuOrder.getOrderId();
......@@ -1849,7 +1976,8 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
* @param deleteNumber
* @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<>();
//取消食品id
String[] idsArray = ids.split(",");
......@@ -1892,6 +2020,22 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
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() {
return mCurrentOrderDetailBean;
}
......
......@@ -625,8 +625,6 @@ public class OrderContentActivity extends BaseFragmentActivity<OrderContentPrese
}
} else if (requestCode == ScanHelper.CALL_BACK_QR_RESULT) {
mPresenter.closeDiscountDialog();
String qrCodeResult = data.getStringExtra("qrCodeResult");
String encryptQRCode;
try {
......
......@@ -62,9 +62,6 @@ public class DiscountDialogFragment extends BaseDialogFragment<BasePresenter> {
@BindView(R2.id.ll_container)
QMUILinearLayout llContainer;
private CouponFragment couponFragment;
private NomalDiscountFragment billDiscountFragment;
private List<String> mTabList = new ArrayList<>();
private int mCurrentPageIndex = 0;
......@@ -154,7 +151,7 @@ public class DiscountDialogFragment extends BaseDialogFragment<BasePresenter> {
private List<Fragment> createFragments() {
List<Fragment> fragments = new ArrayList<>();
couponFragment = CouponFragment.newInstance(CouponFragment.BILL_LIMIT_DISCOUNT);
CouponFragment couponFragment = CouponFragment.newInstance(CouponFragment.BILL_LIMIT_DISCOUNT);
couponFragment.setOnCouponItemClickListener(new CouponFragment.OnCouponItemClickListener() {
@Override
public void onItemClick(MemberWalletCoupon item, int position) {
......@@ -163,7 +160,7 @@ public class DiscountDialogFragment extends BaseDialogFragment<BasePresenter> {
}
}
});
billDiscountFragment = NomalDiscountFragment.newInstance();
NomalDiscountFragment billDiscountFragment = NomalDiscountFragment.newInstance();
billDiscountFragment.setOnDiscountItemClickListener(new NomalDiscountFragment.OnBillDiscountItemClickListener() {
@Override
public void onItemClick(Discount item, int position) {
......
......@@ -118,25 +118,28 @@ public class DiscountFragment extends BaseFragment<BasePresenter> {
public void onDoubleTap(int index) {
}
});
QMUITabSegmentUtils.setNomalTabSegmentStyle(tabSegment,viewPager);
QMUITabSegmentUtils.setNomalTabSegmentStyle(tabSegment, viewPager);
}
private List<Fragment> createFragments() {
List<Fragment> fragments = new ArrayList<>();
CouponFragment couponFragment = CouponFragment.newInstance(CouponFragment.FOOD_LIMIT_DISCOUNT);
couponFragment.setOnCouponItemClickListener((item, position) -> {
if (onDiscountItemClickListener != null) {
onDiscountItemClickListener.onCouponClick(item, position);
}
});
NomalDiscountFragment billDiscountFragment = NomalDiscountFragment.newInstance();
billDiscountFragment.setOnDiscountItemClickListener((item, position) -> {
if (onDiscountItemClickListener != null) {
onDiscountItemClickListener.onBillDiscountClick(item, position);
}
});
fragments.add(couponFragment);
CouponFragment couponFragment = CouponFragment.newInstance(CouponFragment.FOOD_LIMIT_DISCOUNT);
couponFragment.setOnCouponItemClickListener((item, position) -> {
if (onDiscountItemClickListener != null) {
onDiscountItemClickListener.onCouponClick(item, position);
}
});
fragments.add(billDiscountFragment);
MemberInfo memberInfo = DoshokuOrder.getInstance().getMemberInfo();
if (memberInfo != null) {
fragments.add(couponFragment);
}
return fragments;
}
......
......@@ -3,6 +3,7 @@ package com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
......@@ -59,15 +60,22 @@ public class FineChildAllFragment extends BaseFragment<FineChildAllPresenter> im
@BindView(R2.id.recycle_fine_item_kind_item)
RecyclerView recycle_fine_item_kind_item;
private int modCol;
private LoadFineEvent mLoadFineEvent;
public final static String LOAD_FINE_DATA_EVENT = "loadFineDataEvent";
public final static String UPDATE_FINE_DATA_EVENT = "updateFineDataEvent";
private int modCol;
public final static String UPDATE_FINE_DATA_EVENT = "updateFineSoldoutEvent";
public static FineChildAllFragment newInstance() {
FineChildAllFragment fragment = new FineChildAllFragment();
return fragment;
}
public static FineChildAllFragment newInstance(LoadFineEvent loadFineEvent) {
FineChildAllFragment fragment = new FineChildAllFragment();
Bundle bundle = new Bundle();
bundle.putParcelable("loadFineEvent", loadFineEvent);
fragment.setArguments(bundle);
return fragment;
}
@Override
public void setupFragmentComponent(@NonNull AppComponent appComponent) {
......@@ -86,14 +94,20 @@ public class FineChildAllFragment extends BaseFragment<FineChildAllPresenter> im
@Override
public void initData(@Nullable Bundle savedInstanceState) {
final Bundle arguments = getArguments();
if (arguments != null) {
mLoadFineEvent = arguments.getParcelable("loadFineEvent");
}
modCol = GsaCloudApplication.uiStyleConfiguration.getModColumnValue();
mPresenter.initAdapter();
mPresenter.initItemListener(mContext);
if (mLoadFineEvent != null) {
loadFineData(mLoadFineEvent);
}
}
@Subscriber(tag = LOAD_FINE_DATA_EVENT, mode = ThreadMode.MAIN)
public void loadFineData(LoadFineEvent fineEvent) {
final int currFinePage = fineEvent.getCurrFinePage();
final long productId = fineEvent.getProductId();
......@@ -120,7 +134,7 @@ public class FineChildAllFragment extends BaseFragment<FineChildAllPresenter> im
}
}
@Subscriber(tag = UPDATE_FINE_DATA_EVENT, mode = ThreadMode.MAIN)
@Subscriber(tag = FineChildAllFragment.UPDATE_FINE_DATA_EVENT, mode = ThreadMode.MAIN)
public void updateFineItemSoldoutListFull(List<SoldoutCtrFood> soldoutListFull) {
setModifierSoldoutFoodList_Full(soldoutListFull);
updateParentModifierSlodoutFoodList_Full();
......@@ -128,7 +142,6 @@ public class FineChildAllFragment extends BaseFragment<FineChildAllPresenter> im
@Override
public void setData(@Nullable Object data) {
}
public void setModifierSoldoutFoodList_Full(List<SoldoutCtrFood> soldoutCtrFoodList) {
......
......@@ -107,10 +107,11 @@ public class RiceponMemberDialogFragment extends BaseDialogFragment<RiceponMembe
private TableBean.DataBean mCurrTableBean;
private MemberInfo mMemberInfo;
public static RiceponMemberDialogFragment newInstance(TableBean.DataBean currTableBean) {
public static RiceponMemberDialogFragment newInstance(TableBean.DataBean currTableBean, MemberInfo memberInfo) {
RiceponMemberDialogFragment fragment = new RiceponMemberDialogFragment();
Bundle bundle = new Bundle();
bundle.putParcelable("currTableBean", currTableBean);
bundle.putParcelable("memberInfo", memberInfo);
fragment.setArguments(bundle);
return fragment;
}
......@@ -134,6 +135,7 @@ public class RiceponMemberDialogFragment extends BaseDialogFragment<RiceponMembe
public void onCreate(@Nullable Bundle savedInstanceState) {
Bundle arguments = getArguments();
mCurrTableBean = arguments.getParcelable("currTableBean");
mMemberInfo = arguments.getParcelable("memberInfo");
super.onCreate(savedInstanceState);
}
......@@ -142,6 +144,7 @@ public class RiceponMemberDialogFragment extends BaseDialogFragment<RiceponMembe
initTopbar();
initAdapter();
returnMemberInfo(mMemberInfo);
}
@Override
......@@ -265,6 +268,9 @@ public class RiceponMemberDialogFragment extends BaseDialogFragment<RiceponMembe
@Override
public void returnMemberInfo(MemberInfo memberInfo) {
if (memberInfo == null) {
return;
}
this.mMemberInfo = memberInfo;
final List<SectionTextItem> memberInfoItems = getMemberInfoItem(memberInfo);
if (mMemberInfoList.size() > 0) {
......
......@@ -6,6 +6,7 @@ import android.app.Dialog;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Message;
import android.text.TextUtils;
import android.util.SparseArray;
import android.view.LayoutInflater;
......@@ -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.component.ComponentName;
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.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.billItem.BillItem;
import com.gingersoft.gsa.cloud.order.cart.ShoppingCart;
......@@ -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.ModifierAdapter;
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.ChooseNumberDialog;
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.PagerGridLayoutManager;
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.SearchKeyBoardView;
import com.gingersoft.gsa.cloud.ui.view.base.NoScrollRecyclerView;
......@@ -92,6 +98,10 @@ import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.alpha.QMUIAlphaTextView;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
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.Subscriber;
......@@ -181,19 +191,17 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
@BindView(R2.id.scroll_combo)
NestedScrollView scrollCombo;
// @BindView(R2.id.ll_fine)
// LinearLayout llFine;
// @BindView(R2.id.tab_fine)
// MyTableView tabFine;
// @BindView(R2.id.pager_fine)
// ViewPager2 vPager2Fine;
@BindView(R2.id.ll_fine)
LinearLayout llFine;
@BindView(R2.id.tabs_fine)
QMUITabSegment2 tabSegmentFine;
@BindView(R2.id.pager_fine)
ViewPager2 vPager2Fine;
@BindView(R2.id.meal_stand_search_keyboard_view)
SearchKeyBoardView mealStandSearchKeyboardView;
@BindView(R2.id.fl_discount_fragment)
FrameLayout flDiscountFragment;
@BindView(R2.id.fl_fine_fragment)
FrameLayout flFineFragment;
@BindView(R2.id.btn_select_all)
QMUIAlphaTextView btnSelectAll;
......@@ -251,8 +259,8 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
private int comboColumn = 4;
private int modColumn = 4;
private DiscountFragment discountFragment;
private CancelFoodDialog mCancelFoodDialog;
private ChooseNumberDialog mChooseNumberDialog;
public static SetMealFragment newInstance() {
SetMealFragment fragment = new SetMealFragment();
......@@ -278,11 +286,13 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
public void initData(@Nullable Bundle savedInstanceState) {
mActivity = (MealStandActivity2) _mActivity;
initUIStyleConfiguration();
discountFragment = findChildFragment(DiscountFragment.class);
initRecyclerConfiguration();
initViewMap();
initAdapter();
initLayoutManager();
initClickListener();
initListener();
mPresenter.initMealData();
mPresenter.getCurrentSoldoutFood();
}
......@@ -304,7 +314,7 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
}
}
private void initUIStyleConfiguration() {
private void initRecyclerConfiguration() {
foodGroupColumn = GsaCloudApplication.uiStyleConfiguration.getFoodGroupColumnValue();
foodGroupRow = GsaCloudApplication.uiStyleConfiguration.getFoodGroupRowValue();
foodColumn = GsaCloudApplication.uiStyleConfiguration.getFoodColumnValue();
......@@ -317,7 +327,7 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
map.put(MealConstant.food_ViewMode, rvFood);
map.put(MealConstant.combo_ViewMode, scrollCombo);
map.put(MealConstant.discount_ViewMode, flDiscountFragment);
map.put(MealConstant.fine_ViewMode, flFineFragment);
map.put(MealConstant.fine_ViewMode, llFine);
map.put(MealConstant.keys_viewMode, mealStandSearchKeyboardView);
}
......@@ -329,7 +339,7 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
} else {
btnTable.setText(dataBean.getTableName());
}
btnNumberman.setText("人數:" + dataBean.getPerson() + "");
btnNumberman.setText("人數:" + dataBean.getPerson());
}
}
......@@ -360,7 +370,7 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
}
}
public void initClickListener() {
public void initListener() {
mFoodAdapter.setOnItemClickListener((datasBean, position) -> {
recordOperat(true);
mPresenter.foodItemClick(datasBean);
......@@ -389,6 +399,25 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
recordOperat(true);
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
}
}
@OnClick(R2.id.iv_fine_back)
void onFineBackViewClick(View view) {
setCurrViewMode(MealConstant.food_group_ViewMode, MealConstant.food_ViewMode);
}
/**
* 显示公共細項
*/
public void showFineLayout(int currFinePage) {
if (!isLoadFineFragment) {
isLoadFineFragment = true;
initFineViewPager(currFinePage);
} else {
vPager2Fine.setCurrentItem(currFinePage);
}
setCurrViewMode(MealConstant.fine_ViewMode);
final FineFragment childFragment = findChildFragment(FineFragment.class);
if (childFragment != null) {
if (isLoadFineFragment) {
childFragment.setCurrentItem(currFinePage);
return;
}
private void initFineViewPager(int currFinePage) {
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()));
vPager2Fine.setCurrentItem(currFinePage);
tabSegmentFine.addOnTabSelectedListener(new QMUITabSegment.OnTabSelectedListener() {
@Override
public void onTabSelected(int index) {
LoganManager.w_tableMode(TAG, "當前頁面【" + tabList[index] + "】");
}
long productId = 0;
if (mPresenter.getCurrentOrderDetailBean() != null) {
productId = mPresenter.getCurrentOrderDetailBean().getProductId();
@Override
public void onTabUnselected(int index) {
}
//選中模式
int selectedMode = mPresenter.getSelectMealAdapter().getSelectedMode();
//設置沽清數據
List<SoldoutCtrFood> soldoutCtrFoods = mPresenter.getSoldoutCtrList();
LoadFineEvent fineEvent = new LoadFineEvent();
fineEvent.setCurrFinePage(currFinePage);
fineEvent.setProductId(productId);
fineEvent.setSelectedMode(selectedMode);
fineEvent.setSoldoutCtrFoods(soldoutCtrFoods);
@Override
public void onTabReselected(int index) {
}
//加载细项数据
EventBus.getDefault().post(fineEvent, FineChildAllFragment.LOAD_FINE_DATA_EVENT);
childFragment.setCurrentItem(currFinePage);
@Override
public void onDoubleTap(int index) {
}
});
QMUITabSegmentUtils.setNomalTabSegmentStyle(tabSegmentFine, vPager2Fine);
}
isLoadFineFragment = true;
}
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
......@@ -1000,7 +1059,7 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
private void showRiceponMemberDialogFragment() {
recordOperat(false);
RiceponMemberDialogFragment dialogFragment = RiceponMemberDialogFragment.newInstance(DoshokuOrder.getInstance().getOpenTableInfo());
RiceponMemberDialogFragment dialogFragment = RiceponMemberDialogFragment.newInstance(DoshokuOrder.getInstance().getOpenTableInfo(),DoshokuOrder.getInstance().getMemberInfo());
dialogFragment.setOnUseMemberListener(new RiceponMemberDialogFragment.OnUseMemberListener() {
@Override
public void onUseMember(MemberInfo memberInfo) {
......
......@@ -2,13 +2,12 @@
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_bill_discount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
/>
android:layout_height="match_parent"
android:orientation="horizontal" />
</FrameLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="match_parent">
<com.scwang.smartrefresh.layout.SmartRefreshLayout
android:id="@+id/refreshLayout"
......@@ -12,7 +12,7 @@
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_coupon"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_gravity="bottom"
android:orientation="horizontal" />
......
......@@ -57,23 +57,9 @@
android:layout_above="@+id/ll_modify"
android:visibility="gone">
<!-- <fragment-->
<!-- android:id="@+id/fragment_discount"-->
<!-- android:name="com.gingersoft.gsa.cloud.table.mvp.ui.fragment.discount.DiscountFragment"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content" />-->
</FrameLayout>
<FrameLayout
android:id="@+id/fl_fine_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/ll_modify"
android:visibility="gone">
<fragment
android:id="@+id/fragment_fine"
android:name="com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand.FineFragment"
android:id="@+id/fragment_discount"
android:name="com.gingersoft.gsa.cloud.table.mvp.ui.fragment.discount.DiscountFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</FrameLayout>
......
......@@ -4,17 +4,30 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/ll_fine"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:orientation="vertical">
<com.qmuiteam.qmui.widget.tab.QMUITabSegment2
android:id="@+id/tabs_fine"
<FrameLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_45"
android:background="@drawable/shape_tab_panel_bg" />
android:layout_height="wrap_content"
android:background="@drawable/shape_tab_panel_bg">
<com.qmuiteam.qmui.widget.tab.QMUITabSegment2
android:id="@+id/tabs_fine"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_45" />
<ImageView
android:id="@+id/iv_fine_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:padding="@dimen/dp_10"
android:src="@drawable/ic_black_back" />
</FrameLayout>
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/pager_fine"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
\ No newline at end of file
......@@ -3,7 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/ll_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical">
<com.qmuiteam.qmui.widget.tab.QMUITabSegment2
......
package com.gingersoft.gsa.cloud.common.core.member;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
import java.io.Serializable;
......@@ -14,7 +16,7 @@ import lombok.Data;
* 描述:
*/
@Data
public class MemberInfo implements Serializable {
public class MemberInfo implements Parcelable {
/**
* ablediscount : 0
......@@ -190,8 +192,8 @@ public class MemberInfo implements Serializable {
private MemberExpireDateBean memberExpireDate;
private VaildTimeBean vaildTime;
public MemberInfo() {
}
public String getLevelName(){
if(!TextUtils.isEmpty(levelName1)) {
......@@ -216,8 +218,18 @@ public class MemberInfo implements Serializable {
return 0;
}
public String getMemberName() {
if(!TextUtils.isEmpty(memberName)){
return memberName;
}
return getLevelName();
}
@Data
public static class CreateTimeBean implements Serializable{
public static class CreateTimeBean implements Parcelable{
/**
* date : 28
* day : 4
......@@ -240,10 +252,52 @@ public class MemberInfo implements Serializable {
private int timezoneOffset;
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
public static class OptTimeBean implements Serializable{
public static class OptTimeBean implements Parcelable{
/**
* date : 25
* day : 6
......@@ -255,7 +309,6 @@ public class MemberInfo implements Serializable {
* timezoneOffset : -480
* year : 120
*/
private int date;
private int day;
private int hours;
......@@ -266,10 +319,52 @@ public class MemberInfo implements Serializable {
private int timezoneOffset;
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
public static class UpdateTimeBean implements Serializable{
public static class UpdateTimeBean implements Parcelable{
/**
* date : 23
* day : 4
......@@ -281,7 +376,6 @@ public class MemberInfo implements Serializable {
* timezoneOffset : -480
* year : 120
*/
private int date;
private int day;
private int hours;
......@@ -292,10 +386,52 @@ public class MemberInfo implements Serializable {
private int timezoneOffset;
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
public static class MemberExpireDateBean implements Serializable{
public static class MemberExpireDateBean implements Parcelable{
/**
* date : 25
* day : 6
......@@ -318,10 +454,51 @@ public class MemberInfo implements Serializable {
private int timezoneOffset;
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
public static class VaildTimeBean implements Serializable{
public static class VaildTimeBean implements Parcelable{
/**
* date : 25
* day : 6
......@@ -344,512 +521,202 @@ public class MemberInfo implements Serializable {
private int timezoneOffset;
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;
@Override
public int describeContents() {
return 0;
}
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) {
this.level = level;
}
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() {
return restaurantId;
}
public void setRestaurantId(int restaurantId) {
this.restaurantId = restaurantId;
}
public CreateTimeBean getCreateTime() {
return createTime;
}
@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);
}
public void setCreateTime(CreateTimeBean createTime) {
this.createTime = createTime;
}
protected VaildTimeBean(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 UpdateTimeBean getUpdateTime() {
return updateTime;
}
public static final Creator<VaildTimeBean> CREATOR = new Creator<VaildTimeBean>() {
@Override
public VaildTimeBean createFromParcel(Parcel source) {
return new VaildTimeBean(source);
}
public void setUpdateTime(UpdateTimeBean updateTime) {
this.updateTime = updateTime;
@Override
public VaildTimeBean[] newArray(int size) {
return new VaildTimeBean[size];
}
};
}
public MemberExpireDateBean getMemberExpireDate() {
return memberExpireDate;
}
public void setMemberExpireDate(MemberExpireDateBean memberExpireDate) {
this.memberExpireDate = memberExpireDate;
@Override
public int describeContents() {
return 0;
}
public VaildTimeBean getVaildTime() {
return vaildTime;
}
@Override
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);
}
public void setVaildTime(VaildTimeBean vaildTime) {
this.vaildTime = vaildTime;
}
@Override
public MemberInfo[] newArray(int size) {
return new MemberInfo[size];
}
};
}
......@@ -185,15 +185,13 @@ public class ShoppingCart {
public void delAllMultyDiscount() {
List<MultyDiscount> multyDiscountList = getMultyDiscountList();
boolean result = multyDiscountList.removeAll(multyDiscountList);
int i = 100;
}
/**
* 刪除所有單折扣
*/
public void delAllNomalDiscountList(List<NomalDiscount> nomalDiscountList) {
boolean result = getMultyDiscountList().removeAll(nomalDiscountList);
int i = 100;
public boolean delAllNomalDiscountList(List<NomalDiscount> nomalDiscountList) {
return getMultyDiscountList().removeAll(nomalDiscountList);
}
/**
......@@ -232,17 +230,17 @@ public class ShoppingCart {
MultyDiscount memberLevelDiscount = new MemberLevelDiscount(discount.getMemberName(), status, multyDiscounts, discount);
return memberLevelDiscount;
}
/**
* 將會員優惠券折扣添加到鏈條中
*
* @param discount
* @return
*/
public MultyDiscount addMemberCouponDiscountToLinked(MultyDiscount multyDiscounts, CouponDiscountBean discount, int status) {
MultyDiscount couponDiscount = new MemberCouponDiscount(discount.getName(), status, multyDiscounts, discount);
return couponDiscount;
}
//
// /**
// * 將會員優惠券折扣添加到鏈條中
// *
// * @param discount
// * @return
// */
// public MultyDiscount addMemberCouponDiscountToLinked(MultyDiscount multyDiscounts, CouponDiscountBean discount, int status) {
// MultyDiscount couponDiscount = new MemberCouponDiscount(discount.getName(), status, multyDiscounts, discount);
// return couponDiscount;
// }
/**
* 將會員錢包折扣添加到鏈條中
......@@ -289,9 +287,11 @@ public class ShoppingCart {
multyDiscounts = addNomalDiscountToLinked(multyDiscounts, ((NomalDiscount) discount).getDiscount(), discount.getStatus());
} else if (discount instanceof MemberLevelDiscount) {
multyDiscounts = addMemberLevelDiscountToLinked(multyDiscounts, ((MemberLevelDiscount) discount).getMemberDiscount(), discount.getStatus());
} else if (discount instanceof MemberCouponDiscount) {
multyDiscounts = addMemberCouponDiscountToLinked(multyDiscounts, ((MemberCouponDiscount) discount).getCouponDiscount(), discount.getStatus());
}else if (discount instanceof MemberWalletCouponDiscount) {
}
// else if (discount instanceof MemberCouponDiscount) {
// multyDiscounts = addMemberCouponDiscountToLinked(multyDiscounts, ((MemberCouponDiscount) discount).getCouponDiscount(), discount.getStatus());
// }
else if (discount instanceof MemberWalletCouponDiscount) {
multyDiscounts = addMemberWalletCouponDiscountToLinked(multyDiscounts, ((MemberWalletCouponDiscount) discount).getWalletCoupon(), discount.getStatus());
}
multyDiscountArrays.add(multyDiscounts);
......@@ -360,12 +360,12 @@ public class ShoppingCart {
multyDiscounts = shoppingCart.addNomalDiscountToLinked(multyDiscounts, discount, 0);
shoppingCart.addMultyDiscount(multyDiscounts);
CouponDiscountBean couponDiscountBean = new CouponDiscountBean();
couponDiscountBean.setCouponTypeName1("魚屋立減50元券");
couponDiscountBean.setAmount(50);
couponDiscountBean.setCouponType((byte) 2);
multyDiscounts = shoppingCart.addMemberCouponDiscountToLinked(multyDiscounts, couponDiscountBean, 0);
shoppingCart.addMultyDiscount(multyDiscounts);
// CouponDiscountBean couponDiscountBean = new CouponDiscountBean();
// couponDiscountBean.setCouponTypeName1("魚屋立減50元券");
// couponDiscountBean.setAmount(50);
// couponDiscountBean.setCouponType((byte) 2);
// multyDiscounts = shoppingCart.addMemberWalletCouponDiscountToLinked(multyDiscounts, couponDiscountBean, 0);
// shoppingCart.addMultyDiscount(multyDiscounts);
MemberInfo memberInfo2 = new MemberInfo();
memberInfo2.setMemberName("白金會員20%");
......
......@@ -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.Food;
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.discount.MemberWalletCouponDiscount;
import com.gingersoft.gsa.cloud.order.discount.NomalDiscount;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
......@@ -97,11 +99,13 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
* 2:套餐
* 3:細項
* 4:折扣
* 5:優惠券
*/
public static final byte FOOD_PROP = 1;
public static final byte COMBO_PROP = 2;
public static final byte MODIFIER_PROP = 3;
public static final byte DISCOUNT_PROP = 4;
public static final byte COUPON_PROP = 5;
/***
* 層級
* 1:主食品
......@@ -210,6 +214,10 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
*/
private Discount discount;
/**
* 會員優惠券實體
*/
private MemberWalletCoupon walletCoupon;
/**
* 折扣狀態#0:沒有折扣;1:有折扣未送單;2:折扣全部已送單;
*/
private int discountStatus;
......@@ -321,6 +329,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
this.freeServiceCharge = orderDetail.freeServiceCharge;
this.additionalDiscount = orderDetail.additionalDiscount;
this.discount = orderDetail.discount;
this.walletCoupon = orderDetail.walletCoupon;
this.discountStatus = orderDetail.discountStatus;
this.status = orderDetail.status;
this.printSeting = orderDetail.printSeting;
......@@ -335,94 +344,6 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
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() {
return STATUS_NORMAL;
}
......@@ -452,406 +373,6 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
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 productnameBeans 訂單食品項
......@@ -1032,7 +553,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
orderDetail.setUnit_price(orderDetailsBean.getPrice());
orderDetail.setPrice(orderDetailsBean.getPrice() * orderDetailsBean.getNumber());
orderDetail.setVisible(orderDetailsBean.getStatus() == 0);
orderDetail.setPrintseting(orderDetailsBean.getPrintSetIng());
orderDetail.setPrintSeting(orderDetailsBean.getPrintSetIng());
// orderDetail.setAutomod(foods.getAutomod());
orderDetail.setKtPrintMainItem(orderDetailsBean.getKtPrintMainItem());
orderDetail.setPrintFont(orderDetailsBean.getPrintFont());
......@@ -1095,6 +616,11 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
discount.setDiscountRecordId(discountBean.getId());
discount.setDiscountValue(discountBean.getDiscountValue());
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.setRemark(discountBean.getRemark());
return discount;
......@@ -1153,7 +679,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
orderDetail.setCost(food.getCost());
orderDetail.setNumber(number);
orderDetail.setOrderId(DoshokuOrder.getInstance().getOrderId());
orderDetail.setPrintseting(food.getPrintSeting());
orderDetail.setPrintSeting(food.getPrintSeting());
orderDetail.setIsfood(true);
orderDetail.setNew(true);
orderDetail.setType(FOOD_TYPE);
......@@ -1202,7 +728,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
orderDetail.setType(FOOD_TYPE);
orderDetail.setItemType(2);
orderDetail.setProp(prop);
orderDetail.setPrintseting(foodCombo.getPrintSeting());
orderDetail.setPrintSeting(foodCombo.getPrintSeting());
orderDetail.setAblediscount(foodCombo.getAblediscount());
// orderDetail.setComboAuto(foodCombo.isAutoMode());
if (isRvMealClicked) {
......@@ -1254,7 +780,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
}
/**
* 折扣,優惠券轉換
* 折扣轉換
*
* @param discount
* @return
......@@ -1275,11 +801,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
orderDetail.setOrderId(DoshokuOrder.getInstance().getOrderId());
orderDetail.setIsfood(false);
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.setSelected(2);
orderDetail.setItemType(2);
......@@ -1289,6 +811,38 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
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) {
List<OrderDetail> newOrderList = new ArrayList<>();
for (OrderDetail orderDetail : orderDetailList) {
......@@ -1337,7 +891,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
orderData.setProductName(bean.getPRODUCT_NAME());
orderData.setPrice(Double.parseDouble(Objects.requireNonNull(bean.getPRICE())));
orderData.setNumber(Integer.parseInt(Objects.requireNonNull(bean.getNum())));
orderData.setPrintseting(bean.getPrintseting());
orderData.setPrintSeting(bean.getPrintseting());
orderData.setItemType(1);
if (bean.getChild() != null) {
for (OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX childBeanX : bean.getChild()) {
......@@ -1345,7 +899,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
childOrderData.setProductName(childBeanX.getPRODUCT_NAME());
childOrderData.setPrice(Double.parseDouble(Objects.requireNonNull(childBeanX.getPRICE())));
childOrderData.setNumber(Integer.parseInt(Objects.requireNonNull(childBeanX.getNum())));
childOrderData.setPrintseting(childBeanX.getPrintseting());
childOrderData.setPrintSeting(childBeanX.getPrintseting());
childOrderData.setItemType(2);
if (childBeanX.getChild() != null) {
for (OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX.ChildBean childBean : childBeanX.getChild()) {
......@@ -1353,7 +907,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
childOrderData2.setProductName(childBean.getPRODUCT_NAME());
childOrderData2.setPrice(Double.parseDouble(Objects.requireNonNull(childBean.getPRICE())));
childOrderData2.setNumber(Integer.parseInt(Objects.requireNonNull(childBean.getNum())));
childOrderData2.setPrintseting(childBean.getPrintseting());
childOrderData2.setPrintSeting(childBean.getPrintseting());
childOrderData2.setItemType(3);
orderDetailList.add(childOrderData2);
}
......
......@@ -2,8 +2,10 @@ package com.gingersoft.gsa.cloud.pay;
import androidx.fragment.app.FragmentActivity;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.contract.YedpayContract;
import com.gingersoft.gsa.cloud.pay.lifecycle.fragment.PayFlowFragment;
import com.gingersoft.gsa.cloud.pay.device.pos.PosPayAction;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.utils.Preconditions;
import lombok.Getter;
......@@ -71,7 +73,7 @@ public class PaymentControl {
}
public void showPayFlowFragment(FragmentActivity fragmentActivity,RequestParms requestParms){
PayFlowFragment payFlowFragment = PayFlowFragment.newInstance(requestParms);
PayFlowFragment<BasePresenter<YedpayContract.Model, YedpayContract.View>> payFlowFragment = PayFlowFragment.newInstance(requestParms);
payFlowFragment.show(fragmentActivity.getSupportFragmentManager(), "PayFlowDialogFragment");
}
......
......@@ -7,7 +7,6 @@ import androidx.fragment.app.Fragment;
import com.gingersoft.gsa.cloud.pay.RequestParms;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.constant.YedpayConstant;
import com.gingersoft.gsa.cloud.pay.lifecycle.presenter.PayFlowPresenter;
/**
* @作者: bin
......
package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.contract;
import android.content.Intent;
import androidx.fragment.app.Fragment;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.pay.PayStep;
import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel;
import io.reactivex.Single;
import okhttp3.RequestBody;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/30/2021 16:23
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public interface YedpayContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
void showStatusLoadingDialog(PayStep status);
void startActivityForResult(Intent intent);
Fragment getFragment();
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel {
Single<BaseResult> findSaleStatus(RequestBody body);
Single<BaseResult> refundOrder(RequestBody body);
}
}
package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.di.component;
import dagger.BindsInstance;
import dagger.Component;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.di.module.YedpayModule;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.contract.YedpayContract;
import com.jess.arms.di.scope.FragmentScope;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.fragment.YedpayFragment;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/30/2021 16:23
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@FragmentScope
@Component(modules = YedpayModule.class, dependencies = AppComponent.class)
public interface YedpayComponent {
void inject(YedpayFragment fragment);
@Component.Builder
interface Builder {
@BindsInstance
YedpayComponent.Builder view(YedpayContract.View view);
YedpayComponent.Builder appComponent(AppComponent appComponent);
YedpayComponent build();
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.di.module;
import com.jess.arms.di.scope.FragmentScope;
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.contract.YedpayContract;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.model.YedpayModel;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/30/2021 16:23
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@Module
public abstract class YedpayModule {
@Binds
abstract YedpayContract.Model bindYedpayModel(YedpayModel model);
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.fragment;
import android.content.Intent;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.gingersoft.gsa.cloud.order.R;
import com.gingersoft.gsa.cloud.order.R2;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.constant.YedpayConstant;
import com.gingersoft.gsa.cloud.pay.lifecycle.fragment.PayFlowFragment;
import com.gingersoft.gsa.cloud.pay.view.customstatus.CustomStatusView;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.contract.YedpayContract;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.presenter.YedpayPresenter;
import butterknife.BindView;
import static com.jess.arms.utils.Preconditions.checkNotNull;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/30/2021 16:23
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public class YedpayFragment extends PayFlowFragment<YedpayPresenter> implements YedpayContract.View {
@BindView(R2.id.ll_container)
LinearLayout ll_container;
@BindView(R2.id.as_status)
CustomStatusView as_status;
@BindView(R2.id.tv_status)
TextView tv_status;
// public static PayFlowFragment newInstance(RequestParms parms) {
// PayFlowFragment fragment = new PayFlowFragment();
// Bundle bundle = new Bundle();
// bundle.putParcelable("requestParms", parms);
// fragment.setArguments(bundle);
// return fragment;
// }
@Override
public void setupFragmentComponent(@NonNull AppComponent appComponent) {
DaggerYedpayComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
.build()
.inject(this);
}
@Override
public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
getDialog().setCancelable(false);
return inflater.inflate(R.layout.dialog_pay_loading, container, false);
}
@Override
public void onStart() {
super.onStart();
mWindow.setBackgroundDrawable(new ColorDrawable(ArmsUtils.getColor(mContext, R.color.trans)));
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
// mPresenter.excutePayFlow(requestParms);
}
@Override
public void setData(@Nullable Object data) {
}
@Override
public void showLoading(String message) {
}
@Override
public void hideLoading() {
}
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.makeText(mContext, message);
}
@Override
public void launchActivity(@NonNull Intent intent) {
checkNotNull(intent);
ArmsUtils.startActivity(intent);
}
@Override
public void killMyself() {
super.killMyself();
}
// @Override
// public void onActivityResult(int requestCode, int resultCode, @Nullable Intent intent) {
// super.onActivityResult(requestCode, resultCode, intent);
// LoganManager.w_code(TAG, "onActivityResult->" + "resultCode=" + resultCode + " requestCode=" + requestCode);
// if (resultCode == android.app.Activity.RESULT_OK) {
// switch (requestCode) {
// case YedpayConstant.CallRequestCode.SALE_REQUEST_CODE: {
// if (intent.getExtras() != null) {
// String status = (String) intent.getExtras().get("status");
// String transaction_id = (String) intent.getExtras().get("transaction_id");
// LoganManager.w_code(TAG, "onActivityResult-》" + "status=" + status + " transaction_id=" + transaction_id);
// mPresenter.yedPayUpdateStatus(transaction_id, requestParms.getOrderId(), requestParms.getPayType(), requestParms.getResturantId());
// }
// break;
// }
// default:
// showStatusLoadingDialog(PayStep.FAILURE);
// break;
// }
// } else {
// showStatusLoadingDialog(PayStep.FAILURE);
// }
// }
@Override
public void startActivityForResult(Intent intent) {
startActivityForResult(intent, YedpayConstant.CallRequestCode.SALE_REQUEST_CODE);
}
@Override
public Fragment getFragment() {
return this;
}
}
package com.gingersoft.gsa.cloud.pay.lifecycle.model;
package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.model;
import android.app.Application;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.model.service.YedpayService;
import com.gingersoft.gsa.cloud.pay.lifecycle.model.service.PayFlowService;
import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager;
......@@ -12,7 +13,7 @@ import com.jess.arms.di.scope.FragmentScope;
import javax.inject.Inject;
import com.gingersoft.gsa.cloud.pay.lifecycle.contract.PayFlowContract;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.contract.YedpayContract;
import io.reactivex.Single;
import okhttp3.RequestBody;
......@@ -22,7 +23,7 @@ import okhttp3.RequestBody;
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/15/2021 14:44
* Created by MVPArmsTemplate on 04/30/2021 16:23
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
......@@ -31,14 +32,14 @@ import okhttp3.RequestBody;
* ================================================
*/
@FragmentScope
public class PayFlowModel extends BaseModel implements PayFlowContract.Model {
public class YedpayModel extends BaseModel implements YedpayContract.Model {
@Inject
Gson mGson;
@Inject
Application mApplication;
@Inject
public PayFlowModel(IRepositoryManager repositoryManager) {
public YedpayModel(IRepositoryManager repositoryManager) {
super(repositoryManager);
}
......@@ -49,16 +50,15 @@ public class PayFlowModel extends BaseModel implements PayFlowContract.Model {
this.mApplication = null;
}
@Override
public Single<BaseResult> yedPayFindSaleStatus(RequestBody body) {
return mRepositoryManager.obtainRetrofitService(PayFlowService.class)
.yedPayFindSaleStatus(body);
public Single<BaseResult> findSaleStatus(RequestBody body) {
return mRepositoryManager.obtainRetrofitService(YedpayService.class)
.findSaleStatus(body);
}
@Override
public Single<BaseResult> yedPayRefundOrder(RequestBody body) {
return mRepositoryManager.obtainRetrofitService(PayFlowService.class)
.yedPayRefundOrder(body);
public Single<BaseResult> refundOrder(RequestBody body) {
return mRepositoryManager.obtainRetrofitService(YedpayService.class)
.refundOrder(body);
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.model.service;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import io.reactivex.Single;
import me.jessyan.retrofiturlmanager.RetrofitUrlManager;
import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.Headers;
import retrofit2.http.POST;
/**
* @作者: bin
* @創建時間: 2021-04-30 16:27
* @更新時間: 2021-04-30 16:27
* @描述:
*/
public interface YedpayService {
@Headers({"Domain-Name: ricepon_pay"})
@POST("gsaYedPay/updatePayStatus" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Single<BaseResult> findSaleStatus(@Body RequestBody requestBody);
@Headers({"Domain-Name: ricepon_pay"})
@POST("gsaYedPay/refund" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Single<BaseResult> refundOrder(@Body RequestBody requestBody);
}
package com.gingersoft.gsa.cloud.pay.lifecycle.presenter;
package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.presenter;
import android.app.Application;
import android.content.Intent;
import android.net.Uri;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.rxjava.ErrorHandleSingleSubscriber;
import com.gingersoft.gsa.cloud.common.utils.AppDevices;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.pay.PayStep;
import com.gingersoft.gsa.cloud.pay.PaymentControl;
import com.gingersoft.gsa.cloud.pay.RequestParms;
import com.gingersoft.gsa.cloud.pay.ResultCallback;
import com.gingersoft.gsa.cloud.pay.device.pos.bbpos.BBposCommandImp;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.HywebCommandImp;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.YedpayCommandImp;
import com.gingersoft.gsa.cloud.pay.lifecycle.model.bean.YedpayFindSaleStatusBean;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.YedpayCommand;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.constant.YedpayConstant;
import com.gingersoft.gsa.cloud.pay.lifecycle.model.bean.YedpayFindSaleStatusBean;
import com.jess.arms.integration.AppManager;
import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.mvp.BasePresenter;
......@@ -28,7 +27,7 @@ import okhttp3.RequestBody;
import javax.inject.Inject;
import com.gingersoft.gsa.cloud.pay.lifecycle.contract.PayFlowContract;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.contract.YedpayContract;
import com.jess.arms.utils.RxLifecycleUtils;
......@@ -36,7 +35,7 @@ import com.jess.arms.utils.RxLifecycleUtils;
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/15/2021 14:44
* Created by MVPArmsTemplate on 04/30/2021 16:23
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
......@@ -45,7 +44,7 @@ import com.jess.arms.utils.RxLifecycleUtils;
* ================================================
*/
@FragmentScope
public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFlowContract.View> {
public class YedpayPresenter extends BasePresenter<YedpayContract.Model, YedpayContract.View> {
@Inject
RxErrorHandler mErrorHandler;
@Inject
......@@ -59,7 +58,7 @@ public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFl
private ResultCallback mResultCallback;
@Inject
public PayFlowPresenter(PayFlowContract.Model model, PayFlowContract.View rootView) {
public YedpayPresenter(YedpayContract.Model model, YedpayContract.View rootView) {
super(model, rootView);
}
......@@ -72,7 +71,8 @@ public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFl
this.mApplication = null;
}
public void yedPayUpdateStatus(String transactionId, long orderId, int payType, int restaurantId) {
public void findSaleStatus(String transactionId, long orderId, int payType, int restaurantId) {
RequestBody requestBody = new FormBody.Builder()
.add("transactionId", transactionId)
.add("orderId", orderId + "")
......@@ -80,7 +80,7 @@ public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFl
.add("restaurantId", restaurantId + "")
.build();
mModel.yedPayFindSaleStatus(requestBody)
mModel.findSaleStatus(requestBody)
.subscribeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
......@@ -129,14 +129,14 @@ public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFl
});
}
public void yedPayRefundOrder(String refundReason, long orderId, int payType, int restaurantId) {
public void refundOrder(String refundReason, long orderId, int payType, int restaurantId) {
RequestBody requestBody = new FormBody.Builder()
.add("refundReason", refundReason)
.add("orderId", String.valueOf(orderId))
.add("payType", String.valueOf(payType))
.add("restaurantId", String.valueOf(restaurantId))
.build();
mModel.yedPayRefundOrder(requestBody)
mModel.refundOrder(requestBody)
.subscribeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
......@@ -173,7 +173,7 @@ public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFl
this.mRequestParms = requestParms;
this.mResultCallback = mRequestParms.getResultCallback();
setCallbackBy(requestParms);
mRequestParms.setCallback(yedpayCommand);
switch (requestParms.getAction()) {
case SALE:
......@@ -185,16 +185,19 @@ public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFl
}
}
private void setCallbackBy(RequestParms requestParms) {
if (AppDevices.isHywebPos()) {
requestParms.setCallback(new HywebCommandImp());
} else if (AppDevices.isBBPos()) {
requestParms.setCallback(new BBposCommandImp());
} else if (AppDevices.isYedpay()) {
requestParms.setCallback(new YedpayCommandImp(mRootView.getFragment(), this, mRequestParms));
} else {
requestParms.setCallback(new YedpayCommandImp(mRootView.getFragment(), this, mRequestParms));
private YedpayCommand yedpayCommand = new YedpayCommand() {
@Override
public void callSaleUri(String uri) {
Uri uri2 = Uri.parse(uri);
Intent intent = new Intent(Intent.ACTION_VIEW, uri2);
mRootView.getFragment().startActivityForResult(intent, YedpayConstant.CallRequestCode.SALE_REQUEST_CODE);
}
}
@Override
public void refundResult(boolean result) {
refundOrder(mRequestParms.getRefundReason(), mRequestParms.getOrderId(), mRequestParms.getPayType(), mRequestParms.getResturantId());
}
};
}
......@@ -32,17 +32,11 @@ public interface PayFlowContract {
void showStatusLoadingDialog(PayStep status);
void startActivityForResult(Intent intent);
Fragment getFragment();
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel {
Single<BaseResult> yedPayFindSaleStatus(RequestBody body);
Single<BaseResult> yedPayRefundOrder(RequestBody body);
}
}
......@@ -3,6 +3,7 @@ package com.gingersoft.gsa.cloud.pay.lifecycle.di.component;
import dagger.BindsInstance;
import dagger.Component;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.contract.YedpayContract;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.pay.lifecycle.di.module.PayFlowModule;
......@@ -10,6 +11,7 @@ import com.gingersoft.gsa.cloud.pay.lifecycle.contract.PayFlowContract;
import com.jess.arms.di.scope.FragmentScope;
import com.gingersoft.gsa.cloud.pay.lifecycle.fragment.PayFlowFragment;
import com.jess.arms.mvp.BasePresenter;
/**
......
package com.gingersoft.gsa.cloud.pay.lifecycle.di.module;
import com.jess.arms.di.scope.FragmentScope;
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import com.gingersoft.gsa.cloud.pay.lifecycle.contract.PayFlowContract;
import com.gingersoft.gsa.cloud.pay.lifecycle.model.PayFlowModel;
import com.jess.arms.mvp.BaseModel;
/**
......@@ -26,5 +23,5 @@ import com.gingersoft.gsa.cloud.pay.lifecycle.model.PayFlowModel;
public abstract class PayFlowModule {
@Binds
abstract PayFlowContract.Model bindPayFlowModel(PayFlowModel model);
abstract PayFlowContract.Model bindPayFlowModel(BaseModel model);
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.pay.lifecycle.fragment;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.TextView;
......@@ -18,23 +15,19 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.order.R;
import com.gingersoft.gsa.cloud.order.R2;
import com.gingersoft.gsa.cloud.pay.PayAction;
import com.gingersoft.gsa.cloud.pay.PayStep;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.constant.YedpayConstant;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.contract.YedpayContract;
import com.gingersoft.gsa.cloud.pay.lifecycle.di.component.DaggerPayFlowComponent;
import com.gingersoft.gsa.cloud.pay.RequestParms;
import com.gingersoft.gsa.cloud.pay.view.customstatus.CustomStatusView;
import com.gingersoft.gsa.cloud.pay.widget.StatusLoadingDialog;
import com.jess.arms.base.BaseDialogFragment;
import com.jess.arms.base.BaseFragment;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.utils.ArmsUtils;
import com.gingersoft.gsa.cloud.pay.lifecycle.contract.PayFlowContract;
import com.gingersoft.gsa.cloud.pay.lifecycle.presenter.PayFlowPresenter;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import butterknife.BindView;
......@@ -53,7 +46,7 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public class PayFlowFragment extends BaseDialogFragment<PayFlowPresenter> implements PayFlowContract.View {
public class PayFlowFragment<P extends BasePresenter> extends BaseDialogFragment implements PayFlowContract.View {
@BindView(R2.id.ll_container)
LinearLayout ll_container;
......@@ -102,15 +95,13 @@ public class PayFlowFragment extends BaseDialogFragment<PayFlowPresenter> implem
@Override
public void initData(@Nullable Bundle savedInstanceState) {
Bundle arguments = getArguments();
requestParms = (RequestParms) arguments.getParcelable("requestParms");
requestParms = arguments.getParcelable("requestParms");
action = requestParms.getAction();
tv_status.setText(mLoadingText);
ll_container.setLayoutParams(new FrameLayout.LayoutParams((int) (ArmsUtils.getScreenWidth(mContext) * 0.4), (int) (ArmsUtils.getScreenWidth(mContext) * 0.4)));
showStatusLoadingDialog(PayStep.LOADING);
mPresenter.excutePayFlow(requestParms);
}
@Override
......@@ -190,34 +181,6 @@ public class PayFlowFragment extends BaseDialogFragment<PayFlowPresenter> implem
}, mCancelDelayMillis);
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
LoganManager.w_code(TAG, "onActivityResult->" + "resultCode=" + resultCode + " requestCode=" + requestCode);
if (resultCode == android.app.Activity.RESULT_OK) {
switch (requestCode) {
case YedpayConstant.CallRequestCode.SALE_REQUEST_CODE: {
if (intent.getExtras() != null) {
String status = (String) intent.getExtras().get("status");
String transaction_id = (String) intent.getExtras().get("transaction_id");
LoganManager.w_code(TAG, "onActivityResult-》" + "status=" + status + " transaction_id=" + transaction_id);
mPresenter.yedPayUpdateStatus(transaction_id, requestParms.getOrderId(), requestParms.getPayType(), requestParms.getResturantId());
}
break;
}
default:
showStatusLoadingDialog(PayStep.FAILURE);
break;
}
} else {
showStatusLoadingDialog(PayStep.FAILURE);
}
}
@Override
public void startActivityForResult(Intent intent) {
startActivityForResult(intent, YedpayConstant.CallRequestCode.SALE_REQUEST_CODE);
}
@Override
public Fragment getFragment() {
......
package com.gingersoft.gsa.cloud.pay.lifecycle.model.bean;
/**
* @作者: bin
* @創建時間: 2021-04-15 18:46
* @更新時間: 2021-04-15 18:46
* @描述:
*/
public class YedPayRefundBean {
}
package com.gingersoft.gsa.cloud.pay.lifecycle.model.bean;
import lombok.Data;
/**
* @作者: bin
* @創建時間: 2021-04-15 18:46
* @更新時間: 2021-04-15 18:46
* @描述:
*/
@Data
public class YedpayFindSaleStatusBean {
/**
* 訂單id
*/
private long orderId = -1L;
/**
* 支付状态:0 未支付 1 支付失败 2 支持成功 3 已支付未到账 4.支付中 5.已退款 6.廢棄(第二次結賬)
*/
private Integer status;
/**
* 交易id
*/
private String transactionId;
/**
* 退款id
*/
private String refundId;
}
package com.gingersoft.gsa.cloud.pay.lifecycle.model.service;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import io.reactivex.Single;
import io.reactivex.Single;
import me.jessyan.retrofiturlmanager.RetrofitUrlManager;
import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Query;
/**
* Created by Wyh on 2020/1/17.
*/
public interface PayFlowService {
@Headers({"Domain-Name: ricepon_pay"})
@POST("posPay/getTxnId" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Single<BaseResult> getTxnId(@Query("type") int type, @Query("parm") String parm, @Query("gsposShopId") String shopName, @Query("tableId") int tableId, @Query("tableNumber") String tableNumber);
@Headers({"Domain-Name: ricepon_pay"})
@POST("posPay/getRefundTxnId" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Single<BaseResult> getRefundTxnId(@Query("tableId") int tableId, @Query("tableNumber") String tableNumber, @Query("memberId") long memberId);
@Headers({"Domain-Name: ricepon_pay"})
@POST("posPay/getCancelTxnId" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Single<BaseResult> getCancelTxnId(@Query("tableId") int tableId, @Query("tableNumber") String tableNumber, @Query("memberId") long memberId);
@Headers({"Domain-Name: ricepon_pay"})
@POST("orderPay/updatePosRefund" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Single<BaseResult> updatePosRefund(@Query("tableId") int tableId, @Query("memberId") Long memberId, @Query("couponMemberId") long couponMemberId, @Query("couponNo") String couponNo, @Query("restaurantId") int restaurantId);
@Headers({"Domain-Name: ricepon_pay"})
@POST("member/getMemberWalletList" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Single<BaseResult> getMemberWalletList(@Query("brandId") int brandId, @Query("memberId") long memberId, @Query("limitType") long limitType, @Query("pageIndex") long pageIndex, @Query("pageSize") long pageSize);
@Headers({"Domain-Name: ricepon_pay"})
@POST("orderPay/add" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Single<BaseResult> add(@Query("tableId") int tableId, @Query("tableNumber") String tableNumber, @Query("memberId") long memberId);
@Headers({"Domain-Name: ricepon_pay"})
@POST("posPay/updatePosCancel" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Single<BaseResult> updatePosCancel(@Query("tableId") int tableId, @Query("tableNumber") String tableNumber, @Query("memberId") long memberId);
@Headers({"Domain-Name: ricepon_pay"})
@POST("gsaYedPay/updatePayStatus" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Single<BaseResult> yedPayFindSaleStatus(@Body RequestBody requestBody);
@Headers({"Domain-Name: ricepon_pay"})
@POST("gsaYedPay/refund" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Single<BaseResult> yedPayRefundOrder(@Body RequestBody requestBody);
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment