Commit 6ec228e3 by 宁斌

1、會員dialog頁拆分 2、公共細項頁拆分

parent 48ef3e27
......@@ -5,11 +5,11 @@ import dagger.Component;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.table.di.module.FineItemAllModule;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineItemAllContract;
import com.gingersoft.gsa.cloud.table.di.module.FineChildAllModule;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineChildAllContract;
import com.jess.arms.di.scope.FragmentScope;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.FineItemAllFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand.FineChildAllFragment;
/**
......@@ -25,17 +25,17 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.FineItemAllFragment;
* ================================================
*/
@FragmentScope
@Component(modules = FineItemAllModule.class, dependencies = AppComponent.class)
public interface FineItemAllComponent {
void inject(FineItemAllFragment fragment);
@Component(modules = FineChildAllModule.class, dependencies = AppComponent.class)
public interface FineChildAllComponent {
void inject(FineChildAllFragment fragment);
@Component.Builder
interface Builder {
@BindsInstance
FineItemAllComponent.Builder view(FineItemAllContract.View view);
FineChildAllComponent.Builder view(FineChildAllContract.View view);
FineItemAllComponent.Builder appComponent(AppComponent appComponent);
FineChildAllComponent.Builder appComponent(AppComponent appComponent);
FineItemAllComponent build();
FineChildAllComponent build();
}
}
\ No newline at end of file
......@@ -3,11 +3,11 @@ package com.gingersoft.gsa.cloud.table.di.component;
import dagger.BindsInstance;
import dagger.Component;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineItemOneselfContract;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.FineItemOneselfFragment;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineChildOneselfContract;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand.FineChildOneselfFragment;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.table.di.module.FineItemOneselfModule;
import com.gingersoft.gsa.cloud.table.di.module.FineChildOneselfModule;
import com.jess.arms.di.scope.FragmentScope;
......@@ -25,17 +25,17 @@ import com.jess.arms.di.scope.FragmentScope;
* ================================================
*/
@FragmentScope
@Component(modules = FineItemOneselfModule.class, dependencies = AppComponent.class)
public interface FineItemOneselfComponent {
void inject(FineItemOneselfFragment fragment);
@Component(modules = FineChildOneselfModule.class, dependencies = AppComponent.class)
public interface FineChildOneselfComponent {
void inject(FineChildOneselfFragment fragment);
@Component.Builder
interface Builder {
@BindsInstance
FineItemOneselfComponent.Builder view(FineItemOneselfContract.View view);
FineChildOneselfComponent.Builder view(FineChildOneselfContract.View view);
FineItemOneselfComponent.Builder appComponent(AppComponent appComponent);
FineChildOneselfComponent.Builder appComponent(AppComponent appComponent);
FineItemOneselfComponent build();
FineChildOneselfComponent build();
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.table.di.component;
import dagger.BindsInstance;
import dagger.Component;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.table.di.module.FineModule;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineContract;
import com.jess.arms.di.scope.FragmentScope;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand.FineFragment;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/24/2021 18:33
* <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 = FineModule.class, dependencies = AppComponent.class)
public interface FineComponent {
void inject(FineFragment fragment);
@Component.Builder
interface Builder {
@BindsInstance
FineComponent.Builder view(FineContract.View view);
FineComponent.Builder appComponent(AppComponent appComponent);
FineComponent build();
}
}
\ No newline at end of file
......@@ -3,6 +3,7 @@ package com.gingersoft.gsa.cloud.table.di.component;
import com.gingersoft.gsa.cloud.table.di.module.MealStand2Module;
import com.gingersoft.gsa.cloud.table.di.module.MealStandModule;
import com.gingersoft.gsa.cloud.table.mvp.contract.MealStandContract;
import com.gingersoft.gsa.cloud.table.mvp.contract.MealStandContract2;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity2;
import com.jess.arms.di.component.AppComponent;
......@@ -32,7 +33,7 @@ public interface MealStand2Component {
@Component.Builder
interface Builder {
@BindsInstance
MealStand2Component.Builder view(MealStandContract.View view);
MealStand2Component.Builder view(MealStandContract2.View view);
MealStand2Component.Builder appComponent(AppComponent appComponent);
......
package com.gingersoft.gsa.cloud.table.di.component;
import dagger.BindsInstance;
import dagger.Component;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.table.di.module.RiceponMemberDialogModule;
import com.gingersoft.gsa.cloud.table.mvp.contract.RiceponMemberDialogContract;
import com.jess.arms.di.scope.FragmentScope;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand.RiceponMemberDialogFragment;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/24/2021 16:24
* <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 = RiceponMemberDialogModule.class, dependencies = AppComponent.class)
public interface RiceponMemberDialogComponent {
void inject(RiceponMemberDialogFragment fragment);
@Component.Builder
interface Builder {
@BindsInstance
RiceponMemberDialogComponent.Builder view(RiceponMemberDialogContract.View view);
RiceponMemberDialogComponent.Builder appComponent(AppComponent appComponent);
RiceponMemberDialogComponent build();
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.table.di.module;
import com.gingersoft.gsa.cloud.common.core.discount.MemberCoupon;
import com.gingersoft.gsa.cloud.ui.adapter.TagViewAdapter;
import com.gingersoft.gsa.cloud.ui.bean.TagViewItem;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.di.scope.FragmentScope;
import dagger.Binds;
......@@ -16,8 +14,6 @@ import com.gingersoft.gsa.cloud.table.mvp.model.CouponModel;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
/**
* ================================================
......
......@@ -3,8 +3,8 @@ package com.gingersoft.gsa.cloud.table.di.module;
import dagger.Binds;
import dagger.Module;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineItemAllContract;
import com.gingersoft.gsa.cloud.table.mvp.model.FineItemAllModel;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineChildAllContract;
import com.gingersoft.gsa.cloud.table.mvp.model.FineChildAllModel;
/**
......@@ -20,8 +20,8 @@ import com.gingersoft.gsa.cloud.table.mvp.model.FineItemAllModel;
* ================================================
*/
@Module
public abstract class FineItemAllModule {
public abstract class FineChildAllModule {
@Binds
abstract FineItemAllContract.Model bindFineItemAllModel(FineItemAllModel model);
abstract FineChildAllContract.Model bindFineItemAllModel(FineChildAllModel model);
}
\ No newline at end of file
......@@ -3,8 +3,8 @@ package com.gingersoft.gsa.cloud.table.di.module;
import dagger.Binds;
import dagger.Module;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineItemOneselfContract;
import com.gingersoft.gsa.cloud.table.mvp.model.FineItemOneselfModel;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineChildOneselfContract;
import com.gingersoft.gsa.cloud.table.mvp.model.FineChildOneselfModel;
/**
......@@ -20,8 +20,8 @@ import com.gingersoft.gsa.cloud.table.mvp.model.FineItemOneselfModel;
* ================================================
*/
@Module
public abstract class FineItemOneselfModule {
public abstract class FineChildOneselfModule {
@Binds
abstract FineItemOneselfContract.Model bindFineItemOneselfModel(FineItemOneselfModel model);
abstract FineChildOneselfContract.Model bindFineItemOneselfModel(FineChildOneselfModel model);
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.table.di.module;
import com.jess.arms.di.scope.FragmentScope;
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineContract;
import com.gingersoft.gsa.cloud.table.mvp.model.FineModel;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/24/2021 18:33
* <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 FineModule {
@Binds
abstract FineContract.Model bindFineModel(FineModel model);
}
\ No newline at end of file
......@@ -6,7 +6,9 @@ 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.table.mvp.contract.MealStandContract;
import com.gingersoft.gsa.cloud.table.mvp.contract.MealStandContract2;
import com.gingersoft.gsa.cloud.table.mvp.model.MealStandModel;
import com.gingersoft.gsa.cloud.table.mvp.model.MealStandModel2;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BillItemAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ComboAdapter;
......@@ -44,7 +46,7 @@ import dagger.Provides;
public abstract class MealStand2Module {
@Binds
abstract MealStandContract.Model bindMealStandModel(MealStandModel model);
abstract MealStandContract2.Model bindMealStandModel2(MealStandModel2 model);
@ActivityScope
@Provides
......@@ -84,35 +86,27 @@ public abstract class MealStand2Module {
return new ArrayList<>();
}
@Inject
protected SelectMealAdapter mSelectMealAdapter;
/**
* 賬單項適配器
*/
@Inject
protected BillItemAdapter mBillItemAdapter;
@ActivityScope
@Provides
static FoodAdapter provideFoodAdapter(MealStandContract.View IView, @Named("foodList") List<Food> foodList) {
static FoodAdapter provideFoodAdapter(MealStandContract2.View IView, @Named("foodList") List<Food> foodList) {
return new FoodAdapter(IView.getActivity(), foodList, IView.getFromType());
}
@ActivityScope
@Provides
static ComboAdapter provideComboAdapter(MealStandContract.View IView, List<ComboItem> comboItemList) {
static ComboAdapter provideComboAdapter(MealStandContract2.View IView, List<ComboItem> comboItemList) {
return new ComboAdapter(IView.getActivity(), comboItemList);
}
@ActivityScope
@Provides
static ModifierAdapter provideModifierAdapter(MealStandContract.View IView, List<Modifier> modifierList) {
static ModifierAdapter provideModifierAdapter(MealStandContract2.View IView, List<Modifier> modifierList) {
return new ModifierAdapter(IView.getActivity(), modifierList);
}
@ActivityScope
@Provides
static DiscountAdapter provideDiscountAdapter(MealStandContract.View IView, List<Discount> discountList) {
static DiscountAdapter provideDiscountAdapter(MealStandContract2.View IView, List<Discount> discountList) {
return new DiscountAdapter(IView.getActivity(), discountList);
}
......
package com.gingersoft.gsa.cloud.table.di.module;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.table.mvp.contract.SetMealContract;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.MemberInfoAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.FoodGroupAdapter;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem;
import com.jess.arms.di.scope.FragmentScope;
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import com.gingersoft.gsa.cloud.table.mvp.contract.RiceponMemberDialogContract;
import com.gingersoft.gsa.cloud.table.mvp.model.RiceponMemberDialogModel;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Named;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/24/2021 16:24
* <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 RiceponMemberDialogModule {
@Binds
abstract RiceponMemberDialogContract.Model bindRiceponMemberDialogModel(RiceponMemberDialogModel model);
@FragmentScope
@Provides
static List<SectionTextItem> provideMemberInfoList() {
return new ArrayList<>();
}
@FragmentScope
@Provides
static MemberInfoAdapter provideMemberInfoAdapter(List<SectionTextItem> memberInfoList) {
return new MemberInfoAdapter(memberInfoList);
}
}
\ No newline at end of file
......@@ -10,6 +10,7 @@ import com.gingersoft.gsa.cloud.order.billItem.BillItem;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.table.mvp.contract.MealStandContract;
import com.gingersoft.gsa.cloud.table.mvp.contract.SetMealContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood;
import com.gingersoft.gsa.cloud.table.mvp.presenter.mealstand.SetMealPresenter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BillItemAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ComboAdapter;
......@@ -101,6 +102,12 @@ public abstract class SetMealModule {
return new ArrayList<>();
}
@FragmentScope
@Provides
static List<SoldoutCtrFood> provideSoldoutCtrList() {
return new ArrayList<>();
}
// @FragmentScope
// @Provides
// static SelectMealAdapter2 provideSelectMealAdapter2(SetMealContract.View IView, List<OrderDetail> orderMealList, BasePresenter presenter) {
......
package com.gingersoft.gsa.cloud.table.mvp.action.discount;
import android.app.Activity;
import com.gingersoft.gsa.cloud.common.core.discount.MemberCoupon;
import com.gingersoft.gsa.cloud.order.bean.discount.MemberWalletCoupon;
import com.gingersoft.gsa.cloud.common.patterns.Strategy;
import com.gingersoft.gsa.cloud.order.discount.NomalDiscount;
import com.jess.arms.utils.ArmsUtils;
import java.util.List;
import lombok.Builder;
import lombok.Setter;
/**
* @author : bin
* @create date: 2020-10-27
* @update date: 2020-10-27
* @description:賬單優惠券邏輯
*/
public class BillCouponAction implements Strategy<MemberCoupon> {
@Builder
@Setter
public class BillCouponAction implements Strategy<MemberWalletCoupon> {
private Activity mContext;
private Activity context;
/**
* 賬單優惠券列表
*/
private List<NomalDiscount> mNomalDiscountList;
private List<NomalDiscount> nomalDiscountList;
private OnCallBackListener mListener;
private double wholeAmount;
public BillCouponAction(Activity context, OnCallBackListener listener) {
this.mContext = context;
this.mListener = listener;
}
private OnCallBackListener listener;
private String cashStr;
public void setNomalDiscountList(List<NomalDiscount> nomalDiscountList) {
this.mNomalDiscountList = nomalDiscountList;
}
@Override
public void action(MemberCoupon discount) {
if (mListener == null) {
public void action(MemberWalletCoupon coupon) {
if (listener == null) {
return;
}
if (coupon.getBillMinAmount() > wholeAmount) {
//小於最小賬單金額
ArmsUtils.makeText(context, "小於最小賬單金額" + cashStr + coupon.getBillMinAmount() + " 無法使用此優惠券");
return;
}
listener.preformAddCoupon(coupon.clone());
}
@Override
......@@ -46,16 +55,10 @@ public class BillCouponAction implements Strategy<MemberCoupon> {
}
private void exclusiveDiscount(MemberCoupon discount) {
if (mListener != null) {
}
}
public interface OnCallBackListener {
void exclusiveRemoveOthers(List<NomalDiscount> nomalDiscountList);
void preformAddDiscount(MemberCoupon discount);
void preformAddCoupon(MemberWalletCoupon discount);
}
}
......@@ -12,40 +12,45 @@ import com.jess.arms.utils.ArmsUtils;
import java.util.List;
import lombok.Builder;
import lombok.Setter;
/**
* @author : bin
* @create date: 2020-10-27
* @update date: 2020-10-27
* @description:賬單折扣邏輯
*/
@Builder
@Setter
public class BillDiscountAction implements Strategy<Discount> {
private Activity mContext;
private Activity context;
/**
* 賬單折扣列表
*/
private List<NomalDiscount> mNomalDiscountList;
private List<NomalDiscount> nomalDiscountList;
private OnCallBackListener mListener;
private double wholeAmount;
public BillDiscountAction(Activity context, OnCallBackListener listener) {
this.mContext = context;
this.mListener = listener;
}
private OnCallBackListener listener;
public void setNomalDiscountList(List<NomalDiscount> nomalDiscountList) {
this.mNomalDiscountList = nomalDiscountList;
}
private String cashStr ;
@Override
public void action(Discount discount) {
if (mListener == null) {
if (listener == null) {
return;
}
if (discount.getMinBillAmount() > wholeAmount) {
//小於最小賬單金額
ArmsUtils.makeText(context, "小於最小賬單金額" + cashStr + discount.getMinBillAmount() + " 無法使用此折扣");
return;
}
if (isOnlyOnce(discount)) {
//此折扣只一次
ArmsUtils.makeText(mContext, "此折扣只一次");
ArmsUtils.makeText(context, "此折扣只一次");
return;
}
boolean hasExclusive = hasExclusiveDiscount();
......@@ -54,7 +59,7 @@ public class BillDiscountAction implements Strategy<Discount> {
exclusiveDiscount(discount);
return;
} else {
if (discount.getExclusive() == 1 && mNomalDiscountList.size() > 0) {
if (nomalDiscountList != null && discount.getExclusive() == 1 && nomalDiscountList.size() > 0) {
//獨佔折扣
exclusiveDiscount(discount);
return;
......@@ -71,7 +76,7 @@ public class BillDiscountAction implements Strategy<Discount> {
//
// break;
default:
mListener.preformAddDiscount(discount.clone());
listener.preformAddDiscount(discount.clone());
break;
}
}
......@@ -82,7 +87,7 @@ public class BillDiscountAction implements Strategy<Discount> {
}
private void exclusiveDiscount(Discount discount) {
if (mListener != null) {
if (listener != null) {
showExclusiveTipDialog(discount);
}
}
......@@ -93,7 +98,7 @@ public class BillDiscountAction implements Strategy<Discount> {
* @return
*/
private boolean hasExclusiveDiscount() {
for (NomalDiscount nomalDiscount : mNomalDiscountList) {
for (NomalDiscount nomalDiscount : nomalDiscountList) {
if (nomalDiscount.getDiscount().getExclusive() == 1) {
return true;
}
......@@ -109,7 +114,7 @@ public class BillDiscountAction implements Strategy<Discount> {
*/
private boolean isOnlyOnce(Discount discount) {
if (discount.getOnlyOnce() == 1) {
for (NomalDiscount nomalDiscount : mNomalDiscountList) {
for (NomalDiscount nomalDiscount : nomalDiscountList) {
Discount item = nomalDiscount.getDiscount();
if (discount.getId().longValue() == item.getId().longValue()) {
return true;
......@@ -126,15 +131,15 @@ public class BillDiscountAction implements Strategy<Discount> {
* @param discount
*/
private void showCustomAmountDialog(Discount discount, boolean exclusiveReplace) {
CommonTipDialog.showEditDialog(mContext, discount.getRemark(), "請輸入折扣金額", InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL, new CommonTipDialog.OnEditTextListener() {
CommonTipDialog.showEditDialog(context, discount.getRemark(), "請輸入折扣金額", InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL, new CommonTipDialog.OnEditTextListener() {
@Override
public void inputText(String text) {
discount.setAmount(Double.parseDouble(text));
if (mListener != null) {
if (listener != null) {
if (exclusiveReplace) {
mListener.exclusiveRemoveOthers(mNomalDiscountList);
listener.exclusiveRemoveOthers(nomalDiscountList);
}
mListener.preformAddDiscount(discount.clone());
listener.preformAddDiscount(discount.clone());
}
}
});
......@@ -146,17 +151,17 @@ public class BillDiscountAction implements Strategy<Discount> {
* @param discount
*/
private void showKeyboardDialog(Discount discount, boolean exclusiveReplace) {
new KeyboardDialog(mContext)
new KeyboardDialog(context)
.build()
.setOnCallBackListener(new KeyboardDialog.OnCallBackListener() {
@Override
public void onSure(String number) {
discount.setAmount(Double.parseDouble(number));
if (mListener != null) {
if (listener != null) {
if (exclusiveReplace) {
mListener.exclusiveRemoveOthers(mNomalDiscountList);
listener.exclusiveRemoveOthers(nomalDiscountList);
}
mListener.preformAddDiscount(discount.clone());
listener.preformAddDiscount(discount.clone());
}
}
})
......@@ -169,7 +174,7 @@ public class BillDiscountAction implements Strategy<Discount> {
* @param discount
*/
private void showExclusiveTipDialog(Discount discount) {
CommonTipDialog.showDoubtDialog2(mContext, "有獨佔折扣,是否替換", new CommonTipDialog.OnCallbackListener() {
CommonTipDialog.showDoubtDialog2(context, "有獨佔折扣,是否替換", new CommonTipDialog.OnCallbackListener() {
@Override
public void onSure() {
switch (discount.getType()) {
......@@ -183,8 +188,8 @@ public class BillDiscountAction implements Strategy<Discount> {
//
// break;
default:
mListener.exclusiveRemoveOthers(mNomalDiscountList);
mListener.preformAddDiscount(discount.clone());
listener.exclusiveRemoveOthers(nomalDiscountList);
listener.preformAddDiscount(discount.clone());
break;
}
}
......
package com.gingersoft.gsa.cloud.table.mvp.action.discount;
import android.app.Activity;
import android.text.InputType;
import com.gingersoft.gsa.cloud.common.core.discount.MemberCoupon;
import com.gingersoft.gsa.cloud.order.bean.discount.MemberWalletCoupon;
import com.gingersoft.gsa.cloud.common.patterns.Strategy;
import com.gingersoft.gsa.cloud.order.discount.NomalDiscount;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.KeyboardDialog;
import com.gingersoft.gsa.cloud.common.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.jess.arms.utils.ArmsUtils;
import java.util.List;
import lombok.Builder;
import lombok.Setter;
/**
* @author : bin
* @create date: 2020-10-27
* @update date: 2020-10-27
* @description:食品優惠券邏輯
*/
public class MealCouponAction implements Strategy<MemberCoupon> {
@Builder
@Setter
public class MealCouponAction implements Strategy<MemberWalletCoupon> {
private Activity mContext;
private Activity context;
/**
* 食品優惠券列表
* 選中的食品或套餐組
*/
private List<NomalDiscount> mNomalDiscountList;
private List<OrderDetail> selectMixOrderMealList;
private OnCallBackListener mListener;
private OnCallBackListener listener;
public MealCouponAction(Activity context, OnCallBackListener listener) {
this.mContext = context;
this.mListener = listener;
}
public void setNomalDiscountList(List<NomalDiscount> nomalDiscountList) {
this.mNomalDiscountList = nomalDiscountList;
}
private String cashStr ;
@Override
public void action(MemberCoupon discount) {
if (mListener == null) {
public void action(MemberWalletCoupon coupon) {
if (listener == null || selectMixOrderMealList == null || selectMixOrderMealList.size() == 0) {
return;
}
double mixTotalAomout = getMixTotalAomout(selectMixOrderMealList);
// if(coupon.getAmount() > mixTotalAomout){
// //金額折扣總額不能超過 套餐總金額
// ArmsUtils.makeText(context, "優惠券金額不可以超過食品總金額!");
// return;
// }
if (coupon.getBillMinAmount() > mixTotalAomout) {
//最小金額
ArmsUtils.makeText(context, "小於最小金額" +cashStr+ coupon.getBillMinAmount() + " 無法使用此食品優惠券");
return;
}
listener.preformAddCoupon(coupon.clone());
}
@Override
......@@ -51,30 +58,23 @@ public class MealCouponAction implements Strategy<MemberCoupon> {
}
private void exclusiveDiscount(MemberCoupon discount) {
if (mListener != null) {
}
}
/**
* 是否有獨佔折扣
* 獲取套餐總金額
*
* @param mixOrderMealList
* @return
*/
private boolean hasExclusiveDiscount() {
for (NomalDiscount nomalDiscount : mNomalDiscountList) {
if (nomalDiscount.getDiscount().getExclusive() == 1) {
return true;
}
private double getMixTotalAomout(List<OrderDetail> mixOrderMealList) {
double mixTotalAomout = 0.0;
for (OrderDetail orderDetail : mixOrderMealList) {
mixTotalAomout = MoneyUtil.sum(mixTotalAomout, orderDetail.getPrice());
}
return false;
return mixTotalAomout;
}
public interface OnCallBackListener {
void exclusiveRemoveOthers(List<NomalDiscount> nomalDiscountList);
void preformAddDiscount(MemberCoupon discount);
void preformAddCoupon(MemberWalletCoupon discount);
}
}
......@@ -14,54 +14,48 @@ import com.jess.arms.utils.ArmsUtils;
import java.util.List;
import lombok.Builder;
import lombok.Setter;
/**
* @author : bin
* @create date: 2020-10-28
* @update date: 2020-10-28
* @description:美食折扣邏輯
*/
@Builder
@Setter
public class MealDiscountAction implements Strategy<Discount> {
private Activity mContext;
private Activity context;
/**
* 選中的食品或套餐組
*/
private List<OrderDetail> mSelectMixOrderMealList;
private List<MultyDiscount> mMultyDiscountList;
private List<OrderDetail> selectMixOrderMealList;
private MealDiscountAction.OnCallBackListener mListener;
private MealDiscountAction.OnCallBackListener listener;
public MealDiscountAction(Activity context, List<MultyDiscount> multyDiscountList, MealDiscountAction.OnCallBackListener listener) {
this.mContext = context;
this.mMultyDiscountList = multyDiscountList;
this.mListener = listener;
}
public void setSelectMixOrderMealList(List<OrderDetail> selectMixOrderMealList) {
this.mSelectMixOrderMealList = selectMixOrderMealList;
}
private String cashStr ;
@Override
public void action(Discount discount) {
if (mListener == null || mSelectMixOrderMealList == null || mSelectMixOrderMealList.size() == 0) {
if (listener == null || selectMixOrderMealList == null || selectMixOrderMealList.size() == 0) {
return;
}
double mixTotalAomout = getMixTotalAomout(mSelectMixOrderMealList);
double mixTotalAomout = getMixTotalAomout(selectMixOrderMealList);
if(discount.getType() == 0 && discount.getAmount() > mixTotalAomout){
//金額折扣總額不能超過 食品總金額
ArmsUtils.makeText(mContext, "折扣金額不可以超過食品總金額!");
ArmsUtils.makeText(context, "折扣金額不可以超過食品總金額!");
return;
}
if (discount.getMinBillAmount() > mixTotalAomout) {
//最小賬單金額
ArmsUtils.makeText(mContext, "小於最小賬單金額$" + discount.getMinBillAmount() + " 無法使用此折扣");
ArmsUtils.makeText(context, "小於最小賬單金額" +cashStr+ discount.getMinBillAmount() + " 無法使用此折扣");
return;
}
if (isOnlyOnce(discount)) {
//此折扣只一次
ArmsUtils.makeText(mContext, "此折扣只一次");
ArmsUtils.makeText(context, "此折扣只一次");
return;
}
boolean hasExclusive = hasExclusiveDiscount();
......@@ -88,7 +82,7 @@ public class MealDiscountAction implements Strategy<Discount> {
//
// break;
default:
mListener.preformAddDiscount(discount.clone());
listener.preformAddDiscount(discount.clone());
break;
}
}
......@@ -99,7 +93,7 @@ public class MealDiscountAction implements Strategy<Discount> {
}
private void exclusiveDiscount(Discount discount) {
if (mListener != null) {
if (listener != null) {
showExclusiveTipDialog(discount);
}
}
......@@ -111,7 +105,7 @@ public class MealDiscountAction implements Strategy<Discount> {
* @return
*/
private boolean hasExclusiveDiscount() {
for (OrderDetail orderMealItem : mSelectMixOrderMealList) {
for (OrderDetail orderMealItem : selectMixOrderMealList) {
if (orderMealItem.getDiscount() != null && orderMealItem.getDiscount().getExclusive() == 1) {
return true;
}
......@@ -127,7 +121,7 @@ public class MealDiscountAction implements Strategy<Discount> {
*/
private boolean isOnlyOnce(Discount discount) {
if (discount.getOnlyOnce() == 1) {
for (OrderDetail orderMealItem : mSelectMixOrderMealList) {
for (OrderDetail orderMealItem : selectMixOrderMealList) {
Discount item = orderMealItem.getDiscount();
if (item != null && discount.getId().longValue() == item.getId().longValue()) {
return true;
......@@ -144,15 +138,15 @@ public class MealDiscountAction implements Strategy<Discount> {
* @param discount
*/
private void showCustomAmountDialog(Discount discount, boolean exclusiveReplace) {
CommonTipDialog.showEditDialog(mContext, discount.getRemark(), "請輸入折扣金額", InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL, new CommonTipDialog.OnEditTextListener() {
CommonTipDialog.showEditDialog(context, discount.getRemark(), "請輸入折扣金額", InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL, new CommonTipDialog.OnEditTextListener() {
@Override
public void inputText(String text) {
discount.setAmount(Double.parseDouble(text));
if (mListener != null) {
if (listener != null) {
if (exclusiveReplace) {
mListener.exclusiveRemoveOthers();
listener.exclusiveRemoveOthers();
}
mListener.preformAddDiscount(discount.clone());
listener.preformAddDiscount(discount.clone());
}
}
});
......@@ -164,17 +158,17 @@ public class MealDiscountAction implements Strategy<Discount> {
* @param discount
*/
private void showKeyboardDialog(Discount discount, boolean exclusiveReplace) {
new KeyboardDialog(mContext)
new KeyboardDialog(context)
.build()
.setOnCallBackListener(new KeyboardDialog.OnCallBackListener() {
@Override
public void onSure(String number) {
discount.setAmount(Double.parseDouble(number));
if (mListener != null) {
if (listener != null) {
if (exclusiveReplace) {
mListener.exclusiveRemoveOthers();
listener.exclusiveRemoveOthers();
}
mListener.preformAddDiscount(discount.clone());
listener.preformAddDiscount(discount.clone());
}
}
})
......@@ -187,7 +181,7 @@ public class MealDiscountAction implements Strategy<Discount> {
* @param discount
*/
private void showExclusiveTipDialog(Discount discount) {
CommonTipDialog.showDoubtDialog2(mContext, "有獨佔折扣,是否替換", new CommonTipDialog.OnCallbackListener() {
CommonTipDialog.showDoubtDialog2(context, "有獨佔折扣,是否替換", new CommonTipDialog.OnCallbackListener() {
@Override
public void onSure() {
switch (discount.getType()) {
......@@ -201,8 +195,8 @@ public class MealDiscountAction implements Strategy<Discount> {
//
// break;
default:
mListener.exclusiveRemoveOthers();
mListener.preformAddDiscount(discount.clone());
listener.exclusiveRemoveOthers();
listener.preformAddDiscount(discount.clone());
break;
}
}
......@@ -216,7 +210,7 @@ public class MealDiscountAction implements Strategy<Discount> {
*/
private int getDiscountSize() {
int size = 0;
for (OrderDetail orderMealItem : mSelectMixOrderMealList) {
for (OrderDetail orderMealItem : selectMixOrderMealList) {
if (orderMealItem.getDiscount() != null) {
size++;
}
......
package com.gingersoft.gsa.cloud.table.mvp.contract;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.core.discount.MemberCoupon;
import com.gingersoft.gsa.cloud.order.bean.discount.MemberWalletCoupon;
import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel;
import com.kingja.loadsir.callback.Callback;
import com.kingja.loadsir.core.LoadService;
import com.kingja.loadsir.core.LoadSir;
import java.util.List;
import io.reactivex.Observable;
import io.reactivex.Single;
import retrofit2.http.Query;
/**
......@@ -33,7 +27,7 @@ public interface CouponContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
void returnMemberCouponList(List<MemberCoupon> memberCoupons);
void returnMemberCouponList(List<MemberWalletCoupon> memberCoupons);
void showLoadSirSuccess();
......@@ -45,7 +39,7 @@ public interface CouponContract {
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel {
Single<List<MemberCoupon>> getMemberWalletList(int brandId, long memberId, long limitType, long pageIndex, long pageSize);
Single<List<MemberWalletCoupon>> getMemberWalletList(int brandId, long memberId, long limitType, long pageIndex, long pageSize);
}
}
......@@ -24,7 +24,7 @@ import java.util.List;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public interface FineItemAllContract {
public interface FineChildAllContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
......
......@@ -23,7 +23,7 @@ import java.util.List;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public interface FineItemOneselfContract {
public interface FineChildOneselfContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
......
package com.gingersoft.gsa.cloud.table.mvp.contract;
import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/24/2021 18:33
* <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 FineContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel {
}
}
......@@ -20,6 +20,7 @@ import java.util.List;
import androidx.recyclerview.widget.RecyclerView;
import io.reactivex.Observable;
import io.reactivex.Single;
import okhttp3.RequestBody;
......@@ -133,7 +134,7 @@ public interface MealStandContract {
Observable<BaseResult> getRestaurantFoodReason(int brandId, int restaurantId, int type);
Observable<BaseResult> queryMember(int type, String parm, String shopName,int tableId,String tableNumber);
Single<BaseResult> queryMember(int type, String parm, String shopName, int tableId, String tableNumber);
Observable<BaseResult> memberUse(int tableId, String tableNumber, long memberId);
......
package com.gingersoft.gsa.cloud.table.mvp.contract;
import android.app.Activity;
import android.widget.BaseAdapter;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.core.member.MemberInfo;
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.FoodCombo;
import com.gingersoft.gsa.cloud.database.bean.FoodModifier;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.BaseOrderResponse;
import com.jess.arms.base.DefaultAdapter;
import java.util.List;
import io.reactivex.Observable;
import io.reactivex.Single;
import okhttp3.RequestBody;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 12/27/2019 19:17
* <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 MealStandContract2 {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends BaseOrderContract.View {
void showStandOperLayoutVisibility(boolean show);
void showBtnMealModifyRestoreVisibility(boolean show);
void setOrderFoodCount(String number);
Activity getActivity();
int getFromType();
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends BaseOrderContract.Model {
Observable<BaseResult> getCurrentSoldoutFood(RequestBody requestBody);
Observable<BaseResult> createOrder(RequestBody requestBody);
Observable<BaseResult> addFood(RequestBody requestBody);
Observable<BaseOrderResponse> loadOrder(long orderId);
Observable<BaseOrderResponse> deleteFood(RequestBody requestBody);
Observable<BaseOrderResponse> printOrder(RequestBody requestBody);
Observable<BaseResult> getRestaurantFoodReason(int brandId, int restaurantId, int type);
Single<BaseResult> queryMember(int type, String parm, String shopName, int tableId, String tableNumber);
Observable<BaseResult> memberUse(int tableId, String tableNumber, long memberId);
Observable<BaseResult> memberUseCancel(int tableId, String tableNumber, long memberId);
List<Food> queryDB_AllFoodList();
List<Food> queryDB_FoodGroupList(int foodSummary);
List<Food> queryDB_FoodList(long parentId, int foodSummary);
List<Modifier> queryDB_ModifierList(long fid, int mode);
List<ComboItem> queryDB_ComboList(long fid, int foodSummary);
List<FoodCombo> isComboFood(long fid);
List<FoodModifier> queryDB_FoodModifierList(long fid);
List<Discount> queryDB_DiscountList(byte discountScope, byte discountType);
}
}
package com.gingersoft.gsa.cloud.table.mvp.contract;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.core.member.MemberInfo;
import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel;
import io.reactivex.Observable;
import io.reactivex.Single;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/24/2021 16:24
* <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 RiceponMemberDialogContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
void returnMemberInfo(MemberInfo memberInfo);
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel {
Single<BaseResult> queryMember(int type, String parm, String shopName, int tableId, String tableNumber);
}
}
......@@ -7,6 +7,7 @@ import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.bean.FoodCombo;
import com.gingersoft.gsa.cloud.database.bean.FoodModifier;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity2;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ComboAdapter;
......@@ -41,6 +42,10 @@ public interface SetMealContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends BaseOrderContract.View {
void setCurrLayout(byte layout);
void setCustomFoodDialog(int customType, OrderDetail foodItem);
void setFoodGroupRecycleSpanCount(int size);
void setFoodRecycleSpanCount(int size);
......@@ -67,14 +72,6 @@ public interface SetMealContract {
void resetSelect(int position, Food datasBean);
void returnFoodGroupList(List<Food> foodGroupList);
void returnFoodList(List<Food> foodList);
void returnFoodComboList(List<ComboItem> comboList);
void returnModifierList(List<Modifier> modifierList);
void initFoodGroupAdapter(List<Food> foodGroupList);
void notifyFoodGroupAdapter();
......@@ -97,9 +94,9 @@ public interface SetMealContract {
Single<List<Food>> queryDB_FoodList(long parentId, int foodSummary);
Single<List<Modifier>> queryDB_ModifierList(long fid, int mode);
List<Modifier> queryDB_ModifierList(long fid, int mode);
Single<List<ComboItem>> queryDB_ComboList(long fid, int foodSummary);
List<ComboItem> queryDB_ComboList(long fid, int foodSummary);
Single<List<FoodCombo>> isComboFood(long fid);
......
......@@ -3,9 +3,8 @@ package com.gingersoft.gsa.cloud.table.mvp.model;
import android.app.Application;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.core.discount.MemberCoupon;
import com.gingersoft.gsa.cloud.order.bean.discount.MemberWalletCoupon;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.table.mvp.model.service.MealService;
import com.gingersoft.gsa.cloud.table.mvp.model.service.MemberService;
import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager;
......@@ -56,14 +55,14 @@ public class CouponModel extends BaseModel implements CouponContract.Model {
}
@Override
public Single<List<MemberCoupon>> getMemberWalletList(int brandId, long memberId, long limitType, long pageIndex, long pageSize) {
public Single<List<MemberWalletCoupon>> getMemberWalletList(int brandId, long memberId, long limitType, long pageIndex, long pageSize) {
return mRepositoryManager.obtainRetrofitService(MemberService.class)
.getMemberWalletList(brandId, memberId, limitType, pageIndex, pageSize)
.map(new Function<BaseResult, List<MemberCoupon>>() {
.map(new Function<BaseResult, List<MemberWalletCoupon>>() {
@Override
public List<MemberCoupon> apply(BaseResult result) throws Exception {
public List<MemberWalletCoupon> apply(BaseResult result) throws Exception {
if (result.isSuccess()) {
return GsonUtils.jsonToList(result.getData(), MemberCoupon.class);
return GsonUtils.jsonToList(result.getData(), MemberWalletCoupon.class);
} else {
return new ArrayList<>();
}
......
......@@ -4,7 +4,7 @@ import android.app.Application;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.database.utils.ModifierDaoUtils;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineItemAllContract;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineChildAllContract;
import com.gingersoft.gsa.cloud.table.mvp.model.utils.MealStyleUtils;
import com.google.gson.Gson;
import com.jess.arms.di.scope.FragmentScope;
......@@ -29,14 +29,14 @@ import javax.inject.Inject;
* ================================================
*/
@FragmentScope
public class FineItemAllModel extends BaseModel implements FineItemAllContract.Model {
public class FineChildAllModel extends BaseModel implements FineChildAllContract.Model {
@Inject
Gson mGson;
@Inject
Application mApplication;
@Inject
public FineItemAllModel(IRepositoryManager repositoryManager) {
public FineChildAllModel(IRepositoryManager repositoryManager) {
super(repositoryManager);
}
......
......@@ -6,7 +6,7 @@ import com.gingersoft.gsa.cloud.database.bean.ComboItem;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.database.utils.ComboItemDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.ModifierDaoUtils;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineItemOneselfContract;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineChildOneselfContract;
import com.gingersoft.gsa.cloud.table.mvp.model.utils.MealStyleUtils;
import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager;
......@@ -32,14 +32,14 @@ import javax.inject.Inject;
* ================================================
*/
@FragmentScope
public class FineItemOneselfModel extends BaseModel implements FineItemOneselfContract.Model {
public class FineChildOneselfModel extends BaseModel implements FineChildOneselfContract.Model {
@Inject
Gson mGson;
@Inject
Application mApplication;
@Inject
public FineItemOneselfModel(IRepositoryManager repositoryManager) {
public FineChildOneselfModel(IRepositoryManager repositoryManager) {
super(repositoryManager);
}
......
package com.gingersoft.gsa.cloud.table.mvp.model;
import android.app.Application;
import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.mvp.BaseModel;
import com.jess.arms.di.scope.FragmentScope;
import javax.inject.Inject;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineContract;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/24/2021 18:33
* <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
public class FineModel extends BaseModel implements FineContract.Model {
@Inject
Gson mGson;
@Inject
Application mApplication;
@Inject
public FineModel(IRepositoryManager repositoryManager) {
super(repositoryManager);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mGson = null;
this.mApplication = null;
}
}
\ No newline at end of file
......@@ -35,6 +35,7 @@ import javax.inject.Inject;
import io.reactivex.Observable;
import io.reactivex.Observer;
import io.reactivex.Single;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Action;
import io.reactivex.functions.Consumer;
......@@ -188,7 +189,7 @@ public class MealStandModel extends BaseModel implements MealStandContract.Model
}
@Override
public Observable<BaseResult> queryMember(int type, String parm, String shopName, int tableId, String tableNumber) {
public Single<BaseResult> queryMember(int type, String parm, String shopName, int tableId, String tableNumber) {
return mRepositoryManager.obtainRetrofitService(MemberService.class)
.queryMember(type, parm, shopName, tableId, tableNumber);
}
......
package com.gingersoft.gsa.cloud.table.mvp.model;
import android.app.Application;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
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.FoodCombo;
import com.gingersoft.gsa.cloud.database.bean.FoodModifier;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.database.utils.ComboItemDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.DiscountDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.FoodComboDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.FoodDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.ModifierDaoUtils;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
import com.gingersoft.gsa.cloud.table.mvp.contract.MealStandContract;
import com.gingersoft.gsa.cloud.table.mvp.contract.MealStandContract2;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.BaseOrderResponse;
import com.gingersoft.gsa.cloud.table.mvp.model.service.MealService;
import com.gingersoft.gsa.cloud.table.mvp.model.service.MemberService;
import com.gingersoft.gsa.cloud.table.mvp.model.service.OrderPayService;
import com.gingersoft.gsa.cloud.table.mvp.model.utils.MealConditionFilterUtils;
import com.gingersoft.gsa.cloud.table.mvp.model.utils.MealStyleUtils;
import com.google.gson.Gson;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.mvp.BaseModel;
import java.util.List;
import javax.inject.Inject;
import io.reactivex.Observable;
import io.reactivex.Single;
import io.reactivex.functions.Function;
import okhttp3.RequestBody;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 12/27/2019 19:17
* <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>
* ================================================
*/
@ActivityScope
public class MealStandModel2 extends BaseModel implements MealStandContract2.Model {
@Inject
Gson mGson;
@Inject
Application mApplication;
@Inject
public MealStandModel2(IRepositoryManager repositoryManager) {
super(repositoryManager);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mGson = null;
this.mApplication = null;
}
@Override
public List<Food> queryDB_AllFoodList() {
FoodDaoUtils foodDaoUtils = new FoodDaoUtils(mApplication);
List<Food> foods = foodDaoUtils.queryAllFoodByQueryBuilder();
return foods;
}
@Override
public List<Food> queryDB_FoodGroupList(int foodSummary) {
FoodDaoUtils foodDaoUtils = new FoodDaoUtils(mApplication);
List<Food> foods = foodDaoUtils.queryFoodGroupByQueryBuilder(foodSummary);
return MealStyleUtils.assemblyFoodsColor(MealConditionFilterUtils.foodConditionFilter(foods, foodSummary));
}
@Override
public List<Food> queryDB_FoodList(long parentId, int foodSummary) {
FoodDaoUtils foodDaoUtils = new FoodDaoUtils(mApplication);
List<Food> foods = foodDaoUtils.queryFoodByQueryBuilder(parentId, foodSummary);
return MealStyleUtils.assemblyFoodsColor(MealConditionFilterUtils.foodConditionFilter(foods, foodSummary));
}
@Override
public List<Modifier> queryDB_ModifierList(long fid, int mode) {
ModifierDaoUtils daoUtils = new ModifierDaoUtils(mApplication);
return MealStyleUtils.assemblyModifiersColor(daoUtils.queryModifiersByFid(fid, mode));
}
@Override
public List<ComboItem> queryDB_ComboList(long fid, int foodSummary) {
ComboItemDaoUtils comboItemDao = new ComboItemDaoUtils(mApplication);
List<ComboItem> foodCombos = comboItemDao.queryComboItemsByFidQueryBuilder(fid, foodSummary);
return MealConditionFilterUtils.comboConditionFilter(foodCombos, foodSummary);
}
@Override
public List<FoodCombo> isComboFood(long fid) {
FoodComboDaoUtils foodComboDaoUtils = new FoodComboDaoUtils(mApplication);
return foodComboDaoUtils.queryCombosFoodsByQueryBuilder(fid);
}
@Override
public List<FoodModifier> queryDB_FoodModifierList(long fid) {
return null;
}
@Override
public List<Discount> queryDB_DiscountList(byte discountScope, byte discountType) {
DiscountDaoUtils discountDaoUtils = new DiscountDaoUtils(mApplication);
List<Discount> discountList = discountDaoUtils.queryDiscountByQueryBuilder();
return MealConditionFilterUtils.discountConditionFilter(discountList, discountScope, discountType);
}
@Override
public Observable<BaseResult> getCurrentSoldoutFood(RequestBody requestBody) {
return mRepositoryManager.obtainRetrofitService(MealService.class)
.getCurrentSoldoutFood(requestBody);
}
@Override
public Observable<BaseOrderResponse> loadOrder(long orderId) {
return mRepositoryManager.obtainRetrofitService(MealService.class)
.loadOrder(orderId);
}
@Override
public Observable<BaseResult> createOrder(RequestBody requestBody) {
return mRepositoryManager.obtainRetrofitService(MealService.class)
.createOrder(requestBody);
}
@Override
public Observable<BaseResult> addFood(RequestBody requestBody) {
return mRepositoryManager.obtainRetrofitService(MealService.class)
.addFood(requestBody);
}
@Override
public Observable<BaseOrderResponse> deleteFood(RequestBody requestBody) {
Observable ob = mRepositoryManager.obtainRetrofitService(MealService.class)
.deleteFood(requestBody)
.flatMap(new Function<BaseResult, Observable<BaseOrderResponse>>() {
@Override
public Observable<BaseOrderResponse> apply(BaseResult info) throws Exception {
if (info != null && info.isSuccess()) {
return loadOrder(DoshokuOrder.getInstance().getOrderId());
}
BaseOrderResponse baseOrderRespose = new BaseOrderResponse();
baseOrderRespose.setSuccess(info.isSuccess());
baseOrderRespose.setErrMsg(info.getErrMsg());
return Observable.just(baseOrderRespose);
}
});
return ob;
}
@Override
public Observable<BaseOrderResponse> calculationPrice(long orderId) {
return mRepositoryManager.obtainRetrofitService(MealService.class)
.calculationPrice(orderId);
}
@Override
public Observable<BaseOrderResponse> printOrder(RequestBody requestBody) {
return mRepositoryManager.obtainRetrofitService(MealService.class)
.printOrder(requestBody);
}
@Override
public Observable<BaseResult> getRestaurantFoodReason(int brandId, int restaurantId, int type) {
return mRepositoryManager.obtainRetrofitService(MealService.class)
.getRestaurantFoodReason(brandId, restaurantId, type);
}
@Override
public Single<BaseResult> queryMember(int type, String parm, String shopName, int tableId, String tableNumber) {
return mRepositoryManager.obtainRetrofitService(MemberService.class)
.queryMember(type, parm, shopName, tableId, tableNumber);
}
@Override
public Observable<BaseResult> memberUse(int tableId, String tableNumber, long memberId) {
return mRepositoryManager.obtainRetrofitService(MemberService.class)
.memberUse(tableId, tableNumber, memberId);
}
@Override
public Observable<BaseResult> memberUseCancel(int tableId, String tableNumber, long memberId) {
return mRepositoryManager.obtainRetrofitService(MemberService.class)
.memberUseCancel(tableId, tableNumber, memberId);
}
@Override
public Observable<BaseResult> toOrderPay(RequestBody requestBody) {
return mRepositoryManager.obtainRetrofitService(OrderPayService.class)
.toOrderPay(requestBody);
}
@Override
public Observable<BaseResult> updateOrder(RequestBody formBody) {
return mRepositoryManager.obtainRetrofitService(OrderPayService.class)
.updateOrder(formBody);
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.table.mvp.model;
import android.app.Application;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.table.mvp.model.service.MemberService;
import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.mvp.BaseModel;
import com.jess.arms.di.scope.FragmentScope;
import javax.inject.Inject;
import com.gingersoft.gsa.cloud.table.mvp.contract.RiceponMemberDialogContract;
import io.reactivex.Observable;
import io.reactivex.Single;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/24/2021 16:24
* <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
public class RiceponMemberDialogModel extends BaseModel implements RiceponMemberDialogContract.Model {
@Inject
Gson mGson;
@Inject
Application mApplication;
@Inject
public RiceponMemberDialogModel(IRepositoryManager repositoryManager) {
super(repositoryManager);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mGson = null;
this.mApplication = null;
}
@Override
public Single<BaseResult> queryMember(int type, String parm, String shopName, int tableId, String tableNumber) {
return mRepositoryManager.obtainRetrofitService(MemberService.class)
.queryMember(type, parm, shopName, tableId, tableNumber);
}
}
\ No newline at end of file
......@@ -3,12 +3,19 @@ package com.gingersoft.gsa.cloud.table.mvp.model;
import android.app.Application;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.rxjava.MyRxSchedulerUtils;
import com.gingersoft.gsa.cloud.database.bean.ComboItem;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.bean.FoodCombo;
import com.gingersoft.gsa.cloud.database.bean.FoodModifier;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.database.utils.ComboItemDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.FoodComboDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.FoodDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.ModifierDaoUtils;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.BaseOrderResponse;
import com.gingersoft.gsa.cloud.table.mvp.model.utils.MealConditionFilterUtils;
import com.gingersoft.gsa.cloud.table.mvp.model.utils.MealStyleUtils;
import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.mvp.BaseModel;
......@@ -59,27 +66,41 @@ public class SetMealModel extends BaseModel implements SetMealContract.Model {
@Override
public Single<List<Food>> queryDB_FoodGroupList(int foodSummary) {
return null;
FoodDaoUtils foodDaoUtils = new FoodDaoUtils(mApplication);
List<Food> foods = foodDaoUtils.queryFoodGroupByQueryBuilder(foodSummary);
return Single.just(
MealStyleUtils.assemblyFoodsColor(
MealConditionFilterUtils.foodConditionFilter(foods, foodSummary)))
.compose(MyRxSchedulerUtils._io_main_f());
}
@Override
public Single<List<Food>> queryDB_FoodList(long parentId, int foodSummary) {
return null;
FoodDaoUtils foodDaoUtils = new FoodDaoUtils(mApplication);
List<Food> foods = foodDaoUtils.queryFoodByQueryBuilder(parentId, foodSummary);
return Single.just(MealStyleUtils.assemblyFoodsColor(MealConditionFilterUtils.foodConditionFilter(foods, foodSummary)))
.compose(MyRxSchedulerUtils._io_main_f());
}
@Override
public Single<List<Modifier>> queryDB_ModifierList(long fid, int mode) {
return null;
public List<Modifier> queryDB_ModifierList(long fid, int mode) {
ModifierDaoUtils daoUtils = new ModifierDaoUtils(mApplication);
List<Modifier> modifierList = daoUtils.queryModifiersByFid(fid, mode);
return MealStyleUtils.assemblyModifiersColor(modifierList);
}
@Override
public Single<List<ComboItem>> queryDB_ComboList(long fid, int foodSummary) {
return null;
public List<ComboItem> queryDB_ComboList(long fid, int foodSummary) {
ComboItemDaoUtils comboItemDao = new ComboItemDaoUtils(mApplication);
List<ComboItem> foodCombos = comboItemDao.queryComboItemsByFidQueryBuilder(fid, foodSummary);
return MealConditionFilterUtils.comboConditionFilter(foodCombos, foodSummary);
}
@Override
public Single<List<FoodCombo>> isComboFood(long fid) {
return null;
FoodComboDaoUtils foodComboDaoUtils = new FoodComboDaoUtils(mApplication);
return Single.just(foodComboDaoUtils.queryCombosFoodsByQueryBuilder(fid))
.compose(MyRxSchedulerUtils._io_main_f());
}
@Override
......
......@@ -17,7 +17,7 @@ public interface MemberService {
@Headers({"Domain-Name: new_base_url"})
@GET("member/checkMemberInfo" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> queryMember(@Query("type") int type, @Query("parm") String parm, @Query("gsposShopId") String shopName,@Query("tableId") int tableId, @Query("tableNumber") String tableNumber);
Single<BaseResult> queryMember(@Query("type") int type, @Query("parm") String parm, @Query("gsposShopId") String shopName,@Query("tableId") int tableId, @Query("tableNumber") String tableNumber);
@GET("restaurantTable/memberUse" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> memberUse(@Query("tableId") int tableId, @Query("tableNumber") String tableNumber, @Query("memberId") long memberId);
......
......@@ -29,7 +29,7 @@ import com.gingersoft.gsa.cloud.order.billItem.ServiceChargeItem;
import com.gingersoft.gsa.cloud.order.cart.ShoppingCart;
import com.gingersoft.gsa.cloud.order.cart.ShoppingCartNumberChange;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.order.discount.CouponDiscount;
import com.gingersoft.gsa.cloud.order.discount.MemberCouponDiscount;
import com.gingersoft.gsa.cloud.order.discount.NomalDiscount;
import com.gingersoft.gsa.cloud.order.order.BaseOrder;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
......@@ -40,11 +40,9 @@ 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.mealstand.MealStandPresenter;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity2;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderContentActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BillItemAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.SelectMealAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand.SetMealFragment;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.integration.AppManager;
......@@ -1332,7 +1330,7 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
* @return
*/
protected Long getCouponDiscountId() {
CouponDiscount couponDiscount = (CouponDiscount) mShoppingCart.getDiscountByType(BillItem.COUPON_DISCOUNT_TYPE);
MemberCouponDiscount couponDiscount = (MemberCouponDiscount) mShoppingCart.getDiscountByType(BillItem.COUPON_DISCOUNT_TYPE);
if (couponDiscount != null) {
return couponDiscount.getCouponDiscountId();
}
......
......@@ -29,7 +29,7 @@ import com.gingersoft.gsa.cloud.order.billItem.ServiceChargeItem;
import com.gingersoft.gsa.cloud.order.cart.ShoppingCart;
import com.gingersoft.gsa.cloud.order.cart.ShoppingCartNumberChange;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.order.discount.CouponDiscount;
import com.gingersoft.gsa.cloud.order.discount.MemberCouponDiscount;
import com.gingersoft.gsa.cloud.order.discount.NomalDiscount;
import com.gingersoft.gsa.cloud.order.order.BaseOrder;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
......@@ -38,13 +38,11 @@ import com.gingersoft.gsa.cloud.order.order.TakeawayOrder;
import com.gingersoft.gsa.cloud.table.mvp.contract.BaseOrderContract;
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.mealstand.MealStandPresenter;
import com.gingersoft.gsa.cloud.table.mvp.presenter.mealstand.MealStandPresenter2;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity2;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderContentActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BillItemAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.SelectMealAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.SelectMealAdapter2;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand.SetMealFragment;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog;
......@@ -1334,7 +1332,7 @@ public abstract class BaseOrderPresenter2<M extends BaseOrderContract.Model, V e
* @return
*/
protected Long getCouponDiscountId() {
CouponDiscount couponDiscount = (CouponDiscount) mShoppingCart.getDiscountByType(BillItem.COUPON_DISCOUNT_TYPE);
MemberCouponDiscount couponDiscount = (MemberCouponDiscount) mShoppingCart.getDiscountByType(BillItem.COUPON_DISCOUNT_TYPE);
if (couponDiscount != null) {
return couponDiscount.getCouponDiscountId();
}
......
......@@ -5,9 +5,6 @@ import android.graphics.Color;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.Window;
import androidx.fragment.app.FragmentManager;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
......@@ -15,7 +12,7 @@ import com.gingersoft.gsa.cloud.common.constans.ExpandConstant;
import com.gingersoft.gsa.cloud.common.constans.FoodSummaryConstans;
import com.gingersoft.gsa.cloud.common.constans.GoldConstants;
import com.gingersoft.gsa.cloud.common.constans.PrintConstans;
import com.gingersoft.gsa.cloud.common.core.discount.MemberCoupon;
import com.gingersoft.gsa.cloud.order.bean.discount.MemberWalletCoupon;
import com.gingersoft.gsa.cloud.common.core.member.MemberInfo;
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
import com.gingersoft.gsa.cloud.common.core.restaurant.utils.RestaurantExpandInfoUtils;
......@@ -33,8 +30,7 @@ import com.gingersoft.gsa.cloud.order.bean.response.OrderResponse;
import com.gingersoft.gsa.cloud.order.billItem.BillItem;
import com.gingersoft.gsa.cloud.order.billItem.DiscountItem;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.order.discount.CouponDiscount;
import com.gingersoft.gsa.cloud.order.discount.MemberDiscount;
import com.gingersoft.gsa.cloud.order.discount.MemberCouponDiscount;
import com.gingersoft.gsa.cloud.order.discount.NomalDiscount;
import com.gingersoft.gsa.cloud.order.order.BaseOrder;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
......@@ -42,6 +38,7 @@ import com.gingersoft.gsa.cloud.print.PrinterUtils;
import com.gingersoft.gsa.cloud.print.bean.PrintContent;
import com.gingersoft.gsa.cloud.print.bean.adapter.PrintContentAdapter;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.action.discount.BillCouponAction;
import com.gingersoft.gsa.cloud.table.mvp.contract.OrderContentContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.AddOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.CreateOrderRequest;
......@@ -66,7 +63,6 @@ import com.jess.arms.integration.AppManager;
import com.jess.arms.utils.ArmsUtils;
import com.jess.arms.utils.RxLifecycleUtils;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.xuexiang.rxutil2.RxBindingUtils;
import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import java.util.ArrayList;
......@@ -81,10 +77,8 @@ import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
import leakcanary.internal.ForegroundService;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
import me.yokeyword.fragmentation.anim.FragmentAnimator;
import okhttp3.FormBody;
import okhttp3.MediaType;
import okhttp3.RequestBody;
......@@ -124,9 +118,13 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
private SplitTableDialog mSplitTableDialog;
private DiscountDialog.Builder mDiscountDialog;
/**
* 整單折扣邏輯
* 整單折扣
*/
private BillDiscountAction mNomalDiscountAction;
/**
* 整單優惠券
*/
private BillCouponAction mBillCouponAction;
private Disposable mGetTablesDataDisposable;
private Disposable mTablesPollingDisposable;
......@@ -139,7 +137,10 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
//转移食品可多选
mSelectMealAdapter.setSelectedMode(SelectMealAdapter.MULTIPLE_SELECTED);
}
mNomalDiscountAction = new BillDiscountAction(IActivity, new BillDiscountAction.OnCallBackListener() {
mNomalDiscountAction = BillDiscountAction.builder()
.cashStr(cashStr)
.context(IActivity)
.listener(new BillDiscountAction.OnCallBackListener() {
@Override
public void exclusiveRemoveOthers(List<NomalDiscount> nomalDiscountList) {
......@@ -152,7 +153,21 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
DoshokuOrder.getInstance().setBillItemStatus(DoshokuOrder.DISCOUNT_ITEM_TAG);
updateBillInfo();
}
});
})
.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();
}
})
.build();
}
@Override
......@@ -281,7 +296,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
NomalDiscount nomalDiscount = (NomalDiscount) ((DiscountItem) item).getDiscount();
mDoshokuOrder.addDeleteDiscountId(nomalDiscount.getDiscount().getDiscountRecordId());
} else if (item.getType() == BillItem.COUPON_DISCOUNT_TYPE) {
CouponDiscount couponDiscount = (CouponDiscount) ((DiscountItem) item).getDiscount();
MemberCouponDiscount couponDiscount = (MemberCouponDiscount) ((DiscountItem) item).getDiscount();
mDoshokuOrder.addDeleteDiscountId(couponDiscount.getCouponDiscountId());
}
}
......@@ -820,25 +835,16 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
@Override
public void onBillDiscountClick(Discount item, int position) {
if (item.getMinBillAmount() > mShoppingCart.getWholeAmount()) {
//小於最小賬單金額
mRootView.showMessage("小於最小賬單金額" + cashStr + item.getMinBillAmount() + " 無法使用此折扣");
return;
}
mNomalDiscountAction.setWholeAmount(mShoppingCart.getWholeAmount());
mNomalDiscountAction.setNomalDiscountList(mShoppingCart.getNomalDiscoutByMultyDiscountList());
mNomalDiscountAction.action(item);
dialogFragment.dismiss();
}
@Override
public void onCouponClick(MemberCoupon item, int position) {
if (item.getBillMinAmount() > mShoppingCart.getWholeAmount()) {
//小於最小賬單金額
mRootView.showMessage("小於最小賬單金額" + cashStr + item.getBillMinAmount() + " 無法使用此優惠券");
return;
}
mNomalDiscountAction.setNomalDiscountList(mShoppingCart.getNomalDiscoutByMultyDiscountList());
mNomalDiscountAction.action(item.castDiscount());
public void onCouponClick(MemberWalletCoupon item, int position) {
mBillCouponAction.setNomalDiscountList(mShoppingCart.getNomalDiscoutByMultyDiscountList());
mBillCouponAction.action(item);
dialogFragment.dismiss();
}
});
......
......@@ -2,14 +2,12 @@ package com.gingersoft.gsa.cloud.table.mvp.presenter.discount;
import android.app.Application;
import com.gingersoft.gsa.cloud.common.core.discount.MemberCoupon;
import com.gingersoft.gsa.cloud.order.bean.discount.MemberWalletCoupon;
import com.gingersoft.gsa.cloud.common.core.member.MemberInfo;
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
import com.gingersoft.gsa.cloud.common.loadsir.EmptyCallback;
import com.gingersoft.gsa.cloud.common.utils.JsonUtils;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
import com.gingersoft.gsa.cloud.common.rxjava.ErrorHandleSingleSubscriber;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.OrderManagerResponse;
import com.jess.arms.integration.AppManager;
import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.mvp.BasePresenter;
......@@ -53,13 +51,8 @@ public class CouponPresenter extends BasePresenter<CouponContract.Model, CouponC
//是否可以繼續上拉刷新
private boolean noMoreData = false;
/**
* 0=沒有限制
* 1=食品專有
* 2=帳單專有
*/
private int limitType = 0;
private int pageIndex = 1;
private int pageIndex = 0;
private int pageSize = 20;
@Inject
......@@ -76,13 +69,20 @@ public class CouponPresenter extends BasePresenter<CouponContract.Model, CouponC
this.mApplication = null;
}
public void getMemberWalletList(RefreshLayout refreshLayout, boolean isLoadMore) {
public void getMemberWalletList(RefreshLayout refreshLayout, boolean isLoadMore, int limitType) {
int brandId = RestaurantInfoManager.newInstance().getBrandId();
MemberInfo memberInfo = DoshokuOrder.getInstance().getMemberInfo();
long memberId = 0;
if (memberInfo != null) {
memberId = memberInfo.getId();
}
if (!isLoadMore) {
pageIndex = 0;
}
if (pageIndex != 0) {
//根據數據庫下標分頁
pageIndex = pageIndex * pageSize;
}
mModel.getMemberWalletList(brandId, memberId, limitType, pageIndex, pageSize)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> {
......@@ -95,15 +95,13 @@ public class CouponPresenter extends BasePresenter<CouponContract.Model, CouponC
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSingleSubscriber<List<MemberCoupon>>(mErrorHandler, mRootView.getLoadService()) {
.subscribe(new ErrorHandleSingleSubscriber<List<MemberWalletCoupon>>(mErrorHandler, mRootView.getLoadService()) {
@Override
public void onSuccess(List<MemberCoupon> result) {
if (pageIndex != 0) {
//根據數據庫下標分頁
pageIndex = pageIndex * pageSize;
}
public void onSuccess(List<MemberWalletCoupon> result) {
if (result.size() > 0) {
//每次更新完數據,頁碼+1
pageIndex++;
if (!noMoreData) {
mRootView.returnMemberCouponList(result);
mRootView.showLoadSirSuccess();
......@@ -124,10 +122,6 @@ public class CouponPresenter extends BasePresenter<CouponContract.Model, CouponC
@Override
public void onError(Throwable t) {
if (pageIndex != 0) {
//根據數據庫下標分頁
pageIndex = pageIndex * pageSize;
}
resetRefreshLayout(false);
}
......
package com.gingersoft.gsa.cloud.table.mvp.presenter;
package com.gingersoft.gsa.cloud.table.mvp.presenter.mealstand;
import android.app.Activity;
import android.app.Application;
......@@ -10,11 +10,10 @@ import com.gingersoft.gsa.cloud.common.constans.MealConstant;
import com.gingersoft.gsa.cloud.common.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.common.utils.VibratorUtils;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.database.utils.ModifierDaoUtils;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineItemAllContract;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineChildAllContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.FineItemOneAdapter;
......@@ -51,7 +50,7 @@ import static com.gingersoft.gsa.cloud.table.mvp.ui.activity.SoldoutCtrlActivity
* ================================================
*/
@FragmentScope
public class FineItemAllPresenter extends BasePresenter<FineItemAllContract.Model, FineItemAllContract.View> {
public class FineChildAllPresenter extends BasePresenter<FineChildAllContract.Model, FineChildAllContract.View> {
@Inject
RxErrorHandler mErrorHandler;
@Inject
......@@ -78,7 +77,7 @@ public class FineItemAllPresenter extends BasePresenter<FineItemAllContract.Mode
private Activity IActivity;
@Inject
public FineItemAllPresenter(FineItemAllContract.Model model, FineItemAllContract.View rootView) {
public FineChildAllPresenter(FineChildAllContract.Model model, FineChildAllContract.View rootView) {
super(model, rootView);
this.IActivity = (Activity) rootView.getCurrentActivity();
}
......@@ -482,10 +481,6 @@ public class FineItemAllPresenter extends BasePresenter<FineItemAllContract.Mode
mFineItemOneList.clear();
mFineItemOneList = null;
}
// if (mCurrentSoldoutFoodList_Full != null) {
// mCurrentSoldoutFoodList_Full.clear();
// mCurrentSoldoutFoodList_Full = null;
// }
}
}
package com.gingersoft.gsa.cloud.table.mvp.presenter;
package com.gingersoft.gsa.cloud.table.mvp.presenter.mealstand;
import android.app.Application;
import android.content.Context;
......@@ -8,8 +8,9 @@ import com.gingersoft.gsa.cloud.common.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.database.bean.ComboItem;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.database.utils.ModifierDaoUtils;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineItemOneselfContract;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineChildOneselfContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood;
import com.gingersoft.gsa.cloud.table.mvp.presenter.SoldoutCtrlPresenter;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.SoldoutCtrlActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ComboAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ModifierAdapter;
......@@ -43,7 +44,7 @@ import static com.gingersoft.gsa.cloud.table.mvp.ui.activity.SoldoutCtrlActivity
* ================================================
*/
@FragmentScope
public class FineItemOneselfPresenter extends BasePresenter<FineItemOneselfContract.Model, FineItemOneselfContract.View> {
public class FineChildOneselfPresenter extends BasePresenter<FineChildOneselfContract.Model, FineChildOneselfContract.View> {
@Inject
RxErrorHandler mErrorHandler;
@Inject
......@@ -65,7 +66,7 @@ public class FineItemOneselfPresenter extends BasePresenter<FineItemOneselfContr
private SoldoutCtrlActivity IActivity;
@Inject
public FineItemOneselfPresenter(FineItemOneselfContract.Model model, FineItemOneselfContract.View rootView) {
public FineChildOneselfPresenter(FineChildOneselfContract.Model model, FineChildOneselfContract.View rootView) {
super(model, rootView);
this.IActivity = (SoldoutCtrlActivity) rootView.getCurrentActivity();
}
......
package com.gingersoft.gsa.cloud.table.mvp.presenter.mealstand;
import android.app.Application;
import com.jess.arms.integration.AppManager;
import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.http.imageloader.ImageLoader;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import javax.inject.Inject;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineContract;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/24/2021 18:33
* <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
public class FinePresenter extends BasePresenter<FineContract.Model, FineContract.View> {
@Inject
RxErrorHandler mErrorHandler;
@Inject
Application mApplication;
@Inject
ImageLoader mImageLoader;
@Inject
AppManager mAppManager;
@Inject
public FinePresenter(FineContract.Model model, FineContract.View rootView) {
super(model, rootView);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mErrorHandler = null;
this.mAppManager = null;
this.mImageLoader = null;
this.mApplication = null;
}
}
......@@ -4,12 +4,15 @@ import android.app.Application;
import android.text.TextUtils;
import android.util.SparseArray;
import android.view.View;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.constans.ExpandConstant;
import com.gingersoft.gsa.cloud.common.constans.FoodSummaryConstans;
import com.gingersoft.gsa.cloud.common.constans.MealConstant;
import com.gingersoft.gsa.cloud.common.constans.PrintConstans;
import com.gingersoft.gsa.cloud.common.rxjava.ErrorHandleSingleSubscriber;
import com.gingersoft.gsa.cloud.order.bean.discount.MemberWalletCoupon;
import com.gingersoft.gsa.cloud.common.core.member.MemberInfo;
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
import com.gingersoft.gsa.cloud.common.core.restaurant.utils.RestaurantExpandInfoUtils;
......@@ -19,7 +22,6 @@ 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.bean.ColorBean;
import com.gingersoft.gsa.cloud.database.bean.ComboItem;
import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.gingersoft.gsa.cloud.database.bean.Food;
......@@ -34,6 +36,7 @@ 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.R;
import com.gingersoft.gsa.cloud.table.mvp.action.discount.MealCouponAction;
import com.gingersoft.gsa.cloud.table.mvp.contract.MealStandContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.FoodReason;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood;
......@@ -48,6 +51,7 @@ 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.ui.widget.dialog.BaseRetryDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog;
......@@ -78,6 +82,7 @@ import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
import me.yokeyword.fragmentation.ISupportFragment;
import okhttp3.FormBody;
import okhttp3.MediaType;
import okhttp3.RequestBody;
......@@ -132,21 +137,31 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
DiscountAdapter mDiscountAdapter;
private MealStandActivity IActivity;
private DiscountFragment discountFragment;
private CancelFoodDialog mCancelFoodDialog;
/**
* 食品折扣
*/
private MealDiscountAction mMealDiscountAction;
/**
* 食品優惠券
*/
private MealCouponAction mMealCouponAction;
private OrderDetail mCurrentOrderDetailBean;
private boolean RvMealClicked;
@Inject
public MealStandPresenter(MealStandContract.Model model, MealStandContract.View rootView) {
super(model, rootView);
this.IActivity = (MealStandActivity) rootView;
mMealDiscountAction = new MealDiscountAction(IActivity, mShoppingCart.getMultyDiscountList(), new MealDiscountAction.OnCallBackListener() {
mMealDiscountAction = MealDiscountAction.builder()
.context(IActivity)
.cashStr(cashStr)
.listener(new MealDiscountAction.OnCallBackListener() {
@Override
public void exclusiveRemoveOthers() {
......@@ -167,9 +182,20 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
public void preformAddDiscount(Discount discount) {
addDiscountItem(discount);
}
});
}
})
.build();
mMealCouponAction = MealCouponAction.builder()
.context(IActivity)
.cashStr(cashStr)
.listener(new MealCouponAction.OnCallBackListener() {
@Override
public void preformAddCoupon(MemberWalletCoupon discount) {
addDiscountItem(discount.castDiscount());
}
})
.build();
}
/**
* 獲取當前選中的套餐食品組
......@@ -401,7 +427,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
Discount discountBean = (Discount) data;
if (!discountConditionFilter(discountBean)) {
if (!discountConditionFilter()) {
return;
}
LoganManager.w_tableMode(TAG, LoganManager.EVENT_ADD + "折扣【" + discountBean.getRemark() + "】");
......@@ -414,6 +440,45 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
});
}
public void loadDiscountFragment() {
discountFragment = IActivity.findFragment(DiscountFragment.class);
if (discountFragment == null) {
discountFragment = DiscountFragment.newInstance();
discountFragment.setOnDiscountItemClickListener(new DiscountFragment.OnDiscountItemClickListener() {
@Override
public void onBillDiscountClick(Discount discountBean, int position) {
mRootView.recordOperat(true);
if (!discountConditionFilter()) {
return;
}
LoganManager.w_tableMode(TAG, LoganManager.EVENT_ADD + "折扣【" + discountBean.getRemark() + "】");
// if (cutOutDiscount() == -100) {
// return;
// }
mMealDiscountAction.setSelectMixOrderMealList(getSelectMixOrderMealList());
mMealDiscountAction.action(discountBean);
}
@Override
public void onCouponClick(MemberWalletCoupon coupon, int position) {
if (!discountConditionFilter()) {
return;
}
mMealCouponAction.setSelectMixOrderMealList(getSelectMixOrderMealList());
mMealCouponAction.action(coupon);
}
});
IActivity.loadRootFragment(R.id.fl_discount, discountFragment);
} else {
ISupportFragment topFragment = IActivity.getTopFragment();
if (topFragment != null && topFragment instanceof DiscountFragment) {
} else {
IActivity.start(discountFragment);
}
}
}
private void addFoodItemBefore(OrderDetail datasBean) {
int addPosition = addFoodItem(datasBean);
//这里主食品作为选中主体
......@@ -1004,10 +1069,10 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<BaseResult>(mErrorHandler) {
.subscribe(new ErrorHandleSingleSubscriber<BaseResult>(mErrorHandler) {
@Override
public void onNext(@NonNull BaseResult info) {
public void onSuccess(@NonNull BaseResult info) {
if (info != null && info.isSuccess()) {
if (info.getData() != null) {
MemberInfo memberInfo = JsonUtils.parseObject(info.getData(), MemberInfo.class);
......@@ -1650,7 +1715,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
return true;
}
private boolean discountConditionFilter(Discount datasBean) {
private boolean discountConditionFilter() {
//折扣金額是否>0
if (Double.doubleToLongBits(getDisountSourcePrice()) == 0) {
......@@ -2047,7 +2112,6 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
mDiscountAdapter.notifyDataSetChanged();
}
/**
* 獲取所要折扣金額
*
......@@ -2175,4 +2239,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
return mSoldoutCtrList;
}
public DiscountFragment getDiscountFragment() {
return discountFragment;
}
}
......@@ -36,6 +36,7 @@ import com.gingersoft.gsa.cloud.print.bean.adapter.PrintContentAdapter;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.action.discount.MealDiscountAction;
import com.gingersoft.gsa.cloud.table.mvp.contract.MealStandContract;
import com.gingersoft.gsa.cloud.table.mvp.contract.MealStandContract2;
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.request.AddOrderRequest;
......@@ -102,7 +103,7 @@ import static com.gingersoft.gsa.cloud.table.mvp.ui.activity.SoldoutCtrlActivity
* ================================================
*/
@ActivityScope
public class MealStandPresenter2 extends BaseOrderPresenter2<MealStandContract.Model, MealStandContract.View> {
public class MealStandPresenter2 extends BaseOrderPresenter2<MealStandContract2.Model, MealStandContract2.View> {
@Inject
RxErrorHandler mErrorHandler;
@Inject
......@@ -113,7 +114,7 @@ public class MealStandPresenter2 extends BaseOrderPresenter2<MealStandContract.M
AppManager mAppManager;
@Inject
public MealStandPresenter2(MealStandContract.Model model, MealStandContract.View rootView) {
public MealStandPresenter2(MealStandContract2.Model model, MealStandContract2.View rootView) {
super(model, rootView);
}
......
package com.gingersoft.gsa.cloud.table.mvp.presenter.mealstand;
import android.app.Application;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.core.member.MemberInfo;
import com.gingersoft.gsa.cloud.common.rxjava.ErrorHandleSingleSubscriber;
import com.gingersoft.gsa.cloud.common.utils.JsonUtils;
import com.gingersoft.gsa.cloud.common.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.component.ComponentName;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderContentActivity;
import com.jess.arms.integration.AppManager;
import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.http.imageloader.ImageLoader;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.schedulers.Schedulers;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
import javax.inject.Inject;
import com.gingersoft.gsa.cloud.table.mvp.contract.RiceponMemberDialogContract;
import com.jess.arms.utils.DeviceUtils;
import com.jess.arms.utils.PermissionUtil;
import com.jess.arms.utils.RxLifecycleUtils;
import com.tbruyelle.rxpermissions2.RxPermissions;
import java.util.List;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/24/2021 16:24
* <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
public class RiceponMemberDialogPresenter extends BasePresenter<RiceponMemberDialogContract.Model, RiceponMemberDialogContract.View> {
@Inject
RxErrorHandler mErrorHandler;
@Inject
Application mApplication;
@Inject
ImageLoader mImageLoader;
@Inject
AppManager mAppManager;
@Inject
public RiceponMemberDialogPresenter(RiceponMemberDialogContract.Model model, RiceponMemberDialogContract.View rootView) {
super(model, rootView);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mErrorHandler = null;
this.mAppManager = null;
this.mImageLoader = null;
this.mApplication = null;
}
public void queryMember(int type, String parm, String shopName, int tableId, String tableNumber) {
mModel.queryMember(type, parm, shopName, tableId, tableNumber)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading(null))
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSingleSubscriber<BaseResult>(mErrorHandler) {
@Override
public void onSuccess(@NonNull BaseResult info) {
if (info != null && info.isSuccess()) {
if (info.getData() != null) {
MemberInfo memberInfo = JsonUtils.parseObject(info.getData(), MemberInfo.class);
if (memberInfo != null && memberInfo.getId() != 0) {
mRootView.returnMemberInfo(memberInfo);
} else {
mRootView.showMessage("未找到相關會員電話號碼,請重新輸入");
}
} else {
mRootView.showMessage("獲取會員信息失敗");
}
} else {
mRootView.showMessage(info.getErrMsg());
}
}
});
}
}
......@@ -30,6 +30,8 @@ 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.adapter.meal.SelectMealAdapter2;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand.SetMealFragment;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog;
import com.jess.arms.base.delegate.IActivity;
import com.jess.arms.integration.AppManager;
......@@ -42,6 +44,7 @@ import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
......@@ -55,6 +58,8 @@ import com.gingersoft.gsa.cloud.table.mvp.contract.SetMealContract;
import com.jess.arms.utils.RxLifecycleUtils;
import com.xuexiang.rxutil2.rxjava.RxSchedulerUtils;
import org.reactivestreams.Subscription;
import org.simple.eventbus.EventBus;
import org.simple.eventbus.Subscriber;
import java.util.ArrayList;
......@@ -99,16 +104,16 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
@Inject
List<Modifier> mModifierList; //细项数据
@Inject
List<SoldoutCtrFood> mSoldoutCtrList;//沽清食品數據
private OrderDetail mCurrentOrderDetailBean;
//沽清食品數據
private List<SoldoutCtrFood> mSoldoutCtrList = new ArrayList<>();
private boolean RvMealClicked;
@Inject
public SetMealPresenter(SetMealContract.Model model, SetMealContract.View rootView) {
super(model, rootView);
initMealData();
}
@Override
......@@ -130,30 +135,65 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
this.mApplication = null;
}
public void initSelectMealAdapter(RecyclerView rvSelectMeal) {
if (mSelectMealAdapter != null) {
//設置子父級下標
mSelectMealAdapter.setIndex();
rvSelectMeal.setAdapter(mSelectMealAdapter);
mSelectMealAdapter.setOnItemClickListener(new SelectMealAdapter2.OnItemClickListener() {
@Override
public void onItemClick(OrderDetail datasBean, int position) {
mRootView.recordOperat(true);
selectMealItemClick(datasBean);
}
@Override
public void onMealCountDelete(OrderDetail datasBean, int position) {
}
@Override
public void onMealCountAdd(OrderDetail datasBean, int position) {
}
@Override
public void onCurrentOrderDetail(OrderDetail datasBean, int position) {
mCurrentOrderDetailBean = datasBean;
}
});
}
}
public void initMealData() {
mModel.queryDB_FoodGroupList(BaseOrder.orderType)
.compose(MyRxSchedulerUtils._io_main_f())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSingleSubscriber<List<Food>>(mErrorHandler) {
@Override
public void onSuccess(List<Food> foodGroupList) {
if (foodGroupList != null && foodGroupList.size() > 0) {
if (foodGroupList.size() > 0) {
mFoodGroupList.addAll(foodGroupList);
setDefalutFoodGroup(foodGroupList);
updateFoodSoldoutCtrData();
mRootView.initFoodGroupAdapter(foodGroupList);
}
}
private void setDefalutFoodGroup(List<Food> foodGroupList) {
for (Food food : foodGroupList) {
if (food.getInvisible() == 0) {
//默認選中第一組
food.setSelected(true);
switchFoodByParentId(food.getId());
break;
}
}
}
});
}
public void changedFoodByParentId(long parentId) {
public void switchFoodByParentId(long parentId) {
mModel.queryDB_FoodList(parentId, BaseOrder.orderType)
.subscribeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSingleSubscriber<List<Food>>(mErrorHandler) {
......@@ -163,41 +203,63 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
if (foodList != null) {
updateFoodData(foodList, parentId);
}
mRootView.showViewModeVisibility(MealConstant.food_ViewMode, MealConstant.food_group_ViewMode);
mRootView.setCurrLayout(SetMealFragment.FOOD_LAYOUT);
}
});
}
private void setDefalutFoodGroup(List<Food> foodGroupList) {
for (Food food : foodGroupList) {
if (food.getInvisible() == 0) {
//默認選中第一組
food.setSelected(true);
changedFoodByParentId(food.getParentId());
}
}
private void selectMealItemClick(OrderDetail datasBean) {
LoganManager.w_tableMode(TAG, LoganManager.EVENT_SELECTED, "食品【" + datasBean.getProductName() + "】");
//有取消的食品不能操作
OrderDetail currentOrderDetail = mSelectMealAdapter.getCurrentOrderDetail();
if (currentOrderDetail != null && currentOrderDetail.isModify()) {
return;
}
public void initSelectMealAdapter(RecyclerView rvSelectMeal) {
if (mSelectMealAdapter != null) {
rvSelectMeal.setAdapter(mSelectMealAdapter);
if (mSelectMealAdapter.getSelectedMode() == SelectMealAdapter.MULTIPLE_SELECTED) {
return;
}
RvMealClicked = true;
//设置当前操作的食品
mCurrentOrderDetailBean = datasBean;
loadComboData(datasBean, true);
}
public void foodGroupItemClick(Food datasBean) {
RvMealClicked = false;
if (!foodGroupConditionFilter(datasBean, false)) {
return;
}
RvMealClicked = true;
datasBean.setSelected(true);
changedFoodByParentId(datasBean.getId());
switchFoodByParentId(datasBean.getId());
updateOrderFoodNumber();
updateFoodSoldoutCtrData();
}
public void modifierItemClick(Modifier datasBean) {
public void foodItemClick(Food datasBean) {
RvMealClicked = false;
if (mSelectMealAdapter.getSelectedMode() == SelectMealAdapter.MULTIPLE_SELECTED) {
return;
}
if (!foodConditionFilter(datasBean)) {
return;
}
if (datasBean.getIsParent() == 0) {
switchFoodByParentId(datasBean.getId());
} else {
mCurrentOrderDetailBean = OrderDetail.foodTransOrderDetails(datasBean, 1);
int customType = datasBean.ableDiscountCastCustomType();
if (customType != Food.CUSTOM_TYPE_100) {
//自定義食品
mRootView.setCustomFoodDialog(customType, mCurrentOrderDetailBean);
} else {
//加載套餐食品
loadComboData(mCurrentOrderDetailBean, false);
}
}
}
public void modifierItemClick(Modifier datasBean) {
RvMealClicked = false;
if (!modifierConditionFilter(datasBean)) {
return;
}
......@@ -205,7 +267,6 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
//已送單數量已等於最大數,不能繼續添加
return;
}
addModifierItem(datasBean);
//更新賬單數
updateOrderFoodNumber();
......@@ -215,7 +276,6 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
public void comboItemClick(ComboItem datasBean) {
RvMealClicked = false;
if (!comboConditionFilter(datasBean)) {
return;
}
......@@ -223,7 +283,6 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
//已送單數量已等於最大數,不能繼續添加
return;
}
//设置当前操作的套餐细项
long id = mCurrentOrderDetailBean.isNew() ? mCurrentOrderDetailBean.getProductId() : mCurrentOrderDetailBean.getId();
mCurrentOrderDetailBean = OrderDetail.comboTransOrderDetail(datasBean, id, mCurrentOrderDetailBean.getProductId(), 1, OrderDetail.COMBO_PROP, RvMealClicked);
......@@ -237,30 +296,6 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
updateOrderFoodNumber();
}
public void foodItemClick(Food datasBean) {
if (mSelectMealAdapter.getSelectedMode() == SelectMealAdapter.MULTIPLE_SELECTED) {
return;
}
if (!foodConditionFilter(datasBean)) {
return;
}
RvMealClicked = false;
if (datasBean.getIsParent() == 0) {
queryFoodListByParentId(datasBean.getId());
} else {
mCurrentOrderDetailBean = OrderDetail.foodTransOrderDetails(datasBean, 1);
int customType = datasBean.ableDiscountCastCustomType();
if (customType != Food.CUSTOM_TYPE_100) {
//自定義食品
// mRootView.setCustomFoodDialog(customType, mCurrentOrderDetailBean);
} else {
//加載套餐食品
loadComboData(mCurrentOrderDetailBean, false);
}
}
}
private void addFoodItemBefore(OrderDetail datasBean) {
int addPosition = addFoodItem(datasBean);
//这里主食品作为选中主体
......@@ -341,21 +376,20 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
public void subscribe(ObservableEmitter<List> emitter) throws Exception {
long fid = food.getProductId();
int itemType = food.getItemType();
List<ComboItem> comboItemList = new ArrayList<>();
if (itemType == 1) {
//获取套餐细项数据
// List<ComboItem> comboItems = mModel.queryDB_ComboList(fid, BaseOrder.orderType);
// comboItemList.addAll(comboItems);
List<ComboItem> comboItems = mModel.queryDB_ComboList(fid, BaseOrder.orderType);
comboItemList.addAll(comboItems);
}
// List<Modifier> modifierList = mModel.queryDB_ModifierList(fid, ModifierDaoUtils.modifierMode_All);
//
// emitter.onNext(comboItemList);
// emitter.onNext(modifierList);
List<Modifier> modifierList = mModel.queryDB_ModifierList(fid, ModifierDaoUtils.modifierMode_All);
emitter.onNext(comboItemList);
emitter.onNext(modifierList);
emitter.onComplete();
}
}).subscribeOn(Schedulers.io())//在IO线程执行数据库处理操作
.observeOn(AndroidSchedulers.mainThread())//在UI线程
})
.compose(RxSchedulerUtils._io_main_o())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new Observer<List>() {
......@@ -395,7 +429,6 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
public void onComplete() {
boolean autoMod = false;
if (comboItemList != null) {
// if (comboItemList.size() > 0) {
if (modifierList != null) {
autoMod = food.getAutoMod() == 1 && (comboItemList.size() > 0 || modifierList.size() > 0);
} else {
......@@ -403,7 +436,7 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
}
}
if (mRootView.getCurrentViewMode() != MealConstant.fine_ViewMode && isSelectedMeal || autoMod) {
mRootView.showViewModeVisibility(MealConstant.combo_ViewMode);
mRootView.setCurrLayout(SetMealFragment.COMBO_LAYOUT);
}
toAddFoodItem(mCurrentOrderDetailBean);
}
......@@ -578,23 +611,6 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
return -1;
}
public void queryFoodListByParentId(long parentId) {
mModel.queryDB_FoodList(parentId, BaseOrder.orderType)
.compose(MyRxSchedulerUtils._io_main_f())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSingleSubscriber<List<Food>>(mErrorHandler) {
@Override
public void onSuccess(List<Food> foods) {
mRootView.resetSelect(-1, null);
if (foods != null) {
updateFoodData(foods, parentId);
}
// mRootView.showViewModeVisibility(MealConstant.food_ViewMode, MealConstant.food_group_ViewMode);
}
});
}
/**
* 全選
*/
......@@ -794,7 +810,6 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
for (int i = 0; i < foodList.size(); i++) {
Food datasBean = foodList.get(i);
mModel.isComboFood(datasBean.getId())
.compose(MyRxSchedulerUtils._io_main_f())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSingleSubscriber<List<FoodCombo>>(mErrorHandler) {
......@@ -1390,4 +1405,12 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
}
public OrderDetail getCurrentOrderDetailBean() {
return mCurrentOrderDetailBean;
}
public List<SoldoutCtrFood> getSoldoutCtrList() {
return mSoldoutCtrList;
}
}
......@@ -5,27 +5,21 @@ import android.content.Intent;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.os.SystemClock;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.DisplayMetrics;
import android.util.SparseArray;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewStub;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.ScrollView;
import android.widget.TextView;
import androidx.annotation.NonNull;
......@@ -42,7 +36,6 @@ import androidx.viewpager.widget.ViewPager;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.app.GsaCloudApplication;
import com.gingersoft.gsa.cloud.common.constans.FoodSummaryConstans;
import com.gingersoft.gsa.cloud.common.constans.GoldConstants;
import com.gingersoft.gsa.cloud.common.constans.MealConstant;
import com.gingersoft.gsa.cloud.common.core.member.MemberInfo;
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
......@@ -59,7 +52,7 @@ import com.gingersoft.gsa.cloud.order.billItem.BillItem;
import com.gingersoft.gsa.cloud.order.billItem.DiscountItem;
import com.gingersoft.gsa.cloud.order.cart.ShoppingCart;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.order.discount.MemberDiscount;
import com.gingersoft.gsa.cloud.order.discount.MemberLevelDiscount;
import com.gingersoft.gsa.cloud.order.discount.MultyDiscount;
import com.gingersoft.gsa.cloud.order.order.BaseOrder;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
......@@ -71,12 +64,11 @@ import com.gingersoft.gsa.cloud.table.di.component.DaggerMealStandComponent;
import com.gingersoft.gsa.cloud.table.mvp.contract.MealStandContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.event.InitTableEvent;
import com.gingersoft.gsa.cloud.table.mvp.model.constant.OrderConentActionConstant;
import com.gingersoft.gsa.cloud.table.mvp.presenter.mealstand.MealStandPresenter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BaseFragmentAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.FoodGroupAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.SelectMealAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.FineItemAllFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand.FineChildAllFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.ChooseNumberDialog;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.CustomFoodDialog;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.UseMemberDialog;
......@@ -95,12 +87,8 @@ import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.lxj.xpopup.util.KeyboardUtils;
import com.qmuiteam.qmui.alpha.QMUIAlphaTextView;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton;
import org.simple.eventbus.EventBus;
......@@ -154,8 +142,15 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
RecyclerView rv_combo;
@BindView(R2.id.rv_modifier)
RecyclerView rv_modifier;
@BindView(R2.id.fl_discount)
FrameLayout fl_discount;
// @BindView(R2.id.ll_discount)
// LinearLayout ll_discount;
@BindView(R2.id.rv_discount)
RecyclerView rv_discount;
// @BindView(R2.id.rv_coupon)
// RecyclerView rv_coupon;
@BindView(R2.id.scroll_combo)
NestedScrollView scroll_combo;
......@@ -257,7 +252,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
@BindView(R2.id.tv_fine_type)
TextView tv_fine_type;
private FineItemAllFragment modMsgFineItemFragment, modSasteFineItemFragment;
private FineChildAllFragment modMsgFineItemFragment, modSasteFineItemFragment;
private ChooseNumberDialog mChooseNumberDialog;
private UseMemberDialog mUseMemberDialog;
......@@ -498,8 +493,8 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
FragmentManager fm = getSupportFragmentManager();
List<Fragment> fragmentList = new ArrayList<>();
// Fragment标签
modSasteFineItemFragment = FineItemAllFragment.newInstance();
modMsgFineItemFragment = FineItemAllFragment.newInstance();
modSasteFineItemFragment = FineChildAllFragment.newInstance();
modMsgFineItemFragment = FineChildAllFragment.newInstance();
fragmentList.add(modSasteFineItemFragment);
fragmentList.add(modMsgFineItemFragment);
// fragmentList.add(modCommFineItemFragment);
......@@ -626,10 +621,15 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
showMessage("此食品不能參與折扣!");
return;
}
//更新折扣数据
mPresenter.loadDiscountData();
showViewModeVisibility(MealConstant.discount_ViewMode);
mPresenter.loadDiscountFragment();
showModifyLayoutVisibility(true);
// //更新折扣数据
// mPresenter.loadDiscountData();
//
// showViewModeVisibility(MealConstant.discount_ViewMode);
}
@OnClick(R2.id.btn_table)
......@@ -658,12 +658,13 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
public void onUseMember(UseMemberDialog dialog) {
if (mMemberInfo != null) {
dialog.dismiss();
if (DoshokuOrder.getInstance().getMemberInfo() == null) {
useMember();
// if (DoshokuOrder.getInstance().getMemberInfo() == null) {
DoshokuOrder.getInstance().setMemberInfo(mMemberInfo);
useMember();
//添加会员折扣行
ShoppingCart shoppingCart = mPresenter.getShoppingCart();
MultyDiscount multyDiscount = shoppingCart.createMemberDiscount(mMemberInfo, BillItem.BILL_ITEM_NO_ORDER_STATUS);
......@@ -673,7 +674,9 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
mPresenter.updateBillInfo();
}
// } else {
// DoshokuOrder.getInstance().setMemberInfo(mMemberInfo);
// }
} else {
showMessage("請輸入正確的會員號碼!");
}
......@@ -684,7 +687,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
btn_table.setBackgroundColor(Color.parseColor("#336699"));
DoshokuOrder.getInstance().setMemberInfo(null);
DiscountItem memberDiscountBillItem = (DiscountItem) mPresenter.findBillItemByClass(MemberDiscount.class);
DiscountItem memberDiscountBillItem = (DiscountItem) mPresenter.findBillItemByClass(MemberLevelDiscount.class);
if (memberDiscountBillItem != null) {
ShoppingCart shoppingCart = mPresenter.getShoppingCart();
shoppingCart.delMultyDiscount(memberDiscountBillItem.getDiscount());
......@@ -823,6 +826,9 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
mPresenter.deleteChildItem();
}
} else if (id == R.id.btn_end) {
if (mPresenter.getDiscountFragment() != null) {
mPresenter.getDiscountFragment().pop();
}
mPresenter.getSelectMealAdapter().setSelectedMode(SelectMealAdapter.SINGLE_SELECTED);
btn_delete.setVisibility(View.VISIBLE);
setSelectFunctionVisibility(View.GONE);
......
......@@ -2,86 +2,46 @@ package com.gingersoft.gsa.cloud.table.mvp.ui.activity;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.os.SystemClock;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.util.SparseArray;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.widget.NestedScrollView;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.ViewPager;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.app.GsaCloudApplication;
import com.gingersoft.gsa.cloud.common.constans.FoodSummaryConstans;
import com.gingersoft.gsa.cloud.common.constans.MealConstant;
import com.gingersoft.gsa.cloud.common.core.member.MemberInfo;
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
import com.gingersoft.gsa.cloud.common.core.table.TableBean;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.scan.ScanHelper;
import com.gingersoft.gsa.cloud.common.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.common.utils.VibratorUtils;
import com.gingersoft.gsa.cloud.common.utils.other.SPUtils;
import com.gingersoft.gsa.cloud.component.ComponentName;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.order.bean.response.OrderResponse;
import com.gingersoft.gsa.cloud.order.billItem.BillItem;
import com.gingersoft.gsa.cloud.order.billItem.DiscountItem;
import com.gingersoft.gsa.cloud.order.cart.ShoppingCart;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.order.discount.MemberDiscount;
import com.gingersoft.gsa.cloud.order.discount.MultyDiscount;
import com.gingersoft.gsa.cloud.order.order.BaseOrder;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
import com.gingersoft.gsa.cloud.print.PrinterUtils;
import com.gingersoft.gsa.cloud.table.BuildConfig;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.di.component.DaggerMealStand2Component;
import com.gingersoft.gsa.cloud.table.di.component.DaggerMealStandComponent;
import com.gingersoft.gsa.cloud.table.mvp.contract.MealStandContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood;
import com.gingersoft.gsa.cloud.table.mvp.contract.MealStandContract2;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.event.InitTableEvent;
import com.gingersoft.gsa.cloud.table.mvp.presenter.mealstand.MealStandPresenter;
import com.gingersoft.gsa.cloud.table.mvp.presenter.mealstand.MealStandPresenter2;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BaseFragmentAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.FoodGroupAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.SelectMealAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.FineItemAllFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand.SetMealFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.ChooseNumberDialog;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.CustomFoodDialog;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.UseMemberDialog;
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.recylcler.RecyclerViewNoBugLinearLayoutManager;
import com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration;
import com.gingersoft.gsa.cloud.ui.recylcler.decorator.GridDividerItemDecoration;
import com.gingersoft.gsa.cloud.ui.view.PagerSlidingTabStrip;
import com.gingersoft.gsa.cloud.ui.view.SearchKeyBoardView;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
......@@ -90,22 +50,13 @@ import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.alpha.QMUIAlphaTextView;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import org.simple.eventbus.EventBus;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
import butterknife.BindView;
import butterknife.OnClick;
import butterknife.OnLongClick;
import static com.jess.arms.utils.Preconditions.checkNotNull;
......@@ -122,14 +73,37 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public class MealStandActivity2 extends BaseFragmentActivity<MealStandPresenter2> implements MealStandContract.View, PagerGridLayoutManager.PageListener {
private SparseArray<View> map = new SparseArray<>(10);
public class MealStandActivity2 extends BaseFragmentActivity<MealStandPresenter2> implements MealStandContract2.View, PagerGridLayoutManager.PageListener {
@BindView(R2.id.meal_stand_search_keyboard_view)
SearchKeyBoardView keyboard_view;
@BindView(R2.id.ctime)
Chronometer ctime;
@BindView(R2.id.fl_food_plate)
FrameLayout flFoodPlate;
@BindView(R2.id.fl_meal_discount)
FrameLayout fl_meal_discount;
FrameLayout flMealDiscount;
@BindView(R2.id.meal_stand_search_keyboard_view)
SearchKeyBoardView mealStandSearchKeyboardView;
@BindView(R2.id.tv_no_save_return)
TextView tvNoSaveReturn;
@BindView(R2.id.btn_order_count)
Button btnOrderCount;
@BindView(R2.id.tv_order_content)
TextView tvOrderContent;
@BindView(R2.id.fl_order_content)
FrameLayout flOrderContent;
@BindView(R2.id.btn_send_order)
Button btnSendOrder;
@BindView(R2.id.fl_send_order)
FrameLayout flSendOrder;
@BindView(R2.id.btn_order_printer)
Button btnOrderPrinter;
@BindView(R2.id.btn_printer_machine_name)
Button btnPrinterMachineName;
@BindView(R2.id.fl_printer_order)
FrameLayout flPrinterOrder;
@BindView(R2.id.ll_stand_oper)
LinearLayout llStandOper;
private int mCurrentViewMode;
private boolean isPluMode;
......@@ -173,52 +147,13 @@ public class MealStandActivity2 extends BaseFragmentActivity<MealStandPresenter2
}
@Override
public boolean isInitFineItemLayout() {
return true;
}
@Override
public int getRestaurantId() {
return RestaurantInfoManager.newInstance().getRestaurantId();
}
@Override
public void initFineItemTabBarViewPage() {
}
@Override
public void setCurrentFinePage() {
}
@Override
public void setPluMode() {
}
@Override
public void resetPluMode() {
}
@Override
public void updateMemberInfo(MemberInfo memberInfo) {
}
@OnClick({ R2.id.btn_send_order, R2.id.tv_no_save_return, R2.id.tv_order_content})
@OnClick({R2.id.btn_send_order, R2.id.tv_no_save_return, R2.id.tv_order_content})
public void onClick(View v) {
recordOperat(true);
//防抖處理
int id = v.getId();
if (id == R.id.btn_numberman) {
if (!BaseOrder.isTableToMeal()) {
return;
}
showChoosePeopleNumDialog(true);
} else if (id == R.id.btn_fid) {
setPluMode();
} else if (id == R.id.btn_send_order) {
if (id == R.id.btn_send_order) {
if (BaseOrder.isCurrentOrderType(FoodSummaryConstans.TAKEAWAY_TYPE)) {
CC.obtainBuilder(ComponentName.COMPONENT_DELIVERYPICK)
.setActionName("SendOrder")
......@@ -273,134 +208,20 @@ public class MealStandActivity2 extends BaseFragmentActivity<MealStandPresenter2
}
@Override
public void showChoosePeopleNumDialog(boolean isNeedCancel) {
}
@Override
public void setPrinterLocalmachine(boolean isPrint) {
}
@Override
public void setTableInfoDialogAdapter(BaseAdapter adapter) {
}
@Override
public void setSelectFoodAdapter(RecyclerView.Adapter adapter) {
}
@Override
public void setFoodGroupAdapter(DefaultAdapter adapter) {
}
@Override
public void setFoodAdapter(DefaultAdapter adapter) {
}
@Override
public void setOrderDetailAdapter(DefaultAdapter adapter) {
}
@Override
public void setComboAdapter(DefaultAdapter adapter) {
}
@Override
public void setModifierAdapter(DefaultAdapter adapter) {
}
@Override
public void setDiscountAdapter(DefaultAdapter adapter) {
}
private GridLayoutManager foodRecycleLayoutManager, comboRecycleLayoutManager, modifierRecycleLayoutManager, discountRecycleLayoutManager;
@Override
public void setSelectFoodRecycleLayoutManager() {
}
@Override
public void setFoodGroupRecycleLayoutManager(int orientation) {
}
@Override
public void setFoodRecycleLayoutManager(int orientation) {
}
@Override
public void setComboRecycleLayoutManager(int orientation) {
}
@Override
public void setModifierRecycleLayoutManager(int orientation) {
}
@Override
public void setDiscountRecycleLayoutManager(int orientation) {
}
@Override
public void setFoodGroupRecycleSpanCount(int size) {
}
@Override
public void setFoodRecycleSpanCount(int size) {
}
@Override
public void setComboRecycleSpanCount(int size) {
}
@Override
public void setModifierRecycleSpanCount(int size) {
}
@Override
public void setDiscountRecycleSpanCount(int size) {
}
@Override
public void showViewModeVisibility(int... viewMode) {
//將所有的view隱藏
for (int i = 0; i < map.size(); i++) {
map.valueAt(i).setVisibility(View.INVISIBLE);
}
//設置當前mode為第一個傳入的mode
for (int mode : viewMode) {
this.mCurrentViewMode = mode;
break;
}
//顯示所有傳入的需要顯示的view
for (int mode : viewMode) {
map.get(mode).setVisibility(View.VISIBLE);
}
//設置當前模式為輸入Plu模式
if (viewMode != null && viewMode[0] == MealConstant.ViewMode_keys) {
isPluMode = true;
public void showStandOperLayoutVisibility(boolean show) {
if (show) {
llStandOper.setVisibility(View.INVISIBLE);
} else {
isPluMode = false;
}
switch (mCurrentViewMode) {
case MealConstant.food_group_ViewMode:
case MealConstant.food_ViewMode:
showModifyLayoutVisibility(false);
break;
case MealConstant.combo_ViewMode:
// case MealConstant.modifier_ViewMode:
case MealConstant.discount_ViewMode:
case MealConstant.fine_ViewMode:
showModifyLayoutVisibility(true);
break;
default:
break;
}
llStandOper.setVisibility(View.VISIBLE);
}
@Override
public void showModifyLayoutVisibility(boolean show) {
}
@Override
......@@ -408,15 +229,6 @@ public class MealStandActivity2 extends BaseFragmentActivity<MealStandPresenter2
}
@Override
public void setMealRvScrollToPosition(int position) {
}
@Override
public List<Food> getFoodGroupList() {
return null;
}
@Override
public void initIntent() {
}
......@@ -483,19 +295,6 @@ public class MealStandActivity2 extends BaseFragmentActivity<MealStandPresenter2
public void clearInput() {
}
/**
* 显示公共信息
*/
public void showRemarkLayout() {
//没有初始化细项布局则初始化
if (!isInitFineItemLayout()) {
} else {
setCurrentFinePage();
showViewModeVisibility(MealConstant.fine_ViewMode, MealConstant.fine_tabs_ViewMode);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
......@@ -517,10 +316,6 @@ public class MealStandActivity2 extends BaseFragmentActivity<MealStandPresenter2
}
}
public int getCurrentViewMode() {
return mCurrentViewMode;
}
@Override
public void onPageSizeChanged(int pageSize) {
}
......@@ -530,31 +325,7 @@ public class MealStandActivity2 extends BaseFragmentActivity<MealStandPresenter2
}
@Override
public void setModifierTop(int margins) {
}
@Override
public void setCustomFoodDialog(int customType, OrderDetail foodItem) {
new CustomFoodDialog(mContext, customType)
.create(R.style.MyEditDialogTheme)
.setOnEditListener((dialog, name, money) -> {
dialog.dismiss();
if (customType == Food.CUSTOM_TYPE_101) {
foodItem.setProductName(name);
}
if (!TextUtils.isEmpty(money)) {
foodItem.setUnit_price(Double.parseDouble(money));
foodItem.setPrice(foodItem.getUnit_price());
// mPresenter.toAddFoodItem(foodItem);
}
})
.show();
}
@Override
public void showBtnMealModifyRestoreVisibility(boolean show) {
}
private void setSelectFunctionVisibility(int visibility) {
}
}
......@@ -669,6 +669,12 @@ public class OrderPayActivity extends BaseFragmentActivity<OrderPayPresenter> im
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
LoganManager.w_code(TAG, "onActivityResult->" + "resultCode=" + resultCode + " requestCode=" + requestCode);
}
public OrderPayView getGsaPayView() {
return gsaPayView;
}
......
......@@ -16,7 +16,6 @@ import com.gingersoft.gsa.cloud.app.GsaCloudApplication;
import com.gingersoft.gsa.cloud.common.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.common.utils.VibratorUtils;
import com.gingersoft.gsa.cloud.common.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.common.constans.GoldConstants;
import com.gingersoft.gsa.cloud.common.constans.MealConstant;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.table.R;
......@@ -25,9 +24,9 @@ import com.gingersoft.gsa.cloud.table.di.component.DaggerSoldoutCtrlComponent;
import com.gingersoft.gsa.cloud.table.mvp.contract.SoldoutCtrlContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood;
import com.gingersoft.gsa.cloud.table.mvp.presenter.SoldoutCtrlPresenter;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.FineItemAllFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand.FineChildAllFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.FoodGroupAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.FineItemOneselfFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand.FineChildOneselfFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.ChooseNumberDialog;
import com.gingersoft.gsa.cloud.ui.recylcler.Indicator.PagerGridLayoutManager;
import com.gingersoft.gsa.cloud.ui.recylcler.Indicator.PagerGridSnapHelper;
......@@ -136,8 +135,8 @@ public class SoldoutCtrlActivity extends BaseFragmentActivity<SoldoutCtrlPresent
public static final int FOOD_TYPE = 2;
public static final int MODIFIER_TYPE = 3;
private FineItemOneselfFragment oneselfFineItemFragment;
private FineItemAllFragment modMsgFineItemFragment, modSasteFineItemFragment;
private FineChildOneselfFragment oneselfFineItemFragment;
private FineChildAllFragment modMsgFineItemFragment, modSasteFineItemFragment;
private String[] mFineTabTitles = {"子項", "口味", "特別信息"};
private int mCurrentFinePageIndex;
......@@ -724,19 +723,19 @@ public class SoldoutCtrlActivity extends BaseFragmentActivity<SoldoutCtrlPresent
if (modMsgFineItemFragment != null) {
return modMsgFineItemFragment;
}
modMsgFineItemFragment = FineItemAllFragment.newInstance();
modMsgFineItemFragment = FineChildAllFragment.newInstance();
return modMsgFineItemFragment;
case 1:
if (modSasteFineItemFragment != null) {
return modSasteFineItemFragment;
}
modSasteFineItemFragment = FineItemAllFragment.newInstance();
modSasteFineItemFragment = FineChildAllFragment.newInstance();
return modSasteFineItemFragment;
default:
if (oneselfFineItemFragment != null) {
return oneselfFineItemFragment;
}
oneselfFineItemFragment = FineItemOneselfFragment.newInstance();
oneselfFineItemFragment = FineChildOneselfFragment.newInstance();
return oneselfFineItemFragment;
}
}
......
......@@ -394,7 +394,7 @@ public class TableActivity extends BaseFragmentActivity<TablePresenter> implemen
@Override
public void startMealStandActivity() {
startActivity(new Intent(this, MealStandActivity.class));
startActivity(new Intent(this, MealStandActivity2.class));
}
@Override
......
......@@ -19,5 +19,4 @@ public class MemberInfoAdapter extends BaseQuickAdapter<SectionTextItem, BaseVie
helper.setText(R.id.tv_text, item.getText());
}
}
......@@ -19,11 +19,14 @@ import com.gingersoft.gsa.cloud.table.mvp.presenter.mealstand.MealStandPresenter
import com.gingersoft.gsa.cloud.table.mvp.presenter.mealstand.SetMealPresenter;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity2;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand.SetMealFragment;
import com.jess.arms.base.BaseHolder;
import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.utils.ArmsUtils;
import org.simple.eventbus.EventBus;
import java.util.List;
import javax.inject.Inject;
......@@ -442,7 +445,8 @@ public class SelectMealAdapter2 extends DefaultAdapter<OrderDetail> {
setSelectPosition(select_position);
mMealStandActivity.showViewModeVisibility(MealConstant.food_group_ViewMode, MealConstant.food_ViewMode);
EventBus.getDefault().post(SetMealFragment.FOOD_LAYOUT,SetMealFragment.SET_CURR_LAYOUT_EVENT);
// mMealStandActivity.showViewModeVisibility(MealConstant.food_group_ViewMode, MealConstant.food_ViewMode);
}
/**
......@@ -488,9 +492,10 @@ public class SelectMealAdapter2 extends DefaultAdapter<OrderDetail> {
setSelectPosition(select_position);
if (mMealStandActivity != null) {
mMealStandActivity.showViewModeVisibility(MealConstant.food_group_ViewMode, MealConstant.food_ViewMode);
}
EventBus.getDefault().post(SetMealFragment.FOOD_LAYOUT,SetMealFragment.SET_CURR_LAYOUT_EVENT);
// if (mMealStandActivity != null) {
// mMealStandActivity.showViewModeVisibility(MealConstant.food_group_ViewMode, MealConstant.food_ViewMode);
// }
return select_position;
}
......
......@@ -12,7 +12,7 @@ import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.common.core.discount.MemberCoupon;
import com.gingersoft.gsa.cloud.order.bean.discount.MemberWalletCoupon;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.di.component.DaggerCouponComponent;
......@@ -66,10 +66,23 @@ public class CouponFragment extends BaseFragment<CouponPresenter> implements Cou
@Inject
TagViewAdapter mMemberCouponAdapter;
/**
* 0=沒有限制
* 1=食品專有
* 2=帳單專有
*/
public static final byte NO_LIMIT_DISCOUNT = 0;
public static final byte FOOD_LIMIT_DISCOUNT = 1;
public static final byte BILL_LIMIT_DISCOUNT = 2;
private int limitType = NO_LIMIT_DISCOUNT;
private LoadService loadService;
public static CouponFragment newInstance() {
public static CouponFragment newInstance(int limitType) {
CouponFragment fragment = new CouponFragment();
Bundle bundle = new Bundle();
bundle.putInt("limitType", limitType);
fragment.setArguments(bundle);
return fragment;
}
......@@ -89,11 +102,18 @@ public class CouponFragment extends BaseFragment<CouponPresenter> implements Cou
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
Bundle arguments = getArguments();
limitType = arguments.getInt("limitType");
super.onCreate(savedInstanceState);
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
loadService = LoadSir.getDefault().register(refreshLayout, new Callback.OnReloadListener() {
@Override
public void onReload(View v) {
mPresenter.getMemberWalletList(null, true);
mPresenter.getMemberWalletList(null, false,limitType);
}
});
......@@ -104,7 +124,7 @@ public class CouponFragment extends BaseFragment<CouponPresenter> implements Cou
@Override
public void onLazyInitView(@Nullable Bundle savedInstanceState) {
super.onLazyInitView(savedInstanceState);
mPresenter.getMemberWalletList(null, true);
mPresenter.getMemberWalletList(null, false,limitType);
}
private void initAdapter() {
......@@ -112,7 +132,7 @@ public class CouponFragment extends BaseFragment<CouponPresenter> implements Cou
rvCoupon.setAdapter(mMemberCouponAdapter);
mMemberCouponAdapter.setOnItemClickListener((adapter, view, position) -> {
if (onCouponItemClickListener != null) {
onCouponItemClickListener.onItemClick((MemberCoupon) mMemberCouponList.get(position).getTargetObj(), position);
onCouponItemClickListener.onItemClick((MemberWalletCoupon) mMemberCouponList.get(position).getTargetObj(), position);
}
});
}
......@@ -130,13 +150,13 @@ public class CouponFragment extends BaseFragment<CouponPresenter> implements Cou
refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh(@NonNull final RefreshLayout refreshLayout) {
mPresenter.getMemberWalletList(refreshLayout,true);
mPresenter.getMemberWalletList(refreshLayout, false,limitType);
}
});
refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@Override
public void onLoadMore(@NonNull final RefreshLayout refreshLayout) {
mPresenter.getMemberWalletList(refreshLayout,false);
mPresenter.getMemberWalletList(refreshLayout, true,limitType);
}
});
refreshLayout.setEnableLoadMore(false);
......@@ -179,7 +199,7 @@ public class CouponFragment extends BaseFragment<CouponPresenter> implements Cou
}
@Override
public void returnMemberCouponList(List<MemberCoupon> memberCoupons) {
public void returnMemberCouponList(List<MemberWalletCoupon> memberCoupons) {
List<TagViewItem> tagViewItems = castTagItem(memberCoupons);
if (mMemberCouponList.size() > 0) {
mMemberCouponList.clear();
......@@ -188,12 +208,12 @@ public class CouponFragment extends BaseFragment<CouponPresenter> implements Cou
mMemberCouponAdapter.notifyDataSetChanged();
}
private List<TagViewItem> castTagItem(List<MemberCoupon> memberCoupons) {
private List<TagViewItem> castTagItem(List<MemberWalletCoupon> memberCoupons) {
List<TagViewItem> tagViewItems = new ArrayList<>();
for (MemberCoupon coupon : memberCoupons) {
TagViewItem<MemberCoupon> tagViewItem = new TagViewItem();
for (MemberWalletCoupon coupon : memberCoupons) {
TagViewItem<MemberWalletCoupon> tagViewItem = new TagViewItem();
tagViewItem.setId(coupon.getId());
tagViewItem.setText(coupon.getRemark());
tagViewItem.setText(coupon.getCouponTypeName());
tagViewItem.setTargetObj(coupon);
tagViewItems.add(tagViewItem);
}
......@@ -222,6 +242,6 @@ public class CouponFragment extends BaseFragment<CouponPresenter> implements Cou
}
public interface OnCouponItemClickListener {
void onItemClick(MemberCoupon item, int position);
void onItemClick(MemberWalletCoupon item, int position);
}
}
......@@ -15,7 +15,7 @@ import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import com.gingersoft.gsa.cloud.common.core.discount.MemberCoupon;
import com.gingersoft.gsa.cloud.order.bean.discount.MemberWalletCoupon;
import com.gingersoft.gsa.cloud.common.core.member.MemberInfo;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.database.bean.Discount;
......@@ -80,7 +80,7 @@ public class DiscountDialogFragment extends BaseDialogFragment<BasePresenter> {
@Override
public void onStart() {
super.onStart();
mWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
mWindow.setBackgroundDrawable(new ColorDrawable(Color.WHITE));
WindowManager.LayoutParams lp = mWindow.getAttributes();
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = (int) (QMUIDisplayHelper.getScreenHeight(mContext) * 0.6);
......@@ -114,10 +114,10 @@ public class DiscountDialogFragment extends BaseDialogFragment<BasePresenter> {
if (couponFragment != null) {
return couponFragment;
}
couponFragment = CouponFragment.newInstance();
couponFragment = CouponFragment.newInstance(CouponFragment.BILL_LIMIT_DISCOUNT);
couponFragment.setOnCouponItemClickListener(new CouponFragment.OnCouponItemClickListener() {
@Override
public void onItemClick(MemberCoupon item, int position) {
public void onItemClick(MemberWalletCoupon item, int position) {
if (onDiscountItemClickListener != null) {
onDiscountItemClickListener.onCouponClick(item, position);
}
......@@ -160,7 +160,7 @@ public class DiscountDialogFragment extends BaseDialogFragment<BasePresenter> {
tabSegment.addTab(tab1);
if (memberInfo != null) {
mTabTitles.add("優惠券");
mTabTitles.add("會員錢包");
QMUITab tab2 = builder
.setText(mTabTitles.get(1))
.build(_mActivity);
......@@ -209,6 +209,6 @@ public class DiscountDialogFragment extends BaseDialogFragment<BasePresenter> {
public interface OnDiscountItemClickListener {
void onBillDiscountClick(Discount item, int position);
void onCouponClick(MemberCoupon item, int position);
void onCouponClick(MemberWalletCoupon item, int position);
}
}
package com.gingersoft.gsa.cloud.table.mvp.ui.fragment.discount;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import com.gingersoft.gsa.cloud.order.bean.discount.MemberWalletCoupon;
import com.gingersoft.gsa.cloud.common.core.member.MemberInfo;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2;
import com.jess.arms.base.BaseFragment;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.mvp.BasePresenter;
import com.qmuiteam.qmui.arch.QMUIFragmentPagerAdapter;
import com.qmuiteam.qmui.layout.QMUILinearLayout;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.qmuiteam.qmui.widget.tab.QMUITab;
import com.qmuiteam.qmui.widget.tab.QMUITabBuilder;
import com.qmuiteam.qmui.widget.tab.QMUITabIndicator;
import com.qmuiteam.qmui.widget.tab.QMUITabSegment;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
/**
* @作者: bin
* @創建時間: 2021-04-02 17:14
* @更新時間: 2021-04-02 17:14
* @描述:
*/
public class DiscountFragment extends BaseFragment<BasePresenter> {
private final String TAG = "DiscountFragment";
@BindView(R2.id.tabSegment)
QMUITabSegment tabSegment;
@BindView(R2.id.contentViewPager)
ViewPager contentViewPager;
@BindView(R2.id.ll_container)
QMUILinearLayout llContainer;
private CouponFragment couponFragment;
private NomalDiscountFragment billDiscountFragment;
private List<String> mTabTitles = new ArrayList<>();
private int mCurrentPageIndex = 0;
public static DiscountFragment newInstance() {
DiscountFragment fragment = new DiscountFragment();
return fragment;
}
@Override
public void setupFragmentComponent(@NonNull AppComponent appComponent) {
}
@Override
public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.table_dialog_discout, container, false);
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
float mShadowAlpha = 0.25f;
int mShadowElevationDp = 14;
llContainer.setRadiusAndShadow(15, QMUIDisplayHelper.dp2px(mContext, mShadowElevationDp), mShadowAlpha);
initTabAndPager();
}
@Override
public void setData(@Nullable Object data) {
}
private void initTabAndPager() {
MemberInfo memberInfo = DoshokuOrder.getInstance().getMemberInfo();
QMUIFragmentPagerAdapter pagerAdapter = new QMUIFragmentPagerAdapter(getChildFragmentManager()) {
@Override
public Fragment createFragment(int position) {
switch (position) {
case 1:
if (couponFragment != null) {
return couponFragment;
}
couponFragment = CouponFragment.newInstance(CouponFragment.FOOD_LIMIT_DISCOUNT);
couponFragment.setOnCouponItemClickListener(new CouponFragment.OnCouponItemClickListener() {
@Override
public void onItemClick(MemberWalletCoupon item, int position) {
if (onDiscountItemClickListener != null) {
onDiscountItemClickListener.onCouponClick(item, position);
}
}
});
return couponFragment;
default:
if (billDiscountFragment != null) {
return billDiscountFragment;
}
billDiscountFragment = NomalDiscountFragment.newInstance();
billDiscountFragment.setOnDiscountItemClickListener(new NomalDiscountFragment.OnBillDiscountItemClickListener() {
@Override
public void onItemClick(Discount item, int position) {
if (onDiscountItemClickListener != null) {
onDiscountItemClickListener.onBillDiscountClick(item, position);
}
}
});
return billDiscountFragment;
}
}
@Override
public int getCount() {
return mTabTitles.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mTabTitles.get(position);
}
};
QMUITabBuilder builder = tabSegment.tabBuilder();
mTabTitles.add("折扣");
QMUITab tab1 = builder
.setText(mTabTitles.get(0))
.build(_mActivity);
tabSegment.addTab(tab1);
if (memberInfo != null) {
mTabTitles.add("會員錢包");
QMUITab tab2 = builder
.setText(mTabTitles.get(1))
.build(_mActivity);
tabSegment.addTab(tab2);
}
contentViewPager.setAdapter(pagerAdapter);
contentViewPager.setCurrentItem(mCurrentPageIndex);
int space = QMUIDisplayHelper.dp2px(_mActivity, 16);
tabSegment.setIndicator(new QMUITabIndicator(QMUIDisplayHelper.dp2px(_mActivity, 2), false, true));
tabSegment.setDefaultTextSize(QMUIDisplayHelper.dp2px(_mActivity, 16), QMUIDisplayHelper.dp2px(_mActivity, 16));
tabSegment.setPadding(space, 0, space, 0);
tabSegment.setupWithViewPager(contentViewPager, false);
tabSegment.addOnTabSelectedListener(new QMUITabSegment.OnTabSelectedListener() {
@Override
public void onTabSelected(int index) {
LoganManager.w_tableMode(TAG, "當前頁面【" + mTabTitles.get(index) + "】");
}
@Override
public void onTabUnselected(int index) {
}
@Override
public void onTabReselected(int index) {
}
@Override
public void onDoubleTap(int index) {
}
});
}
@Override
public boolean onBackPressedSupport() {
return super.onBackPressedSupport();
}
private OnDiscountItemClickListener onDiscountItemClickListener;
public void setOnDiscountItemClickListener(OnDiscountItemClickListener onDiscountItemClickListener) {
this.onDiscountItemClickListener = onDiscountItemClickListener;
}
public interface OnDiscountItemClickListener {
void onBillDiscountClick(Discount item, int position);
void onCouponClick(MemberWalletCoupon item, int position);
}
}
package com.gingersoft.gsa.cloud.table.mvp.ui.fragment;
package com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand;
import android.app.Activity;
import android.content.Intent;
......@@ -12,13 +12,13 @@ import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.di.component.DaggerFineItemAllComponent;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood;
import com.gingersoft.gsa.cloud.table.mvp.presenter.mealstand.FineChildAllPresenter;
import com.jess.arms.base.BaseFragment;
import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineItemAllContract;
import com.gingersoft.gsa.cloud.table.mvp.presenter.FineItemAllPresenter;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineChildAllContract;
import java.util.ArrayList;
......@@ -47,18 +47,18 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public class FineItemAllFragment extends BaseFragment<FineItemAllPresenter> implements FineItemAllContract.View {
public class FineChildAllFragment extends BaseFragment<FineChildAllPresenter> implements FineChildAllContract.View {
@BindView(R2.id.recycle_fine_item_all)
RecyclerView recycle_fine_item_all;
@BindView(R2.id.recycle_fine_item_kind_item)
RecyclerView recycle_fine_item_kind_item;//细项分类详细数据
RecyclerView recycle_fine_item_kind_item;
private int modCol;
public static FineItemAllFragment newInstance() {
FineItemAllFragment fragment = new FineItemAllFragment();
public static FineChildAllFragment newInstance() {
FineChildAllFragment fragment = new FineChildAllFragment();
return fragment;
}
......
package com.gingersoft.gsa.cloud.table.mvp.ui.fragment;
package com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand;
import android.app.Activity;
import android.content.Intent;
......@@ -11,13 +11,13 @@ import android.widget.LinearLayout;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.di.component.DaggerFineItemOneselfComponent;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineItemOneselfContract;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineChildOneselfContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood;
import com.jess.arms.base.BaseFragment;
import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.gingersoft.gsa.cloud.table.mvp.presenter.FineItemOneselfPresenter;
import com.gingersoft.gsa.cloud.table.mvp.presenter.mealstand.FineChildOneselfPresenter;
import java.util.List;
......@@ -41,7 +41,7 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public class FineItemOneselfFragment extends BaseFragment<FineItemOneselfPresenter> implements FineItemOneselfContract.View {
public class FineChildOneselfFragment extends BaseFragment<FineChildOneselfPresenter> implements FineChildOneselfContract.View {
@BindView(R2.id.rv_combo)
RecyclerView rv_combo;
......@@ -50,8 +50,8 @@ public class FineItemOneselfFragment extends BaseFragment<FineItemOneselfPresent
private long mFid;
public static FineItemOneselfFragment newInstance() {
FineItemOneselfFragment fragment = new FineItemOneselfFragment();
public static FineChildOneselfFragment newInstance() {
FineChildOneselfFragment fragment = new FineChildOneselfFragment();
return fragment;
}
......
package com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand;
import android.content.Intent;
import android.os.Bundle;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.jess.arms.base.BaseFragment;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineContract;
import com.gingersoft.gsa.cloud.table.mvp.presenter.mealstand.FinePresenter;
import com.gingersoft.gsa.cloud.table.R;
import static com.jess.arms.utils.Preconditions.checkNotNull;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/24/2021 18:33
* <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 FineFragment extends BaseFragment<FinePresenter> implements FineContract.View {
public static FineFragment newInstance() {
FineFragment fragment = new FineFragment();
return fragment;
}
@Override
public void setupFragmentComponent(@NonNull AppComponent appComponent) {
DaggerFineComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
.build()
.inject(this);
}
@Override
public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_fine, container, false);
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
}
@Override
public void setData(@Nullable Object data) {
}
@Override
public void showLoading(String message) {
if (message != null)
LoadingDialog.showDialogForLoading(_mActivity, message, true);
else
LoadingDialog.showDialogForLoading(_mActivity);
}
@Override
public void hideLoading() {
LoadingDialog.cancelDialogForLoading();
}
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.makeText(_mActivity, message);
}
@Override
public void launchActivity(@NonNull Intent intent) {
checkNotNull(intent);
ArmsUtils.startActivity(intent);
}
@Override
public void killMyself() {
}
}
......@@ -102,7 +102,7 @@ public class MealDiscountFragment extends BaseFragment<MealDiscountPresenter> im
List<Fragment> fragments = new ArrayList<>();
fragments.add(NomalDiscountFragment.newInstance());
fragments.add(CouponFragment.newInstance());
fragments.add(CouponFragment.newInstance(CouponFragment.FOOD_LIMIT_DISCOUNT));
//实例化适配器
TabFragmentAdapter mTabFragmentAdapter = new TabFragmentAdapter(getParentFragmentManager(), 1);
......
package com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand;
import android.content.Intent;
import android.os.Bundle;
import android.os.Parcelable;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.RecyclerView;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.common.core.member.MemberInfo;
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
import com.gingersoft.gsa.cloud.common.core.table.TableBean;
import com.gingersoft.gsa.cloud.common.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.component.ComponentName;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.di.component.DaggerRiceponMemberDialogComponent;
import com.gingersoft.gsa.cloud.table.mvp.contract.RiceponMemberDialogContract;
import com.gingersoft.gsa.cloud.table.mvp.presenter.mealstand.RiceponMemberDialogPresenter;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderContentActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.MemberInfoAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.UseMemberDialog;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.jess.arms.base.BaseDialogFragment;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.jess.arms.utils.DeviceUtils;
import com.jess.arms.utils.PermissionUtil;
import com.qmuiteam.qmui.alpha.QMUIAlphaButton;
import com.qmuiteam.qmui.widget.QMUITopBar;
import com.rengwuxian.materialedittext.MaterialEditText;
import com.tbruyelle.rxpermissions2.RxPermissions;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import butterknife.BindView;
import butterknife.OnClick;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import static com.jess.arms.utils.Preconditions.checkNotNull;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/24/2021 16:24
* <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 RiceponMemberDialogFragment extends BaseDialogFragment<RiceponMemberDialogPresenter> implements RiceponMemberDialogContract.View {
@Inject
RxErrorHandler mErrorHandler;
@BindView(R2.id.topbar)
QMUITopBar topbar;
@BindView(R2.id.ed_phone)
MaterialEditText edPhone;
@BindView(R2.id.btn_query_memeber)
QMUIAlphaButton btnQueryMemeber;
@BindView(R2.id.ll_input_phone)
LinearLayout llInputPhone;
@BindView(R2.id.recycler_memeber_info)
RecyclerView recyclerMemeberInfo;
@BindView(R2.id.iv_no_data)
ImageView ivNoData;
@BindView(R2.id.btn_scan)
QMUIAlphaButton btnScan;
@BindView(R2.id.btn_use_member)
QMUIAlphaButton btnUseMember;
@BindView(R2.id.btn_clear_member)
QMUIAlphaButton btnClearMember;
@BindView(R2.id.ll_bottom)
LinearLayout llBottom;
@Inject
MemberInfoAdapter mMemberInfoAdapter;
@Inject
List<SectionTextItem> mMemberInfoList;
private TableBean.DataBean mCurrTableBean;
private MemberInfo mMemberInfo;
public static RiceponMemberDialogFragment newInstance(TableBean.DataBean currTableBean) {
RiceponMemberDialogFragment fragment = new RiceponMemberDialogFragment();
Bundle bundle = new Bundle();
bundle.putParcelable("currTableBean", currTableBean);
fragment.setArguments(bundle);
return fragment;
}
@Override
public void setupFragmentComponent(@NonNull AppComponent appComponent) {
DaggerRiceponMemberDialogComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
.build()
.inject(this);
}
@Override
public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_ricepon_member_dialog, container, false);
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
Bundle arguments = getArguments();
mCurrTableBean = arguments.getParcelable("currTableBean");
super.onCreate(savedInstanceState);
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
initTopbar();
initAdapter();
}
private void initAdapter() {
if (mMemberInfoAdapter != null) {
recyclerMemeberInfo.setAdapter(mMemberInfoAdapter);
}
}
private void initTopbar() {
topbar.setBackgroundColor(ContextCompat.getColor(mContext, R.color.theme_color));
topbar.addLeftBackImageButton().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
killMyself();
}
});
topbar.setTitle("使用會員");
}
protected void toScanActivity() {
PermissionUtil.launchCamera(new PermissionUtil.RequestPermission() {
@Override
public void onRequestPermissionSuccess() {
String title = null;
if (_mActivity instanceof MealStandActivity) {
title = "掃描會員碼";
} else if (_mActivity instanceof OrderContentActivity) {
title = "掃描優惠券碼";
}
CC.obtainBuilder(ComponentName.COMPONENT_SCAN)
.setActionName("openScanActivity")
.addParam("title", title)
.build()
.callAsyncCallbackOnMainThread((cc, result) -> {
});
}
@Override
public void onRequestPermissionFailure(List<String> permissions) {
DeviceUtils.startSetting(mContext);
showMessage(LanguageUtils.get_language_system(mContext, "please.open.camera.permissions", "請前往設置開放照相機權限"));
}
@Override
public void onRequestPermissionFailureWithAskNeverAgain(List<String> permissions) {
DeviceUtils.startSetting(mContext);
showMessage(LanguageUtils.get_language_system(mContext, "please.open.camera.permissions", "請前往設置開放照相機權限"));
}
}, new RxPermissions(_mActivity), mErrorHandler);
}
@Override
public void setData(@Nullable Object data) {
}
@Override
public void showLoading(String message) {
if (message != null)
LoadingDialog.showDialogForLoading(_mActivity, message, true);
else
LoadingDialog.showDialogForLoading(_mActivity);
}
@Override
public void hideLoading() {
LoadingDialog.cancelDialogForLoading();
}
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.makeText(_mActivity, message);
}
@Override
public void launchActivity(@NonNull Intent intent) {
checkNotNull(intent);
ArmsUtils.startActivity(intent);
}
@Override
public void killMyself() {
dismiss();
}
@OnClick({R2.id.btn_query_memeber, R2.id.btn_scan, R2.id.btn_use_member, R2.id.btn_clear_member})
public void onViewClicked(View view) {
int id = view.getId();
if (id == R.id.btn_query_memeber) {
String phone = getTvPhone();
if (TextUtils.isEmpty(phone)) {
edPhone.setError("請輸入會員手機號");
return;
}
mPresenter.queryMember(2, phone, RestaurantInfoManager.newInstance().getGsPosShopId(), mCurrTableBean.getId(), mCurrTableBean.getTableNumber());
} else if (id == R.id.btn_scan) {
toScanActivity();
} else if (id == R.id.btn_use_member) {
if (onUseMemberListener != null) {
onUseMemberListener.onUseMember(mMemberInfo);
}
} else if (id == R.id.btn_clear_member) {
clearMemberInfo();
}
}
public void showBottomLayoutVisibility(boolean show) {
llBottom.setVisibility(show ? View.VISIBLE : View.GONE);
btnScan.setVisibility(!show ? View.VISIBLE : View.GONE);
}
private String getTvPhone() {
return edPhone.getText().toString();
}
@Override
public void returnMemberInfo(MemberInfo memberInfo) {
this.mMemberInfo = memberInfo;
final List<SectionTextItem> memberInfoItems = getMemberInfoItem(memberInfo);
if (mMemberInfoList.size() > 0) {
mMemberInfoList.clear();
}
mMemberInfoList.addAll(memberInfoItems);
mMemberInfoAdapter.notifyDataSetChanged();
showBottomLayoutVisibility(true);
}
public void clearMemberInfo() {
this.mMemberInfo = null;
if (onUseMemberListener != null) {
onUseMemberListener.onUseMember(null);
}
if (mMemberInfoList.size() > 0) {
mMemberInfoList.clear();
}
mMemberInfoAdapter.notifyDataSetChanged();
showBottomLayoutVisibility(false);
}
private List<SectionTextItem> getMemberInfoItem(MemberInfo memberInfo) {
List<SectionTextItem> textItems = new ArrayList<>();
textItems.add(new SectionTextItem("會員號碼: " + memberInfo.getMemberNo()));
textItems.add(new SectionTextItem("會員電話: " + memberInfo.getPhone()));
textItems.add(new SectionTextItem("會員名稱: " + memberInfo.getMemberName()));
textItems.add(new SectionTextItem("會員等級: " + memberInfo.getLevelName()));
textItems.add(new SectionTextItem("積分: " + memberInfo.getMemberPoint()));
return textItems;
}
private OnUseMemberListener onUseMemberListener;
public void setOnUseMemberListener(OnUseMemberListener onUseMemberListener) {
this.onUseMemberListener = onUseMemberListener;
}
public interface OnUseMemberListener {
void onUseMember(MemberInfo memberInfo);
}
}
package com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand;
import android.content.Intent;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
......@@ -8,9 +9,7 @@ import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewStub;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
......@@ -18,6 +17,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.widget.NestedScrollView;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.GridLayoutManager;
......@@ -25,21 +25,20 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.ViewPager;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.app.GsaCloudApplication;
import com.gingersoft.gsa.cloud.common.constans.FoodSummaryConstans;
import com.gingersoft.gsa.cloud.common.constans.MealConstant;
import com.gingersoft.gsa.cloud.common.core.member.MemberInfo;
import com.gingersoft.gsa.cloud.common.core.table.TableBean;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils;
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.Food;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
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;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.order.discount.MultyDiscount;
import com.gingersoft.gsa.cloud.order.order.BaseOrder;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
import com.gingersoft.gsa.cloud.table.BuildConfig;
......@@ -47,43 +46,42 @@ import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.di.component.DaggerSetMealComponent;
import com.gingersoft.gsa.cloud.table.mvp.contract.SetMealContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood;
import com.gingersoft.gsa.cloud.table.mvp.presenter.mealstand.SetMealPresenter;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity2;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderContentActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ComboAdapter;
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.FineItemAllFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.discount.CouponFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.discount.NomalDiscountFragment;
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.TabFragmentAdapter;
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.view.MyTableView;
import com.gingersoft.gsa.cloud.ui.view.base.NoScrollRecyclerView;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.jess.arms.base.BaseFragment;
import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.alpha.QMUIAlphaTextView;
import org.simple.eventbus.Subscriber;
import org.simple.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import butterknife.OnLongClick;
import dagger.Lazy;
import static com.jess.arms.utils.Preconditions.checkNotNull;
......@@ -138,10 +136,6 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
LinearLayout llKeys;
@BindView(R2.id.ll_meals)
LinearLayout llMeals;
// @BindView(R2.id.fl_container)
// FrameLayout flContainer;
@BindView(R2.id.rv_food_group)
RecyclerView rvFoodGroup;
@BindView(R2.id.ll_food_group_point)
......@@ -150,50 +144,56 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
LinearLayout llFoodGroup;
@BindView(R2.id.rv_food)
RecyclerView rvFood;
@BindView(R2.id.vb_combo_modifier)
ViewStub vbComboModifier;
RecyclerView rvCombo;
RecyclerView rvModifier;
@BindView(R2.id.vb_fine)
ViewStub vbFine;
MyTableView tabLayoutFine;
ViewPager viewPagerFine;
// @Inject
// @Named("foodGroupList")
// List<Food> mFoodGroupList;
// @Inject
// @Named("foodList")
// List<Food> mFoodList;
// @Inject
// Lazy<List<ComboItem>> mComboList; //套餐细项数据
// @Inject
// Lazy<List<Modifier>> mModifierList; //细项数据
@BindView(R2.id.ll_food_container)
LinearLayout llFoodContainer;
@BindView(R2.id.rv_combo)
NoScrollRecyclerView rvCombo;
@BindView(R2.id.rv_modifier)
NoScrollRecyclerView rvModifier;
@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)
ViewPager pagerFine;
@BindView(R2.id.btn_select_all)
QMUIAlphaTextView btnSelectAll;
@BindView(R2.id.btn_anti_selection)
QMUIAlphaTextView btnAntiSelection;
@BindView(R2.id.btn_taste)
QMUIAlphaTextView btnTaste;
@BindView(R2.id.btn_msg)
QMUIAlphaTextView btnMsg;
@BindView(R2.id.btn_delete)
QMUIAlphaTextView btnDelete;
@BindView(R2.id.btn_end)
QMUIAlphaTextView btnEnd;
@BindView(R2.id.ll_modify)
LinearLayout llModify;
@BindView(R2.id.fl_container)
LinearLayout flContainer;
@Inject
FoodGroupAdapter mFoodGroupAdapter;
@Inject
FoodAdapter mFoodAdapter;
@Inject
Lazy<ComboAdapter> mComboAdapter;
ComboAdapter mComboAdapter;
@Inject
Lazy<ModifierAdapter> mModifierAdapter;
ModifierAdapter mModifierAdapter;
@Named("foodGridLayoutManager")
@Inject
GridLayoutManager mFoodRecycleLayoutManager;
@Named("comboGridLayoutManager")
@Inject
Lazy<GridLayoutManager> mComboRecycleLayoutManager;
GridLayoutManager mComboRecycleLayoutManager;
@Named("modifierGridLayoutManager")
@Inject
Lazy<GridLayoutManager> mModifierRecycleLayoutManager;
GridLayoutManager mModifierRecycleLayoutManager;
@Inject
@Named("fineTabTitles")
Lazy<List<String>> mFineTabTitles;
private SparseArray<View> map = new SparseArray<>(10);
......@@ -208,14 +208,16 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
private int mCurrentViewMode;
private boolean isPluMode = false;
/**
* 是否已初始化 公共細項佈局
*/
private boolean initFineLayout = false;
/**
* 是否已初始化 已送單的折扣
*/
private boolean initSentOrderDiscount = false;
private ImageView[] ivPoints;
private int mPageIndex;
private int totalPage;
private int foodGroupRow = 2;
......@@ -250,9 +252,10 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
initUIStyleConfiguration();
initViewMap();
initFoodAdapter();
initFoodLayoutManager();
initFoodItemClickListener();
initAdapter();
initLayoutManager();
initItemClickListener();
mPresenter.initMealData();
}
@Override
......@@ -264,6 +267,23 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
initTableInfo();
}
@Override
@Subscriber(tag = SET_CURR_LAYOUT_EVENT, mode = ThreadMode.MAIN)
public void setCurrLayout(byte layout) {
mCurrLayout = layout;
switch (layout) {
case COMBO_LAYOUT:
showViewModeVisibility(MealConstant.combo_ViewMode);
break;
case FINE_LAYOUT:
showViewModeVisibility(MealConstant.fine_ViewMode);
break;
default:
showViewModeVisibility(MealConstant.food_group_ViewMode, MealConstant.food_ViewMode);
break;
}
}
private void initUIStyleConfiguration() {
foodGroupColumn = GsaCloudApplication.uiStyleConfiguration.getFoodGroupColumnValue();
foodGroupRow = GsaCloudApplication.uiStyleConfiguration.getFoodGroupRowValue();
......@@ -275,8 +295,8 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
private void initViewMap() {
map.put(MealConstant.food_group_ViewMode, llFoodGroup);
map.put(MealConstant.food_ViewMode, rvFood);
map.put(MealConstant.combo_ViewMode, vbComboModifier);
map.put(MealConstant.fine_ViewMode, vbFine);
map.put(MealConstant.combo_ViewMode, scrollCombo);
map.put(MealConstant.fine_ViewMode, llFine);
}
private void initTableInfo() {
......@@ -291,70 +311,7 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
}
}
@Subscriber(tag = SET_CURR_LAYOUT_EVENT, mode = ThreadMode.MAIN)
private void setCurrLayout(byte layout) {
mCurrLayout = layout;
switch (layout) {
case COMBO_LAYOUT:
showComboModifierLayout();
break;
case FINE_LAYOUT:
showFineLayout();
break;
default:
showViewModeVisibility(MealConstant.food_group_ViewMode, MealConstant.food_ViewMode);
break;
}
}
private void showComboModifierLayout() {
try {
View vsContent = vbComboModifier.inflate();
rvCombo = vsContent.findViewById(R.id.rv_combo);
rvModifier = vsContent.findViewById(R.id.rv_modifier);
initComboAdapter();
initComboLayoutManager();
initComboItemClickListener();
} catch (Exception e) {
} finally {
showViewModeVisibility(MealConstant.combo_ViewMode);
}
}
private void showFineLayout() {
try {
View vsContent = vbFine.inflate();
tabLayoutFine = vsContent.findViewById(R.id.tab_fine);
viewPagerFine = vsContent.findViewById(R.id.pager_fine);
initFineViewPager();
} catch (Exception e) {
} finally {
showViewModeVisibility(MealConstant.fine_ViewMode);
}
}
private void initFineViewPager() {
List<String> tabTitles = mFineTabTitles.get();
MemberInfo memberInfo = DoshokuOrder.getInstance().getMemberInfo();
if (memberInfo != null) {
tabTitles.add("優惠券");
}
tabLayoutFine.setTitles(tabTitles);
List<Fragment> mFragments = new ArrayList<>();
mFragments.add(FineItemAllFragment.newInstance());
mFragments.add(FineItemAllFragment.newInstance());
//实例化适配器
TabFragmentAdapter mTabFragmentAdapter = new TabFragmentAdapter(getParentFragmentManager(), 1);
//设置加载的Fragment集合
mTabFragmentAdapter.setFragments(mFragments);
//设置Viewpager的适配器
viewPagerFine.setAdapter(mTabFragmentAdapter);
//TabLayout绑定ViewPager
tabLayoutFine.setTitles(tabTitles).setupWithViewPager(viewPagerFine);
}
private void initFoodAdapter() {
private void initAdapter() {
mPresenter.initSelectMealAdapter(rvSelectMeal);
if (mFoodGroupAdapter != null) {
rvFoodGroup.setAdapter(mFoodGroupAdapter);
......@@ -362,16 +319,30 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
if (mFoodAdapter != null) {
rvFood.setAdapter(mFoodAdapter);
}
if (mComboAdapter != null) {
rvCombo.setAdapter(mComboAdapter);
}
if (mModifierAdapter != null) {
rvModifier.setAdapter(mModifierAdapter);
}
}
private void initFoodLayoutManager() {
private void initLayoutManager() {
if (mFoodRecycleLayoutManager != null) {
rvFood.setLayoutManager(mFoodRecycleLayoutManager);
rvFood.setItemAnimator(new DefaultItemAnimator());
}
if (mComboRecycleLayoutManager != null) {
rvCombo.setLayoutManager(mComboRecycleLayoutManager);
rvCombo.setItemAnimator(new DefaultItemAnimator());
}
if (mModifierRecycleLayoutManager != null) {
rvModifier.setLayoutManager(mModifierRecycleLayoutManager);
rvModifier.setItemAnimator(new DefaultItemAnimator());
}
}
public void initFoodItemClickListener() {
public void initItemClickListener() {
mFoodAdapter.setOnItemClickListener(new FoodAdapter.OnItemClickListener() {
@Override
......@@ -381,10 +352,7 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
LoganManager.w_tableMode(TAG, LoganManager.EVENT_ADD + "食品【" + datasBean.getFoodName() + "】");
}
});
}
private void initComboItemClickListener() {
mComboAdapter.get().setOnItemClickListener(new ComboAdapter.OnItemClickListener() {
mComboAdapter.setOnItemClickListener(new ComboAdapter.OnItemClickListener() {
@Override
public void onItemClick(ComboItem datasBean, int position) {
......@@ -393,7 +361,7 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
LoganManager.w_tableMode(TAG, LoganManager.EVENT_ADD + "子食品【" + datasBean.getName() + "】");
}
});
mModifierAdapter.get().setOnItemClickListener(new ModifierAdapter.OnItemClickListener() {
mModifierAdapter.setOnItemClickListener(new ModifierAdapter.OnItemClickListener() {
@Override
public void onItemClick(Modifier datasBean, int position) {
mActivity.recordOperat(true);
......@@ -403,23 +371,65 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
});
}
private void initComboAdapter() {
if (mComboAdapter != null) {
rvCombo.setAdapter(mComboAdapter.get());
/**
* 显示公共細項
*/
public void showFineLayout(int currFinePage) {
//没有初始化细项布局则初始化
if (!initFineLayout) {
initFineLayout = true;
initFineViewPager();
} else {
pagerFine.setCurrentItem(currFinePage);
}
if (mModifierAdapter != null) {
rvModifier.setAdapter(mModifierAdapter.get());
setCurrLayout(SetMealFragment.FINE_LAYOUT);
}
private void initFineViewPager() {
String[] fineTitles = {"口味", "信息"};
List<Fragment> mFragments = new ArrayList<>();
FineChildAllFragment modSasteFineItemFragment = FineChildAllFragment.newInstance();
FineChildAllFragment modMsgFineItemFragment = FineChildAllFragment.newInstance();
mFragments.add(modSasteFineItemFragment);
mFragments.add(modMsgFineItemFragment);
//实例化适配器
TabFragmentAdapter mTabFragmentAdapter = new TabFragmentAdapter(getChildFragmentManager(), 1);
//设置加载的Fragment集合
mTabFragmentAdapter.setFragments(mFragments);
//设置Viewpager的适配器
pagerFine.setAdapter(mTabFragmentAdapter);
//TabLayout绑定ViewPager
tabFine.setTitles(Arrays.asList(fineTitles)).setupWithViewPager(pagerFine);
loadFineItemData(modSasteFineItemFragment, modMsgFineItemFragment);
}
private void initComboLayoutManager() {
if (mComboRecycleLayoutManager != null) {
rvCombo.setLayoutManager(mComboRecycleLayoutManager.get());
rvCombo.setItemAnimator(new DefaultItemAnimator());
private void loadFineItemData(FineChildAllFragment modMsgFineItemFragment, FineChildAllFragment modSasteFineItemFragment) {
if (modMsgFineItemFragment == null || modSasteFineItemFragment == null) {
return;
}
if (mModifierRecycleLayoutManager != null) {
rvModifier.setLayoutManager(mModifierRecycleLayoutManager.get());
rvModifier.setItemAnimator(new DefaultItemAnimator());
long productId = 0;
if (mPresenter.getCurrentOrderDetailBean() != null) {
productId = mPresenter.getCurrentOrderDetailBean().getProductId();
}
if (mPresenter.getSelectMealAdapter().getSelectedMode() == SelectMealAdapter.SINGLE_SELECTED) {
modMsgFineItemFragment.loadModMsgData(productId);
modSasteFineItemFragment.loadModSasteData(productId);
} else {
modMsgFineItemFragment.loadModCommData(productId);
modSasteFineItemFragment.loadModSasteData(productId);
}
/**
* 設置沽清數據
*/
List<SoldoutCtrFood> slodoutListFull = mPresenter.getSoldoutCtrList();
if (modMsgFineItemFragment != null) {
modMsgFineItemFragment.setModifierSoldoutFoodList_Full(slodoutListFull);
modMsgFineItemFragment.updateParentModifierSlodoutFoodList_Full();
}
if (modSasteFineItemFragment != null) {
modSasteFineItemFragment.setModifierSoldoutFoodList_Full(slodoutListFull);
modSasteFineItemFragment.updateParentModifierSlodoutFoodList_Full();
}
}
......@@ -428,21 +438,23 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
}
@Override
public void showLoading(String message) {
if (message != null)
LoadingDialog.showDialogForLoading(_mActivity, message, true);
else
LoadingDialog.showDialogForLoading(_mActivity);
}
@Override
public void hideLoading() {
LoadingDialog.cancelDialogForLoading();
}
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.snackbarText(message);
ArmsUtils.makeText(_mActivity, message);
}
@Override
......@@ -457,6 +469,24 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
}
@Override
public void setCustomFoodDialog(int customType, OrderDetail foodItem) {
new CustomFoodDialog(mContext, customType)
.create(R.style.MyEditDialogTheme)
.setOnEditListener((dialog, name, money) -> {
dialog.dismiss();
if (customType == Food.CUSTOM_TYPE_101) {
foodItem.setProductName(name);
}
if (!TextUtils.isEmpty(money)) {
foodItem.setUnit_price(Double.parseDouble(money));
foodItem.setPrice(foodItem.getUnit_price());
mPresenter.toAddFoodItem(foodItem);
}
})
.show();
}
@Override
public void setFoodGroupRecycleSpanCount(int size) {
notifyFoodGroupAdapter();
}
......@@ -464,39 +494,36 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
@Override
public void setFoodRecycleSpanCount(int size) {
if (size > 0) {
if (size > foodColumn) {
if (size >= foodColumn) {
mFoodRecycleLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mFoodRecycleLayoutManager.setSpanCount(foodColumn);
} else {
//只有一行就使用水平显示以免不能占满
mFoodRecycleLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
}
notifyFoodAdapter();
rvFood.setLayoutManager(mFoodRecycleLayoutManager);
}
notifyFoodAdapter();
}
@Override
public void setComboRecycleSpanCount(int size) {
if (size > 0) {
// if (size > comboRow) {
mComboRecycleLayoutManager.get().setOrientation(LinearLayoutManager.VERTICAL);
mComboRecycleLayoutManager.get().setSpanCount(comboColumn);
notifyComboAdapterAdapter();
// } else if (size <= ComboColCount) {
// } else {
// //只有一行就使用水平显示以免不能占满
// setComboRecycleLayoutManager(LinearLayoutManager.HORIZONTAL);
// }
mComboRecycleLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mComboRecycleLayoutManager.setSpanCount(comboColumn);
rvCombo.setLayoutManager(mComboRecycleLayoutManager);
}
notifyComboAdapterAdapter();
}
@Override
public void setModifierRecycleSpanCount(int size) {
if (size > 0) {
mModifierRecycleLayoutManager.get().setOrientation(LinearLayoutManager.VERTICAL);
mModifierRecycleLayoutManager.get().setSpanCount(modColumn);
notifyModifierAdapterAdapter();
mModifierRecycleLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mModifierRecycleLayoutManager.setSpanCount(modColumn);
rvModifier.setLayoutManager(mModifierRecycleLayoutManager);
}
notifyModifierAdapterAdapter();
}
@Override
......@@ -537,7 +564,12 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
@Override
public void showModifyLayoutVisibility(boolean show) {
if (show) {
llModify.setVisibility(View.VISIBLE);
} else {
llModify.setVisibility(View.INVISIBLE);
}
mActivity.showStandOperLayoutVisibility(show);
}
@Override
......@@ -643,26 +675,6 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
}
@Override
public void returnFoodGroupList(List<Food> foodGroupList) {
}
@Override
public void returnFoodList(List<Food> foodList) {
}
@Override
public void returnFoodComboList(List<ComboItem> comboList) {
}
@Override
public void returnModifierList(List<Modifier> modifierList) {
}
@Override
public void notifyFoodGroupAdapter() {
mFoodGroupAdapter.notifyDataSetChanged();
}
......@@ -674,12 +686,12 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
@Override
public void notifyComboAdapterAdapter() {
mComboAdapter.get().notifyDataSetChanged();
mComboAdapter.notifyDataSetChanged();
}
@Override
public void notifyModifierAdapterAdapter() {
mModifierAdapter.get().notifyDataSetChanged();
mModifierAdapter.notifyDataSetChanged();
}
@Override
......@@ -711,7 +723,7 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
public boolean onLongClick1(View view) {
//记录操作 并且震动
// recordOperat(true);
recordOperat(true);
//
// int id = view.getId();
// if (id == R.id.btn_meal_delete) {
......@@ -768,7 +780,7 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
}
@OnClick({R2.id.btn_key1, R2.id.btn_key2, R2.id.btn_key3, R2.id.btn_key4, R2.id.btn_key5, R2.id.btn_keys,
R2.id.btn_numberman, R2.id.btn_fid, R2.id.btn_meal_delete, R2.id.btn_meal_modify_restore,
R2.id.btn_table, R2.id.btn_numberman, R2.id.btn_fid, R2.id.btn_meal_delete, R2.id.btn_meal_modify_restore,
R2.id.btn_taste, R2.id.btn_msg, R2.id.btn_delete, R2.id.btn_end})
public void onClick(View v) {
......@@ -788,7 +800,9 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
//防抖處理
int id = v.getId();
if (id == R.id.btn_numberman) {
if (id == R.id.btn_table) {
showRiceponMemberDialogFragment();
} else if (id == R.id.btn_numberman) {
if (!BaseOrder.isTableToMeal()) {
return;
}
......@@ -796,7 +810,7 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
} else if (id == R.id.btn_fid) {
//搜索
if (mCurrentViewMode == MealConstant.ViewMode_keys) {
showViewModeVisibility(MealConstant.food_group_ViewMode, MealConstant.food_ViewMode);
setCurrLayout(SetMealFragment.FOOD_LAYOUT);
SPUtils.put(MealConstant.EXIT_IS_PLU_MODE, false);
} else {
showViewModeVisibility(MealConstant.ViewMode_keys);
......@@ -809,30 +823,28 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
// }
// mPresenter.deleteFoodItem(1);
showViewModeVisibility(MealConstant.food_group_ViewMode, MealConstant.food_ViewMode);
setCurrLayout(SetMealFragment.FOOD_LAYOUT);
SPUtils.put(MealConstant.EXIT_IS_PLU_MODE, false);
setPluMode();
} else if (id == R.id.btn_meal_modify_restore) {
// mPresenter.restoreDeleteFood();
showBtnMealModifyRestoreVisibility(false);
} else if (id == R.id.btn_taste) {
// currentFinePage = 0;
// showRemarkLayout();
showFineLayout(0);
} else if (id == R.id.btn_msg) {
// currentFinePage = 1;
// showRemarkLayout();
showFineLayout(1);
} else if (id == R.id.btn_delete) {
// if (mPresenter.getSelectMealAdapter().getSelectedMode() == SelectMealAdapter.SINGLE_SELECTED) {
// //只有單選操作的時候可以刪除子項
// mPresenter.deleteChildItem();
// }
} else if (id == R.id.btn_end) {
// mPresenter.getSelectMealAdapter().setSelectedMode(SelectMealAdapter.SINGLE_SELECTED);
// btn_delete.setVisibility(View.VISIBLE);
// setSelectFunctionVisibility(View.GONE);
// //從多選頁離開 重置選中
// mPresenter.resetSelected();
// showViewModeVisibility(MealConstant.food_group_ViewMode, MealConstant.food_ViewMode);
mPresenter.getSelectMealAdapter().setSelectedMode(SelectMealAdapter.SINGLE_SELECTED);
btnDelete.setVisibility(View.VISIBLE);
setSelectFunctionVisibility(View.GONE);
//從多選頁離開 重置選中
mPresenter.resetSelected();
setCurrLayout(SetMealFragment.FOOD_LAYOUT);
} else if (id == R.id.btn_key1 || id == R.id.btn_key2 || id == R.id.btn_key3 || id == R.id.btn_key4 || id == R.id.btn_key5 || id == R.id.btn_keys) {
int i = Integer.parseInt(v.getTag().toString());
......@@ -896,7 +908,6 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
@Override
public void onPageSelect(int pageIndex) {
mPageIndex = pageIndex;
LoganManager.w_tableMode(TAG, LoganManager.EVENT_SCOLL + "食品組頁=" + (pageIndex + 1));
for (int i = 0; i < totalPage; i++) {
if (i == pageIndex) {
......@@ -906,4 +917,31 @@ public class SetMealFragment extends BaseFragment<SetMealPresenter> implements S
}
}
}
private void setSelectFunctionVisibility(int visibility) {
btnAntiSelection.setVisibility(visibility);
btnSelectAll.setVisibility(visibility);
}
private void showRiceponMemberDialogFragment() {
RiceponMemberDialogFragment dialogFragment = RiceponMemberDialogFragment.newInstance(DoshokuOrder.getInstance().getOpenTableInfo());
dialogFragment.setOnUseMemberListener(new RiceponMemberDialogFragment.OnUseMemberListener() {
@Override
public void onUseMember(MemberInfo memberInfo) {
if (memberInfo == null) {
btnTable.setBackgroundColor(Color.parseColor("#336699"));
} else {
btnTable.setBackgroundResource(R.color.pink_300);
//添加会员折扣行
ShoppingCart shoppingCart = mPresenter.getShoppingCart();
MultyDiscount multyDiscount = shoppingCart.createMemberDiscount(memberInfo, BillItem.BILL_ITEM_NO_ORDER_STATUS);
shoppingCart.addMultyDiscount(multyDiscount);
DoshokuOrder.getInstance().setBillItemStatus(DoshokuOrder.MEMBER_ITEM_TAG);
mPresenter.updateBillInfo();
}
DoshokuOrder.getInstance().setMemberInfo(memberInfo);
}
});
dialogFragment.show(getChildFragmentManager(), dialogFragment.getClass().getSimpleName());
}
}
......@@ -277,11 +277,6 @@ public class UseMemberDialog extends Dialog {
recycler_member_info.setLayoutManager(mLayoutManager);
}
public void setAdapter(BaseQuickAdapter adapter) {
recycler_member_info.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
private RecyclerView.LayoutManager createLayoutManager() {
return new LinearLayoutManager(mContext) {
@Override
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="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">
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="@dimen/tabIndicator_height"
android:background="@color/white"
app:tabIndicator="@drawable/tablayout_indicator"
app:tabIndicatorColor="@color/theme_color"
app:tabIndicatorFullWidth="false"/>
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:background="@color/theme_background_color"
android:orientation="vertical">
<com.qmuiteam.qmui.widget.QMUITopBar
android:id="@+id/topbar"
android:layout_width="match_parent"
android:layout_height="@dimen/head_height"
app:qmui_topbar_title_color="@color/theme_white_color" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/ll_input_phone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dp_20"
android:orientation="horizontal">
<com.rengwuxian.materialedittext.MaterialEditText
android:id="@+id/ed_phone"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="請輸入手機號"
android:lines="1"
android:textSize="@dimen/sp_14"
android:inputType="number"
android:background="@drawable/table_shape_input_table_number_frame"
app:met_autoValidate="true"
app:met_baseColor="@color/theme_black"
app:met_clearButton="true"
app:met_floatingLabel="highlight"
app:met_iconPadding="2dp"
app:met_primaryColor="@color/theme_color"
app:met_singleLineEllipsis="false" />
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id="@+id/btn_query_memeber"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_40"
android:layout_marginLeft="@dimen/dp_10"
android:background="@color/theme_color"
android:text="查詢"
android:textColor="@color/theme_white_color" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_memeber_info"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/ll_input_phone"
android:layout_above="@+id/btn_scan"/>
<ImageView
android:id="@+id/iv_no_data"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/png_no_record"
android:layout_centerInParent="true"
android:visibility="invisible"/>
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id="@+id/btn_scan"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_40"
android:layout_margin="@dimen/dp_20"
android:layout_alignParentBottom="true"
android:background="@color/theme_color"
android:text="掃碼"
android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_14"
android:textStyle="bold"/>
<LinearLayout
android:id="@+id/ll_bottom"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_40"
android:layout_alignParentBottom="true"
android:orientation="horizontal"
android:visibility="invisible">
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id="@+id/btn_use_member"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="bottom"
android:layout_weight="1"
android:background="@color/green_400"
android:clickable="true"
android:text="使用會員"
android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_14" />
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id="@+id/btn_clear_member"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="bottom"
android:layout_weight="1"
android:background="@color/blue_400"
android:clickable="true"
android:visibility="visible"
android:text="清除"
android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_14" />
</LinearLayout>
</RelativeLayout>
</LinearLayout>
\ No newline at end of file
......@@ -56,7 +56,8 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/ll_input_phone"
android:layout_above="@+id/btn_scan"/>
android:layout_above="@+id/btn_scan"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>
<ImageView
android:id="@+id/iv_no_data"
......
......@@ -3,7 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/scroll_combo"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
......
<?xml version="1.0" encoding="utf-8"?>
<merge
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/ll_food_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
......@@ -41,23 +42,29 @@
android:orientation="vertical" />
</LinearLayout>
<ViewStub
android:id="@+id/vb_combo_modifier"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout="@layout/meal_layout_combo_modifier" />
<include layout="@layout/meal_layout_combo_modifier"/>
<!-- <ViewStub-->
<!-- android:id="@+id/vb_combo_modifier"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_above="@+id/ll_modify"-->
<!-- android:layout_below="@+id/ll_food_container"-->
<!-- android:layout="@layout/meal_layout_combo_modifier" />-->
<ViewStub
android:id="@+id/vb_fine"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout="@layout/meal_layout_meal_fine" />
<include layout="@layout/meal_layout_meal_fine"/>
<!-- <ViewStub-->
<!-- android:id="@+id/vb_fine"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_above="@+id/ll_modify"-->
<!-- android:layout_below="@+id/ll_food_container"-->
<!-- android:layout="@layout/meal_layout_meal_fine" />-->
<LinearLayout
android:id="@+id/ll_modify"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_45"
android:layout_gravity="bottom"
android:layout_alignParentBottom="true"
android:visibility="invisible">
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
......@@ -135,4 +142,4 @@
android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_14" />
</LinearLayout>
</merge>
\ No newline at end of file
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/ll_meals"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_260"
......@@ -126,7 +127,8 @@
android:layout_height="match_parent"
android:divider="@null"
android:fadeScrollbars="false"
android:orientation="vertical" />
android:orientation="vertical"
app:layoutManager="com.gingersoft.gsa.cloud.ui.recylcler.RecyclerViewNoBugLinearLayoutManager"/>
</LinearLayout>
<LinearLayout
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent">
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll_fine"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.gingersoft.gsa.cloud.ui.view.MyTableView
android:id="@+id/tab_fine"
......
......@@ -335,16 +335,39 @@
</RelativeLayout>
</androidx.core.widget.NestedScrollView>
<!-- <LinearLayout-->
<!-- android:id="@+id/ll_discount"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_above="@+id/ll_stand_oper"-->
<!-- android:layout_below="@+id/ll_meals"-->
<!-- android:visibility="gone">-->
<!-- -->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_discount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/ll_stand_oper"
android:layout_below="@+id/ll_meals"
android:divider="@null"
android:fadeScrollbars="false"
android:orientation="vertical"
android:visibility="gone" />
android:visibility="gone"/>
<!-- <androidx.recyclerview.widget.RecyclerView-->
<!-- android:id="@+id/rv_coupon"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:divider="@null"-->
<!-- android:fadeScrollbars="false"-->
<!-- android:orientation="vertical"-->
<!-- android:visibility="gone" />-->
<!-- </LinearLayout>-->
<FrameLayout
android:id="@+id/fl_discount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/ll_stand_oper"
android:layout_below="@+id/ll_meals" />
<FrameLayout
android:id="@+id/fl_container"
......
......@@ -6,12 +6,6 @@
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- <com.qmuiteam.qmui.widget.QMUITopBar-->
<!-- android:id="@+id/topbar"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="@dimen/head_height"-->
<!-- app:qmui_topbar_title_color="@color/theme_white_color" />-->
<com.qmuiteam.qmui.widget.tab.QMUITabSegment
android:id="@+id/tabSegment"
android:layout_width="match_parent"
......
......@@ -7,8 +7,8 @@ ext {
targetSdkVersion : 29,
//正式版: 1.0.3 3
//內部測試版:1.2.0 20
versionCode : 32,
versionName : "1.3.2"
versionCode : 33,
versionName : "1.3.3"
]
version = [
......
......@@ -42,6 +42,7 @@ import com.gingersoft.gsa.cloud.common.utils.AppDevices;
import com.gingersoft.gsa.cloud.common.utils.crash.AppCrashHandler;
import com.gingersoft.gsa.cloud.common.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.common.utils.other.SPUtils;
import com.gingersoft.gsa.cloud.common.utils.threadPool.ThreadPoolManager;
import com.gingersoft.gsa.cloud.component.ComponentAction;
import com.gingersoft.gsa.cloud.component.ComponentName;
import com.gingersoft.gsa.cloud.database.DaoManager;
......@@ -54,6 +55,7 @@ import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
import com.scwang.smartrefresh.layout.header.ClassicsHeader;
import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import com.xuexiang.rxutil2.rxjava.RxSchedulerUtils;
import com.xuexiang.rxutil2.rxjava.task.RxIOTask;
import java.io.File;
......@@ -123,6 +125,9 @@ public class GsaCloudApplication extends BaseApplication {
@Override
public Void doInIOThread(Object o) {
LoganManager.w_action(TAG, "init start.....");
//设置自定义RxJava的线程池
RxSchedulerUtils.setIOExecutor(ThreadPoolManager.getInstence().getExecutor());
//初始化設備唯一ID
initDeviceId();
//初始化Hyweb支付回調
......
package com.gingersoft.gsa.cloud.common.core.discount;
import com.gingersoft.gsa.cloud.database.bean.Discount;
/**
* @作者: bin
* @創建時間: 2021-04-07 15:45
* @更新時間: 2021-04-07 15:45
* @描述:
*/
public class BillDiscount extends AbstractDiscount {
public class NomalDiscount extends Discount {
}
......@@ -112,5 +112,9 @@ public class ThreadPoolManager {
}
}
};
public ThreadPoolExecutor getExecutor() {
return mThreadPoolExecutor;
}
}
package com.gingersoft.gsa.cloud.common.core.discount;
package com.gingersoft.gsa.cloud.database;
import org.greenrobot.greendao.annotation.Transient;
import lombok.Data;
/**
* @作者: bin
......@@ -6,7 +10,15 @@ package com.gingersoft.gsa.cloud.common.core.discount;
* @更新時間: 2021-04-07 15:44
* @描述:
*/
@Data
public abstract class AbstractDiscount {
/**
* 折扣類型
* 0#折扣
* 1#優惠券
*/
@Transient
protected byte abstractDiscountType = DiscountConstact.DISCOUNT_TYPE;
}
package com.gingersoft.gsa.cloud.database;
/**
* @作者: bin
* @創建時間: 2021-04-24 9:54
* @更新時間: 2021-04-24 9:54
* @描述:
*/
public interface DiscountConstact {
/**
* 折扣類型
*/
byte DISCOUNT_TYPE = 0;
/**
* 會員優惠券類型
*/
byte MEMBER_COUPON_TYPE = 1;
/**
* 會員錢包券類型
*/
byte WALLET_COUPON_TYPE = 2;
}
......@@ -2,6 +2,8 @@ package com.gingersoft.gsa.cloud.database.bean;
import androidx.annotation.NonNull;
import com.gingersoft.gsa.cloud.database.AbstractDiscount;
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Generated;
import org.greenrobot.greendao.annotation.Id;
......@@ -22,8 +24,7 @@ import lombok.Data;
*/
@Data
@Entity
public class Discount implements Cloneable {
public class Discount extends AbstractDiscount implements Cloneable {
/**
* ID
......@@ -423,7 +424,6 @@ public class Discount implements Cloneable {
return this.pause;
}
@NonNull
@Override
public Discount clone() {
......
......@@ -9,7 +9,7 @@ import lombok.Data;
* 版本:1.6.0
* 创建日期:2020-09-12
* 修订历史:2020-09-12
* 描述:优惠券折扣实体
* 描述:會員优惠券折扣实体
*/
@Data
public class CouponDiscountBean {
......
package com.gingersoft.gsa.cloud.common.core.discount;
package com.gingersoft.gsa.cloud.order.bean.discount;
import androidx.annotation.NonNull;
import com.gingersoft.gsa.cloud.database.AbstractDiscount;
import com.gingersoft.gsa.cloud.database.DiscountConstact;
import com.gingersoft.gsa.cloud.database.bean.Discount;
import lombok.Data;
......@@ -8,10 +12,10 @@ import lombok.Data;
* @作者: bin
* @創建時間: 2021-04-07 15:45
* @更新時間: 2021-04-07 15:45
* @描述:
* @描述: 會員錢包優惠券
*/
@Data
public class MemberCoupon extends AbstractDiscount {
public class MemberWalletCoupon extends AbstractDiscount implements Cloneable {
private long id;
private String couponTypeName;
......@@ -26,16 +30,42 @@ public class MemberCoupon extends AbstractDiscount {
private String couponNo;
private int useTimes;
public MemberWalletCoupon(MemberWalletCoupon coupon) {
this.id = coupon.id;
this.couponTypeName = coupon.couponTypeName;
this.beginDate = coupon.beginDate;
this.endDate = coupon.endDate;
this.periodDays = coupon.periodDays;
this.upperLimitTimes = coupon.upperLimitTimes;
this.billMinAmount = coupon.billMinAmount;
this.amount = coupon.amount;
this.discount = coupon.discount;
this.remark = coupon.remark;
this.couponNo = coupon.couponNo;
this.useTimes = coupon.useTimes;
}
public Discount castDiscount() {
Discount discountBean = new Discount();
discountBean.setId(id);
discountBean.setAbstractDiscountType(DiscountConstact.WALLET_COUPON_TYPE);
discountBean.setDiscountValue(discount);
discountBean.setAmount(amount);
discountBean.setMinBillAmount(billMinAmount);
discountBean.setRemark(remark);
discountBean.setRemark(couponTypeName);
discountBean.setBeginTime(beginDate);
discountBean.setEndTime(endDate);
return discountBean;
}
@NonNull
@Override
public MemberWalletCoupon clone() {
try {
return (MemberWalletCoupon) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new MemberWalletCoupon(this);
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.order.bean.request;
import com.gingersoft.gsa.cloud.order.billItem.DiscountItem;
import com.gingersoft.gsa.cloud.order.discount.MemberDiscount;
import com.gingersoft.gsa.cloud.order.discount.MemberLevelDiscount;
import com.gingersoft.gsa.cloud.order.discount.NomalDiscount;
import lombok.Data;
......@@ -62,7 +62,7 @@ public class OrderDiscountRequest {
OrderDiscountRequest request = new OrderDiscountRequest();
request.setType(MEMBER_DISCOUNT);
if(discount.getDiscount() != null) {
MemberDiscount memberDiscount = (MemberDiscount) discount.getDiscount();
MemberLevelDiscount memberDiscount = (MemberLevelDiscount) discount.getDiscount();
request.setMemberId(memberDiscount.getMemberDiscount().getId());
// request.setMemberDiscountRate((int) memberDiscount.getDiscount().getDiscount_value());
}
......
......@@ -4,11 +4,13 @@ import com.gingersoft.gsa.cloud.common.core.member.MemberInfo;
import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails;
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.billItem.BillItem;
import com.gingersoft.gsa.cloud.order.billItem.DiscountItem;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.order.discount.CouponDiscount;
import com.gingersoft.gsa.cloud.order.discount.MemberDiscount;
import com.gingersoft.gsa.cloud.order.discount.MemberCouponDiscount;
import com.gingersoft.gsa.cloud.order.discount.MemberLevelDiscount;
import com.gingersoft.gsa.cloud.order.discount.MemberWalletCouponDiscount;
import com.gingersoft.gsa.cloud.order.discount.MultyDiscount;
import com.gingersoft.gsa.cloud.order.discount.NomalDiscount;
......@@ -60,8 +62,8 @@ public class ShoppingCart {
* 折扣列表
*
* @see NomalDiscount
* @see MemberDiscount
* @see CouponDiscount
* @see MemberLevelDiscount
* @see MemberCouponDiscount
*/
protected List<MultyDiscount> multyDiscountList;
/**
......@@ -226,22 +228,32 @@ public class ShoppingCart {
* @param discount
* @return
*/
public MultyDiscount addMemberDiscountToLinked(MultyDiscount multyDiscounts, MemberInfo discount, int status) {
MultyDiscount memberDiscount = new MemberDiscount(discount.getMemberName(), status, multyDiscounts, discount);
return memberDiscount;
public MultyDiscount addMemberLevelDiscountToLinked(MultyDiscount multyDiscounts, MemberInfo discount, int status) {
MultyDiscount memberLevelDiscount = new MemberLevelDiscount(discount.getMemberName(), status, multyDiscounts, discount);
return memberLevelDiscount;
}
/**
* 將優惠券折扣添加到鏈條中
* 將會員優惠券折扣添加到鏈條中
*
* @param discount
* @return
*/
public MultyDiscount addCouponDiscountToLinked(MultyDiscount multyDiscounts, CouponDiscountBean discount, int status) {
MultyDiscount couponDiscount = new CouponDiscount(discount.getName(), status, multyDiscounts, discount);
public MultyDiscount addMemberCouponDiscountToLinked(MultyDiscount multyDiscounts, CouponDiscountBean discount, int status) {
MultyDiscount couponDiscount = new MemberCouponDiscount(discount.getName(), status, multyDiscounts, discount);
return couponDiscount;
}
/**
* 將會員錢包折扣添加到鏈條中
*
* @param walletCoupon
* @return
*/
public MultyDiscount addMemberWalletCouponDiscountToLinked(MultyDiscount multyDiscounts, MemberWalletCoupon walletCoupon, int status) {
MultyDiscount couponDiscount = new MemberWalletCouponDiscount(walletCoupon.getCouponTypeName(), status, multyDiscounts, walletCoupon);
return couponDiscount;
}
public MultyDiscount createNomalDiscount(Discount discount, int status) {
MultyDiscount nomalDiscount = new NomalDiscount(discount.getRemark(), status, null, discount);
......@@ -249,15 +261,20 @@ public class ShoppingCart {
}
public MultyDiscount createMemberDiscount(MemberInfo discount, int status) {
MultyDiscount memberDiscount = new MemberDiscount(discount.getMemberName(), status, null, discount);
return memberDiscount;
MultyDiscount memberLevelDiscount = new MemberLevelDiscount(discount.getMemberName(), status, null, discount);
return memberLevelDiscount;
}
public MultyDiscount createCouponDiscount(CouponDiscountBean discount, int status) {
MultyDiscount couponDiscount = new CouponDiscount(discount.getName(), status, null, discount);
MultyDiscount couponDiscount = new MemberCouponDiscount(discount.getName(), status, null, discount);
return couponDiscount;
}
public MultyDiscount createMemberWalletCoupon(MemberWalletCoupon walletCoupon, int status) {
MultyDiscount walletCouponDiscount = new MemberWalletCouponDiscount(walletCoupon.getCouponTypeName(), status, null, walletCoupon);
return walletCouponDiscount;
}
/**
* 計算折扣鏈金額
*/
......@@ -270,10 +287,12 @@ public class ShoppingCart {
MultyDiscount discount = getMultyDiscountList().get(i);
if (discount instanceof NomalDiscount) {
multyDiscounts = addNomalDiscountToLinked(multyDiscounts, ((NomalDiscount) discount).getDiscount(), discount.getStatus());
} else if (discount instanceof MemberDiscount) {
multyDiscounts = addMemberDiscountToLinked(multyDiscounts, ((MemberDiscount) discount).getMemberDiscount(), discount.getStatus());
} else if (discount instanceof CouponDiscount) {
multyDiscounts = addCouponDiscountToLinked(multyDiscounts, ((CouponDiscount) discount).getCouponDiscount(), 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) {
multyDiscounts = addMemberWalletCouponDiscountToLinked(multyDiscounts, ((MemberWalletCouponDiscount) discount).getWalletCoupon(), discount.getStatus());
}
multyDiscountArrays.add(multyDiscounts);
}
......@@ -293,10 +312,12 @@ public class ShoppingCart {
String discountName = discount.getName();
if (discount instanceof NomalDiscount) {
discountType = BillItem.NOMAL_DISCOUNT_TYPE;
} else if (discount instanceof MemberDiscount) {
} else if (discount instanceof MemberLevelDiscount) {
discountType = BillItem.MEMBER_DISCOUNT_TYPE;
discountName = discount.getName() + ((MemberDiscount) discount).getMemberDiscount().getMemberDiscount() + "%";
} else if (discount instanceof CouponDiscount) {
discountName = discount.getName() + ((MemberLevelDiscount) discount).getMemberDiscount().getMemberDiscount() + "%";
} else if (discount instanceof MemberCouponDiscount) {
discountType = BillItem.COUPON_DISCOUNT_TYPE;
}else if (discount instanceof MemberWalletCouponDiscount) {
discountType = BillItem.COUPON_DISCOUNT_TYPE;
}
DiscountItem discountItem = new DiscountItem(discountName, discount.getDiscountMoney(), discount.getStatus(), discountType);
......@@ -343,13 +364,13 @@ public class ShoppingCart {
couponDiscountBean.setCouponTypeName1("魚屋立減50元券");
couponDiscountBean.setAmount(50);
couponDiscountBean.setCouponType((byte) 2);
multyDiscounts = shoppingCart.addCouponDiscountToLinked(multyDiscounts, couponDiscountBean, 0);
multyDiscounts = shoppingCart.addMemberCouponDiscountToLinked(multyDiscounts, couponDiscountBean, 0);
shoppingCart.addMultyDiscount(multyDiscounts);
MemberInfo memberInfo2 = new MemberInfo();
memberInfo2.setMemberName("白金會員20%");
memberInfo2.setMemberDiscount(20);
multyDiscounts = shoppingCart.addMemberDiscountToLinked(multyDiscounts, memberInfo2, 0);
multyDiscounts = shoppingCart.addMemberLevelDiscountToLinked(multyDiscounts, memberInfo2, 0);
shoppingCart.addMultyDiscount(multyDiscounts);
double discountAfterMoney = shoppingCart.calculateLinkedDiscounts(200);
......
......@@ -4,6 +4,8 @@ import androidx.annotation.NonNull;
import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails;
import com.gingersoft.gsa.cloud.common.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.database.AbstractDiscount;
import com.gingersoft.gsa.cloud.database.DiscountConstact;
import com.gingersoft.gsa.cloud.database.bean.ComboItem;
import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.gingersoft.gsa.cloud.database.bean.Food;
......@@ -167,6 +169,10 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
* 类型#1:优惠卷;2:商品;3:菜品;4:细项;5:折扣;
*/
private byte type;
public static final byte COUPON_TYPE = 1;
public static final byte FOOD_TYPE = 3;
public static final byte MODIFIER_TYPE = 4;
public static final byte DISCOUNT_TYPE = 5;
/**
*
*/
......@@ -241,12 +247,6 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
/**
* type編號#3:菜品;4:細項;5:折扣
*/
public static final byte FOOD_TYPE = 3;
public static final byte MODIFIER_TYPE = 4;
public static final byte DISCOUNT_TYPE = 5;
/**
* 廚房單打印主項
*/
private long ktPrintMainItem;
......@@ -1254,7 +1254,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
}
/**
* 折扣轉換
* 折扣,優惠券轉換
*
* @param discount
* @return
......@@ -1275,7 +1275,11 @@ 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.setProp(DISCOUNT_PROP);
orderDetail.setSelected(2);
orderDetail.setItemType(2);
......
......@@ -10,14 +10,14 @@ import lombok.Getter;
* 版本:1.6.0
* 创建日期:2020-09-19
* 修订历史:2020-09-19
* 描述: 優惠券折扣{@link CouponDiscountBean}
* 描述: 會員優惠券折扣{@link CouponDiscountBean}
*/
@Getter
public class CouponDiscount extends MultyDiscount {
public class MemberCouponDiscount extends MultyDiscount {
private CouponDiscountBean couponDiscount;
public CouponDiscount(String name, int status, MultyDiscount nextMultyDiscount, CouponDiscountBean couponDiscount) {
public MemberCouponDiscount(String name, int status, MultyDiscount nextMultyDiscount, CouponDiscountBean couponDiscount) {
super(name, status, nextMultyDiscount);
this.couponDiscount = couponDiscount;
}
......
......@@ -10,14 +10,14 @@ import lombok.Getter;
* 版本:1.6.0
* 创建日期:2020-09-19
* 修订历史:2020-09-19
* 描述: 會員折扣{@link MemberInfo#memberDiscount}
* 描述: 會員等級折扣{@link MemberInfo#memberDiscount}
*/
@Getter
public class MemberDiscount extends MultyDiscount {
public class MemberLevelDiscount extends MultyDiscount {
private MemberInfo memberDiscount;
public MemberDiscount(String name, int status, MultyDiscount nextMultyDiscount, MemberInfo memberDiscount) {
public MemberLevelDiscount(String name, int status, MultyDiscount nextMultyDiscount, MemberInfo memberDiscount) {
super(name, status,nextMultyDiscount);
this.memberDiscount = memberDiscount;
}
......
package com.gingersoft.gsa.cloud.order.discount;
import com.gingersoft.gsa.cloud.common.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.order.bean.discount.CouponDiscountBean;
import com.gingersoft.gsa.cloud.order.bean.discount.MemberWalletCoupon;
import lombok.Getter;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-09-19
* 修订历史:2020-09-19
* 描述: 會員錢包優惠券折扣{@link CouponDiscountBean}
*/
@Getter
public class MemberWalletCouponDiscount extends MultyDiscount {
private MemberWalletCoupon walletCoupon;
public MemberWalletCouponDiscount(String name, int status, MultyDiscount nextMultyDiscount, MemberWalletCoupon walletCoupon) {
super(name, status, nextMultyDiscount);
this.walletCoupon = walletCoupon;
}
@Override
public double calculate(double money) {
if (walletCoupon != null) {
//配置了消費滿減
discountMoney = calculationCoupon(walletCoupon, money);
money = MoneyUtil.sum(money, discountMoney);
}
return super.calculate(money);
}
/**
* 計算優惠券金額
*
* @param walletCoupon
* @param sourceMoney
* @return
*/
public static double calculationCoupon(MemberWalletCoupon walletCoupon, double sourceMoney) {
double discountMoney = 0;
if (walletCoupon.getDiscount() != 0) {
//百分比折扣
discountMoney = MoneyUtil.divide(MoneyUtil.multiply(sourceMoney, walletCoupon.getDiscount()), 100).doubleValue();
} else {
//金額折扣
discountMoney = walletCoupon.getAmount();
}
if (sourceMoney < discountMoney) {
//折扣金額不能超出總額
discountMoney = sourceMoney;
}
return -MoneyUtil.get_ItemDecimals_money(Math.abs(discountMoney));
}
/**
* 獲取優惠券折扣ID
*
* @return
*/
public Long getCouponDiscountId() {
if (walletCoupon != null) {
return walletCoupon.getId();
}
return null;
}
}
......@@ -17,8 +17,8 @@ public abstract class MultyDiscount extends BillItem {
/**責任鏈中的下一個對象*/
protected MultyDiscount nextMultyDiscount;
/**
* 本次折扣金额*/
* 本次折扣金额
* */
protected double discountMoney = 0.0;
public MultyDiscount(String name,int status, MultyDiscount nextMultyDiscount) {
......
......@@ -5,6 +5,8 @@ import android.content.Context;
import android.content.Intent;
import android.net.Uri;
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;
......@@ -19,12 +21,11 @@ import java.lang.ref.WeakReference;
*/
public class YedpayCallbackImp implements YedpayCallback {
private WeakReference<Activity> mContext;
private WeakReference<Fragment> mContext;
private WeakReference<PayFlowPresenter> mPayFlowPresenter;
private RequestParms mRequestParms;
public YedpayCallbackImp(Activity context, PayFlowPresenter payFlowPresenter, RequestParms requestParms) {
public YedpayCallbackImp(Fragment context, PayFlowPresenter payFlowPresenter, RequestParms requestParms) {
this.mContext = new WeakReference<>(context);
this.mPayFlowPresenter = new WeakReference<>(payFlowPresenter);
this.mRequestParms = requestParms;
......@@ -32,11 +33,11 @@ public class YedpayCallbackImp implements YedpayCallback {
@Override
public void callSaleUri(String uri) {
Activity activity = mContext.get();
if (activity != null) {
Fragment fragment = mContext.get();
if (fragment != null) {
Uri uri2 = Uri.parse(uri);
Intent intent = new Intent(Intent.ACTION_VIEW, uri2);
activity.startActivityForResult(intent, YedpayConstant.CallRequestCode.SALE_REQUEST_CODE);
fragment.getActivity().startActivityForResult(intent, YedpayConstant.CallRequestCode.SALE_REQUEST_CODE);
}
}
......
......@@ -3,6 +3,8 @@ package com.gingersoft.gsa.cloud.pay.lifecycle.contract;
import android.app.Activity;
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;
......@@ -32,7 +34,7 @@ public interface PayFlowContract {
void startActivityForResult(Intent intent);
Activity getActivity();
Fragment getFragment();
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
......
......@@ -16,6 +16,7 @@ import android.widget.TextView;
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;
......@@ -215,6 +216,11 @@ public class PayFlowFragment extends BaseDialogFragment<PayFlowPresenter> implem
@Override
public void startActivityForResult(Intent intent) {
startActivityForResult(intent, 555);
startActivityForResult(intent, YedpayConstant.CallRequestCode.SALE_REQUEST_CODE);
}
@Override
public Fragment getFragment() {
return this;
}
}
......@@ -201,11 +201,10 @@ public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFl
} else if (AppDevices.isBBPos()) {
requestParms.setCallback(new BBposCallbackImp());
} else if (AppDevices.isYedpay()) {
requestParms.setCallback(new YedpayCallbackImp(mRootView.getActivity(), this, mRequestParms));
requestParms.setCallback(new YedpayCallbackImp(mRootView.getFragment(), this, mRequestParms));
} else {
requestParms.setCallback(new YedpayCallbackImp(mRootView.getActivity(), this, mRequestParms));
requestParms.setCallback(new YedpayCallbackImp(mRootView.getFragment(), this, mRequestParms));
}
}
}
......@@ -6,6 +6,7 @@ import androidx.annotation.Nullable;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.gingersoft.gsa.cloud.app.GsaCloudApplication;
import com.gingersoft.gsa.cloud.ui.R;
import com.gingersoft.gsa.cloud.ui.bean.TagViewItem;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem;
......@@ -16,10 +17,16 @@ import java.util.List;
public class TagViewAdapter extends BaseQuickAdapter<TagViewItem, BaseViewHolder> {
private int height = ArmsUtils.dip2px(GsaCloudApplication.getAppContext(), R.dimen.dp_40);
public TagViewAdapter(@Nullable List<TagViewItem> data) {
super(R.layout.item_tag_view, data);
}
public void setHeight(int height) {
this.height = height;
}
@Override
protected void convert(BaseViewHolder helper, TagViewItem item) {
QMUIRoundButton roundButton = helper.getView(R.id.btn_tag);
......@@ -34,6 +41,7 @@ public class TagViewAdapter extends BaseQuickAdapter<TagViewItem, BaseViewHolder
roundButton.setStrokeColors(ColorStateList.valueOf(item.getSidelineColor()));
roundButton.setTextColor(item.getUnCheckedTextColor());
}
roundButton.setHeight(height);
}
}
......@@ -74,7 +74,6 @@ public class MyTableView extends TabLayout {
});
}
private void setSelectTab(TabLayout.Tab tabAt, boolean isSelected) {
if (tabAt.getCustomView() != null) {
TextView tab = tabAt.getCustomView().findViewById(R.id.tv_tab);//第一个tab被选中
......
......@@ -3,13 +3,11 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/btn_tag"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="@dimen/dp_40"
android:layout_gravity="center_horizontal"
android:gravity="center_vertical"
android:layout_margin="@dimen/dp_6"
android:paddingLeft="@dimen/dp_10"
android:paddingTop="@dimen/dp_8"
android:paddingRight="@dimen/dp_10"
android:paddingBottom="@dimen/dp_8"
android:text="草莓派"
android:textColor="@color/theme_text_color"
android:textSize="@dimen/dp_16"
......@@ -18,6 +16,7 @@
app:qmui_borderWidth="1px"
app:qmui_skin_background="?attr/app_skin_btn_test_bg"
app:qmui_skin_border="?attr/app_skin_btn_test_border"
app:qmui_skin_text_color="?attr/app_skin_btn_test_border">
app:qmui_skin_text_color="?attr/app_skin_btn_test_border"
app:qmui_radius="@dimen/dp_6">
</com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton>
\ 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