Commit 6ec228e3 by 宁斌

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

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