Commit 6ec228e3 by 宁斌

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

parent 48ef3e27
...@@ -5,11 +5,11 @@ import dagger.Component; ...@@ -5,11 +5,11 @@ import dagger.Component;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.table.di.module.FineItemAllModule; import com.gingersoft.gsa.cloud.table.di.module.FineChildAllModule;
import com.gingersoft.gsa.cloud.table.mvp.contract.FineItemAllContract; import com.gingersoft.gsa.cloud.table.mvp.contract.FineChildAllContract;
import com.jess.arms.di.scope.FragmentScope; 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; ...@@ -25,17 +25,17 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.FineItemAllFragment;
* ================================================ * ================================================
*/ */
@FragmentScope @FragmentScope
@Component(modules = FineItemAllModule.class, dependencies = AppComponent.class) @Component(modules = FineChildAllModule.class, dependencies = AppComponent.class)
public interface FineItemAllComponent { public interface FineChildAllComponent {
void inject(FineItemAllFragment fragment); void inject(FineChildAllFragment fragment);
@Component.Builder @Component.Builder
interface Builder { interface Builder {
@BindsInstance @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; ...@@ -3,11 +3,11 @@ package com.gingersoft.gsa.cloud.table.di.component;
import dagger.BindsInstance; import dagger.BindsInstance;
import dagger.Component; import dagger.Component;
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.ui.fragment.FineItemOneselfFragment; import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand.FineChildOneselfFragment;
import com.jess.arms.di.component.AppComponent; 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; import com.jess.arms.di.scope.FragmentScope;
...@@ -25,17 +25,17 @@ import com.jess.arms.di.scope.FragmentScope; ...@@ -25,17 +25,17 @@ import com.jess.arms.di.scope.FragmentScope;
* ================================================ * ================================================
*/ */
@FragmentScope @FragmentScope
@Component(modules = FineItemOneselfModule.class, dependencies = AppComponent.class) @Component(modules = FineChildOneselfModule.class, dependencies = AppComponent.class)
public interface FineItemOneselfComponent { public interface FineChildOneselfComponent {
void inject(FineItemOneselfFragment fragment); void inject(FineChildOneselfFragment fragment);
@Component.Builder @Component.Builder
interface Builder { interface Builder {
@BindsInstance @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; ...@@ -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.MealStand2Module;
import com.gingersoft.gsa.cloud.table.di.module.MealStandModule; 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.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.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity2; import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity2;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
...@@ -32,7 +33,7 @@ public interface MealStand2Component { ...@@ -32,7 +33,7 @@ public interface MealStand2Component {
@Component.Builder @Component.Builder
interface Builder { interface Builder {
@BindsInstance @BindsInstance
MealStand2Component.Builder view(MealStandContract.View view); MealStand2Component.Builder view(MealStandContract2.View view);
MealStand2Component.Builder appComponent(AppComponent appComponent); 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; 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.adapter.TagViewAdapter;
import com.gingersoft.gsa.cloud.ui.bean.TagViewItem; import com.gingersoft.gsa.cloud.ui.bean.TagViewItem;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.di.scope.FragmentScope; import com.jess.arms.di.scope.FragmentScope;
import dagger.Binds; import dagger.Binds;
...@@ -16,8 +14,6 @@ import com.gingersoft.gsa.cloud.table.mvp.model.CouponModel; ...@@ -16,8 +14,6 @@ import com.gingersoft.gsa.cloud.table.mvp.model.CouponModel;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.inject.Inject;
/** /**
* ================================================ * ================================================
......
...@@ -3,8 +3,8 @@ package com.gingersoft.gsa.cloud.table.di.module; ...@@ -3,8 +3,8 @@ package com.gingersoft.gsa.cloud.table.di.module;
import dagger.Binds; import dagger.Binds;
import dagger.Module; import dagger.Module;
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.FineItemAllModel; import com.gingersoft.gsa.cloud.table.mvp.model.FineChildAllModel;
/** /**
...@@ -20,8 +20,8 @@ import com.gingersoft.gsa.cloud.table.mvp.model.FineItemAllModel; ...@@ -20,8 +20,8 @@ import com.gingersoft.gsa.cloud.table.mvp.model.FineItemAllModel;
* ================================================ * ================================================
*/ */
@Module @Module
public abstract class FineItemAllModule { public abstract class FineChildAllModule {
@Binds @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; ...@@ -3,8 +3,8 @@ package com.gingersoft.gsa.cloud.table.di.module;
import dagger.Binds; import dagger.Binds;
import dagger.Module; import dagger.Module;
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.FineItemOneselfModel; import com.gingersoft.gsa.cloud.table.mvp.model.FineChildOneselfModel;
/** /**
...@@ -20,8 +20,8 @@ import com.gingersoft.gsa.cloud.table.mvp.model.FineItemOneselfModel; ...@@ -20,8 +20,8 @@ import com.gingersoft.gsa.cloud.table.mvp.model.FineItemOneselfModel;
* ================================================ * ================================================
*/ */
@Module @Module
public abstract class FineItemOneselfModule { public abstract class FineChildOneselfModule {
@Binds @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; ...@@ -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.Food;
import com.gingersoft.gsa.cloud.database.bean.Modifier; 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.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.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.model.bean.SoldoutCtrFood;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BillItemAdapter; import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BillItemAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ComboAdapter; import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ComboAdapter;
...@@ -44,7 +46,7 @@ import dagger.Provides; ...@@ -44,7 +46,7 @@ import dagger.Provides;
public abstract class MealStand2Module { public abstract class MealStand2Module {
@Binds @Binds
abstract MealStandContract.Model bindMealStandModel(MealStandModel model); abstract MealStandContract2.Model bindMealStandModel2(MealStandModel2 model);
@ActivityScope @ActivityScope
@Provides @Provides
...@@ -84,35 +86,27 @@ public abstract class MealStand2Module { ...@@ -84,35 +86,27 @@ public abstract class MealStand2Module {
return new ArrayList<>(); return new ArrayList<>();
} }
@Inject
protected SelectMealAdapter mSelectMealAdapter;
/**
* 賬單項適配器
*/
@Inject
protected BillItemAdapter mBillItemAdapter;
@ActivityScope @ActivityScope
@Provides @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()); return new FoodAdapter(IView.getActivity(), foodList, IView.getFromType());
} }
@ActivityScope @ActivityScope
@Provides @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); return new ComboAdapter(IView.getActivity(), comboItemList);
} }
@ActivityScope @ActivityScope
@Provides @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); return new ModifierAdapter(IView.getActivity(), modifierList);
} }
@ActivityScope @ActivityScope
@Provides @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); 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; ...@@ -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.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.table.mvp.contract.MealStandContract; 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.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.presenter.mealstand.SetMealPresenter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BillItemAdapter; import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BillItemAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ComboAdapter; import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ComboAdapter;
...@@ -101,6 +102,12 @@ public abstract class SetMealModule { ...@@ -101,6 +102,12 @@ public abstract class SetMealModule {
return new ArrayList<>(); return new ArrayList<>();
} }
@FragmentScope
@Provides
static List<SoldoutCtrFood> provideSoldoutCtrList() {
return new ArrayList<>();
}
// @FragmentScope // @FragmentScope
// @Provides // @Provides
// static SelectMealAdapter2 provideSelectMealAdapter2(SetMealContract.View IView, List<OrderDetail> orderMealList, BasePresenter presenter) { // static SelectMealAdapter2 provideSelectMealAdapter2(SetMealContract.View IView, List<OrderDetail> orderMealList, BasePresenter presenter) {
......
package com.gingersoft.gsa.cloud.table.mvp.action.discount; package com.gingersoft.gsa.cloud.table.mvp.action.discount;
import android.app.Activity; 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.common.patterns.Strategy;
import com.gingersoft.gsa.cloud.order.discount.NomalDiscount; import com.gingersoft.gsa.cloud.order.discount.NomalDiscount;
import com.jess.arms.utils.ArmsUtils;
import java.util.List; import java.util.List;
import lombok.Builder;
import lombok.Setter;
/** /**
* @author : bin * @author : bin
* @create date: 2020-10-27 * @create date: 2020-10-27
* @update date: 2020-10-27 * @update date: 2020-10-27
* @description:賬單優惠券邏輯 * @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) { private OnCallBackListener listener;
this.mContext = context;
this.mListener = listener; private String cashStr;
}
public void setNomalDiscountList(List<NomalDiscount> nomalDiscountList) {
this.mNomalDiscountList = nomalDiscountList;
}
@Override @Override
public void action(MemberCoupon discount) { public void action(MemberWalletCoupon coupon) {
if (mListener == null) { if (listener == null) {
return;
}
if (coupon.getBillMinAmount() > wholeAmount) {
//小於最小賬單金額
ArmsUtils.makeText(context, "小於最小賬單金額" + cashStr + coupon.getBillMinAmount() + " 無法使用此優惠券");
return; return;
} }
listener.preformAddCoupon(coupon.clone());
} }
@Override @Override
...@@ -46,16 +55,10 @@ public class BillCouponAction implements Strategy<MemberCoupon> { ...@@ -46,16 +55,10 @@ public class BillCouponAction implements Strategy<MemberCoupon> {
} }
private void exclusiveDiscount(MemberCoupon discount) {
if (mListener != null) {
}
}
public interface OnCallBackListener { public interface OnCallBackListener {
void exclusiveRemoveOthers(List<NomalDiscount> nomalDiscountList); void preformAddCoupon(MemberWalletCoupon discount);
void preformAddDiscount(MemberCoupon discount);
} }
} }
...@@ -12,40 +12,45 @@ import com.jess.arms.utils.ArmsUtils; ...@@ -12,40 +12,45 @@ import com.jess.arms.utils.ArmsUtils;
import java.util.List; import java.util.List;
import lombok.Builder;
import lombok.Setter;
/** /**
* @author : bin * @author : bin
* @create date: 2020-10-27 * @create date: 2020-10-27
* @update date: 2020-10-27 * @update date: 2020-10-27
* @description:賬單折扣邏輯 * @description:賬單折扣邏輯
*/ */
@Builder
@Setter
public class BillDiscountAction implements Strategy<Discount> { 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) { private OnCallBackListener listener;
this.mContext = context;
this.mListener = listener;
}
public void setNomalDiscountList(List<NomalDiscount> nomalDiscountList) { private String cashStr ;
this.mNomalDiscountList = nomalDiscountList;
}
@Override @Override
public void action(Discount discount) { public void action(Discount discount) {
if (mListener == null) { if (listener == null) {
return;
}
if (discount.getMinBillAmount() > wholeAmount) {
//小於最小賬單金額
ArmsUtils.makeText(context, "小於最小賬單金額" + cashStr + discount.getMinBillAmount() + " 無法使用此折扣");
return; return;
} }
if (isOnlyOnce(discount)) { if (isOnlyOnce(discount)) {
//此折扣只一次 //此折扣只一次
ArmsUtils.makeText(mContext, "此折扣只一次"); ArmsUtils.makeText(context, "此折扣只一次");
return; return;
} }
boolean hasExclusive = hasExclusiveDiscount(); boolean hasExclusive = hasExclusiveDiscount();
...@@ -54,7 +59,7 @@ public class BillDiscountAction implements Strategy<Discount> { ...@@ -54,7 +59,7 @@ public class BillDiscountAction implements Strategy<Discount> {
exclusiveDiscount(discount); exclusiveDiscount(discount);
return; return;
} else { } else {
if (discount.getExclusive() == 1 && mNomalDiscountList.size() > 0) { if (nomalDiscountList != null && discount.getExclusive() == 1 && nomalDiscountList.size() > 0) {
//獨佔折扣 //獨佔折扣
exclusiveDiscount(discount); exclusiveDiscount(discount);
return; return;
...@@ -71,7 +76,7 @@ public class BillDiscountAction implements Strategy<Discount> { ...@@ -71,7 +76,7 @@ public class BillDiscountAction implements Strategy<Discount> {
// //
// break; // break;
default: default:
mListener.preformAddDiscount(discount.clone()); listener.preformAddDiscount(discount.clone());
break; break;
} }
} }
...@@ -82,7 +87,7 @@ public class BillDiscountAction implements Strategy<Discount> { ...@@ -82,7 +87,7 @@ public class BillDiscountAction implements Strategy<Discount> {
} }
private void exclusiveDiscount(Discount discount) { private void exclusiveDiscount(Discount discount) {
if (mListener != null) { if (listener != null) {
showExclusiveTipDialog(discount); showExclusiveTipDialog(discount);
} }
} }
...@@ -93,7 +98,7 @@ public class BillDiscountAction implements Strategy<Discount> { ...@@ -93,7 +98,7 @@ public class BillDiscountAction implements Strategy<Discount> {
* @return * @return
*/ */
private boolean hasExclusiveDiscount() { private boolean hasExclusiveDiscount() {
for (NomalDiscount nomalDiscount : mNomalDiscountList) { for (NomalDiscount nomalDiscount : nomalDiscountList) {
if (nomalDiscount.getDiscount().getExclusive() == 1) { if (nomalDiscount.getDiscount().getExclusive() == 1) {
return true; return true;
} }
...@@ -109,7 +114,7 @@ public class BillDiscountAction implements Strategy<Discount> { ...@@ -109,7 +114,7 @@ public class BillDiscountAction implements Strategy<Discount> {
*/ */
private boolean isOnlyOnce(Discount discount) { private boolean isOnlyOnce(Discount discount) {
if (discount.getOnlyOnce() == 1) { if (discount.getOnlyOnce() == 1) {
for (NomalDiscount nomalDiscount : mNomalDiscountList) { for (NomalDiscount nomalDiscount : nomalDiscountList) {
Discount item = nomalDiscount.getDiscount(); Discount item = nomalDiscount.getDiscount();
if (discount.getId().longValue() == item.getId().longValue()) { if (discount.getId().longValue() == item.getId().longValue()) {
return true; return true;
...@@ -126,15 +131,15 @@ public class BillDiscountAction implements Strategy<Discount> { ...@@ -126,15 +131,15 @@ public class BillDiscountAction implements Strategy<Discount> {
* @param discount * @param discount
*/ */
private void showCustomAmountDialog(Discount discount, boolean exclusiveReplace) { 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 @Override
public void inputText(String text) { public void inputText(String text) {
discount.setAmount(Double.parseDouble(text)); discount.setAmount(Double.parseDouble(text));
if (mListener != null) { if (listener != null) {
if (exclusiveReplace) { 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> { ...@@ -146,17 +151,17 @@ public class BillDiscountAction implements Strategy<Discount> {
* @param discount * @param discount
*/ */
private void showKeyboardDialog(Discount discount, boolean exclusiveReplace) { private void showKeyboardDialog(Discount discount, boolean exclusiveReplace) {
new KeyboardDialog(mContext) new KeyboardDialog(context)
.build() .build()
.setOnCallBackListener(new KeyboardDialog.OnCallBackListener() { .setOnCallBackListener(new KeyboardDialog.OnCallBackListener() {
@Override @Override
public void onSure(String number) { public void onSure(String number) {
discount.setAmount(Double.parseDouble(number)); discount.setAmount(Double.parseDouble(number));
if (mListener != null) { if (listener != null) {
if (exclusiveReplace) { 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> { ...@@ -169,7 +174,7 @@ public class BillDiscountAction implements Strategy<Discount> {
* @param discount * @param discount
*/ */
private void showExclusiveTipDialog(Discount discount) { private void showExclusiveTipDialog(Discount discount) {
CommonTipDialog.showDoubtDialog2(mContext, "有獨佔折扣,是否替換", new CommonTipDialog.OnCallbackListener() { CommonTipDialog.showDoubtDialog2(context, "有獨佔折扣,是否替換", new CommonTipDialog.OnCallbackListener() {
@Override @Override
public void onSure() { public void onSure() {
switch (discount.getType()) { switch (discount.getType()) {
...@@ -183,8 +188,8 @@ public class BillDiscountAction implements Strategy<Discount> { ...@@ -183,8 +188,8 @@ public class BillDiscountAction implements Strategy<Discount> {
// //
// break; // break;
default: default:
mListener.exclusiveRemoveOthers(mNomalDiscountList); listener.exclusiveRemoveOthers(nomalDiscountList);
mListener.preformAddDiscount(discount.clone()); listener.preformAddDiscount(discount.clone());
break; break;
} }
} }
......
package com.gingersoft.gsa.cloud.table.mvp.action.discount; package com.gingersoft.gsa.cloud.table.mvp.action.discount;
import android.app.Activity; 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.common.patterns.Strategy;
import com.gingersoft.gsa.cloud.order.discount.NomalDiscount; import com.gingersoft.gsa.cloud.common.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog; import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.ui.widget.dialog.KeyboardDialog;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
import java.util.List; import java.util.List;
import lombok.Builder;
import lombok.Setter;
/** /**
* @author : bin * @author : bin
* @create date: 2020-10-27 * @create date: 2020-10-27
* @update date: 2020-10-27 * @update date: 2020-10-27
* @description:食品優惠券邏輯 * @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) { private String cashStr ;
this.mContext = context;
this.mListener = listener;
}
public void setNomalDiscountList(List<NomalDiscount> nomalDiscountList) {
this.mNomalDiscountList = nomalDiscountList;
}
@Override @Override
public void action(MemberCoupon discount) { public void action(MemberWalletCoupon coupon) {
if (mListener == null) { if (listener == null || selectMixOrderMealList == null || selectMixOrderMealList.size() == 0) {
return; 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 @Override
...@@ -51,30 +58,23 @@ public class MealCouponAction implements Strategy<MemberCoupon> { ...@@ -51,30 +58,23 @@ public class MealCouponAction implements Strategy<MemberCoupon> {
} }
private void exclusiveDiscount(MemberCoupon discount) {
if (mListener != null) {
}
}
/** /**
* 是否有獨佔折扣 * 獲取套餐總金額
* *
* @param mixOrderMealList
* @return * @return
*/ */
private boolean hasExclusiveDiscount() { private double getMixTotalAomout(List<OrderDetail> mixOrderMealList) {
for (NomalDiscount nomalDiscount : mNomalDiscountList) { double mixTotalAomout = 0.0;
if (nomalDiscount.getDiscount().getExclusive() == 1) { for (OrderDetail orderDetail : mixOrderMealList) {
return true; mixTotalAomout = MoneyUtil.sum(mixTotalAomout, orderDetail.getPrice());
}
} }
return false; return mixTotalAomout;
} }
public interface OnCallBackListener { public interface OnCallBackListener {
void exclusiveRemoveOthers(List<NomalDiscount> nomalDiscountList); void preformAddCoupon(MemberWalletCoupon discount);
void preformAddDiscount(MemberCoupon discount);
} }
} }
...@@ -14,54 +14,48 @@ import com.jess.arms.utils.ArmsUtils; ...@@ -14,54 +14,48 @@ import com.jess.arms.utils.ArmsUtils;
import java.util.List; import java.util.List;
import lombok.Builder;
import lombok.Setter;
/** /**
* @author : bin * @author : bin
* @create date: 2020-10-28 * @create date: 2020-10-28
* @update date: 2020-10-28 * @update date: 2020-10-28
* @description:美食折扣邏輯 * @description:美食折扣邏輯
*/ */
@Builder
@Setter
public class MealDiscountAction implements Strategy<Discount> { public class MealDiscountAction implements Strategy<Discount> {
private Activity context;
private Activity mContext;
/** /**
* 選中的食品或套餐組 * 選中的食品或套餐組
*/ */
private List<OrderDetail> mSelectMixOrderMealList; private List<OrderDetail> selectMixOrderMealList;
private List<MultyDiscount> mMultyDiscountList;
private MealDiscountAction.OnCallBackListener mListener; private MealDiscountAction.OnCallBackListener listener;
public MealDiscountAction(Activity context, List<MultyDiscount> multyDiscountList, MealDiscountAction.OnCallBackListener listener) { private String cashStr ;
this.mContext = context;
this.mMultyDiscountList = multyDiscountList;
this.mListener = listener;
}
public void setSelectMixOrderMealList(List<OrderDetail> selectMixOrderMealList) {
this.mSelectMixOrderMealList = selectMixOrderMealList;
}
@Override @Override
public void action(Discount discount) { public void action(Discount discount) {
if (mListener == null || mSelectMixOrderMealList == null || mSelectMixOrderMealList.size() == 0) { if (listener == null || selectMixOrderMealList == null || selectMixOrderMealList.size() == 0) {
return; return;
} }
double mixTotalAomout = getMixTotalAomout(mSelectMixOrderMealList); double mixTotalAomout = getMixTotalAomout(selectMixOrderMealList);
if(discount.getType() == 0 && discount.getAmount() > mixTotalAomout){ if(discount.getType() == 0 && discount.getAmount() > mixTotalAomout){
//金額折扣總額不能超過 食品總金額 //金額折扣總額不能超過 食品總金額
ArmsUtils.makeText(mContext, "折扣金額不可以超過食品總金額!"); ArmsUtils.makeText(context, "折扣金額不可以超過食品總金額!");
return; return;
} }
if (discount.getMinBillAmount() > mixTotalAomout) { if (discount.getMinBillAmount() > mixTotalAomout) {
//最小賬單金額 //最小賬單金額
ArmsUtils.makeText(mContext, "小於最小賬單金額$" + discount.getMinBillAmount() + " 無法使用此折扣"); ArmsUtils.makeText(context, "小於最小賬單金額" +cashStr+ discount.getMinBillAmount() + " 無法使用此折扣");
return; return;
} }
if (isOnlyOnce(discount)) { if (isOnlyOnce(discount)) {
//此折扣只一次 //此折扣只一次
ArmsUtils.makeText(mContext, "此折扣只一次"); ArmsUtils.makeText(context, "此折扣只一次");
return; return;
} }
boolean hasExclusive = hasExclusiveDiscount(); boolean hasExclusive = hasExclusiveDiscount();
...@@ -88,7 +82,7 @@ public class MealDiscountAction implements Strategy<Discount> { ...@@ -88,7 +82,7 @@ public class MealDiscountAction implements Strategy<Discount> {
// //
// break; // break;
default: default:
mListener.preformAddDiscount(discount.clone()); listener.preformAddDiscount(discount.clone());
break; break;
} }
} }
...@@ -99,7 +93,7 @@ public class MealDiscountAction implements Strategy<Discount> { ...@@ -99,7 +93,7 @@ public class MealDiscountAction implements Strategy<Discount> {
} }
private void exclusiveDiscount(Discount discount) { private void exclusiveDiscount(Discount discount) {
if (mListener != null) { if (listener != null) {
showExclusiveTipDialog(discount); showExclusiveTipDialog(discount);
} }
} }
...@@ -111,7 +105,7 @@ public class MealDiscountAction implements Strategy<Discount> { ...@@ -111,7 +105,7 @@ public class MealDiscountAction implements Strategy<Discount> {
* @return * @return
*/ */
private boolean hasExclusiveDiscount() { private boolean hasExclusiveDiscount() {
for (OrderDetail orderMealItem : mSelectMixOrderMealList) { for (OrderDetail orderMealItem : selectMixOrderMealList) {
if (orderMealItem.getDiscount() != null && orderMealItem.getDiscount().getExclusive() == 1) { if (orderMealItem.getDiscount() != null && orderMealItem.getDiscount().getExclusive() == 1) {
return true; return true;
} }
...@@ -127,7 +121,7 @@ public class MealDiscountAction implements Strategy<Discount> { ...@@ -127,7 +121,7 @@ public class MealDiscountAction implements Strategy<Discount> {
*/ */
private boolean isOnlyOnce(Discount discount) { private boolean isOnlyOnce(Discount discount) {
if (discount.getOnlyOnce() == 1) { if (discount.getOnlyOnce() == 1) {
for (OrderDetail orderMealItem : mSelectMixOrderMealList) { for (OrderDetail orderMealItem : selectMixOrderMealList) {
Discount item = orderMealItem.getDiscount(); Discount item = orderMealItem.getDiscount();
if (item != null && discount.getId().longValue() == item.getId().longValue()) { if (item != null && discount.getId().longValue() == item.getId().longValue()) {
return true; return true;
...@@ -144,15 +138,15 @@ public class MealDiscountAction implements Strategy<Discount> { ...@@ -144,15 +138,15 @@ public class MealDiscountAction implements Strategy<Discount> {
* @param discount * @param discount
*/ */
private void showCustomAmountDialog(Discount discount, boolean exclusiveReplace) { 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 @Override
public void inputText(String text) { public void inputText(String text) {
discount.setAmount(Double.parseDouble(text)); discount.setAmount(Double.parseDouble(text));
if (mListener != null) { if (listener != null) {
if (exclusiveReplace) { if (exclusiveReplace) {
mListener.exclusiveRemoveOthers(); listener.exclusiveRemoveOthers();
} }
mListener.preformAddDiscount(discount.clone()); listener.preformAddDiscount(discount.clone());
} }
} }
}); });
...@@ -164,17 +158,17 @@ public class MealDiscountAction implements Strategy<Discount> { ...@@ -164,17 +158,17 @@ public class MealDiscountAction implements Strategy<Discount> {
* @param discount * @param discount
*/ */
private void showKeyboardDialog(Discount discount, boolean exclusiveReplace) { private void showKeyboardDialog(Discount discount, boolean exclusiveReplace) {
new KeyboardDialog(mContext) new KeyboardDialog(context)
.build() .build()
.setOnCallBackListener(new KeyboardDialog.OnCallBackListener() { .setOnCallBackListener(new KeyboardDialog.OnCallBackListener() {
@Override @Override
public void onSure(String number) { public void onSure(String number) {
discount.setAmount(Double.parseDouble(number)); discount.setAmount(Double.parseDouble(number));
if (mListener != null) { if (listener != null) {
if (exclusiveReplace) { if (exclusiveReplace) {
mListener.exclusiveRemoveOthers(); listener.exclusiveRemoveOthers();
} }
mListener.preformAddDiscount(discount.clone()); listener.preformAddDiscount(discount.clone());
} }
} }
}) })
...@@ -187,7 +181,7 @@ public class MealDiscountAction implements Strategy<Discount> { ...@@ -187,7 +181,7 @@ public class MealDiscountAction implements Strategy<Discount> {
* @param discount * @param discount
*/ */
private void showExclusiveTipDialog(Discount discount) { private void showExclusiveTipDialog(Discount discount) {
CommonTipDialog.showDoubtDialog2(mContext, "有獨佔折扣,是否替換", new CommonTipDialog.OnCallbackListener() { CommonTipDialog.showDoubtDialog2(context, "有獨佔折扣,是否替換", new CommonTipDialog.OnCallbackListener() {
@Override @Override
public void onSure() { public void onSure() {
switch (discount.getType()) { switch (discount.getType()) {
...@@ -201,8 +195,8 @@ public class MealDiscountAction implements Strategy<Discount> { ...@@ -201,8 +195,8 @@ public class MealDiscountAction implements Strategy<Discount> {
// //
// break; // break;
default: default:
mListener.exclusiveRemoveOthers(); listener.exclusiveRemoveOthers();
mListener.preformAddDiscount(discount.clone()); listener.preformAddDiscount(discount.clone());
break; break;
} }
} }
...@@ -216,7 +210,7 @@ public class MealDiscountAction implements Strategy<Discount> { ...@@ -216,7 +210,7 @@ public class MealDiscountAction implements Strategy<Discount> {
*/ */
private int getDiscountSize() { private int getDiscountSize() {
int size = 0; int size = 0;
for (OrderDetail orderMealItem : mSelectMixOrderMealList) { for (OrderDetail orderMealItem : selectMixOrderMealList) {
if (orderMealItem.getDiscount() != null) { if (orderMealItem.getDiscount() != null) {
size++; size++;
} }
......
package com.gingersoft.gsa.cloud.table.mvp.contract; package com.gingersoft.gsa.cloud.table.mvp.contract;
import androidx.recyclerview.widget.RecyclerView; import com.gingersoft.gsa.cloud.order.bean.discount.MemberWalletCoupon;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.core.discount.MemberCoupon;
import com.jess.arms.mvp.IView; import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel; import com.jess.arms.mvp.IModel;
import com.kingja.loadsir.callback.Callback; import com.kingja.loadsir.callback.Callback;
import com.kingja.loadsir.core.LoadService; import com.kingja.loadsir.core.LoadService;
import com.kingja.loadsir.core.LoadSir;
import java.util.List; import java.util.List;
import io.reactivex.Observable;
import io.reactivex.Single; import io.reactivex.Single;
import retrofit2.http.Query;
/** /**
...@@ -33,7 +27,7 @@ public interface CouponContract { ...@@ -33,7 +27,7 @@ public interface CouponContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息 //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView { interface View extends IView {
void returnMemberCouponList(List<MemberCoupon> memberCoupons); void returnMemberCouponList(List<MemberWalletCoupon> memberCoupons);
void showLoadSirSuccess(); void showLoadSirSuccess();
...@@ -45,7 +39,7 @@ public interface CouponContract { ...@@ -45,7 +39,7 @@ public interface CouponContract {
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存 //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel { 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; ...@@ -24,7 +24,7 @@ import java.util.List;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a> * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================ * ================================================
*/ */
public interface FineItemAllContract { public interface FineChildAllContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息 //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView { interface View extends IView {
......
...@@ -23,7 +23,7 @@ import java.util.List; ...@@ -23,7 +23,7 @@ import java.util.List;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a> * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================ * ================================================
*/ */
public interface FineItemOneselfContract { public interface FineChildOneselfContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息 //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends 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; ...@@ -20,6 +20,7 @@ import java.util.List;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import io.reactivex.Observable; import io.reactivex.Observable;
import io.reactivex.Single;
import okhttp3.RequestBody; import okhttp3.RequestBody;
...@@ -133,7 +134,7 @@ public interface MealStandContract { ...@@ -133,7 +134,7 @@ public interface MealStandContract {
Observable<BaseResult> getRestaurantFoodReason(int brandId, int restaurantId, int type); 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); 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; ...@@ -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.FoodCombo;
import com.gingersoft.gsa.cloud.database.bean.FoodModifier; import com.gingersoft.gsa.cloud.database.bean.FoodModifier;
import com.gingersoft.gsa.cloud.database.bean.Modifier; 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.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity2; import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity2;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ComboAdapter; import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ComboAdapter;
...@@ -41,6 +42,10 @@ public interface SetMealContract { ...@@ -41,6 +42,10 @@ public interface SetMealContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息 //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends BaseOrderContract.View { interface View extends BaseOrderContract.View {
void setCurrLayout(byte layout);
void setCustomFoodDialog(int customType, OrderDetail foodItem);
void setFoodGroupRecycleSpanCount(int size); void setFoodGroupRecycleSpanCount(int size);
void setFoodRecycleSpanCount(int size); void setFoodRecycleSpanCount(int size);
...@@ -67,14 +72,6 @@ public interface SetMealContract { ...@@ -67,14 +72,6 @@ public interface SetMealContract {
void resetSelect(int position, Food datasBean); 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 initFoodGroupAdapter(List<Food> foodGroupList);
void notifyFoodGroupAdapter(); void notifyFoodGroupAdapter();
...@@ -97,9 +94,9 @@ public interface SetMealContract { ...@@ -97,9 +94,9 @@ public interface SetMealContract {
Single<List<Food>> queryDB_FoodList(long parentId, int foodSummary); 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); Single<List<FoodCombo>> isComboFood(long fid);
......
...@@ -3,9 +3,8 @@ package com.gingersoft.gsa.cloud.table.mvp.model; ...@@ -3,9 +3,8 @@ package com.gingersoft.gsa.cloud.table.mvp.model;
import android.app.Application; import android.app.Application;
import com.gingersoft.gsa.cloud.common.bean.BaseResult; import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.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.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.gingersoft.gsa.cloud.table.mvp.model.service.MemberService;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager; import com.jess.arms.integration.IRepositoryManager;
...@@ -56,14 +55,14 @@ public class CouponModel extends BaseModel implements CouponContract.Model { ...@@ -56,14 +55,14 @@ public class CouponModel extends BaseModel implements CouponContract.Model {
} }
@Override @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) return mRepositoryManager.obtainRetrofitService(MemberService.class)
.getMemberWalletList(brandId, memberId, limitType, pageIndex, pageSize) .getMemberWalletList(brandId, memberId, limitType, pageIndex, pageSize)
.map(new Function<BaseResult, List<MemberCoupon>>() { .map(new Function<BaseResult, List<MemberWalletCoupon>>() {
@Override @Override
public List<MemberCoupon> apply(BaseResult result) throws Exception { public List<MemberWalletCoupon> apply(BaseResult result) throws Exception {
if (result.isSuccess()) { if (result.isSuccess()) {
return GsonUtils.jsonToList(result.getData(), MemberCoupon.class); return GsonUtils.jsonToList(result.getData(), MemberWalletCoupon.class);
} else { } else {
return new ArrayList<>(); return new ArrayList<>();
} }
......
...@@ -4,7 +4,7 @@ import android.app.Application; ...@@ -4,7 +4,7 @@ import android.app.Application;
import com.gingersoft.gsa.cloud.database.bean.Modifier; import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.database.utils.ModifierDaoUtils; 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.gingersoft.gsa.cloud.table.mvp.model.utils.MealStyleUtils;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.jess.arms.di.scope.FragmentScope; import com.jess.arms.di.scope.FragmentScope;
...@@ -29,14 +29,14 @@ import javax.inject.Inject; ...@@ -29,14 +29,14 @@ import javax.inject.Inject;
* ================================================ * ================================================
*/ */
@FragmentScope @FragmentScope
public class FineItemAllModel extends BaseModel implements FineItemAllContract.Model { public class FineChildAllModel extends BaseModel implements FineChildAllContract.Model {
@Inject @Inject
Gson mGson; Gson mGson;
@Inject @Inject
Application mApplication; Application mApplication;
@Inject @Inject
public FineItemAllModel(IRepositoryManager repositoryManager) { public FineChildAllModel(IRepositoryManager repositoryManager) {
super(repositoryManager); super(repositoryManager);
} }
......
...@@ -6,7 +6,7 @@ import com.gingersoft.gsa.cloud.database.bean.ComboItem; ...@@ -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.bean.Modifier;
import com.gingersoft.gsa.cloud.database.utils.ComboItemDaoUtils; import com.gingersoft.gsa.cloud.database.utils.ComboItemDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.ModifierDaoUtils; 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.gingersoft.gsa.cloud.table.mvp.model.utils.MealStyleUtils;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager; import com.jess.arms.integration.IRepositoryManager;
...@@ -32,14 +32,14 @@ import javax.inject.Inject; ...@@ -32,14 +32,14 @@ import javax.inject.Inject;
* ================================================ * ================================================
*/ */
@FragmentScope @FragmentScope
public class FineItemOneselfModel extends BaseModel implements FineItemOneselfContract.Model { public class FineChildOneselfModel extends BaseModel implements FineChildOneselfContract.Model {
@Inject @Inject
Gson mGson; Gson mGson;
@Inject @Inject
Application mApplication; Application mApplication;
@Inject @Inject
public FineItemOneselfModel(IRepositoryManager repositoryManager) { public FineChildOneselfModel(IRepositoryManager repositoryManager) {
super(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; ...@@ -35,6 +35,7 @@ import javax.inject.Inject;
import io.reactivex.Observable; import io.reactivex.Observable;
import io.reactivex.Observer; import io.reactivex.Observer;
import io.reactivex.Single;
import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Action; import io.reactivex.functions.Action;
import io.reactivex.functions.Consumer; import io.reactivex.functions.Consumer;
...@@ -188,7 +189,7 @@ public class MealStandModel extends BaseModel implements MealStandContract.Model ...@@ -188,7 +189,7 @@ public class MealStandModel extends BaseModel implements MealStandContract.Model
} }
@Override @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) return mRepositoryManager.obtainRetrofitService(MemberService.class)
.queryMember(type, parm, shopName, tableId, tableNumber); .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; ...@@ -3,12 +3,19 @@ package com.gingersoft.gsa.cloud.table.mvp.model;
import android.app.Application; import android.app.Application;
import com.gingersoft.gsa.cloud.common.bean.BaseResult; import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.rxjava.MyRxSchedulerUtils;
import com.gingersoft.gsa.cloud.database.bean.ComboItem; import com.gingersoft.gsa.cloud.database.bean.ComboItem;
import com.gingersoft.gsa.cloud.database.bean.Food; import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.bean.FoodCombo; import com.gingersoft.gsa.cloud.database.bean.FoodCombo;
import com.gingersoft.gsa.cloud.database.bean.FoodModifier; import com.gingersoft.gsa.cloud.database.bean.FoodModifier;
import com.gingersoft.gsa.cloud.database.bean.Modifier; 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.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.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager; import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.mvp.BaseModel; import com.jess.arms.mvp.BaseModel;
...@@ -59,27 +66,41 @@ public class SetMealModel extends BaseModel implements SetMealContract.Model { ...@@ -59,27 +66,41 @@ public class SetMealModel extends BaseModel implements SetMealContract.Model {
@Override @Override
public Single<List<Food>> queryDB_FoodGroupList(int foodSummary) { 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 @Override
public Single<List<Food>> queryDB_FoodList(long parentId, int foodSummary) { 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 @Override
public Single<List<Modifier>> queryDB_ModifierList(long fid, int mode) { public List<Modifier> queryDB_ModifierList(long fid, int mode) {
return null; ModifierDaoUtils daoUtils = new ModifierDaoUtils(mApplication);
List<Modifier> modifierList = daoUtils.queryModifiersByFid(fid, mode);
return MealStyleUtils.assemblyModifiersColor(modifierList);
} }
@Override @Override
public Single<List<ComboItem>> queryDB_ComboList(long fid, int foodSummary) { public List<ComboItem> queryDB_ComboList(long fid, int foodSummary) {
return null; ComboItemDaoUtils comboItemDao = new ComboItemDaoUtils(mApplication);
List<ComboItem> foodCombos = comboItemDao.queryComboItemsByFidQueryBuilder(fid, foodSummary);
return MealConditionFilterUtils.comboConditionFilter(foodCombos, foodSummary);
} }
@Override @Override
public Single<List<FoodCombo>> isComboFood(long fid) { 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 @Override
......
...@@ -17,7 +17,7 @@ public interface MemberService { ...@@ -17,7 +17,7 @@ public interface MemberService {
@Headers({"Domain-Name: new_base_url"}) @Headers({"Domain-Name: new_base_url"})
@GET("member/checkMemberInfo" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2) @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) @GET("restaurantTable/memberUse" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> memberUse(@Query("tableId") int tableId, @Query("tableNumber") String tableNumber, @Query("memberId") long memberId); 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; ...@@ -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.ShoppingCart;
import com.gingersoft.gsa.cloud.order.cart.ShoppingCartNumberChange; import com.gingersoft.gsa.cloud.order.cart.ShoppingCartNumberChange;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail; 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.discount.NomalDiscount;
import com.gingersoft.gsa.cloud.order.order.BaseOrder; import com.gingersoft.gsa.cloud.order.order.BaseOrder;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder; import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
...@@ -40,11 +40,9 @@ import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.AddOrderRequest; ...@@ -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.model.bean.request.CreateOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.presenter.mealstand.MealStandPresenter; 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.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.activity.OrderContentActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BillItemAdapter; 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.SelectMealAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand.SetMealFragment;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog; import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog;
import com.jess.arms.di.scope.ActivityScope; import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.integration.AppManager; import com.jess.arms.integration.AppManager;
...@@ -1332,7 +1330,7 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex ...@@ -1332,7 +1330,7 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
* @return * @return
*/ */
protected Long getCouponDiscountId() { protected Long getCouponDiscountId() {
CouponDiscount couponDiscount = (CouponDiscount) mShoppingCart.getDiscountByType(BillItem.COUPON_DISCOUNT_TYPE); MemberCouponDiscount couponDiscount = (MemberCouponDiscount) mShoppingCart.getDiscountByType(BillItem.COUPON_DISCOUNT_TYPE);
if (couponDiscount != null) { if (couponDiscount != null) {
return couponDiscount.getCouponDiscountId(); return couponDiscount.getCouponDiscountId();
} }
......
...@@ -29,7 +29,7 @@ import com.gingersoft.gsa.cloud.order.billItem.ServiceChargeItem; ...@@ -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.ShoppingCart;
import com.gingersoft.gsa.cloud.order.cart.ShoppingCartNumberChange; import com.gingersoft.gsa.cloud.order.cart.ShoppingCartNumberChange;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail; 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.discount.NomalDiscount;
import com.gingersoft.gsa.cloud.order.order.BaseOrder; import com.gingersoft.gsa.cloud.order.order.BaseOrder;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder; import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
...@@ -38,13 +38,11 @@ import com.gingersoft.gsa.cloud.order.order.TakeawayOrder; ...@@ -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.contract.BaseOrderContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.AddOrderRequest; import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.AddOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.CreateOrderRequest; import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.CreateOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.presenter.mealstand.MealStandPresenter;
import com.gingersoft.gsa.cloud.table.mvp.presenter.mealstand.MealStandPresenter2; 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.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity2; 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.activity.OrderContentActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BillItemAdapter; 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.adapter.meal.SelectMealAdapter2;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand.SetMealFragment; import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand.SetMealFragment;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog; import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog;
...@@ -1334,7 +1332,7 @@ public abstract class BaseOrderPresenter2<M extends BaseOrderContract.Model, V e ...@@ -1334,7 +1332,7 @@ public abstract class BaseOrderPresenter2<M extends BaseOrderContract.Model, V e
* @return * @return
*/ */
protected Long getCouponDiscountId() { protected Long getCouponDiscountId() {
CouponDiscount couponDiscount = (CouponDiscount) mShoppingCart.getDiscountByType(BillItem.COUPON_DISCOUNT_TYPE); MemberCouponDiscount couponDiscount = (MemberCouponDiscount) mShoppingCart.getDiscountByType(BillItem.COUPON_DISCOUNT_TYPE);
if (couponDiscount != null) { if (couponDiscount != null) {
return couponDiscount.getCouponDiscountId(); return couponDiscount.getCouponDiscountId();
} }
......
...@@ -5,9 +5,6 @@ import android.graphics.Color; ...@@ -5,9 +5,6 @@ import android.graphics.Color;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.view.Window;
import androidx.fragment.app.FragmentManager;
import com.billy.cc.core.component.CC; import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.common.bean.BaseResult; import com.gingersoft.gsa.cloud.common.bean.BaseResult;
...@@ -15,7 +12,7 @@ import com.gingersoft.gsa.cloud.common.constans.ExpandConstant; ...@@ -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.FoodSummaryConstans;
import com.gingersoft.gsa.cloud.common.constans.GoldConstants; import com.gingersoft.gsa.cloud.common.constans.GoldConstants;
import com.gingersoft.gsa.cloud.common.constans.PrintConstans; 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.member.MemberInfo;
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager; import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
import com.gingersoft.gsa.cloud.common.core.restaurant.utils.RestaurantExpandInfoUtils; import com.gingersoft.gsa.cloud.common.core.restaurant.utils.RestaurantExpandInfoUtils;
...@@ -33,8 +30,7 @@ import com.gingersoft.gsa.cloud.order.bean.response.OrderResponse; ...@@ -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.BillItem;
import com.gingersoft.gsa.cloud.order.billItem.DiscountItem; import com.gingersoft.gsa.cloud.order.billItem.DiscountItem;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail; 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.MemberDiscount;
import com.gingersoft.gsa.cloud.order.discount.NomalDiscount; import com.gingersoft.gsa.cloud.order.discount.NomalDiscount;
import com.gingersoft.gsa.cloud.order.order.BaseOrder; import com.gingersoft.gsa.cloud.order.order.BaseOrder;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder; import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
...@@ -42,6 +38,7 @@ import com.gingersoft.gsa.cloud.print.PrinterUtils; ...@@ -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.PrintContent;
import com.gingersoft.gsa.cloud.print.bean.adapter.PrintContentAdapter; import com.gingersoft.gsa.cloud.print.bean.adapter.PrintContentAdapter;
import com.gingersoft.gsa.cloud.table.R; 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.contract.OrderContentContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.AddOrderRequest; import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.AddOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.CreateOrderRequest; import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.CreateOrderRequest;
...@@ -66,7 +63,6 @@ import com.jess.arms.integration.AppManager; ...@@ -66,7 +63,6 @@ import com.jess.arms.integration.AppManager;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
import com.jess.arms.utils.RxLifecycleUtils; import com.jess.arms.utils.RxLifecycleUtils;
import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.xuexiang.rxutil2.RxBindingUtils;
import com.xuexiang.rxutil2.rxjava.RxJavaUtils; import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -81,10 +77,8 @@ import io.reactivex.annotations.NonNull; ...@@ -81,10 +77,8 @@ import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer; import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
import leakcanary.internal.ForegroundService;
import me.jessyan.rxerrorhandler.core.RxErrorHandler; import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber; import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
import me.yokeyword.fragmentation.anim.FragmentAnimator;
import okhttp3.FormBody; import okhttp3.FormBody;
import okhttp3.MediaType; import okhttp3.MediaType;
import okhttp3.RequestBody; import okhttp3.RequestBody;
...@@ -124,9 +118,13 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -124,9 +118,13 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
private SplitTableDialog mSplitTableDialog; private SplitTableDialog mSplitTableDialog;
private DiscountDialog.Builder mDiscountDialog; private DiscountDialog.Builder mDiscountDialog;
/** /**
* 整單折扣邏輯 * 整單折扣
*/ */
private BillDiscountAction mNomalDiscountAction; private BillDiscountAction mNomalDiscountAction;
/**
* 整單優惠券
*/
private BillCouponAction mBillCouponAction;
private Disposable mGetTablesDataDisposable; private Disposable mGetTablesDataDisposable;
private Disposable mTablesPollingDisposable; private Disposable mTablesPollingDisposable;
...@@ -139,20 +137,37 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -139,20 +137,37 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
//转移食品可多选 //转移食品可多选
mSelectMealAdapter.setSelectedMode(SelectMealAdapter.MULTIPLE_SELECTED); mSelectMealAdapter.setSelectedMode(SelectMealAdapter.MULTIPLE_SELECTED);
} }
mNomalDiscountAction = new BillDiscountAction(IActivity, new BillDiscountAction.OnCallBackListener() { mNomalDiscountAction = BillDiscountAction.builder()
.cashStr(cashStr)
.context(IActivity)
.listener(new BillDiscountAction.OnCallBackListener() {
@Override @Override
public void exclusiveRemoveOthers(List<NomalDiscount> nomalDiscountList) { public void exclusiveRemoveOthers(List<NomalDiscount> nomalDiscountList) {
mShoppingCart.delAllNomalDiscountList(nomalDiscountList); mShoppingCart.delAllNomalDiscountList(nomalDiscountList);
} }
@Override @Override
public void preformAddDiscount(Discount discount) { public void preformAddDiscount(Discount discount) {
mShoppingCart.addMultyDiscount(mShoppingCart.createNomalDiscount(discount, BillItem.BILL_ITEM_NO_ORDER_STATUS)); mShoppingCart.addMultyDiscount(mShoppingCart.createNomalDiscount(discount, BillItem.BILL_ITEM_NO_ORDER_STATUS));
DoshokuOrder.getInstance().setBillItemStatus(DoshokuOrder.DISCOUNT_ITEM_TAG); DoshokuOrder.getInstance().setBillItemStatus(DoshokuOrder.DISCOUNT_ITEM_TAG);
updateBillInfo(); 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 @Override
...@@ -281,7 +296,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -281,7 +296,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
NomalDiscount nomalDiscount = (NomalDiscount) ((DiscountItem) item).getDiscount(); NomalDiscount nomalDiscount = (NomalDiscount) ((DiscountItem) item).getDiscount();
mDoshokuOrder.addDeleteDiscountId(nomalDiscount.getDiscount().getDiscountRecordId()); mDoshokuOrder.addDeleteDiscountId(nomalDiscount.getDiscount().getDiscountRecordId());
} else if (item.getType() == BillItem.COUPON_DISCOUNT_TYPE) { } else if (item.getType() == BillItem.COUPON_DISCOUNT_TYPE) {
CouponDiscount couponDiscount = (CouponDiscount) ((DiscountItem) item).getDiscount(); MemberCouponDiscount couponDiscount = (MemberCouponDiscount) ((DiscountItem) item).getDiscount();
mDoshokuOrder.addDeleteDiscountId(couponDiscount.getCouponDiscountId()); mDoshokuOrder.addDeleteDiscountId(couponDiscount.getCouponDiscountId());
} }
} }
...@@ -820,25 +835,16 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -820,25 +835,16 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
@Override @Override
public void onBillDiscountClick(Discount item, int position) { public void onBillDiscountClick(Discount item, int position) {
if (item.getMinBillAmount() > mShoppingCart.getWholeAmount()) { mNomalDiscountAction.setWholeAmount(mShoppingCart.getWholeAmount());
//小於最小賬單金額
mRootView.showMessage("小於最小賬單金額" + cashStr + item.getMinBillAmount() + " 無法使用此折扣");
return;
}
mNomalDiscountAction.setNomalDiscountList(mShoppingCart.getNomalDiscoutByMultyDiscountList()); mNomalDiscountAction.setNomalDiscountList(mShoppingCart.getNomalDiscoutByMultyDiscountList());
mNomalDiscountAction.action(item); mNomalDiscountAction.action(item);
dialogFragment.dismiss(); dialogFragment.dismiss();
} }
@Override @Override
public void onCouponClick(MemberCoupon item, int position) { public void onCouponClick(MemberWalletCoupon item, int position) {
if (item.getBillMinAmount() > mShoppingCart.getWholeAmount()) { mBillCouponAction.setNomalDiscountList(mShoppingCart.getNomalDiscoutByMultyDiscountList());
//小於最小賬單金額 mBillCouponAction.action(item);
mRootView.showMessage("小於最小賬單金額" + cashStr + item.getBillMinAmount() + " 無法使用此優惠券");
return;
}
mNomalDiscountAction.setNomalDiscountList(mShoppingCart.getNomalDiscoutByMultyDiscountList());
mNomalDiscountAction.action(item.castDiscount());
dialogFragment.dismiss(); dialogFragment.dismiss();
} }
}); });
......
...@@ -2,14 +2,12 @@ package com.gingersoft.gsa.cloud.table.mvp.presenter.discount; ...@@ -2,14 +2,12 @@ package com.gingersoft.gsa.cloud.table.mvp.presenter.discount;
import android.app.Application; 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.member.MemberInfo;
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager; import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
import com.gingersoft.gsa.cloud.common.loadsir.EmptyCallback; 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.order.order.DoshokuOrder;
import com.gingersoft.gsa.cloud.common.rxjava.ErrorHandleSingleSubscriber; 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.integration.AppManager;
import com.jess.arms.di.scope.FragmentScope; import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.mvp.BasePresenter; import com.jess.arms.mvp.BasePresenter;
...@@ -53,13 +51,8 @@ public class CouponPresenter extends BasePresenter<CouponContract.Model, CouponC ...@@ -53,13 +51,8 @@ public class CouponPresenter extends BasePresenter<CouponContract.Model, CouponC
//是否可以繼續上拉刷新 //是否可以繼續上拉刷新
private boolean noMoreData = false; private boolean noMoreData = false;
/**
* 0=沒有限制 private int pageIndex = 0;
* 1=食品專有
* 2=帳單專有
*/
private int limitType = 0;
private int pageIndex = 1;
private int pageSize = 20; private int pageSize = 20;
@Inject @Inject
...@@ -76,13 +69,20 @@ public class CouponPresenter extends BasePresenter<CouponContract.Model, CouponC ...@@ -76,13 +69,20 @@ public class CouponPresenter extends BasePresenter<CouponContract.Model, CouponC
this.mApplication = null; this.mApplication = null;
} }
public void getMemberWalletList(RefreshLayout refreshLayout, boolean isLoadMore) { public void getMemberWalletList(RefreshLayout refreshLayout, boolean isLoadMore, int limitType) {
int brandId = RestaurantInfoManager.newInstance().getBrandId(); int brandId = RestaurantInfoManager.newInstance().getBrandId();
MemberInfo memberInfo = DoshokuOrder.getInstance().getMemberInfo(); MemberInfo memberInfo = DoshokuOrder.getInstance().getMemberInfo();
long memberId = 0; long memberId = 0;
if (memberInfo != null) { if (memberInfo != null) {
memberId = memberInfo.getId(); memberId = memberInfo.getId();
} }
if (!isLoadMore) {
pageIndex = 0;
}
if (pageIndex != 0) {
//根據數據庫下標分頁
pageIndex = pageIndex * pageSize;
}
mModel.getMemberWalletList(brandId, memberId, limitType, pageIndex, pageSize) mModel.getMemberWalletList(brandId, memberId, limitType, pageIndex, pageSize)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> { .doOnSubscribe(disposable -> {
...@@ -95,15 +95,13 @@ public class CouponPresenter extends BasePresenter<CouponContract.Model, CouponC ...@@ -95,15 +95,13 @@ public class CouponPresenter extends BasePresenter<CouponContract.Model, CouponC
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading()) .doAfterTerminate(() -> mRootView.hideLoading())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView)) .compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSingleSubscriber<List<MemberCoupon>>(mErrorHandler, mRootView.getLoadService()) { .subscribe(new ErrorHandleSingleSubscriber<List<MemberWalletCoupon>>(mErrorHandler, mRootView.getLoadService()) {
@Override @Override
public void onSuccess(List<MemberCoupon> result) { public void onSuccess(List<MemberWalletCoupon> result) {
if (pageIndex != 0) {
//根據數據庫下標分頁
pageIndex = pageIndex * pageSize;
}
if (result.size() > 0) { if (result.size() > 0) {
//每次更新完數據,頁碼+1
pageIndex++;
if (!noMoreData) { if (!noMoreData) {
mRootView.returnMemberCouponList(result); mRootView.returnMemberCouponList(result);
mRootView.showLoadSirSuccess(); mRootView.showLoadSirSuccess();
...@@ -124,10 +122,6 @@ public class CouponPresenter extends BasePresenter<CouponContract.Model, CouponC ...@@ -124,10 +122,6 @@ public class CouponPresenter extends BasePresenter<CouponContract.Model, CouponC
@Override @Override
public void onError(Throwable t) { public void onError(Throwable t) {
if (pageIndex != 0) {
//根據數據庫下標分頁
pageIndex = pageIndex * pageSize;
}
resetRefreshLayout(false); 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.Activity;
import android.app.Application; import android.app.Application;
...@@ -10,11 +10,10 @@ import com.gingersoft.gsa.cloud.common.constans.MealConstant; ...@@ -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.LanguageUtils;
import com.gingersoft.gsa.cloud.common.utils.VibratorUtils; import com.gingersoft.gsa.cloud.common.utils.VibratorUtils;
import com.gingersoft.gsa.cloud.database.bean.Modifier; 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.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder; import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
import com.gingersoft.gsa.cloud.table.R; 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.model.bean.SoldoutCtrFood;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity; import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.FineItemOneAdapter; 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 ...@@ -51,7 +50,7 @@ import static com.gingersoft.gsa.cloud.table.mvp.ui.activity.SoldoutCtrlActivity
* ================================================ * ================================================
*/ */
@FragmentScope @FragmentScope
public class FineItemAllPresenter extends BasePresenter<FineItemAllContract.Model, FineItemAllContract.View> { public class FineChildAllPresenter extends BasePresenter<FineChildAllContract.Model, FineChildAllContract.View> {
@Inject @Inject
RxErrorHandler mErrorHandler; RxErrorHandler mErrorHandler;
@Inject @Inject
...@@ -78,7 +77,7 @@ public class FineItemAllPresenter extends BasePresenter<FineItemAllContract.Mode ...@@ -78,7 +77,7 @@ public class FineItemAllPresenter extends BasePresenter<FineItemAllContract.Mode
private Activity IActivity; private Activity IActivity;
@Inject @Inject
public FineItemAllPresenter(FineItemAllContract.Model model, FineItemAllContract.View rootView) { public FineChildAllPresenter(FineChildAllContract.Model model, FineChildAllContract.View rootView) {
super(model, rootView); super(model, rootView);
this.IActivity = (Activity) rootView.getCurrentActivity(); this.IActivity = (Activity) rootView.getCurrentActivity();
} }
...@@ -482,10 +481,6 @@ public class FineItemAllPresenter extends BasePresenter<FineItemAllContract.Mode ...@@ -482,10 +481,6 @@ public class FineItemAllPresenter extends BasePresenter<FineItemAllContract.Mode
mFineItemOneList.clear(); mFineItemOneList.clear();
mFineItemOneList = null; 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.app.Application;
import android.content.Context; import android.content.Context;
...@@ -8,8 +8,9 @@ import com.gingersoft.gsa.cloud.common.utils.LanguageUtils; ...@@ -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.ComboItem;
import com.gingersoft.gsa.cloud.database.bean.Modifier; import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.database.utils.ModifierDaoUtils; 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.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.activity.SoldoutCtrlActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ComboAdapter; import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ComboAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ModifierAdapter; 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 ...@@ -43,7 +44,7 @@ import static com.gingersoft.gsa.cloud.table.mvp.ui.activity.SoldoutCtrlActivity
* ================================================ * ================================================
*/ */
@FragmentScope @FragmentScope
public class FineItemOneselfPresenter extends BasePresenter<FineItemOneselfContract.Model, FineItemOneselfContract.View> { public class FineChildOneselfPresenter extends BasePresenter<FineChildOneselfContract.Model, FineChildOneselfContract.View> {
@Inject @Inject
RxErrorHandler mErrorHandler; RxErrorHandler mErrorHandler;
@Inject @Inject
...@@ -65,7 +66,7 @@ public class FineItemOneselfPresenter extends BasePresenter<FineItemOneselfContr ...@@ -65,7 +66,7 @@ public class FineItemOneselfPresenter extends BasePresenter<FineItemOneselfContr
private SoldoutCtrlActivity IActivity; private SoldoutCtrlActivity IActivity;
@Inject @Inject
public FineItemOneselfPresenter(FineItemOneselfContract.Model model, FineItemOneselfContract.View rootView) { public FineChildOneselfPresenter(FineChildOneselfContract.Model model, FineChildOneselfContract.View rootView) {
super(model, rootView); super(model, rootView);
this.IActivity = (SoldoutCtrlActivity) rootView.getCurrentActivity(); 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;
}
}
...@@ -36,6 +36,7 @@ import com.gingersoft.gsa.cloud.print.bean.adapter.PrintContentAdapter; ...@@ -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.R;
import com.gingersoft.gsa.cloud.table.mvp.action.discount.MealDiscountAction; 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.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.FoodReason;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood; import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.AddOrderRequest; 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 ...@@ -102,7 +103,7 @@ import static com.gingersoft.gsa.cloud.table.mvp.ui.activity.SoldoutCtrlActivity
* ================================================ * ================================================
*/ */
@ActivityScope @ActivityScope
public class MealStandPresenter2 extends BaseOrderPresenter2<MealStandContract.Model, MealStandContract.View> { public class MealStandPresenter2 extends BaseOrderPresenter2<MealStandContract2.Model, MealStandContract2.View> {
@Inject @Inject
RxErrorHandler mErrorHandler; RxErrorHandler mErrorHandler;
@Inject @Inject
...@@ -113,7 +114,7 @@ public class MealStandPresenter2 extends BaseOrderPresenter2<MealStandContract.M ...@@ -113,7 +114,7 @@ public class MealStandPresenter2 extends BaseOrderPresenter2<MealStandContract.M
AppManager mAppManager; AppManager mAppManager;
@Inject @Inject
public MealStandPresenter2(MealStandContract.Model model, MealStandContract.View rootView) { public MealStandPresenter2(MealStandContract2.Model model, MealStandContract2.View rootView) {
super(model, 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());
}
}
});
}
}
...@@ -5,27 +5,21 @@ import android.content.Intent; ...@@ -5,27 +5,21 @@ import android.content.Intent;
import android.graphics.Color; import android.graphics.Color;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.PersistableBundle;
import android.os.SystemClock; import android.os.SystemClock;
import android.text.Editable;
import android.text.TextUtils; import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.util.SparseArray; import android.util.SparseArray;
import android.util.TypedValue; import android.util.TypedValue;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.ViewStub;
import android.widget.BaseAdapter; import android.widget.BaseAdapter;
import android.widget.Button; import android.widget.Button;
import android.widget.Chronometer; import android.widget.Chronometer;
import android.widget.EditText;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import android.widget.ScrollView;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
...@@ -42,7 +36,6 @@ import androidx.viewpager.widget.ViewPager; ...@@ -42,7 +36,6 @@ import androidx.viewpager.widget.ViewPager;
import com.billy.cc.core.component.CC; import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.app.GsaCloudApplication; import com.gingersoft.gsa.cloud.app.GsaCloudApplication;
import com.gingersoft.gsa.cloud.common.constans.FoodSummaryConstans; 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.constans.MealConstant;
import com.gingersoft.gsa.cloud.common.core.member.MemberInfo; 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.RestaurantInfoManager;
...@@ -59,7 +52,7 @@ import com.gingersoft.gsa.cloud.order.billItem.BillItem; ...@@ -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.billItem.DiscountItem;
import com.gingersoft.gsa.cloud.order.cart.ShoppingCart; import com.gingersoft.gsa.cloud.order.cart.ShoppingCart;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail; 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.discount.MultyDiscount;
import com.gingersoft.gsa.cloud.order.order.BaseOrder; import com.gingersoft.gsa.cloud.order.order.BaseOrder;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder; import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
...@@ -71,12 +64,11 @@ import com.gingersoft.gsa.cloud.table.di.component.DaggerMealStandComponent; ...@@ -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.contract.MealStandContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood; import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.event.InitTableEvent; 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.presenter.mealstand.MealStandPresenter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BaseFragmentAdapter; 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.FoodGroupAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.SelectMealAdapter; import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.SelectMealAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.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.ChooseNumberDialog;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.CustomFoodDialog; import com.gingersoft.gsa.cloud.table.mvp.ui.widget.CustomFoodDialog;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.UseMemberDialog; import com.gingersoft.gsa.cloud.table.mvp.ui.widget.UseMemberDialog;
...@@ -95,12 +87,8 @@ import com.jess.arms.base.BaseFragmentActivity; ...@@ -95,12 +87,8 @@ import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.base.DefaultAdapter; import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
import com.lxj.xpopup.util.KeyboardUtils;
import com.qmuiteam.qmui.alpha.QMUIAlphaTextView; import com.qmuiteam.qmui.alpha.QMUIAlphaTextView;
import com.qmuiteam.qmui.util.QMUIDisplayHelper; 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; import org.simple.eventbus.EventBus;
...@@ -154,8 +142,15 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter> ...@@ -154,8 +142,15 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
RecyclerView rv_combo; RecyclerView rv_combo;
@BindView(R2.id.rv_modifier) @BindView(R2.id.rv_modifier)
RecyclerView 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) @BindView(R2.id.rv_discount)
RecyclerView rv_discount; RecyclerView rv_discount;
// @BindView(R2.id.rv_coupon)
// RecyclerView rv_coupon;
@BindView(R2.id.scroll_combo) @BindView(R2.id.scroll_combo)
NestedScrollView scroll_combo; NestedScrollView scroll_combo;
...@@ -257,7 +252,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter> ...@@ -257,7 +252,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
@BindView(R2.id.tv_fine_type) @BindView(R2.id.tv_fine_type)
TextView tv_fine_type; TextView tv_fine_type;
private FineItemAllFragment modMsgFineItemFragment, modSasteFineItemFragment; private FineChildAllFragment modMsgFineItemFragment, modSasteFineItemFragment;
private ChooseNumberDialog mChooseNumberDialog; private ChooseNumberDialog mChooseNumberDialog;
private UseMemberDialog mUseMemberDialog; private UseMemberDialog mUseMemberDialog;
...@@ -498,8 +493,8 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter> ...@@ -498,8 +493,8 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
FragmentManager fm = getSupportFragmentManager(); FragmentManager fm = getSupportFragmentManager();
List<Fragment> fragmentList = new ArrayList<>(); List<Fragment> fragmentList = new ArrayList<>();
// Fragment标签 // Fragment标签
modSasteFineItemFragment = FineItemAllFragment.newInstance(); modSasteFineItemFragment = FineChildAllFragment.newInstance();
modMsgFineItemFragment = FineItemAllFragment.newInstance(); modMsgFineItemFragment = FineChildAllFragment.newInstance();
fragmentList.add(modSasteFineItemFragment); fragmentList.add(modSasteFineItemFragment);
fragmentList.add(modMsgFineItemFragment); fragmentList.add(modMsgFineItemFragment);
// fragmentList.add(modCommFineItemFragment); // fragmentList.add(modCommFineItemFragment);
...@@ -626,10 +621,15 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter> ...@@ -626,10 +621,15 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
showMessage("此食品不能參與折扣!"); showMessage("此食品不能參與折扣!");
return; return;
} }
//更新折扣数据
mPresenter.loadDiscountData();
showViewModeVisibility(MealConstant.discount_ViewMode); mPresenter.loadDiscountFragment();
showModifyLayoutVisibility(true);
// //更新折扣数据
// mPresenter.loadDiscountData();
//
// showViewModeVisibility(MealConstant.discount_ViewMode);
} }
@OnClick(R2.id.btn_table) @OnClick(R2.id.btn_table)
...@@ -658,22 +658,25 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter> ...@@ -658,22 +658,25 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
public void onUseMember(UseMemberDialog dialog) { public void onUseMember(UseMemberDialog dialog) {
if (mMemberInfo != null) { if (mMemberInfo != null) {
dialog.dismiss(); dialog.dismiss();
if (DoshokuOrder.getInstance().getMemberInfo() == null) {
useMember(); // if (DoshokuOrder.getInstance().getMemberInfo() == null) {
DoshokuOrder.getInstance().setMemberInfo(mMemberInfo); DoshokuOrder.getInstance().setMemberInfo(mMemberInfo);
//添加会员折扣行 useMember();
ShoppingCart shoppingCart = mPresenter.getShoppingCart();
MultyDiscount multyDiscount = shoppingCart.createMemberDiscount(mMemberInfo, BillItem.BILL_ITEM_NO_ORDER_STATUS);
shoppingCart.addMultyDiscount(multyDiscount);
DoshokuOrder.getInstance().setBillItemStatus(DoshokuOrder.MEMBER_ITEM_TAG); //添加会员折扣行
ShoppingCart shoppingCart = mPresenter.getShoppingCart();
MultyDiscount multyDiscount = shoppingCart.createMemberDiscount(mMemberInfo, BillItem.BILL_ITEM_NO_ORDER_STATUS);
shoppingCart.addMultyDiscount(multyDiscount);
mPresenter.updateBillInfo(); DoshokuOrder.getInstance().setBillItemStatus(DoshokuOrder.MEMBER_ITEM_TAG);
} mPresenter.updateBillInfo();
// } else {
// DoshokuOrder.getInstance().setMemberInfo(mMemberInfo);
// }
} else { } else {
showMessage("請輸入正確的會員號碼!"); showMessage("請輸入正確的會員號碼!");
} }
...@@ -684,7 +687,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter> ...@@ -684,7 +687,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
btn_table.setBackgroundColor(Color.parseColor("#336699")); btn_table.setBackgroundColor(Color.parseColor("#336699"));
DoshokuOrder.getInstance().setMemberInfo(null); DoshokuOrder.getInstance().setMemberInfo(null);
DiscountItem memberDiscountBillItem = (DiscountItem) mPresenter.findBillItemByClass(MemberDiscount.class); DiscountItem memberDiscountBillItem = (DiscountItem) mPresenter.findBillItemByClass(MemberLevelDiscount.class);
if (memberDiscountBillItem != null) { if (memberDiscountBillItem != null) {
ShoppingCart shoppingCart = mPresenter.getShoppingCart(); ShoppingCart shoppingCart = mPresenter.getShoppingCart();
shoppingCart.delMultyDiscount(memberDiscountBillItem.getDiscount()); shoppingCart.delMultyDiscount(memberDiscountBillItem.getDiscount());
...@@ -823,6 +826,9 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter> ...@@ -823,6 +826,9 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
mPresenter.deleteChildItem(); mPresenter.deleteChildItem();
} }
} else if (id == R.id.btn_end) { } else if (id == R.id.btn_end) {
if (mPresenter.getDiscountFragment() != null) {
mPresenter.getDiscountFragment().pop();
}
mPresenter.getSelectMealAdapter().setSelectedMode(SelectMealAdapter.SINGLE_SELECTED); mPresenter.getSelectMealAdapter().setSelectedMode(SelectMealAdapter.SINGLE_SELECTED);
btn_delete.setVisibility(View.VISIBLE); btn_delete.setVisibility(View.VISIBLE);
setSelectFunctionVisibility(View.GONE); setSelectFunctionVisibility(View.GONE);
......
...@@ -669,6 +669,12 @@ public class OrderPayActivity extends BaseFragmentActivity<OrderPayPresenter> im ...@@ -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() { public OrderPayView getGsaPayView() {
return gsaPayView; return gsaPayView;
} }
......
...@@ -16,7 +16,6 @@ import com.gingersoft.gsa.cloud.app.GsaCloudApplication; ...@@ -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.LanguageUtils;
import com.gingersoft.gsa.cloud.common.utils.VibratorUtils; import com.gingersoft.gsa.cloud.common.utils.VibratorUtils;
import com.gingersoft.gsa.cloud.common.utils.log.LogUtil; 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.common.constans.MealConstant;
import com.gingersoft.gsa.cloud.database.bean.Food; import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.table.R; import com.gingersoft.gsa.cloud.table.R;
...@@ -25,9 +24,9 @@ import com.gingersoft.gsa.cloud.table.di.component.DaggerSoldoutCtrlComponent; ...@@ -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.contract.SoldoutCtrlContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood; import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood;
import com.gingersoft.gsa.cloud.table.mvp.presenter.SoldoutCtrlPresenter; 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.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.table.mvp.ui.widget.ChooseNumberDialog;
import com.gingersoft.gsa.cloud.ui.recylcler.Indicator.PagerGridLayoutManager; import com.gingersoft.gsa.cloud.ui.recylcler.Indicator.PagerGridLayoutManager;
import com.gingersoft.gsa.cloud.ui.recylcler.Indicator.PagerGridSnapHelper; import com.gingersoft.gsa.cloud.ui.recylcler.Indicator.PagerGridSnapHelper;
...@@ -136,8 +135,8 @@ public class SoldoutCtrlActivity extends BaseFragmentActivity<SoldoutCtrlPresent ...@@ -136,8 +135,8 @@ public class SoldoutCtrlActivity extends BaseFragmentActivity<SoldoutCtrlPresent
public static final int FOOD_TYPE = 2; public static final int FOOD_TYPE = 2;
public static final int MODIFIER_TYPE = 3; public static final int MODIFIER_TYPE = 3;
private FineItemOneselfFragment oneselfFineItemFragment; private FineChildOneselfFragment oneselfFineItemFragment;
private FineItemAllFragment modMsgFineItemFragment, modSasteFineItemFragment; private FineChildAllFragment modMsgFineItemFragment, modSasteFineItemFragment;
private String[] mFineTabTitles = {"子項", "口味", "特別信息"}; private String[] mFineTabTitles = {"子項", "口味", "特別信息"};
private int mCurrentFinePageIndex; private int mCurrentFinePageIndex;
...@@ -724,19 +723,19 @@ public class SoldoutCtrlActivity extends BaseFragmentActivity<SoldoutCtrlPresent ...@@ -724,19 +723,19 @@ public class SoldoutCtrlActivity extends BaseFragmentActivity<SoldoutCtrlPresent
if (modMsgFineItemFragment != null) { if (modMsgFineItemFragment != null) {
return modMsgFineItemFragment; return modMsgFineItemFragment;
} }
modMsgFineItemFragment = FineItemAllFragment.newInstance(); modMsgFineItemFragment = FineChildAllFragment.newInstance();
return modMsgFineItemFragment; return modMsgFineItemFragment;
case 1: case 1:
if (modSasteFineItemFragment != null) { if (modSasteFineItemFragment != null) {
return modSasteFineItemFragment; return modSasteFineItemFragment;
} }
modSasteFineItemFragment = FineItemAllFragment.newInstance(); modSasteFineItemFragment = FineChildAllFragment.newInstance();
return modSasteFineItemFragment; return modSasteFineItemFragment;
default: default:
if (oneselfFineItemFragment != null) { if (oneselfFineItemFragment != null) {
return oneselfFineItemFragment; return oneselfFineItemFragment;
} }
oneselfFineItemFragment = FineItemOneselfFragment.newInstance(); oneselfFineItemFragment = FineChildOneselfFragment.newInstance();
return oneselfFineItemFragment; return oneselfFineItemFragment;
} }
} }
......
...@@ -394,7 +394,7 @@ public class TableActivity extends BaseFragmentActivity<TablePresenter> implemen ...@@ -394,7 +394,7 @@ public class TableActivity extends BaseFragmentActivity<TablePresenter> implemen
@Override @Override
public void startMealStandActivity() { public void startMealStandActivity() {
startActivity(new Intent(this, MealStandActivity.class)); startActivity(new Intent(this, MealStandActivity2.class));
} }
@Override @Override
......
...@@ -19,5 +19,4 @@ public class MemberInfoAdapter extends BaseQuickAdapter<SectionTextItem, BaseVie ...@@ -19,5 +19,4 @@ public class MemberInfoAdapter extends BaseQuickAdapter<SectionTextItem, BaseVie
helper.setText(R.id.tv_text, item.getText()); helper.setText(R.id.tv_text, item.getText());
} }
} }
...@@ -19,11 +19,14 @@ import com.gingersoft.gsa.cloud.table.mvp.presenter.mealstand.MealStandPresenter ...@@ -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.presenter.mealstand.SetMealPresenter;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity; 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.MealStandActivity2;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand.SetMealFragment;
import com.jess.arms.base.BaseHolder; import com.jess.arms.base.BaseHolder;
import com.jess.arms.base.DefaultAdapter; import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.mvp.BasePresenter; import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
import org.simple.eventbus.EventBus;
import java.util.List; import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
...@@ -442,7 +445,8 @@ public class SelectMealAdapter2 extends DefaultAdapter<OrderDetail> { ...@@ -442,7 +445,8 @@ public class SelectMealAdapter2 extends DefaultAdapter<OrderDetail> {
setSelectPosition(select_position); 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> { ...@@ -488,9 +492,10 @@ public class SelectMealAdapter2 extends DefaultAdapter<OrderDetail> {
setSelectPosition(select_position); setSelectPosition(select_position);
if (mMealStandActivity != null) { EventBus.getDefault().post(SetMealFragment.FOOD_LAYOUT,SetMealFragment.SET_CURR_LAYOUT_EVENT);
mMealStandActivity.showViewModeVisibility(MealConstant.food_group_ViewMode, MealConstant.food_ViewMode); // if (mMealStandActivity != null) {
} // mMealStandActivity.showViewModeVisibility(MealConstant.food_group_ViewMode, MealConstant.food_ViewMode);
// }
return select_position; return select_position;
} }
......
...@@ -12,7 +12,7 @@ import androidx.recyclerview.widget.GridLayoutManager; ...@@ -12,7 +12,7 @@ import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; 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.R;
import com.gingersoft.gsa.cloud.table.R2; import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.di.component.DaggerCouponComponent; import com.gingersoft.gsa.cloud.table.di.component.DaggerCouponComponent;
...@@ -66,10 +66,23 @@ public class CouponFragment extends BaseFragment<CouponPresenter> implements Cou ...@@ -66,10 +66,23 @@ public class CouponFragment extends BaseFragment<CouponPresenter> implements Cou
@Inject @Inject
TagViewAdapter mMemberCouponAdapter; 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; private LoadService loadService;
public static CouponFragment newInstance() { public static CouponFragment newInstance(int limitType) {
CouponFragment fragment = new CouponFragment(); CouponFragment fragment = new CouponFragment();
Bundle bundle = new Bundle();
bundle.putInt("limitType", limitType);
fragment.setArguments(bundle);
return fragment; return fragment;
} }
...@@ -89,11 +102,18 @@ public class CouponFragment extends BaseFragment<CouponPresenter> implements Cou ...@@ -89,11 +102,18 @@ public class CouponFragment extends BaseFragment<CouponPresenter> implements Cou
} }
@Override @Override
public void onCreate(@Nullable Bundle savedInstanceState) {
Bundle arguments = getArguments();
limitType = arguments.getInt("limitType");
super.onCreate(savedInstanceState);
}
@Override
public void initData(@Nullable Bundle savedInstanceState) { public void initData(@Nullable Bundle savedInstanceState) {
loadService = LoadSir.getDefault().register(refreshLayout, new Callback.OnReloadListener() { loadService = LoadSir.getDefault().register(refreshLayout, new Callback.OnReloadListener() {
@Override @Override
public void onReload(View v) { 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 ...@@ -104,7 +124,7 @@ public class CouponFragment extends BaseFragment<CouponPresenter> implements Cou
@Override @Override
public void onLazyInitView(@Nullable Bundle savedInstanceState) { public void onLazyInitView(@Nullable Bundle savedInstanceState) {
super.onLazyInitView(savedInstanceState); super.onLazyInitView(savedInstanceState);
mPresenter.getMemberWalletList(null, true); mPresenter.getMemberWalletList(null, false,limitType);
} }
private void initAdapter() { private void initAdapter() {
...@@ -112,7 +132,7 @@ public class CouponFragment extends BaseFragment<CouponPresenter> implements Cou ...@@ -112,7 +132,7 @@ public class CouponFragment extends BaseFragment<CouponPresenter> implements Cou
rvCoupon.setAdapter(mMemberCouponAdapter); rvCoupon.setAdapter(mMemberCouponAdapter);
mMemberCouponAdapter.setOnItemClickListener((adapter, view, position) -> { mMemberCouponAdapter.setOnItemClickListener((adapter, view, position) -> {
if (onCouponItemClickListener != null) { 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 ...@@ -130,13 +150,13 @@ public class CouponFragment extends BaseFragment<CouponPresenter> implements Cou
refreshLayout.setOnRefreshListener(new OnRefreshListener() { refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@Override @Override
public void onRefresh(@NonNull final RefreshLayout refreshLayout) { public void onRefresh(@NonNull final RefreshLayout refreshLayout) {
mPresenter.getMemberWalletList(refreshLayout,true); mPresenter.getMemberWalletList(refreshLayout, false,limitType);
} }
}); });
refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@Override @Override
public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { public void onLoadMore(@NonNull final RefreshLayout refreshLayout) {
mPresenter.getMemberWalletList(refreshLayout,false); mPresenter.getMemberWalletList(refreshLayout, true,limitType);
} }
}); });
refreshLayout.setEnableLoadMore(false); refreshLayout.setEnableLoadMore(false);
...@@ -179,7 +199,7 @@ public class CouponFragment extends BaseFragment<CouponPresenter> implements Cou ...@@ -179,7 +199,7 @@ public class CouponFragment extends BaseFragment<CouponPresenter> implements Cou
} }
@Override @Override
public void returnMemberCouponList(List<MemberCoupon> memberCoupons) { public void returnMemberCouponList(List<MemberWalletCoupon> memberCoupons) {
List<TagViewItem> tagViewItems = castTagItem(memberCoupons); List<TagViewItem> tagViewItems = castTagItem(memberCoupons);
if (mMemberCouponList.size() > 0) { if (mMemberCouponList.size() > 0) {
mMemberCouponList.clear(); mMemberCouponList.clear();
...@@ -188,12 +208,12 @@ public class CouponFragment extends BaseFragment<CouponPresenter> implements Cou ...@@ -188,12 +208,12 @@ public class CouponFragment extends BaseFragment<CouponPresenter> implements Cou
mMemberCouponAdapter.notifyDataSetChanged(); mMemberCouponAdapter.notifyDataSetChanged();
} }
private List<TagViewItem> castTagItem(List<MemberCoupon> memberCoupons) { private List<TagViewItem> castTagItem(List<MemberWalletCoupon> memberCoupons) {
List<TagViewItem> tagViewItems = new ArrayList<>(); List<TagViewItem> tagViewItems = new ArrayList<>();
for (MemberCoupon coupon : memberCoupons) { for (MemberWalletCoupon coupon : memberCoupons) {
TagViewItem<MemberCoupon> tagViewItem = new TagViewItem(); TagViewItem<MemberWalletCoupon> tagViewItem = new TagViewItem();
tagViewItem.setId(coupon.getId()); tagViewItem.setId(coupon.getId());
tagViewItem.setText(coupon.getRemark()); tagViewItem.setText(coupon.getCouponTypeName());
tagViewItem.setTargetObj(coupon); tagViewItem.setTargetObj(coupon);
tagViewItems.add(tagViewItem); tagViewItems.add(tagViewItem);
} }
...@@ -222,6 +242,6 @@ public class CouponFragment extends BaseFragment<CouponPresenter> implements Cou ...@@ -222,6 +242,6 @@ public class CouponFragment extends BaseFragment<CouponPresenter> implements Cou
} }
public interface OnCouponItemClickListener { public interface OnCouponItemClickListener {
void onItemClick(MemberCoupon item, int position); void onItemClick(MemberWalletCoupon item, int position);
} }
} }
...@@ -15,7 +15,7 @@ import androidx.annotation.Nullable; ...@@ -15,7 +15,7 @@ import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager; 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.core.member.MemberInfo;
import com.gingersoft.gsa.cloud.common.logan.LoganManager; import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.database.bean.Discount; import com.gingersoft.gsa.cloud.database.bean.Discount;
...@@ -80,7 +80,7 @@ public class DiscountDialogFragment extends BaseDialogFragment<BasePresenter> { ...@@ -80,7 +80,7 @@ public class DiscountDialogFragment extends BaseDialogFragment<BasePresenter> {
@Override @Override
public void onStart() { public void onStart() {
super.onStart(); super.onStart();
mWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); mWindow.setBackgroundDrawable(new ColorDrawable(Color.WHITE));
WindowManager.LayoutParams lp = mWindow.getAttributes(); WindowManager.LayoutParams lp = mWindow.getAttributes();
lp.width = WindowManager.LayoutParams.MATCH_PARENT; lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = (int) (QMUIDisplayHelper.getScreenHeight(mContext) * 0.6); lp.height = (int) (QMUIDisplayHelper.getScreenHeight(mContext) * 0.6);
...@@ -114,10 +114,10 @@ public class DiscountDialogFragment extends BaseDialogFragment<BasePresenter> { ...@@ -114,10 +114,10 @@ public class DiscountDialogFragment extends BaseDialogFragment<BasePresenter> {
if (couponFragment != null) { if (couponFragment != null) {
return couponFragment; return couponFragment;
} }
couponFragment = CouponFragment.newInstance(); couponFragment = CouponFragment.newInstance(CouponFragment.BILL_LIMIT_DISCOUNT);
couponFragment.setOnCouponItemClickListener(new CouponFragment.OnCouponItemClickListener() { couponFragment.setOnCouponItemClickListener(new CouponFragment.OnCouponItemClickListener() {
@Override @Override
public void onItemClick(MemberCoupon item, int position) { public void onItemClick(MemberWalletCoupon item, int position) {
if (onDiscountItemClickListener != null) { if (onDiscountItemClickListener != null) {
onDiscountItemClickListener.onCouponClick(item, position); onDiscountItemClickListener.onCouponClick(item, position);
} }
...@@ -160,7 +160,7 @@ public class DiscountDialogFragment extends BaseDialogFragment<BasePresenter> { ...@@ -160,7 +160,7 @@ public class DiscountDialogFragment extends BaseDialogFragment<BasePresenter> {
tabSegment.addTab(tab1); tabSegment.addTab(tab1);
if (memberInfo != null) { if (memberInfo != null) {
mTabTitles.add("優惠券"); mTabTitles.add("會員錢包");
QMUITab tab2 = builder QMUITab tab2 = builder
.setText(mTabTitles.get(1)) .setText(mTabTitles.get(1))
.build(_mActivity); .build(_mActivity);
...@@ -209,6 +209,6 @@ public class DiscountDialogFragment extends BaseDialogFragment<BasePresenter> { ...@@ -209,6 +209,6 @@ public class DiscountDialogFragment extends BaseDialogFragment<BasePresenter> {
public interface OnDiscountItemClickListener { public interface OnDiscountItemClickListener {
void onBillDiscountClick(Discount item, int position); 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.app.Activity;
import android.content.Intent; import android.content.Intent;
...@@ -12,13 +12,13 @@ import com.gingersoft.gsa.cloud.table.R; ...@@ -12,13 +12,13 @@ import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2; import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.di.component.DaggerFineItemAllComponent; 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.model.bean.SoldoutCtrFood;
import com.gingersoft.gsa.cloud.table.mvp.presenter.mealstand.FineChildAllPresenter;
import com.jess.arms.base.BaseFragment; import com.jess.arms.base.BaseFragment;
import com.jess.arms.base.DefaultAdapter; import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
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.presenter.FineItemAllPresenter;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -47,18 +47,18 @@ import static com.jess.arms.utils.Preconditions.checkNotNull; ...@@ -47,18 +47,18 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a> * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================ * ================================================
*/ */
public class FineItemAllFragment extends BaseFragment<FineItemAllPresenter> implements FineItemAllContract.View { public class FineChildAllFragment extends BaseFragment<FineChildAllPresenter> implements FineChildAllContract.View {
@BindView(R2.id.recycle_fine_item_all) @BindView(R2.id.recycle_fine_item_all)
RecyclerView recycle_fine_item_all; RecyclerView recycle_fine_item_all;
@BindView(R2.id.recycle_fine_item_kind_item) @BindView(R2.id.recycle_fine_item_kind_item)
RecyclerView recycle_fine_item_kind_item;//细项分类详细数据 RecyclerView recycle_fine_item_kind_item;
private int modCol; private int modCol;
public static FineItemAllFragment newInstance() { public static FineChildAllFragment newInstance() {
FineItemAllFragment fragment = new FineItemAllFragment(); FineChildAllFragment fragment = new FineChildAllFragment();
return fragment; 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.app.Activity;
import android.content.Intent; import android.content.Intent;
...@@ -11,13 +11,13 @@ import android.widget.LinearLayout; ...@@ -11,13 +11,13 @@ import android.widget.LinearLayout;
import com.gingersoft.gsa.cloud.table.R; import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2; import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.di.component.DaggerFineItemOneselfComponent; 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.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood;
import com.jess.arms.base.BaseFragment; import com.jess.arms.base.BaseFragment;
import com.jess.arms.base.DefaultAdapter; import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils; 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; import java.util.List;
...@@ -41,7 +41,7 @@ import static com.jess.arms.utils.Preconditions.checkNotNull; ...@@ -41,7 +41,7 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a> * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================ * ================================================
*/ */
public class FineItemOneselfFragment extends BaseFragment<FineItemOneselfPresenter> implements FineItemOneselfContract.View { public class FineChildOneselfFragment extends BaseFragment<FineChildOneselfPresenter> implements FineChildOneselfContract.View {
@BindView(R2.id.rv_combo) @BindView(R2.id.rv_combo)
RecyclerView rv_combo; RecyclerView rv_combo;
...@@ -50,8 +50,8 @@ public class FineItemOneselfFragment extends BaseFragment<FineItemOneselfPresent ...@@ -50,8 +50,8 @@ public class FineItemOneselfFragment extends BaseFragment<FineItemOneselfPresent
private long mFid; private long mFid;
public static FineItemOneselfFragment newInstance() { public static FineChildOneselfFragment newInstance() {
FineItemOneselfFragment fragment = new FineItemOneselfFragment(); FineChildOneselfFragment fragment = new FineChildOneselfFragment();
return fragment; 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 ...@@ -102,7 +102,7 @@ public class MealDiscountFragment extends BaseFragment<MealDiscountPresenter> im
List<Fragment> fragments = new ArrayList<>(); List<Fragment> fragments = new ArrayList<>();
fragments.add(NomalDiscountFragment.newInstance()); fragments.add(NomalDiscountFragment.newInstance());
fragments.add(CouponFragment.newInstance()); fragments.add(CouponFragment.newInstance(CouponFragment.FOOD_LIMIT_DISCOUNT));
//实例化适配器 //实例化适配器
TabFragmentAdapter mTabFragmentAdapter = new TabFragmentAdapter(getParentFragmentManager(), 1); TabFragmentAdapter mTabFragmentAdapter = new TabFragmentAdapter(getParentFragmentManager(), 1);
......
...@@ -277,11 +277,6 @@ public class UseMemberDialog extends Dialog { ...@@ -277,11 +277,6 @@ public class UseMemberDialog extends Dialog {
recycler_member_info.setLayoutManager(mLayoutManager); recycler_member_info.setLayoutManager(mLayoutManager);
} }
public void setAdapter(BaseQuickAdapter adapter) {
recycler_member_info.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
private RecyclerView.LayoutManager createLayoutManager() { private RecyclerView.LayoutManager createLayoutManager() {
return new LinearLayoutManager(mContext) { return new LinearLayoutManager(mContext) {
@Override @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 @@ ...@@ -56,7 +56,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_below="@+id/ll_input_phone" 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 <ImageView
android:id="@+id/iv_no_data" android:id="@+id/iv_no_data"
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/scroll_combo" android:id="@+id/scroll_combo"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="wrap_content">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<merge <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<LinearLayout <LinearLayout
android:id="@+id/ll_food_container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"> android:orientation="vertical">
...@@ -41,23 +42,29 @@ ...@@ -41,23 +42,29 @@
android:orientation="vertical" /> android:orientation="vertical" />
</LinearLayout> </LinearLayout>
<ViewStub <include layout="@layout/meal_layout_combo_modifier"/>
android:id="@+id/vb_combo_modifier" <!-- <ViewStub-->
android:layout_width="match_parent" <!-- android:id="@+id/vb_combo_modifier"-->
android:layout_height="wrap_content" <!-- android:layout_width="match_parent"-->
android:layout="@layout/meal_layout_combo_modifier" /> <!-- 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 <include layout="@layout/meal_layout_meal_fine"/>
android:id="@+id/vb_fine" <!-- <ViewStub-->
android:layout_width="match_parent" <!-- android:id="@+id/vb_fine"-->
android:layout_height="wrap_content" <!-- android:layout_width="match_parent"-->
android:layout="@layout/meal_layout_meal_fine" /> <!-- 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 <LinearLayout
android:id="@+id/ll_modify" android:id="@+id/ll_modify"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/dp_45" android:layout_height="@dimen/dp_45"
android:layout_gravity="bottom" android:layout_alignParentBottom="true"
android:visibility="invisible"> android:visibility="invisible">
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView <com.qmuiteam.qmui.alpha.QMUIAlphaTextView
...@@ -135,4 +142,4 @@ ...@@ -135,4 +142,4 @@
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_14" /> android:textSize="@dimen/sp_14" />
</LinearLayout> </LinearLayout>
</merge> </RelativeLayout>
\ No newline at end of file \ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <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:id="@+id/ll_meals"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/dp_260" android:layout_height="@dimen/dp_260"
...@@ -126,7 +127,8 @@ ...@@ -126,7 +127,8 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:divider="@null" android:divider="@null"
android:fadeScrollbars="false" android:fadeScrollbars="false"
android:orientation="vertical" /> android:orientation="vertical"
app:layoutManager="com.gingersoft.gsa.cloud.ui.recylcler.RecyclerViewNoBugLinearLayoutManager"/>
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"> android:id="@+id/ll_fine"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.gingersoft.gsa.cloud.ui.view.MyTableView <com.gingersoft.gsa.cloud.ui.view.MyTableView
android:id="@+id/tab_fine" android:id="@+id/tab_fine"
......
...@@ -335,16 +335,39 @@ ...@@ -335,16 +335,39 @@
</RelativeLayout> </RelativeLayout>
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>
<androidx.recyclerview.widget.RecyclerView <!-- <LinearLayout-->
android:id="@+id/rv_discount" <!-- 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:divider="@null"
android:fadeScrollbars="false"
android:orientation="vertical"
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_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_above="@+id/ll_stand_oper" android:layout_above="@+id/ll_stand_oper"
android:layout_below="@+id/ll_meals" android:layout_below="@+id/ll_meals" />
android:divider="@null"
android:fadeScrollbars="false"
android:orientation="vertical"
android:visibility="gone" />
<FrameLayout <FrameLayout
android:id="@+id/fl_container" android:id="@+id/fl_container"
......
...@@ -6,12 +6,6 @@ ...@@ -6,12 +6,6 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"> 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 <com.qmuiteam.qmui.widget.tab.QMUITabSegment
android:id="@+id/tabSegment" android:id="@+id/tabSegment"
android:layout_width="match_parent" android:layout_width="match_parent"
......
...@@ -7,8 +7,8 @@ ext { ...@@ -7,8 +7,8 @@ ext {
targetSdkVersion : 29, targetSdkVersion : 29,
//正式版: 1.0.3 3 //正式版: 1.0.3 3
//內部測試版:1.2.0 20 //內部測試版:1.2.0 20
versionCode : 32, versionCode : 33,
versionName : "1.3.2" versionName : "1.3.3"
] ]
version = [ version = [
......
...@@ -42,6 +42,7 @@ import com.gingersoft.gsa.cloud.common.utils.AppDevices; ...@@ -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.crash.AppCrashHandler;
import com.gingersoft.gsa.cloud.common.utils.log.LogUtil; 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.other.SPUtils;
import com.gingersoft.gsa.cloud.common.utils.threadPool.ThreadPoolManager;
import com.gingersoft.gsa.cloud.component.ComponentAction; import com.gingersoft.gsa.cloud.component.ComponentAction;
import com.gingersoft.gsa.cloud.component.ComponentName; import com.gingersoft.gsa.cloud.component.ComponentName;
import com.gingersoft.gsa.cloud.database.DaoManager; import com.gingersoft.gsa.cloud.database.DaoManager;
...@@ -54,6 +55,7 @@ import com.scwang.smartrefresh.layout.SmartRefreshLayout; ...@@ -54,6 +55,7 @@ import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.footer.ClassicsFooter; import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
import com.scwang.smartrefresh.layout.header.ClassicsHeader; import com.scwang.smartrefresh.layout.header.ClassicsHeader;
import com.xuexiang.rxutil2.rxjava.RxJavaUtils; import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import com.xuexiang.rxutil2.rxjava.RxSchedulerUtils;
import com.xuexiang.rxutil2.rxjava.task.RxIOTask; import com.xuexiang.rxutil2.rxjava.task.RxIOTask;
import java.io.File; import java.io.File;
...@@ -123,6 +125,9 @@ public class GsaCloudApplication extends BaseApplication { ...@@ -123,6 +125,9 @@ public class GsaCloudApplication extends BaseApplication {
@Override @Override
public Void doInIOThread(Object o) { public Void doInIOThread(Object o) {
LoganManager.w_action(TAG, "init start....."); LoganManager.w_action(TAG, "init start.....");
//设置自定义RxJava的线程池
RxSchedulerUtils.setIOExecutor(ThreadPoolManager.getInstence().getExecutor());
//初始化設備唯一ID //初始化設備唯一ID
initDeviceId(); initDeviceId();
//初始化Hyweb支付回調 //初始化Hyweb支付回調
......
package com.gingersoft.gsa.cloud.common.core.discount; package com.gingersoft.gsa.cloud.common.core.discount;
import com.gingersoft.gsa.cloud.database.bean.Discount;
/** /**
* @作者: bin * @作者: bin
* @創建時間: 2021-04-07 15:45 * @創建時間: 2021-04-07 15:45
* @更新時間: 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 { ...@@ -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 * @作者: bin
...@@ -6,7 +10,15 @@ package com.gingersoft.gsa.cloud.common.core.discount; ...@@ -6,7 +10,15 @@ package com.gingersoft.gsa.cloud.common.core.discount;
* @更新時間: 2021-04-07 15:44 * @更新時間: 2021-04-07 15:44
* @描述: * @描述:
*/ */
@Data
public abstract class AbstractDiscount { 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; ...@@ -2,6 +2,8 @@ package com.gingersoft.gsa.cloud.database.bean;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.gingersoft.gsa.cloud.database.AbstractDiscount;
import org.greenrobot.greendao.annotation.Entity; import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Generated; import org.greenrobot.greendao.annotation.Generated;
import org.greenrobot.greendao.annotation.Id; import org.greenrobot.greendao.annotation.Id;
...@@ -22,8 +24,7 @@ import lombok.Data; ...@@ -22,8 +24,7 @@ import lombok.Data;
*/ */
@Data @Data
@Entity @Entity
public class Discount implements Cloneable { public class Discount extends AbstractDiscount implements Cloneable {
/** /**
* ID * ID
...@@ -423,7 +424,6 @@ public class Discount implements Cloneable { ...@@ -423,7 +424,6 @@ public class Discount implements Cloneable {
return this.pause; return this.pause;
} }
@NonNull @NonNull
@Override @Override
public Discount clone() { public Discount clone() {
......
...@@ -9,7 +9,7 @@ import lombok.Data; ...@@ -9,7 +9,7 @@ import lombok.Data;
* 版本:1.6.0 * 版本:1.6.0
* 创建日期:2020-09-12 * 创建日期:2020-09-12
* 修订历史:2020-09-12 * 修订历史:2020-09-12
* 描述:优惠券折扣实体 * 描述:會員优惠券折扣实体
*/ */
@Data @Data
public class CouponDiscountBean { 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 com.gingersoft.gsa.cloud.database.bean.Discount;
import lombok.Data; import lombok.Data;
...@@ -8,10 +12,10 @@ import lombok.Data; ...@@ -8,10 +12,10 @@ import lombok.Data;
* @作者: bin * @作者: bin
* @創建時間: 2021-04-07 15:45 * @創建時間: 2021-04-07 15:45
* @更新時間: 2021-04-07 15:45 * @更新時間: 2021-04-07 15:45
* @描述: * @描述: 會員錢包優惠券
*/ */
@Data @Data
public class MemberCoupon extends AbstractDiscount { public class MemberWalletCoupon extends AbstractDiscount implements Cloneable {
private long id; private long id;
private String couponTypeName; private String couponTypeName;
...@@ -26,16 +30,42 @@ public class MemberCoupon extends AbstractDiscount { ...@@ -26,16 +30,42 @@ public class MemberCoupon extends AbstractDiscount {
private String couponNo; private String couponNo;
private int useTimes; 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() { public Discount castDiscount() {
Discount discountBean = new Discount(); Discount discountBean = new Discount();
discountBean.setId(id); discountBean.setId(id);
discountBean.setAbstractDiscountType(DiscountConstact.WALLET_COUPON_TYPE);
discountBean.setDiscountValue(discount); discountBean.setDiscountValue(discount);
discountBean.setAmount(amount); discountBean.setAmount(amount);
discountBean.setMinBillAmount(billMinAmount); discountBean.setMinBillAmount(billMinAmount);
discountBean.setRemark(remark); discountBean.setRemark(couponTypeName);
discountBean.setBeginTime(beginDate); discountBean.setBeginTime(beginDate);
discountBean.setEndTime(endDate); discountBean.setEndTime(endDate);
return discountBean; 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; package com.gingersoft.gsa.cloud.order.bean.request;
import com.gingersoft.gsa.cloud.order.billItem.DiscountItem; 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 com.gingersoft.gsa.cloud.order.discount.NomalDiscount;
import lombok.Data; import lombok.Data;
...@@ -62,7 +62,7 @@ public class OrderDiscountRequest { ...@@ -62,7 +62,7 @@ public class OrderDiscountRequest {
OrderDiscountRequest request = new OrderDiscountRequest(); OrderDiscountRequest request = new OrderDiscountRequest();
request.setType(MEMBER_DISCOUNT); request.setType(MEMBER_DISCOUNT);
if(discount.getDiscount() != null) { if(discount.getDiscount() != null) {
MemberDiscount memberDiscount = (MemberDiscount) discount.getDiscount(); MemberLevelDiscount memberDiscount = (MemberLevelDiscount) discount.getDiscount();
request.setMemberId(memberDiscount.getMemberDiscount().getId()); request.setMemberId(memberDiscount.getMemberDiscount().getId());
// request.setMemberDiscountRate((int) memberDiscount.getDiscount().getDiscount_value()); // request.setMemberDiscountRate((int) memberDiscount.getDiscount().getDiscount_value());
} }
......
...@@ -4,11 +4,13 @@ import com.gingersoft.gsa.cloud.common.core.member.MemberInfo; ...@@ -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.common.core.delivery.OrderDetails;
import com.gingersoft.gsa.cloud.database.bean.Discount; import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.gingersoft.gsa.cloud.order.bean.discount.CouponDiscountBean; import com.gingersoft.gsa.cloud.order.bean.discount.CouponDiscountBean;
import com.gingersoft.gsa.cloud.order.bean.discount.MemberWalletCoupon;
import com.gingersoft.gsa.cloud.order.billItem.BillItem; import com.gingersoft.gsa.cloud.order.billItem.BillItem;
import com.gingersoft.gsa.cloud.order.billItem.DiscountItem; import com.gingersoft.gsa.cloud.order.billItem.DiscountItem;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail; 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.MemberDiscount; 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.MultyDiscount;
import com.gingersoft.gsa.cloud.order.discount.NomalDiscount; import com.gingersoft.gsa.cloud.order.discount.NomalDiscount;
...@@ -60,8 +62,8 @@ public class ShoppingCart { ...@@ -60,8 +62,8 @@ public class ShoppingCart {
* 折扣列表 * 折扣列表
* *
* @see NomalDiscount * @see NomalDiscount
* @see MemberDiscount * @see MemberLevelDiscount
* @see CouponDiscount * @see MemberCouponDiscount
*/ */
protected List<MultyDiscount> multyDiscountList; protected List<MultyDiscount> multyDiscountList;
/** /**
...@@ -226,22 +228,32 @@ public class ShoppingCart { ...@@ -226,22 +228,32 @@ public class ShoppingCart {
* @param discount * @param discount
* @return * @return
*/ */
public MultyDiscount addMemberDiscountToLinked(MultyDiscount multyDiscounts, MemberInfo discount, int status) { public MultyDiscount addMemberLevelDiscountToLinked(MultyDiscount multyDiscounts, MemberInfo discount, int status) {
MultyDiscount memberDiscount = new MemberDiscount(discount.getMemberName(), status, multyDiscounts, discount); MultyDiscount memberLevelDiscount = new MemberLevelDiscount(discount.getMemberName(), status, multyDiscounts, discount);
return memberDiscount; return memberLevelDiscount;
} }
/** /**
* 將優惠券折扣添加到鏈條中 * 將會員優惠券折扣添加到鏈條中
* *
* @param discount * @param discount
* @return * @return
*/ */
public MultyDiscount addCouponDiscountToLinked(MultyDiscount multyDiscounts, CouponDiscountBean discount, int status) { public MultyDiscount addMemberCouponDiscountToLinked(MultyDiscount multyDiscounts, CouponDiscountBean discount, int status) {
MultyDiscount couponDiscount = new CouponDiscount(discount.getName(), status, multyDiscounts, discount); MultyDiscount couponDiscount = new MemberCouponDiscount(discount.getName(), status, multyDiscounts, discount);
return couponDiscount; 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) { public MultyDiscount createNomalDiscount(Discount discount, int status) {
MultyDiscount nomalDiscount = new NomalDiscount(discount.getRemark(), status, null, discount); MultyDiscount nomalDiscount = new NomalDiscount(discount.getRemark(), status, null, discount);
...@@ -249,15 +261,20 @@ public class ShoppingCart { ...@@ -249,15 +261,20 @@ public class ShoppingCart {
} }
public MultyDiscount createMemberDiscount(MemberInfo discount, int status) { public MultyDiscount createMemberDiscount(MemberInfo discount, int status) {
MultyDiscount memberDiscount = new MemberDiscount(discount.getMemberName(), status, null, discount); MultyDiscount memberLevelDiscount = new MemberLevelDiscount(discount.getMemberName(), status, null, discount);
return memberDiscount; return memberLevelDiscount;
} }
public MultyDiscount createCouponDiscount(CouponDiscountBean discount, int status) { 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; 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 { ...@@ -270,10 +287,12 @@ public class ShoppingCart {
MultyDiscount discount = getMultyDiscountList().get(i); MultyDiscount discount = getMultyDiscountList().get(i);
if (discount instanceof NomalDiscount) { if (discount instanceof NomalDiscount) {
multyDiscounts = addNomalDiscountToLinked(multyDiscounts, ((NomalDiscount) discount).getDiscount(), discount.getStatus()); multyDiscounts = addNomalDiscountToLinked(multyDiscounts, ((NomalDiscount) discount).getDiscount(), discount.getStatus());
} else if (discount instanceof MemberDiscount) { } else if (discount instanceof MemberLevelDiscount) {
multyDiscounts = addMemberDiscountToLinked(multyDiscounts, ((MemberDiscount) discount).getMemberDiscount(), discount.getStatus()); multyDiscounts = addMemberLevelDiscountToLinked(multyDiscounts, ((MemberLevelDiscount) discount).getMemberDiscount(), discount.getStatus());
} else if (discount instanceof CouponDiscount) { } else if (discount instanceof MemberCouponDiscount) {
multyDiscounts = addCouponDiscountToLinked(multyDiscounts, ((CouponDiscount) discount).getCouponDiscount(), discount.getStatus()); multyDiscounts = addMemberCouponDiscountToLinked(multyDiscounts, ((MemberCouponDiscount) discount).getCouponDiscount(), discount.getStatus());
}else if (discount instanceof MemberWalletCouponDiscount) {
multyDiscounts = addMemberWalletCouponDiscountToLinked(multyDiscounts, ((MemberWalletCouponDiscount) discount).getWalletCoupon(), discount.getStatus());
} }
multyDiscountArrays.add(multyDiscounts); multyDiscountArrays.add(multyDiscounts);
} }
...@@ -293,10 +312,12 @@ public class ShoppingCart { ...@@ -293,10 +312,12 @@ public class ShoppingCart {
String discountName = discount.getName(); String discountName = discount.getName();
if (discount instanceof NomalDiscount) { if (discount instanceof NomalDiscount) {
discountType = BillItem.NOMAL_DISCOUNT_TYPE; discountType = BillItem.NOMAL_DISCOUNT_TYPE;
} else if (discount instanceof MemberDiscount) { } else if (discount instanceof MemberLevelDiscount) {
discountType = BillItem.MEMBER_DISCOUNT_TYPE; discountType = BillItem.MEMBER_DISCOUNT_TYPE;
discountName = discount.getName() + ((MemberDiscount) discount).getMemberDiscount().getMemberDiscount() + "%"; discountName = discount.getName() + ((MemberLevelDiscount) discount).getMemberDiscount().getMemberDiscount() + "%";
} else if (discount instanceof CouponDiscount) { } else if (discount instanceof MemberCouponDiscount) {
discountType = BillItem.COUPON_DISCOUNT_TYPE;
}else if (discount instanceof MemberWalletCouponDiscount) {
discountType = BillItem.COUPON_DISCOUNT_TYPE; discountType = BillItem.COUPON_DISCOUNT_TYPE;
} }
DiscountItem discountItem = new DiscountItem(discountName, discount.getDiscountMoney(), discount.getStatus(), discountType); DiscountItem discountItem = new DiscountItem(discountName, discount.getDiscountMoney(), discount.getStatus(), discountType);
...@@ -343,13 +364,13 @@ public class ShoppingCart { ...@@ -343,13 +364,13 @@ public class ShoppingCart {
couponDiscountBean.setCouponTypeName1("魚屋立減50元券"); couponDiscountBean.setCouponTypeName1("魚屋立減50元券");
couponDiscountBean.setAmount(50); couponDiscountBean.setAmount(50);
couponDiscountBean.setCouponType((byte) 2); couponDiscountBean.setCouponType((byte) 2);
multyDiscounts = shoppingCart.addCouponDiscountToLinked(multyDiscounts, couponDiscountBean, 0); multyDiscounts = shoppingCart.addMemberCouponDiscountToLinked(multyDiscounts, couponDiscountBean, 0);
shoppingCart.addMultyDiscount(multyDiscounts); shoppingCart.addMultyDiscount(multyDiscounts);
MemberInfo memberInfo2 = new MemberInfo(); MemberInfo memberInfo2 = new MemberInfo();
memberInfo2.setMemberName("白金會員20%"); memberInfo2.setMemberName("白金會員20%");
memberInfo2.setMemberDiscount(20); memberInfo2.setMemberDiscount(20);
multyDiscounts = shoppingCart.addMemberDiscountToLinked(multyDiscounts, memberInfo2, 0); multyDiscounts = shoppingCart.addMemberLevelDiscountToLinked(multyDiscounts, memberInfo2, 0);
shoppingCart.addMultyDiscount(multyDiscounts); shoppingCart.addMultyDiscount(multyDiscounts);
double discountAfterMoney = shoppingCart.calculateLinkedDiscounts(200); double discountAfterMoney = shoppingCart.calculateLinkedDiscounts(200);
......
...@@ -4,6 +4,8 @@ import androidx.annotation.NonNull; ...@@ -4,6 +4,8 @@ import androidx.annotation.NonNull;
import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails; import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails;
import com.gingersoft.gsa.cloud.common.utils.MoneyUtil; 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.ComboItem;
import com.gingersoft.gsa.cloud.database.bean.Discount; import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.gingersoft.gsa.cloud.database.bean.Food; import com.gingersoft.gsa.cloud.database.bean.Food;
...@@ -167,6 +169,10 @@ public class OrderDetail implements Commodity, Serializable, Cloneable { ...@@ -167,6 +169,10 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
* 类型#1:优惠卷;2:商品;3:菜品;4:细项;5:折扣; * 类型#1:优惠卷;2:商品;3:菜品;4:细项;5:折扣;
*/ */
private byte type; 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 { ...@@ -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; private long ktPrintMainItem;
...@@ -1254,7 +1254,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable { ...@@ -1254,7 +1254,7 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
} }
/** /**
* 折扣轉換 * 折扣,優惠券轉換
* *
* @param discount * @param discount
* @return * @return
...@@ -1275,7 +1275,11 @@ public class OrderDetail implements Commodity, Serializable, Cloneable { ...@@ -1275,7 +1275,11 @@ public class OrderDetail implements Commodity, Serializable, Cloneable {
orderDetail.setOrderId(DoshokuOrder.getInstance().getOrderId()); orderDetail.setOrderId(DoshokuOrder.getInstance().getOrderId());
orderDetail.setIsfood(false); orderDetail.setIsfood(false);
orderDetail.setNew(isNew); orderDetail.setNew(isNew);
orderDetail.setType(DISCOUNT_TYPE); if (discount.getFreeServiceCharge() == DiscountConstact.WALLET_COUPON_TYPE) {
orderDetail.setType(COUPON_TYPE);
} else {
orderDetail.setType(DISCOUNT_TYPE);
}
orderDetail.setProp(DISCOUNT_PROP); orderDetail.setProp(DISCOUNT_PROP);
orderDetail.setSelected(2); orderDetail.setSelected(2);
orderDetail.setItemType(2); orderDetail.setItemType(2);
......
...@@ -10,14 +10,14 @@ import lombok.Getter; ...@@ -10,14 +10,14 @@ import lombok.Getter;
* 版本:1.6.0 * 版本:1.6.0
* 创建日期:2020-09-19 * 创建日期:2020-09-19
* 修订历史:2020-09-19 * 修订历史:2020-09-19
* 描述: 優惠券折扣{@link CouponDiscountBean} * 描述: 會員優惠券折扣{@link CouponDiscountBean}
*/ */
@Getter @Getter
public class CouponDiscount extends MultyDiscount { public class MemberCouponDiscount extends MultyDiscount {
private CouponDiscountBean couponDiscount; 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); super(name, status, nextMultyDiscount);
this.couponDiscount = couponDiscount; this.couponDiscount = couponDiscount;
} }
......
...@@ -10,14 +10,14 @@ import lombok.Getter; ...@@ -10,14 +10,14 @@ import lombok.Getter;
* 版本:1.6.0 * 版本:1.6.0
* 创建日期:2020-09-19 * 创建日期:2020-09-19
* 修订历史:2020-09-19 * 修订历史:2020-09-19
* 描述: 會員折扣{@link MemberInfo#memberDiscount} * 描述: 會員等級折扣{@link MemberInfo#memberDiscount}
*/ */
@Getter @Getter
public class MemberDiscount extends MultyDiscount { public class MemberLevelDiscount extends MultyDiscount {
private MemberInfo memberDiscount; 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); super(name, status,nextMultyDiscount);
this.memberDiscount = memberDiscount; 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 { ...@@ -17,8 +17,8 @@ public abstract class MultyDiscount extends BillItem {
/**責任鏈中的下一個對象*/ /**責任鏈中的下一個對象*/
protected MultyDiscount nextMultyDiscount; protected MultyDiscount nextMultyDiscount;
/** /**
* 本次折扣金额*/ * 本次折扣金额
* */
protected double discountMoney = 0.0; protected double discountMoney = 0.0;
public MultyDiscount(String name,int status, MultyDiscount nextMultyDiscount) { public MultyDiscount(String name,int status, MultyDiscount nextMultyDiscount) {
......
...@@ -5,6 +5,8 @@ import android.content.Context; ...@@ -5,6 +5,8 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import androidx.fragment.app.Fragment;
import com.gingersoft.gsa.cloud.pay.RequestParms; import com.gingersoft.gsa.cloud.pay.RequestParms;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.constant.YedpayConstant; import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.constant.YedpayConstant;
import com.gingersoft.gsa.cloud.pay.lifecycle.presenter.PayFlowPresenter; import com.gingersoft.gsa.cloud.pay.lifecycle.presenter.PayFlowPresenter;
...@@ -19,12 +21,11 @@ import java.lang.ref.WeakReference; ...@@ -19,12 +21,11 @@ import java.lang.ref.WeakReference;
*/ */
public class YedpayCallbackImp implements YedpayCallback { public class YedpayCallbackImp implements YedpayCallback {
private WeakReference<Fragment> mContext;
private WeakReference<Activity> mContext;
private WeakReference<PayFlowPresenter> mPayFlowPresenter; private WeakReference<PayFlowPresenter> mPayFlowPresenter;
private RequestParms mRequestParms; 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.mContext = new WeakReference<>(context);
this.mPayFlowPresenter = new WeakReference<>(payFlowPresenter); this.mPayFlowPresenter = new WeakReference<>(payFlowPresenter);
this.mRequestParms = requestParms; this.mRequestParms = requestParms;
...@@ -32,11 +33,11 @@ public class YedpayCallbackImp implements YedpayCallback { ...@@ -32,11 +33,11 @@ public class YedpayCallbackImp implements YedpayCallback {
@Override @Override
public void callSaleUri(String uri) { public void callSaleUri(String uri) {
Activity activity = mContext.get(); Fragment fragment = mContext.get();
if (activity != null) { if (fragment != null) {
Uri uri2 = Uri.parse(uri); Uri uri2 = Uri.parse(uri);
Intent intent = new Intent(Intent.ACTION_VIEW, uri2); 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; ...@@ -3,6 +3,8 @@ package com.gingersoft.gsa.cloud.pay.lifecycle.contract;
import android.app.Activity; import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import androidx.fragment.app.Fragment;
import com.gingersoft.gsa.cloud.common.bean.BaseResult; import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.pay.PayStep; import com.gingersoft.gsa.cloud.pay.PayStep;
import com.jess.arms.mvp.IView; import com.jess.arms.mvp.IView;
...@@ -32,7 +34,7 @@ public interface PayFlowContract { ...@@ -32,7 +34,7 @@ public interface PayFlowContract {
void startActivityForResult(Intent intent); void startActivityForResult(Intent intent);
Activity getActivity(); Fragment getFragment();
} }
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存 //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
......
...@@ -16,6 +16,7 @@ import android.widget.TextView; ...@@ -16,6 +16,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.gingersoft.gsa.cloud.common.logan.LoganManager; import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.order.R; import com.gingersoft.gsa.cloud.order.R;
...@@ -215,6 +216,11 @@ public class PayFlowFragment extends BaseDialogFragment<PayFlowPresenter> implem ...@@ -215,6 +216,11 @@ public class PayFlowFragment extends BaseDialogFragment<PayFlowPresenter> implem
@Override @Override
public void startActivityForResult(Intent intent) { 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 ...@@ -201,11 +201,10 @@ public class PayFlowPresenter extends BasePresenter<PayFlowContract.Model, PayFl
} else if (AppDevices.isBBPos()) { } else if (AppDevices.isBBPos()) {
requestParms.setCallback(new BBposCallbackImp()); requestParms.setCallback(new BBposCallbackImp());
} else if (AppDevices.isYedpay()) { } else if (AppDevices.isYedpay()) {
requestParms.setCallback(new YedpayCallbackImp(mRootView.getActivity(), this, mRequestParms)); requestParms.setCallback(new YedpayCallbackImp(mRootView.getFragment(), this, mRequestParms));
} else { } 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; ...@@ -6,6 +6,7 @@ import androidx.annotation.Nullable;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.viewholder.BaseViewHolder; 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.R;
import com.gingersoft.gsa.cloud.ui.bean.TagViewItem; import com.gingersoft.gsa.cloud.ui.bean.TagViewItem;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem; import com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem;
...@@ -16,10 +17,16 @@ import java.util.List; ...@@ -16,10 +17,16 @@ import java.util.List;
public class TagViewAdapter extends BaseQuickAdapter<TagViewItem, BaseViewHolder> { public class TagViewAdapter extends BaseQuickAdapter<TagViewItem, BaseViewHolder> {
private int height = ArmsUtils.dip2px(GsaCloudApplication.getAppContext(), R.dimen.dp_40);
public TagViewAdapter(@Nullable List<TagViewItem> data) { public TagViewAdapter(@Nullable List<TagViewItem> data) {
super(R.layout.item_tag_view, data); super(R.layout.item_tag_view, data);
} }
public void setHeight(int height) {
this.height = height;
}
@Override @Override
protected void convert(BaseViewHolder helper, TagViewItem item) { protected void convert(BaseViewHolder helper, TagViewItem item) {
QMUIRoundButton roundButton = helper.getView(R.id.btn_tag); QMUIRoundButton roundButton = helper.getView(R.id.btn_tag);
...@@ -34,6 +41,7 @@ public class TagViewAdapter extends BaseQuickAdapter<TagViewItem, BaseViewHolder ...@@ -34,6 +41,7 @@ public class TagViewAdapter extends BaseQuickAdapter<TagViewItem, BaseViewHolder
roundButton.setStrokeColors(ColorStateList.valueOf(item.getSidelineColor())); roundButton.setStrokeColors(ColorStateList.valueOf(item.getSidelineColor()));
roundButton.setTextColor(item.getUnCheckedTextColor()); roundButton.setTextColor(item.getUnCheckedTextColor());
} }
roundButton.setHeight(height);
} }
} }
...@@ -74,7 +74,6 @@ public class MyTableView extends TabLayout { ...@@ -74,7 +74,6 @@ public class MyTableView extends TabLayout {
}); });
} }
private void setSelectTab(TabLayout.Tab tabAt, boolean isSelected) { private void setSelectTab(TabLayout.Tab tabAt, boolean isSelected) {
if (tabAt.getCustomView() != null) { if (tabAt.getCustomView() != null) {
TextView tab = tabAt.getCustomView().findViewById(R.id.tv_tab);//第一个tab被选中 TextView tab = tabAt.getCustomView().findViewById(R.id.tv_tab);//第一个tab被选中
......
...@@ -3,13 +3,11 @@ ...@@ -3,13 +3,11 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/btn_tag" android:id="@+id/btn_tag"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="@dimen/dp_40"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:gravity="center_vertical"
android:layout_margin="@dimen/dp_6" android:layout_margin="@dimen/dp_6"
android:paddingLeft="@dimen/dp_10" android:paddingLeft="@dimen/dp_10"
android:paddingTop="@dimen/dp_8"
android:paddingRight="@dimen/dp_10"
android:paddingBottom="@dimen/dp_8"
android:text="草莓派" android:text="草莓派"
android:textColor="@color/theme_text_color" android:textColor="@color/theme_text_color"
android:textSize="@dimen/dp_16" android:textSize="@dimen/dp_16"
...@@ -18,6 +16,7 @@ ...@@ -18,6 +16,7 @@
app:qmui_borderWidth="1px" app:qmui_borderWidth="1px"
app:qmui_skin_background="?attr/app_skin_btn_test_bg" app:qmui_skin_background="?attr/app_skin_btn_test_bg"
app:qmui_skin_border="?attr/app_skin_btn_test_border" 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> </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