Commit 3b6c598e by 王宇航

Merge remote-tracking branch 'origin/master'

parents 9455d475 fb8a4454
......@@ -20,14 +20,18 @@ import android.content.Context;
import android.os.Bundle;
import android.util.AttributeSet;
import android.view.View;
import com.jess.arms.base.delegate.IActivity;
import com.jess.arms.integration.cache.Cache;
import com.jess.arms.integration.cache.CacheType;
import com.jess.arms.integration.lifecycle.ActivityLifecycleable;
import com.jess.arms.mvp.IPresenter;
import com.jess.arms.utils.AndroidWorkaround;
import com.jess.arms.utils.ArmsUtils;
import com.trello.rxlifecycle2.android.ActivityEvent;
import javax.inject.Inject;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
......@@ -36,6 +40,7 @@ import butterknife.ButterKnife;
import butterknife.Unbinder;
import io.reactivex.subjects.BehaviorSubject;
import io.reactivex.subjects.Subject;
import static com.jess.arms.utils.ThirdViewUtil.convertAutoView;
/**
......@@ -91,6 +96,10 @@ public abstract class BaseActivity<P extends IPresenter> extends AppCompatActivi
//如果initView返回0,框架则不会调用setContentView(),当然也不会 Bind ButterKnife
if (layoutResID != 0) {
setContentView(layoutResID);
String name = getClass().getSimpleName();
if (!name.equals("DownloadActivity")) {
AndroidWorkaround.assistActivity(findViewById(android.R.id.content));
}
//绑定到butterknife
mUnbinder = ButterKnife.bind(this);
}
......@@ -125,6 +134,7 @@ public abstract class BaseActivity<P extends IPresenter> extends AppCompatActivi
public boolean useEventBus() {
return true;
}
/**
* 这个Activity是否会使用Fragment,框架会根据这个属性判断是否注册
* 如果返回false,那意味着这个Activity不需要绑定Fragment,那你再在这个Activity中绑定继承于 {@link com.jess.arms.base.BaseFragment} 的Fragment将不起任何作用
......
package com.jess.arms.utils;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Rect;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import java.lang.reflect.Method;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-02-29
* 修订历史:2020-02-29
* 描述:
*/
public class AndroidWorkaround {
/**
* 关联要监听的视图
*
* @param viewObserving
*/
public static void assistActivity(View viewObserving) {
new AndroidWorkaround(viewObserving);
}
private View mViewObserved;//被监听的视图
private int usableHeightPrevious;//视图变化前的可用高度
private ViewGroup.LayoutParams frameLayoutParams;
private AndroidWorkaround(View viewObserving) {
mViewObserved = viewObserving;
//给View添加全局的布局监听器
mViewObserved.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
public void onGlobalLayout() {
resetLayoutByUsableHeight(computeUsableHeight());
}
});
frameLayoutParams = mViewObserved.getLayoutParams();
}
private void resetLayoutByUsableHeight(int usableHeightNow) {
//比较布局变化前后的View的可用高度
if (usableHeightNow != usableHeightPrevious) {
//如果两次高度不一致
//将当前的View的可用高度设置成View的实际高度
frameLayoutParams.height = usableHeightNow;
mViewObserved.requestLayout();//请求重新布局
usableHeightPrevious = usableHeightNow;
}
}
/**
* 计算视图可视高度
*
* @return
*/
private int computeUsableHeight() {
Rect r = new Rect();
mViewObserved.getWindowVisibleDisplayFrame(r);
return (r.bottom - r.top);
}
}
package com.gingersoft.gsa.cloud.base.application;
import android.app.Activity;
import android.content.Context;
import com.billy.cc.core.component.CC;
......@@ -31,7 +32,8 @@ public class GsaCloudApplication extends BaseApplication {
/**
* 系统上下文
*/
private static Context mAppContext;
private static GsaCloudApplication mAppContext;
private Activity mCurrentActivity;
/**
* 设置请求超时默认20秒钟 从后台获取超时时间
*/
......@@ -57,6 +59,13 @@ public class GsaCloudApplication extends BaseApplication {
androidSetting = new CurrentAndroidSetting();
}
public Activity getCurrentActivity() {
return mCurrentActivity;
}
public void setCurrentActivity(Activity mCurrentActivity) {
this.mCurrentActivity = mCurrentActivity;
}
private void initXLog() {
LogConfiguration config = new LogConfiguration.Builder()
......@@ -97,7 +106,7 @@ public class GsaCloudApplication extends BaseApplication {
/**
* 获取系统上下文:用于ToastUtil类
*/
public static Context getAppContext() {
public static GsaCloudApplication getAppContext() {
return mAppContext;
}
......
......@@ -165,6 +165,7 @@ public class MyOrderManage {
OrderDetail datasBean = orderFoodList.get(i);
if (datasBean.getParentIndex() == parentIndex) {
datasBean.setNumber(number);
setCalculatePrice(datasBean);
}
}
}
......
......@@ -5,8 +5,8 @@ package com.gingersoft.gsa.cloud.base.utils.constans;
*/
public class HttpsConstans {
public static String ROOT_SERVER_ADDRESS_FORMAL = "http://gingersoft.tpddns.cn:58201/ricepon-cloud-gsa/api/";// 深圳服务器
// public static String ROOT_SERVER_ADDRESS_FORMAL = "http://a.ricepon.com:58201/ricepon-cloud-gsa/api/";// 香港服务器
// public static String ROOT_SERVER_ADDRESS_FORMAL = "http://gingersoft.tpddns.cn:58201/ricepon-cloud-gsa/api/";// 深圳服务器
public static String ROOT_SERVER_ADDRESS_FORMAL = "http://a.ricepon.com:58201/ricepon-cloud-gsa/api/";// 香港服务器
public static String ROOT_SERVER_ADDRESS_FORMAL2 = "http://gingersoft.tpddns.cn:53000/mock/49/ricepon-cloud-gsa/api/";//測試服務器
......
......@@ -37,7 +37,7 @@ public class ComboItemDaoUtils {
/**
* 清除緩存
*/
public void detachAll(){
public void detachAll() {
ComboItemDao comboItemDao = DaoManager.getInstance().getDaoSession().getComboItemDao();
comboItemDao.detachAll();
}
......@@ -162,7 +162,7 @@ public class ComboItemDaoUtils {
ArrayList<ComboItem> comboItems = new ArrayList<>();
String sql = "SELECT c.*,f.FOOD_NAME,f.FOOD_NAME1,f.FOOD_NAME2,f.PRICE,f.AUTO_MOD FROM COMBO_ITEM c join FOOD f on c.FID=f._id join FOOD_COMBO r on r.COM_ID=c.COM_ID ";
String sql = "SELECT c.*,f.FOOD_NAME,f.FOOD_NAME1,f.FOOD_NAME2,f.PRICE,f.AUTO_MOD FROM COMBO_ITEM c join FOOD f on c.FID=f._id and f.INVISIBLE=0 join FOOD_COMBO r on r.COM_ID=c.COM_ID ";
if (fid > 0) {
sql = sql + " where r.FID='" + fid + "'";
}
......@@ -178,7 +178,7 @@ public class ComboItemDaoUtils {
order.setName1(c.getString(c.getColumnIndex("FOOD_NAME1")));
order.setName2(c.getString(c.getColumnIndex("FOOD_NAME2")));
order.setVisible(c.getLong(c.getColumnIndex("VISIBLE")));
order.setAutoMode(c.getInt(c.getColumnIndex("AUTO_MOD")) );
order.setAutoMode(c.getInt(c.getColumnIndex("AUTO_MOD")));
// if (order.isVisible()) {
comboItems.add(order);
// }
......
......@@ -182,7 +182,7 @@ public class FoodDaoUtils {
long currentTime = System.currentTimeMillis();
return queryBuilder.where(queryBuilder.and(
FoodDao.Properties.ParentId.eq(parentId),
FoodDao.Properties.Invisible.notEq(1),
FoodDao.Properties.Invisible.eq(0),
FoodDao.Properties.StartDate.le(currentTime),
FoodDao.Properties.EndDate.ge(currentTime))).orderAsc(FoodDao.Properties.SeqNo).list();
}
......
......@@ -295,7 +295,7 @@ public class ModifierDaoUtils {
// " FROM MODIFIER join FOOD_MODIFIER on MODIFIER.MID=FOOD_MODIFIER.MID where MODIFIER.VISIBLE=0 and FOOD_MODIFIER.FID='" + fid + "' order by FOOD_MODIFIER.seq,MODIFIER.SEQ_NO";
String sql = " SELECT MODIFIER.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,VISIBLE,MULTIPLE,IS_PARENT" +
" FROM MODIFIER join FOOD_MODIFIER on MODIFIER.MID=FOOD_MODIFIER.MID where MODIFIER.VISIBLE=0 and FOOD_MODIFIER.FID='" + fid + "' order by FOOD_MODIFIER.SEQ_NO,MODIFIER.SEQ_NO";
" FROM MODIFIER join FOOD_MODIFIER on MODIFIER.MID=FOOD_MODIFIER.MID where MODIFIER.INVISIBLE=0 and FOOD_MODIFIER.FID='" + fid + "' order by FOOD_MODIFIER.SEQ_NO,MODIFIER.SEQ_NO";
List<Modifier> mfs_child = new ArrayList<>();
......@@ -308,14 +308,14 @@ public class ModifierDaoUtils {
switch (mode) {
case modifierMode_All:
sqlstr = " SELECT MODIFIER.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,VISIBLE,MULTIPLE,IS_PARENT" +
" FROM MODIFIER join FOOD_MODIFIER on MODIFIER.TOP_ID=FOOD_MODIFIER.MID where MODIFIER.VISIBLE=0 and MODIFIER.IS_PARENT=1 and FOOD_MODIFIER.FID='" + fid + "' order by FOOD_MODIFIER.SEQ_NO,MODIFIER.SEQ_NO";
" FROM MODIFIER join FOOD_MODIFIER on MODIFIER.TOP_ID=FOOD_MODIFIER.MID where MODIFIER.INVISIBLE=0 and MODIFIER.IS_PARENT=1 and FOOD_MODIFIER.FID='" + fid + "' order by FOOD_MODIFIER.SEQ_NO,MODIFIER.SEQ_NO";
mfs_child1 = query_modifier_Child_new(sqlstr, fid);
List<Modifier> mfs_child2 = new ArrayList<>();
sqlstr = " SELECT MODIFIER.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,VISIBLE,MULTIPLE,IS_PARENT" +
" FROM MODIFIER join FOOD_MODIFIER on MODIFIER.TOP_ID=FOOD_MODIFIER.MID where MODIFIER.VISIBLE=0 and MODIFIER.IS_PARENT=0 and FOOD_MODIFIER.FID='" + fid + "' order by FOOD_MODIFIER.SEQ_NO,MODIFIER.SEQ_NO";
" FROM MODIFIER join FOOD_MODIFIER on MODIFIER.TOP_ID=FOOD_MODIFIER.MID where MODIFIER.INVISIBLE=0 and MODIFIER.IS_PARENT=0 and FOOD_MODIFIER.FID='" + fid + "' order by FOOD_MODIFIER.SEQ_NO,MODIFIER.SEQ_NO";
mfs_child2 = query_modifier_Child_new(sqlstr, fid);
mfs_child1.addAll(mfs_child2);
......
package com.gingersoft.gsa.cloud.globalconfig.applyOptions;
import android.app.Activity;
import android.content.Context;
import android.net.ParseException;
import android.text.TextUtils;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.base.R;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.google.gson.JsonIOException;
import com.google.gson.JsonParseException;
import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
import org.json.JSONException;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;
import me.jessyan.rxerrorhandler.handler.listener.ResponseErrorListener;
import retrofit2.HttpException;
import timber.log.Timber;
......@@ -20,6 +30,8 @@ public class MyResponseErrorListener implements ResponseErrorListener {
private final String TAG = getClass().getSimpleName();
private boolean showloggedDialog = false;
@Override
public void handleResponseError(Context context, Throwable t) {
/* 用来提供处理所有错误的监听
......@@ -39,12 +51,14 @@ public class MyResponseErrorListener implements ResponseErrorListener {
}
// ArmsUtils.snackbarText(msg);
// LogUtil.d("handleResponseError: " + t.getMessage());
LogUtil.d(TAG , t.getMessage());
LogUtil.d(TAG, t.getMessage());
if(!TextUtils.isEmpty(msg)){
ToastUtils.show(context, msg);
}
}
private String convertStatusCode(Context context, HttpException httpException) {
String msg;
String msg = null;
if (httpException.code() == 500) {
msg = ArmsUtils.getString(context, R.string.response_error_server_error);
} else if (httpException.code() == 404) {
......@@ -53,9 +67,35 @@ public class MyResponseErrorListener implements ResponseErrorListener {
msg = ArmsUtils.getString(context, R.string.response_error_request_rejected_by_server);
} else if (httpException.code() == 307) {
msg = ArmsUtils.getString(context, R.string.response_error_request_was_redirected_to_another_page);
} else if (httpException.code() == 401) {
Activity activity = GsaCloudApplication.getAppContext().getCurrentActivity();
if (!showloggedDialog && activity != null) {
showloggedDialog = true;
showloggedDialog(activity, ArmsUtils.getString(context, R.string.response_error_request_logged));
}
} else {
msg = httpException.message();
}
return msg;
}
private void showloggedDialog(Activity context, String msg) {
QMUIDialog.MessageDialogBuilder dialogBuilder = new QMUIDialog.MessageDialogBuilder(context);
dialogBuilder.setTitle("溫馨提示");
dialogBuilder.setMessage(msg);
dialogBuilder.addAction(0, "確認", QMUIDialogAction.ACTION_PROP_NEGATIVE, (dialog, index) -> {
GsaCloudApplication.isLogin = false;
CC.obtainBuilder("User.Component.Login")
.setActionName("showActivityA")
.build()
.call();
showloggedDialog = false;
context.finish();
dialog.dismiss();
});
dialogBuilder.create(R.style.MyDialogTheme2).show();
}
}
......@@ -5,6 +5,8 @@ import android.app.Activity;
import android.app.Application;
import android.os.Bundle;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
@SuppressLint("NewApi")
public class MyActivityLifecycle implements Application.ActivityLifecycleCallbacks {
......@@ -28,6 +30,7 @@ public class MyActivityLifecycle implements Application.ActivityLifecycleCallbac
@Override
public void onActivityResumed(Activity activity) {
GsaCloudApplication.getAppContext().setCurrentActivity(activity);
}
@Override
......@@ -36,6 +39,7 @@ public class MyActivityLifecycle implements Application.ActivityLifecycleCallbac
@Override
public void onActivityStopped(Activity activity) {
GsaCloudApplication.getAppContext().setCurrentActivity(null);
}
@Override
......
package com.gingersoft.gsa.cloud.ui.utils;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Rect;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import com.gingersoft.gsa.cloud.base.R;
import java.lang.reflect.Method;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-02-29
* 修订历史:2020-02-29
* 描述:
*/
public class AndroidWorkaround {
public static void assistActivity(View content) {
new AndroidWorkaround(content);
}
private View mChildOfContent;
private int usableHeightPrevious;
private ViewGroup.LayoutParams frameLayoutParams;
private AndroidWorkaround(View content) {
mChildOfContent = content;
mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
public void onGlobalLayout() {
possiblyResizeChildOfContent();
}
});
frameLayoutParams = mChildOfContent.getLayoutParams();
}
private void possiblyResizeChildOfContent() {
int usableHeightNow = computeUsableHeight();
if (usableHeightNow != usableHeightPrevious) {
frameLayoutParams.height = usableHeightNow;
mChildOfContent.requestLayout();
usableHeightPrevious = usableHeightNow;
}
}
private int computeUsableHeight() {
Rect r = new Rect();
mChildOfContent.getWindowVisibleDisplayFrame(r);
return (r.bottom);
}
public static boolean checkDeviceHasNavigationBar(Context context) {
boolean hasNavigationBar = false;
Resources rs = context.getResources();
int id = rs.getIdentifier("config_showNavigationBar", "bool", "android");
if (id > 0) {
hasNavigationBar = rs.getBoolean(id);
}
try {
Class systemPropertiesClass = Class.forName("android.os.SystemProperties");
Method m = systemPropertiesClass.getMethod("get", String.class);
String navBarOverride = (String) m.invoke(systemPropertiesClass, "qemu.hw.mainkeys");
if ("1".equals(navBarOverride)) {
hasNavigationBar = false;
} else if ("0".equals(navBarOverride)) {
hasNavigationBar = true;
}
} catch (Exception e) {
}
return hasNavigationBar;
}
}
......@@ -22,6 +22,7 @@ import com.gingersoft.gsa.cloud.ui.adapter.BasTextSectiontAdapter;
import com.gingersoft.gsa.cloud.ui.bean.mode.LoginBean;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionHeader;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem;
import com.jess.arms.utils.AndroidWorkaround;
import com.qmuiteam.qmui.QMUILog;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.qmuiteam.qmui.widget.QMUITopBar;
......@@ -239,6 +240,7 @@ public class ChooseRestaurantDialog extends Dialog {
mDialog = new ChooseRestaurantDialog(mContext);
View contentView = buildViews();
mDialog.setContentView(contentView, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, QMUIDisplayHelper.getScreenHeight(mContext)));
AndroidWorkaround.assistActivity(contentView);
return mDialog;
}
......
......@@ -107,6 +107,7 @@
<string name="response_error_address_does_not_exist">請求地址不存在</string>
<string name="response_error_request_rejected_by_server">請求被服務器拒絕</string>
<string name="response_error_request_was_redirected_to_another_page">請求被重定向到其他頁面</string>
<string name="response_error_request_logged">賬號已在其他設備登錄</string>
<string name="app_exception">很抱歉,程序出現異常,即將退出!</string>
<string name="queue_write_external_storage_permission_hint">保存失敗,請先前往設置開放存儲權限</string>
......
......@@ -61,6 +61,8 @@ public interface MealStandContract {
void setComboAdapter(DefaultAdapter adapter);
void setModifierAdapter(DefaultAdapter adapter);
void setDiscountAdapter(DefaultAdapter adapter);
void setSelectFoodRecycleLayoutManager();
......@@ -71,6 +73,8 @@ public interface MealStandContract {
void setComboRecycleLayoutManager(int orientation);
void setModifierRecycleLayoutManager(int orientation);
void setDiscountRecycleLayoutManager(int orientation);
void setFoodGroupRecycleSpanCount(int size);
......@@ -79,6 +83,8 @@ public interface MealStandContract {
void setComboRecycleSpanCount(int size);
void setModifierRecycleSpanCount(int size);
void setDiscountRecycleSpanCount(int size);
void showViewModeVisibility(int... viewMode);
......
......@@ -12,6 +12,7 @@ public interface MealConstant {
int food_group_ViewMode = 100;
int food_ViewMode = 101;
int combo_ViewMode = 102;
int modifier_ViewMode = 103;
int discount_ViewMode = 104;
int fine_ViewMode = 105;
int fine_tabs_ViewMode = 106;
......
......@@ -96,13 +96,16 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
mOrderContentActivity = (OrderContentActivity) IActivity;
}
foodCount = initFoodCount();
totalMoney = initFoodTotalMoney();
recalcOrderMoneyCount();
resetSelected();
initOrderAdapter();
}
private void recalcOrderMoneyCount() {
foodCount = initFoodCount();
totalMoney = initFoodTotalMoney();
}
@Override
public void onDestroy() {
super.onDestroy();
......@@ -141,7 +144,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
changeNumber(datasBean.getNumber() - 1);
}
mSelectMealAdapter.notifyDataSetChanged();
// recalcOrderMoneyCount(false, true);
recalcOrderMoneyCount();
if (mOrderContentActivity != null) {
mOrderContentActivity.initOrderDetail();
}
......@@ -149,11 +152,11 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
@Override
public void onMealCountAdd(OrderDetail datasBean, int position) {
changeNumber(datasBean.getNumber() - 1);
changeNumber(datasBean.getNumber() +1);
recalcOrderMoneyCount();
if (mOrderContentActivity != null) {
mOrderContentActivity.initOrderDetail();
}
// recalcOrderMoneyCount(false, true);
}
});
}
......
......@@ -26,6 +26,7 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ComboAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.FoodAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.FoodGroupAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ModifierAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.SelectMealAdapter;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader;
......@@ -79,13 +80,14 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
private FoodAdapter mFoodAdapter;
private ComboAdapter mComboAdapter;
private ModifierAdapter mModifierAdapter;
//食品数据
private List<Food> mFoodGroupList = new ArrayList<>();
private List<Food> mFoodList = new ArrayList<>();
//套餐细项数据
private List<ComboItem> mFoodComboList = new ArrayList<>();
private List<Modifier> mModifierList = new ArrayList<>();
private List<ComboItem> mCurrentFoodComboList;
private OrderDetail mCurrentOrderDetailBean;
private boolean RvMealClicked;
......@@ -139,6 +141,10 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
mComboAdapter = new ComboAdapter(IActivity, mFoodComboList);
mRootView.setComboAdapter(mComboAdapter);
}
if (mModifierAdapter == null) {
mModifierAdapter = new ModifierAdapter(IActivity, mModifierList);
mRootView.setModifierAdapter(mModifierAdapter);
}
}
public void initItemClickListener() {
......@@ -198,17 +204,33 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
// addModalKeyBoardModfier(datasBean.getModifier());
// displayModalKeyBoardDialog();
// } else {
if (datasBean.isModifier()) {
addModifierItem(datasBean.getModifier());
} else {
//设置当前操作的套餐细项
mCurrentOrderDetailBean = OrderDetail.comboTransOrderDetail(datasBean, 1, mCurrentOrderDetailBean.getId(), "combo", RvMealClicked);
//先清除上一次选择的子项最大数
// mModel.clearComboQty();
//添加子项
addComboItem(mCurrentOrderDetailBean);
// }
}
});
mModifierAdapter.setOnItemClickListener(new ModifierAdapter.OnItemClickListener() {
@Override
public void onItemClick(Modifier datasBean, int position) {
mRootView.recordOperat(true);
RvMealClicked = false;
// Food orderBean = isParentFood(datasBean.getFID());
// if (orderBean != null && !foodConditionFilter(orderBean)) {
// return;
// }
// if (datasBean.isModKeyboard()) {
// addModalKeyBoardModfier(datasBean.getModifier());
// displayModalKeyBoardDialog();
// } else {
addModifierItem(datasBean);
}
});
}
......@@ -265,44 +287,50 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
private void loadComboData(OrderDetail food, boolean isSelectedMeal) {
long fid = food.getProductId();
if (mCurrentFoodComboList == null) {
mCurrentFoodComboList = new ArrayList<>();
} else {
mCurrentFoodComboList.clear();
}
List<ComboItem> comboItemList = new ArrayList<>();
if (food.getItemType() == 1) {
//获取套餐细项数据
mCurrentFoodComboList = mModel.queryDB_ComboList(fid);
List<ComboItem> comboItems = mModel.queryDB_ComboList(fid);
comboItemList.addAll(comboItems);
}
List<Modifier> modifierList = mModel.queryDB_ModifierList(fid);
for (int i = 0; i < modifierList.size(); i++) {
Modifier modfier = modifierList.get(i);
/**
* 这里套餐细项和备注使用同一个rv显示,统一数据源
*/
{
//设置备注细项背景、字体颜色
modfier.setBgColor(Color.parseColor("#ffeb3b"));
ComboItem foodComboItem = new ComboItem();
foodComboItem.setModifier(true);
// if (modfier.isParent()) {
// foodComboItem.setModKeyboard(modfier.isModKeyboard());
// for (int i = 0; i < modifierList.size(); i++) {
// Modifier modfier = modifierList.get(i);
// /**
// * 这里套餐细项和备注使用同一个rv显示,统一数据源
// */
// {
// //设置备注细项背景、字体颜色
// modfier.setBgColor(Color.parseColor("#ffeb3b"));
//
// ComboItem foodComboItem = new ComboItem();
// foodComboItem.setModifier(true);
//// if (modfier.isParent()) {
//// foodComboItem.setModKeyboard(modfier.isModKeyboard());
//// }
// foodComboItem.setModifier(modfier);
//
// mCurrentFoodComboList.add(foodComboItem);
// }
// }
foodComboItem.setModifier(modfier);
mCurrentFoodComboList.add(foodComboItem);
}
//更新套餐数据
updateComboData(comboItemList);
//更新细项数据
updateModifierData(modifierList);
if (comboItemList.size() > 0) {
IActivity.setModifierTop(10);
}else {
IActivity.setModifierTop(0);
}
//更新套餐细项数据
updateComboData(mCurrentFoodComboList);
// if (food.getAutoMod() == 1) {
if (isSelectedMeal || mCurrentFoodComboList.size() > 0) {
mRootView.showViewModeVisibility(MealConstant.combo_ViewMode);
if (isSelectedMeal || comboItemList.size() > 0 || modifierList.size() > 0) {
mRootView.showViewModeVisibility(MealConstant.combo_ViewMode, MealConstant.modifier_ViewMode);
}
// }
}
......@@ -695,7 +723,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
return true;
}
private void updateOrderFoodNumber() {
public void updateOrderFoodNumber() {
setFoodBtnNumber();
setFoodGroupBtnNumber(IActivity.getFoodGroupGridViewAdapter(), mFoodGroupList);
......@@ -805,6 +833,14 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
mComboAdapter.notifyDataSetChanged();
}
private void updateModifierData(List<Modifier> modifiers) {
mModifierList.clear();
mModifierList.addAll(modifiers);
//根据Item个数显示每一行的个数
mRootView.setModifierRecycleSpanCount(mModifierList.size());
mComboAdapter.notifyDataSetChanged();
}
public boolean isRvMealClicked() {
return RvMealClicked;
}
......@@ -816,4 +852,8 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
public OrderDetail getCurrentOrderDetailBean() {
return mCurrentOrderDetailBean;
}
public SelectMealAdapter getSelectMealAdapter() {
return mSelectMealAdapter;
}
}
......@@ -184,7 +184,7 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
* @param //person 人數
* @param statius 訂單狀態 4 已結賬
*/
public void updateOrderState(String statius) {
public void updateOrderState(String statius, boolean show) {
RequestBody requestBody = new FormBody.Builder()
.add("orderId", MyOrderManage.getInstance().getOrderId() + "")
.add("person", OpenTableManage.getDefault().getPeopleNumber() + "")
......@@ -193,6 +193,10 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
.build();
mModel.updateOrderStatus(requestBody)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> {
if (show)
mRootView.showLoading(null);
})
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading())
......@@ -226,7 +230,7 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
if (info.getData() != null) {
setOrderId((Double) info.getData());
}
updateOrderState("4");
updateOrderState("4", false);
} else {
mRootView.showMessage("結賬失敗!");
}
......@@ -257,7 +261,7 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
@Override
public void onNext(@NonNull BaseResult info) {
if (info != null && info.isSuccess()) {
updateOrderState("4");
updateOrderState("4", false);
} else {
mRootView.showMessage("結賬失敗!");
}
......@@ -281,7 +285,7 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
sendOrder();
} else {
//直接結賬
updateOrderState("4");
updateOrderState("4", true);
}
}
......
......@@ -119,6 +119,8 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
RecyclerView rv_food;
@BindView(R2.id.rv_combo)
RecyclerView rv_combo;
@BindView(R2.id.rv_modifier)
RecyclerView rv_modifier;
@BindView(R2.id.rv_discount)
RecyclerView rv_discount;
......@@ -292,6 +294,10 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
@Override
protected void onResume() {
super.onResume();
//更新點餐信息
mPresenter.resetSelected();
mPresenter.getSelectMealAdapter().notifyDataSetChanged();
mPresenter.updateOrderFoodNumber();
initOrderDetail();
}
......@@ -299,7 +305,7 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
TableBean.DataBean dataBean = OpenTableManage.getDefault().getTableBean();
if (dataBean != null) {
btn_table.setText(dataBean.getTableName());
btn_numberman.setText(OpenTableManage.getDefault().getPeopleNumber() + "");
btn_numberman.setText("人數:" + OpenTableManage.getDefault().getPeopleNumber() + "");
}
}
......@@ -583,7 +589,7 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
} else if (id == R.id.btn_end) {
showViewModeVisibility(MealConstant.food_group_ViewMode, MealConstant.food_ViewMode);
} else if (id == R.id.iv_fine_back) {
showViewModeVisibility(MealConstant.combo_ViewMode);
showViewModeVisibility(MealConstant.combo_ViewMode, MealConstant.modifier_ViewMode);
} else if (id == R.id.btn_key1 || id == R.id.btn_key2 || id == R.id.btn_key3 || id == R.id.btn_key4 || id == R.id.btn_key5 || id == R.id.btn_keys) {
int i = Integer.parseInt(v.getTag().toString());
......@@ -735,12 +741,19 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
}
@Override
public void setModifierAdapter(DefaultAdapter adapter) {
setModifierRecycleLayoutManager(LinearLayoutManager.VERTICAL);
rv_modifier.setAdapter(adapter);
}
@Override
public void setDiscountAdapter(DefaultAdapter adapter) {
}
private GridLayoutManager foodRecycleLayoutManager;
private GridLayoutManager comboRecycleLayoutManager;
private GridLayoutManager modifierRecycleLayoutManager;
@Override
public void setSelectFoodRecycleLayoutManager() {
......@@ -769,6 +782,13 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
}
@Override
public void setModifierRecycleLayoutManager(int orientation) {
modifierRecycleLayoutManager = new GridLayoutManager(this, 1, LinearLayoutManager.VERTICAL, false);
rv_modifier.setLayoutManager(modifierRecycleLayoutManager);
rv_modifier.setItemAnimator(new DefaultItemAnimator());
}
@Override
public void setDiscountRecycleLayoutManager(int orientation) {
}
......@@ -806,6 +826,20 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
}
@Override
public void setModifierRecycleSpanCount(int size) {
if (size > 0) {
// if (size > ComboColCount) {
setModifierRecycleLayoutManager(LinearLayoutManager.VERTICAL);
modifierRecycleLayoutManager.setSpanCount(ComboColCount);
// } else if (size <= ComboColCount) {
// } else {
// //只有一行就使用水平显示以免不能占满
// setComboRecycleLayoutManager(LinearLayoutManager.HORIZONTAL);
// }
}
}
@Override
public void setDiscountRecycleSpanCount(int size) {
}
......@@ -837,6 +871,7 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
showModifyLayoutVisibility(false);
break;
case MealConstant.combo_ViewMode:
case MealConstant.modifier_ViewMode:
case MealConstant.discount_ViewMode:
showModifyLayoutVisibility(true);
break;
......@@ -965,6 +1000,7 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
map.put(MealConstant.food_group_ViewMode, ll_food_group);
map.put(MealConstant.food_ViewMode, rv_food);
map.put(MealConstant.combo_ViewMode, rv_combo);
map.put(MealConstant.modifier_ViewMode, rv_modifier);
map.put(MealConstant.discount_ViewMode, rv_discount);
map.put(MealConstant.fine_ViewMode, pager_fine);
map.put(MealConstant.fine_tabs_ViewMode, rl_fine_tabs);
......@@ -1025,4 +1061,12 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
}
}
}
public void setModifierTop(int Margins) {
RelativeLayout.LayoutParams layoutParam = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParam.setMargins(0, Margins, 0, 0);
layoutParam.addRule(RelativeLayout.ABOVE, R.id.ll_stand_oper);
layoutParam.addRule(RelativeLayout.BELOW, R.id.rv_combo);
rv_modifier.setLayoutParams(layoutParam);
}
}
package com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal;
import android.content.Context;
import android.graphics.drawable.GradientDrawable;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2;
import com.jess.arms.base.BaseHolder;
import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.utils.ArmsUtils;
import com.jess.arms.utils.DeviceUtils;
import java.util.List;
import butterknife.BindView;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2018/6/27
* 修订历史:2018/6/27
* 描述:
*/
public class ModifierAdapter extends DefaultAdapter<Modifier> {
private Context mContext;
private int ColWidth;
private int ColHeight;
private int FontSize;
private int OrderNumberChildShowSize;
private int OrderNumberChildFontSize;
public ModifierAdapter(Context context, List<Modifier> infos) {
super(infos);
this.mContext = context;
int ComboColCount = 4;
int screenWidth = (int) DeviceUtils.getScreenWidth(context);
ColWidth = ((screenWidth - ComboColCount) / ComboColCount);
ColHeight = GsaCloudApplication.androidSetting.getModBtnHeight();
FontSize = GsaCloudApplication.androidSetting.getModFontSize();
OrderNumberChildShowSize = GsaCloudApplication.androidSetting.getOrderNumberChildShowSize();
OrderNumberChildFontSize = GsaCloudApplication.androidSetting.getOrderNumberChildFontSize();
}
@Override
public int getItemCount() {
return mInfos.size();
}
@Override
public BaseHolder<Modifier> getHolder(View v, int viewType) {
return new ComboItemHolder(v);
}
@Override
public int getLayoutId(int viewType) {
return R.layout.table_item_combo;
}
class ComboItemHolder extends BaseHolder<Modifier> {
@BindView(R2.id.tv_name)
TextView tv_name;
@BindView(R2.id.tv_soldout)
TextView tv_soldout;
@BindView(R2.id.iv_qty_sold)
ImageView iv_qty_sold;
@BindView(R2.id.iv_return)
ImageView iv_return;
public ComboItemHolder(View itemView) {
super(itemView);
}
@Override
public void setData(Modifier datasBean, int position) {
iv_qty_sold.setVisibility(View.INVISIBLE);
tv_soldout.setVisibility(View.INVISIBLE);
initModifierName(datasBean);
initModifierSoldout(datasBean);
initModifierLayoutParams();
tv_name.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if (mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(datasBean, position);
}
break;
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
break;
}
return true;
}
});
}
private void initModifierName(Modifier datasBean) {
String desc = datasBean.getModifierName();
// switch (GSAApplication.androidSetting.getDataLanguage()) {
// case 1:
// desc = datasBean.getDesc1();
// break;
// case 2:
// desc = datasBean.getDesc2();
// break;
// case 3:
// desc = datasBean.getDesc3();
// break;
// }
// if (desc == null || desc.trim().length() == 0) {
// desc = datasBean.getDesc1();
// }
tv_name.setText(desc);
// com.elegant.bin.gsa.mvp.main.model.bean.Color.DatasBean bgAndFontColor = datasBean.getBgAndFontColor();
// if (bgAndFontColor != null) {
// if (!TextUtils.isEmpty(bgAndFontColor.getAndroidColor())) {
// tv_name.setBackgroundColor(Color.parseColor(bgAndFontColor.getAndroidColor()));
// } else {
tv_name.setBackgroundColor(ArmsUtils.getColor(mContext, R.color.keyboard_paybill_normal));
// }
// if (!TextUtils.isEmpty(bgAndFontColor.getAndroidfontcolor())) {
// tv_name.setTextColor(Color.parseColor(bgAndFontColor.getAndroidfontcolor()));
// } else {
tv_name.setTextColor(ArmsUtils.getColor(mContext, R.color.theme_white_color));
// }
// }
// tv_name.setHeight(ColHeight);
// tv_name.setWidth(ColWidth);
// tv_name.setMaxWidth(ColHeight);
// tv_name.setMinWidth(ColWidth);
tv_name.setGravity(Gravity.CENTER);
tv_name.setTextSize(FontSize);
}
private void initModifierSoldout(Modifier datasBean) {
// if (datasBean.isSoldout()) {
// iv_qty_sold.setVisibility(View.VISIBLE);
// } else {
// iv_qty_sold.setVisibility(View.INVISIBLE);
// }
int maxNumber = datasBean.getMaxNumber();
int number = datasBean.getNumber();
if (number >= maxNumber) {
tv_soldout.setVisibility(View.VISIBLE);
tv_soldout.setText(maxNumber);
} else {
tv_soldout.setVisibility(View.INVISIBLE);
}
tv_soldout.setMaxHeight(OrderNumberChildShowSize);
tv_soldout.setMinHeight(OrderNumberChildShowSize);
tv_soldout.setTextSize(OrderNumberChildFontSize);
}
private void initModifierLayoutParams() {
ViewGroup.LayoutParams layoutParams = tv_name.getLayoutParams();
//这里减2 减去分割线宽度
layoutParams.width = ColWidth - 4;
layoutParams.height = ColHeight;
tv_name.setLayoutParams(layoutParams);
}
}
private OnItemClickListener mOnItemClickListener;
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
mOnItemClickListener = onItemClickListener;
}
public interface OnItemClickListener {
void onItemClick(Modifier datasBean, int position);
}
}
......@@ -442,8 +442,9 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> {
switch (orderDetail.getItemType()) {
case 1:
//第一层下方有细项 从下方往上删
if (select_end_position != 0 && select_end_position > select_position) {
for (int i = select_end_position; i > select_position; i--) {
// if (select_end_position != 0 && select_end_position > select_position) {
if (select_full_end_position != 0 && select_full_end_position > select_position) {
for (int i = select_full_end_position; i > select_position; i--) {
OrderDetail orderBean = mInfos.get(i);
boolean isParentChild = orderBean.getParentIndex() == orderDetail.getMyIndex();
if (orderBean.getItemType() == 3 && !isParentChild) {
......@@ -625,17 +626,17 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> {
private void setItemNo(OrderDetail foodBean) {
switch (foodBean.getItemType()) {
case 1:
// foodBean.setParentId(foodBean.getId());
// foodBean.setParentId(foodBean.getProductId());
break;
case 2:
case 3:
long itemno = -1;
if (select_position != -1 && select_position < mInfos.size()) {
if (mInfos.get(select_position).isIsfood()) {
itemno = mInfos.get(select_position).getId();
itemno = mInfos.get(select_position).getProductId();
} else {
if (select_start_position != -1 && select_start_position < mInfos.size()) {
itemno = mInfos.get(select_start_position).getId();
itemno = mInfos.get(select_start_position).getProductId();
}
}
}
......
......@@ -266,6 +266,7 @@
android:layout_weight="0.1"
android:background="#00B9F7"
android:text="@string/Addordelete"
android:visibility="gone"
android:textColor="@color/theme_white_color"
android:textSize="20sp" />
......@@ -279,6 +280,7 @@
android:layout_weight="0.1"
android:background="#7D8888"
android:text="@string/msg"
android:visibility="gone"
android:textColor="@color/theme_white_color"
android:textSize="20sp" />
......@@ -485,7 +487,6 @@
android:id="@+id/rv_combo"
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"
......@@ -493,6 +494,17 @@
android:visibility="gone" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_modifier"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/ll_stand_oper"
android:layout_below="@+id/rv_combo"
android:divider="@null"
android:fadeScrollbars="false"
android:orientation="vertical"
android:visibility="gone" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_discount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
......
......@@ -83,7 +83,7 @@ public class LoginPresenter extends BasePresenter<LoginContract.Model, LoginCont
mModel.login(requestBody)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading(null))
.doOnSubscribe(disposable -> mRootView.showLoading("登錄中..."))
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading())
......
package com.gingersoft.gsa.cloud.user.login.mvp.ui.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
......@@ -14,6 +15,7 @@ import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.JsonUtils;
import com.gingersoft.gsa.cloud.base.utils.constans.UserConstans;
import com.gingersoft.gsa.cloud.base.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.base.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.base.utils.other.SPUtils;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.ui.bean.mode.LoginBean;
......@@ -27,6 +29,7 @@ import com.gingersoft.gsa.cloud.user.login.mvp.contract.LoginContract;
import com.gingersoft.gsa.cloud.user.login.mvp.presenter.LoginPresenter;
import com.jess.arms.base.BaseActivity;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.integration.AppManager;
import com.jess.arms.utils.ArmsUtils;
import java.io.IOException;
......@@ -34,6 +37,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import javax.inject.Inject;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import butterknife.BindView;
......@@ -62,6 +67,10 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
* ================================================
*/
public class LoginActivity extends BaseActivity<LoginPresenter> implements LoginContract.View, View.OnClickListener {
@Inject
AppManager mAppManager;
@BindView(R2.id.ed_login_user_account)
EditText edAccount;
@BindView(R2.id.ed_login_user_pwd)
......@@ -155,6 +164,24 @@ public class LoginActivity extends BaseActivity<LoginPresenter> implements Login
}
@Override
public void onResume() {
super.onResume();
killBeforeActivty();
}
private void killBeforeActivty() {
List<Activity> activities = mAppManager.getActivityList();
for (int i = activities.size() - 1; i >= 0; i--) {
Activity activity = activities.get(i);
if (!activity.getClass().getName().equals(getClass().getName())) {
LogUtil.d(TAG, "killBeforeActivty: " + i + " - " + activity.getClass().getSimpleName());
mAppManager.killActivity(activity.getClass());
mAppManager.removeActivity(activity);
}
}
}
@Override
public void initIntent() {
}
......
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