Commit ce4cd6d7 by 宁斌

引入rxjava工具類

parent 0d0fc54b
......@@ -101,7 +101,7 @@ dependencies {
exclude module: 'support-annotations'
}
api rootProject.ext.dependencies['rxerrorhandler2']
api rootProject.ext.dependencies["rxbinding"]
api rootProject.ext.dependencies["rxbinding2"]
//network
api(rootProject.ext.dependencies["retrofit"]) {
exclude module: 'okhttp'
......
......@@ -97,7 +97,7 @@ dependencies {
api 'com.github.lihangleo2:ShadowLayout:2.1.6'
//時間選擇控件
api 'com.contrarywind:Android-PickerView:3.2.4'
implementation 'org.aspectj:aspectjrt:1.8.9'
// implementation 'org.aspectj:aspectjrt:1.8.9'
//商米打印庫
api 'com.sunmi:printerlibrary:1.0.7'
//上下拉刷新
......@@ -108,6 +108,8 @@ dependencies {
api 'cn.bingoogolapple:bga-qrcode-zxing:1.3.7'
//加载反馈页管理
api rootProject.ext.dependencies["loadsir"]
//rxjava,rxbinding相關工具類
api 'com.github.xuexiangjys:RxUtil2:1.1.5'
api rootProject.ext.dependencies["permissionx"]
api rootProject.ext.dependencies["design"]
......
package com.gingersoft.gsa.cloud.aspectj;
import android.view.View;
/**
* Created by Wyh on 2020/2/29.
*/
public class XClickUtil {
/**
* 最近一次点击的时间
*/
private static long mLastClickTime;
/**
* 最近一次点击的控件ID
*/
private static int mLastClickViewId;
/**
* 是否是快速点击
*
* @param v 点击的控件
* @param intervalMillis 时间间期(毫秒)
* @return true:是,false:不是
*/
public static boolean isFastDoubleClick(View v, long intervalMillis) {
int viewId = v.getId();
long time = System.currentTimeMillis();
long timeInterval = Math.abs(time - mLastClickTime);
if (timeInterval < intervalMillis && viewId == mLastClickViewId) {
return true;
} else {
mLastClickTime = time;
mLastClickViewId = viewId;
return false;
}
}
}
......@@ -112,6 +112,9 @@ public class GsaCloudApplication extends BaseApplication {
public void onCreate() {
super.onCreate();
mAppContext = this;
isLogin = (boolean) SPUtils.get(PrintConstans.IS_LOGIN, false);
CC.enableVerboseLog(true);
CC.enableDebug(true);
CC.enableRemoteCC(true);
......@@ -139,12 +142,8 @@ public class GsaCloudApplication extends BaseApplication {
uiStyleConfiguration = new UIStyleExtendedConfiguration();
functionConfiguration = new FunctionExtendedConfiguration();
isLogin = (boolean) SPUtils.get(this, PrintConstans.IS_LOGIN, false);
//上傳餐廳擴展信息
ExpandInfoSetting.initUpdateExtendedConfiguration(uiStyleConfiguration,functionConfiguration);
//獲取餐廳擴展表數據
initExpandInfo();
ExpandInfoSetting.initUpdateExtendedConfiguration(uiStyleConfiguration, functionConfiguration);
// 设定一些通用的属性,这些属性在每次统计事件中都会附带
// 注意:如果此处的属性名与内置属性的名称相同,则内置属性会被覆盖
......@@ -162,21 +161,6 @@ public class GsaCloudApplication extends BaseApplication {
// Tracker.INSTANCE.initialize(this);
}
private void initExpandInfo() {
//在IO线程执行数据库处理操作
Observable.just(0)
.subscribeOn(Schedulers.io())
.subscribe(new Consumer<Integer>() {
@Override
public void accept(@io.reactivex.annotations.NonNull Integer integer) throws Exception {
ExpandInfoDaoUtils expandInfoDaoUtils = new ExpandInfoDaoUtils(getAppContext());
List<ExpandInfo> expandInfos = expandInfoDaoUtils.queryAllExpandInfo();
if (expandInfos != null) {
RestaurantExpandInfoUtils.setCommonExpandInfo(expandInfos);
}
}
});
}
public Activity getCurrentActivity() {
return mCurrentActivity;
......@@ -270,7 +254,7 @@ public class GsaCloudApplication extends BaseApplication {
} else {
//如果當前機型不是上面兩種,那麼設置默認打印為ip打印
//這個默認值的優先級<用戶在打印機列表中設置的默認打印機
SPUtils.put(this, PrintConstans.DEFAULT_PRINT_METHOD, PrintConstans.IP_PRINT);
SPUtils.put(PrintConstans.DEFAULT_PRINT_METHOD, PrintConstans.IP_PRINT);
}
}
......@@ -427,52 +411,52 @@ public class GsaCloudApplication extends BaseApplication {
//获取登陆token
public static String getLoginToken() {
return (String) SPUtils.get(mAppContext, UserConstans.token, "");
return (String) SPUtils.get(UserConstans.token, "");
}
public static int getMemberId() {
return (int) SPUtils.get(mAppContext, UserConstans.memberId, 0);
return (int) SPUtils.get(UserConstans.memberId, 0);
}
public static int getBrandId() {
return (int) SPUtils.get(mAppContext, UserConstans.brandId, 0);
return (int) SPUtils.get(UserConstans.brandId, 0);
}
public static String getBrandName() {
return (String) SPUtils.get(mAppContext, UserConstans.brandName, "");
return (String) SPUtils.get(UserConstans.brandName, "");
}
public static int getRestaurantId() {
return (int) SPUtils.get(mAppContext, UserConstans.restaurantId, 0);
return (int) SPUtils.get(UserConstans.restaurantId, 0);
}
public static String getRestaurantName() {
return (String) SPUtils.get(mAppContext, UserConstans.restaurantName, "");
return (String) SPUtils.get(UserConstans.restaurantName, "");
}
public static String getMemberName() {
return (String) SPUtils.get(mAppContext, UserConstans.memberName, "");
return (String) SPUtils.get(UserConstans.memberName, "");
}
public static String getBrandRestaurantInfo() {
return (String) SPUtils.get(mAppContext, UserConstans.brandRestaurantInfos, "");
return (String) SPUtils.get(UserConstans.brandRestaurantInfos, "");
}
public static String getGsPosShopId() {
return (String) SPUtils.get(mAppContext, UserConstans.gsPosShopId, "-1");
return (String) SPUtils.get(UserConstans.gsPosShopId, "-1");
}
public static void logOut() {
SPUtils.remove(getAppContext(), UserConstans.token);
SPUtils.remove(getAppContext(), UserConstans.memberId);
SPUtils.remove(getAppContext(), UserConstans.brandId);
SPUtils.remove(getAppContext(), UserConstans.brandName);
SPUtils.remove(getAppContext(), UserConstans.restaurantId);
SPUtils.remove(getAppContext(), UserConstans.restaurantName);
SPUtils.remove(getAppContext(), UserConstans.memberName);
SPUtils.remove(getAppContext(), UserConstans.brandRestaurantInfos);
SPUtils.remove(getAppContext(), UserConstans.gsPosShopId);
SPUtils.put(getAppContext(), PrintConstans.IS_LOGIN, false);
SPUtils.remove(UserConstans.token);
SPUtils.remove(UserConstans.memberId);
SPUtils.remove(UserConstans.brandId);
SPUtils.remove(UserConstans.brandName);
SPUtils.remove(UserConstans.restaurantId);
SPUtils.remove(UserConstans.restaurantName);
SPUtils.remove(UserConstans.memberName);
SPUtils.remove(UserConstans.brandRestaurantInfos);
SPUtils.remove(UserConstans.gsPosShopId);
SPUtils.put(PrintConstans.IS_LOGIN, false);
//关闭Prj打印服務
CC.obtainBuilder("Component.Print")
.setActionName("stopPrintService")
......@@ -500,39 +484,39 @@ public class GsaCloudApplication extends BaseApplication {
}
public static void setLoginToken(Context context, String token) {
SPUtils.put(mAppContext, UserConstans.token, token);
SPUtils.put(UserConstans.token, token);
}
public static void setMemberId(Context context, int memberId) {
SPUtils.put(mAppContext, UserConstans.memberId, memberId);
SPUtils.put(UserConstans.memberId, memberId);
}
public static void setMemberName(Context context, String memberName) {
SPUtils.put(mAppContext, UserConstans.memberName, memberName);
SPUtils.put(UserConstans.memberName, memberName);
}
public static void setBrandId(Context context, int restaurantId) {
SPUtils.put(mAppContext, UserConstans.brandId, restaurantId);
SPUtils.put(UserConstans.brandId, restaurantId);
}
public static void setBrandName(Context context, String restaurantName) {
SPUtils.put(mAppContext, UserConstans.brandName, restaurantName);
SPUtils.put(UserConstans.brandName, restaurantName);
}
public static void setRestaurantId(Context context, int restaurantId) {
SPUtils.put(mAppContext, UserConstans.restaurantId, restaurantId);
SPUtils.put(UserConstans.restaurantId, restaurantId);
}
public static void setRestaurantName(Context context, String restaurantName) {
SPUtils.put(mAppContext, UserConstans.restaurantName, restaurantName);
SPUtils.put(UserConstans.restaurantName, restaurantName);
}
public static void setBrandRestaurantInfos(Context context, String brandRestaurantIds) {
SPUtils.put(mAppContext, UserConstans.brandRestaurantInfos, brandRestaurantIds);
SPUtils.put(UserConstans.brandRestaurantInfos, brandRestaurantIds);
}
public static void setGsPosShopId(Context context, String gsPosShopId) {
SPUtils.put(mAppContext, UserConstans.gsPosShopId, gsPosShopId);
SPUtils.put(UserConstans.gsPosShopId, gsPosShopId);
}
public static void clearMemberInfo() {
......
package com.gingersoft.gsa.cloud.base.utils;
import android.content.Context;
import com.gingersoft.gsa.cloud.constans.UserConstans;
import com.gingersoft.gsa.cloud.base.utils.other.SPUtils;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2019-12-29
* 修订历史:2019-12-29
* 描述:
*/
public class UserDataUtils {
//获取登陆token
public static String getLoginToken(Context context) {
return (String) SPUtils.get(context, UserConstans.token, "0");
}
public static String getMemberId(Context context) {
return (String) SPUtils.get(context, UserConstans.memberId, "0");
}
public static String getRestaurantId(Context context) {
return (String) SPUtils.get(context, UserConstans.restaurantId, "");
}
public static void setMemberId(Context context, int memberId) {
SPUtils.put(context, UserConstans.memberId, memberId);
}
public static void setLoginToken(Context context, String token) {
SPUtils.put(context, UserConstans.token, token);
}
public static void setRestaurantId(Context context, int restaurantId) {
SPUtils.put(context, UserConstans.restaurantId, restaurantId);
}
}
......@@ -4,6 +4,7 @@ import android.content.Context;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Vibrator;
import com.gingersoft.gsa.cloud.base.R;
import com.gingersoft.gsa.cloud.constans.AppConstans;
import com.gingersoft.gsa.cloud.base.utils.other.SPUtils;
......@@ -22,8 +23,8 @@ public class VibratorUtils {
public static void pressButtonSound(Context context) {
SoundPool soundPool = new SoundPool(1, AudioManager.STREAM_SYSTEM, 0);
soundPool.load(context, R.raw.beep, 1);
int vibrationProgress = (int) SPUtils.get(context, AppConstans.VIBRATION_PROGRESS,0);
int presssoundProgress = (int) SPUtils.get(context, AppConstans.PRESSSOUND_PROGRESS,0);
int vibrationProgress = (int) SPUtils.get(AppConstans.VIBRATION_PROGRESS, 0);
int presssoundProgress = (int) SPUtils.get(AppConstans.PRESSSOUND_PROGRESS, 0);
try {
Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
if (vibrationProgress > 0) {
......@@ -36,7 +37,7 @@ public class VibratorUtils {
}
}
public void setJumpActivity(Class clazz){
public void setJumpActivity(Class clazz) {
}
}
......@@ -3,6 +3,8 @@ package com.gingersoft.gsa.cloud.base.utils.other;
import android.content.Context;
import android.content.SharedPreferences;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Map;
......@@ -24,11 +26,11 @@ public class SPUtils {
*
* @return void 返回类型
*/
public static void put(Context context, String key, Object object) {
SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
public static void put(String key, Object object) {
SharedPreferences sp = GsaCloudApplication.getAppContext().getSharedPreferences(FILE_NAME,
Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
if(object == null) {
if (object == null) {
editor.remove(key);
SharedPreferencesCompat.apply(editor);
return;
......@@ -53,13 +55,12 @@ public class SPUtils {
/**
* 得到保存数据的方法,根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值
*
* @param context
* @param key
* @param defaultObject
* @return
*/
public static Object get(Context context, String key, Object defaultObject) {
SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
public static Object get(String key, Object defaultObject) {
SharedPreferences sp = GsaCloudApplication.getAppContext().getSharedPreferences(FILE_NAME,
Context.MODE_PRIVATE);
if (defaultObject instanceof String) {
......@@ -80,11 +81,10 @@ public class SPUtils {
/**
* 移除某个key值已经对应的值
*
* @param context
* @param key
*/
public static void remove(Context context, String key) {
SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
public static void remove(String key) {
SharedPreferences sp = GsaCloudApplication.getAppContext().getSharedPreferences(FILE_NAME,
Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.remove(key);
......@@ -93,11 +93,9 @@ public class SPUtils {
/**
* 清除所有数据
*
* @param context
*/
public static void clear(Context context) {
SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
public static void clear() {
SharedPreferences sp = GsaCloudApplication.getAppContext().getSharedPreferences(FILE_NAME,
Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.clear();
......@@ -107,12 +105,11 @@ public class SPUtils {
/**
* 查询某个key是否已经存在
*
* @param context
* @param key
* @return
*/
public static boolean contains(Context context, String key) {
SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
public static boolean contains(String key) {
SharedPreferences sp = GsaCloudApplication.getAppContext().getSharedPreferences(FILE_NAME,
Context.MODE_PRIVATE);
return sp.contains(key);
}
......@@ -120,11 +117,10 @@ public class SPUtils {
/**
* 返回所有的键值对
*
* @param context
* @return
*/
public static Map<String, ?> getAll(Context context) {
SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
public static Map<String, ?> getAll() {
SharedPreferences sp = GsaCloudApplication.getAppContext().getSharedPreferences(FILE_NAME,
Context.MODE_PRIVATE);
return sp.getAll();
}
......
package com.gingersoft.gsa.cloud.bean.expandInfo;
import android.util.SparseArray;
import com.gingersoft.gsa.cloud.base.Api;
import com.gingersoft.gsa.cloud.base.utils.JsonUtils;
import com.gingersoft.gsa.cloud.base.utils.ReflectionUtils;
import com.gingersoft.gsa.cloud.base.utils.RestaurantExpandInfoUtils;
import com.gingersoft.gsa.cloud.base.utils.okhttpUtils.OkHttp3Utils;
import com.gingersoft.gsa.cloud.constans.HttpsConstans;
import com.gingersoft.gsa.cloud.database.bean.ExpandInfo;
import com.gingersoft.gsa.cloud.database.utils.ExpandInfoDaoUtils;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
......@@ -13,7 +17,10 @@ import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import io.reactivex.Observable;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
import lombok.Builder;
......@@ -22,6 +29,8 @@ import lombok.Setter;
import okhttp3.MediaType;
import okhttp3.RequestBody;
import static com.gingersoft.gsa.cloud.base.application.GsaCloudApplication.getAppContext;
/**
* @author : bin
* @create date: 2020-10-20
......@@ -62,7 +71,7 @@ public class ExpandInfoSetting {
public static void initUpdateExtendedConfiguration(Object... objects) {
Observable.just(0)
.subscribeOn(Schedulers.newThread())
.subscribeOn(Schedulers.io())
.subscribe(new Consumer<Integer>() {
@Override
public void accept(@io.reactivex.annotations.NonNull Integer integer) throws Exception {
......@@ -73,10 +82,35 @@ public class ExpandInfoSetting {
}
String expandInfoListJson = JsonUtils.toJson(expandInfoSettingList);
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"),expandInfoListJson);
OkHttp3Utils.post(HttpsConstans.ROOT_SERVER_ADDRESS_FORMAL + Api.add_restaurant_base_table_configuration,requestBody)
.subscribe();
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), expandInfoListJson);
OkHttp3Utils.post(HttpsConstans.ROOT_SERVER_ADDRESS_FORMAL + Api.add_restaurant_base_table_configuration, requestBody)
.subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(String s) {
int i = 1;
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
//從本地獲取餐廳擴展表數據
ExpandInfoDaoUtils expandInfoDaoUtils = new ExpandInfoDaoUtils(getAppContext());
List<ExpandInfo> expandInfos = expandInfoDaoUtils.queryAllExpandInfo();
if (expandInfos != null) {
RestaurantExpandInfoUtils.setCommonExpandInfo(expandInfos);
}
}
});
}
});
}
......@@ -99,7 +133,7 @@ public class ExpandInfoSetting {
Class<?> returnClass = method.getReturnType();
if (method.getName().startsWith("get") && returnClass.equals(ExpandInfoSetting.class)) {
try {
Object [] objs ={};
Object[] objs = {};
//反射執行get方法 獲取每個配置類信息
ExpandInfoSetting expandInfo = (ExpandInfoSetting) ReflectionUtils.invokeMethod(method, obj, objs);
//獲取完整的settingName
......
......@@ -115,7 +115,7 @@ public class HttpsConstans {
public static String RICEPON_MEMBER_61177;
public static void init(Context context) {
isFormal = (int) SPUtils.get(context, "isFormal", -1);
isFormal = (int) SPUtils.get("isFormal", -1);
if (isFormal == -1 && BuildConfig.DEBUG) {
//如果沒有手動配置過服務器,並且是DEBUG模式,默認是測試服務器
isFormal = 1;
......
......@@ -141,7 +141,6 @@ public class PrinterUtils {
* and executes a full cut ( cuts the paper completely )
*
* @return bytes for this command
* @return bytes for this command
*/
public static byte[] feedPaperCut() {
return PrintCommands.selectCutModeAndCutPaper(1, 0);
......@@ -441,7 +440,7 @@ public class PrinterUtils {
function.setLable("本機");
orderTopFunctionAdapter.notifyDataSetChanged();
}
SPUtils.put(dialog.getContext(), PrintConstans.DEFAULT_PRINT_METHOD, PrintConstans.LOCAL_PRINT);
SPUtils.put(PrintConstans.DEFAULT_PRINT_METHOD, PrintConstans.LOCAL_PRINT);
dialog.dismiss();
});
hepler.setViewClick(R.id.internet_print, v -> {
......@@ -450,7 +449,7 @@ public class PrinterUtils {
function.setLable("網絡");
orderTopFunctionAdapter.notifyDataSetChanged();
}
SPUtils.put(dialog.getContext(), PrintConstans.DEFAULT_PRINT_METHOD, PrintConstans.IP_PRINT);
SPUtils.put(PrintConstans.DEFAULT_PRINT_METHOD, PrintConstans.IP_PRINT);
dialog.dismiss();
});
}
......
......@@ -81,7 +81,7 @@ ext {
//rxbinding
"rxbinding" : "com.jakewharton.rxbinding4:rxbinding:4.0.0",
"rxbinding2" : "com.jakewharton.rxbinding2:rxbinding:2.1.1",
//tools
"dagger2" : "com.google.dagger:dagger:${version["dagger2SdkVersion"]}",
......
......@@ -46,7 +46,7 @@ public abstract class LoginInterfaceImpl<P extends BaseLoginPresenter> extends B
restaurantSize = RestaurantInfoUtils.getRestaurantSize(brands);
brandsBeans.addAll(brands);
}
boolean autoLogin = (boolean) SPUtils.get(mContext, UserConstans.AUTO_LOGIN, false);
boolean autoLogin = (boolean) SPUtils.get(UserConstans.AUTO_LOGIN, false);
if (autoLogin && GsaCloudApplication.isLogin) {
int restaurantId = GsaCloudApplication.getRestaurantId();
......@@ -88,7 +88,7 @@ public abstract class LoginInterfaceImpl<P extends BaseLoginPresenter> extends B
GsaCloudApplication.setMemberName(mContext, loginBean.getData().getUser().getUserName());
//獲取餐廳
// mPresenter.getRestaurantList();
boolean autoLogin = (boolean) SPUtils.get(mContext, UserConstans.AUTO_LOGIN, false);
boolean autoLogin = (boolean) SPUtils.get(UserConstans.AUTO_LOGIN, false);
if (autoLogin) {
int restaurantId = GsaCloudApplication.getRestaurantId();
if (restaurantId != 0) {
......
......@@ -97,7 +97,7 @@ public class BaseLoginPresenter<M extends BaseLoginContract.Model, V extends Bas
public void onNext(@NonNull LoginBean info) {
if (info.isSuccess()) {
GsaCloudApplication.isLogin = true;
SPUtils.put(GsaCloudApplication.getAppContext(), PrintConstans.IS_LOGIN, true);
SPUtils.put(PrintConstans.IS_LOGIN, true);
GsaCloudApplication.userName = info.getData().getUser().getUserName();
mRootView.showMessage("登陸成功");
mRootView.loginSuccess(info);
......
......@@ -102,12 +102,12 @@ public class LoginActivity extends LoginInterfaceImpl<LoginPresenter> implements
((ImageView) findViewById(R.id.iv_top_bg)).setAdjustViewBounds(true);
mPresenter.requestExternalStoragePermission();
//顯示記住的登錄名
if (!Objects.equals(SPUtils.get(mContext, UserConstans.LOGIN_USERNAME, ""), "")) {
edAccount.setText("" + SPUtils.get(mContext, UserConstans.LOGIN_USERNAME, ""));
if (!Objects.equals(SPUtils.get( UserConstans.LOGIN_USERNAME, ""), "")) {
edAccount.setText("" + SPUtils.get(UserConstans.LOGIN_USERNAME, ""));
mRbRememberPwd.setChecked(true);
}
//顯示記住的密碼
String pwd = Aes.aesDecrypt((String) SPUtils.get(mContext, UserConstans.LOGIN_PASSWORD, ""));
String pwd = Aes.aesDecrypt((String) SPUtils.get(UserConstans.LOGIN_PASSWORD, ""));
if (!TextUtil.isEmptyOrNullOrUndefined(pwd)) {
edPwd.setText(pwd);
editFocusChange(edPwd, true);
......@@ -127,7 +127,7 @@ public class LoginActivity extends LoginInterfaceImpl<LoginPresenter> implements
}
});
if ((boolean) SPUtils.get(mContext, UserConstans.AUTO_LOGIN, false)) {
if ((boolean) SPUtils.get(UserConstans.AUTO_LOGIN, false)) {
//自動登陸
mRbAutoLogin.setChecked(true);
}
......@@ -311,17 +311,17 @@ public class LoginActivity extends LoginInterfaceImpl<LoginPresenter> implements
private void RememberPwd() {
if (mRbRememberPwd.isChecked()) {
//登陸成功後,如果選中了記住密碼,則保存密碼
SPUtils.put(mContext, UserConstans.LOGIN_USERNAME, edAccount.getText().toString());
SPUtils.put(UserConstans.LOGIN_USERNAME, edAccount.getText().toString());
//將密碼加密再保存
SPUtils.put(mContext, UserConstans.LOGIN_PASSWORD, Aes.aesEncrypt(edPwd.getText().toString()).replaceAll("\r|\n", ""));
SPUtils.put(UserConstans.LOGIN_PASSWORD, Aes.aesEncrypt(edPwd.getText().toString()).replaceAll("\r|\n", ""));
} else {
SPUtils.put(mContext, UserConstans.LOGIN_USERNAME, "");
SPUtils.put(mContext, UserConstans.LOGIN_PASSWORD, "");
SPUtils.put(UserConstans.LOGIN_USERNAME, "");
SPUtils.put(UserConstans.LOGIN_PASSWORD, "");
}
}
private void autoLogin() {
SPUtils.put(mContext, UserConstans.AUTO_LOGIN, mRbAutoLogin.isChecked());
SPUtils.put(UserConstans.AUTO_LOGIN, mRbAutoLogin.isChecked());
}
@OnClick({R2.id.btn_gsa_user_login, R2.id.iv_clear_pwd, R2.id.iv_clear_account, R2.id.tv_remember_pwd_text, R2.id.ic_look_pwd, R2.id.tv_auto_login_text, R2.id.tv_forget_pwd})
......
......@@ -61,6 +61,7 @@ public class SwitchServerActivity extends BaseActivity<SwitchServerPresenter> im
private int[] rbIds = new int[]{R.id.rb_server_hk, R.id.rb_server_formal, R.id.rb_youchang, R.id.rb_shiwei, R.id.rb_shishu};
private int selectIndex;
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerSwitchServerComponent //如找不到该类,请编译一下项目
......@@ -84,7 +85,7 @@ public class SwitchServerActivity extends BaseActivity<SwitchServerPresenter> im
radioGroup.setOnCheckedChangeListener((group, checkedId) -> selectIndex = group.indexOfChild(findViewById(checkedId)));
switchServer.setOnClickListener(v -> {
SPUtils.put(mContext, "isFormal", selectIndex);
SPUtils.put("isFormal", selectIndex);
GsaCloudApplication.logOut();
ToastUtils.show(mContext, "已切換環境,重啟生效" + selectIndex);
GsaCloudApplication.initDomainUrl();
......
......@@ -94,15 +94,15 @@ public class WelcomeActivity extends LoginInterfaceImpl<WelcomePresenter> implem
@Override
public void onAnimationEnd(Animation animation) {
if ((boolean) SPUtils.get(mContext, UserConstans.IS_GUIDE, true)) {
if ((boolean) SPUtils.get(UserConstans.IS_GUIDE, true)) {
//是第一次進入,顯示引導頁
showGuide();
} else {
if ((boolean) SPUtils.get(mContext, UserConstans.AUTO_LOGIN, false) && GsaCloudApplication.isLogin
if ((boolean) SPUtils.get(UserConstans.AUTO_LOGIN, false) && GsaCloudApplication.isLogin
&& GsaCloudApplication.getRestaurantId() != 0) {
//自動登陸
String pwd = Aes.aesDecrypt((String) SPUtils.get(mContext, UserConstans.LOGIN_PASSWORD, ""));
mPresenter.login(SPUtils.get(mContext, UserConstans.LOGIN_USERNAME, "") + "", pwd);
String pwd = Aes.aesDecrypt((String) SPUtils.get(UserConstans.LOGIN_PASSWORD, ""));
mPresenter.login(SPUtils.get(UserConstans.LOGIN_USERNAME, "") + "", pwd);
} else {
startActivity(new Intent(mContext, LoginActivity.class));
}
......@@ -280,7 +280,7 @@ public class WelcomeActivity extends LoginInterfaceImpl<WelcomePresenter> implem
if (v.getId() == R.id.iv_guide_close || v.getId() == R.id.tv_experience) {
//去登陸頁,設置下次不顯示引導頁
//立即體驗
SPUtils.put(mContext, UserConstans.IS_GUIDE, false);
SPUtils.put(UserConstans.IS_GUIDE, false);
startActivity(new Intent(mContext, LoginActivity.class));
}
}
......
......@@ -178,7 +178,7 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
protected void onResume() {
super.onResume();
initFuncationData();
if (((int) SPUtils.get(mContext, "isFormal", 0)) != 0) {
if (((int) SPUtils.get("isFormal", 0)) != 0) {
tv_version_name.setText("v_" + DeviceUtils.getVersionName(this) + "\u1500Beta");
} else {
tv_version_name.setText("v_" + DeviceUtils.getVersionName(this));
......
......@@ -174,7 +174,7 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese
rightBtn = mTopBar.addRightTextButton("打印", R.id.tv_right);
rightBtn.setTextColor(ArmsUtils.getColor(this, R.color.theme_white_color));
rightBtn.setOnClickListener(v -> {
String settlementReportJson = (String) SPUtils.get(mContext, PrintConstans.SETTLEMENT_REPORT, "");
String settlementReportJson = (String) SPUtils.get( PrintConstans.SETTLEMENT_REPORT, "");
if (!TextUtils.isEmpty(settlementReportJson)) {
SettlementReport.DataBean datasBean = JsonUtils.parseObject(settlementReportJson, SettlementReport.DataBean.class);
if (datasBean != null) {
......@@ -290,7 +290,7 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese
public void returnSettlementData(SettlementReport.DataBean datasBean) {
if (datasBean.getVo() != null && datasBean.getVo().getPrices() > 0) {
//保存下次重印數據
SPUtils.put(mContext, PrintConstans.SETTLEMENT_REPORT, JsonUtils.toJson(datasBean));
SPUtils.put( PrintConstans.SETTLEMENT_REPORT, JsonUtils.toJson(datasBean));
}
List<SectionTextItem3> settlementReportItems = new ArrayList<>();
......
......@@ -27,7 +27,7 @@ public class OrderDiscount {
public static class Request {
/**
* 0#整單折扣
* 0#餐廳折扣
* 1#會員折扣
* 2#优惠券折扣
*/
......@@ -144,7 +144,7 @@ public class OrderDiscount {
public static class Respose implements Serializable {
/**
* 整單折扣ID
* 餐廳折扣ID
*/
private Long discountId;
/**折扣金額*/
......@@ -152,11 +152,15 @@ public class OrderDiscount {
/**折扣比例*/
private int discountValue;
/**
* 0#整單折扣
* 0#餐廳折扣
* 1#會員折扣
* 2#优惠券折扣
*/
private int type;
/**
* 餐廳折扣類型 0:金額,1:折扣,2:自定義金額,3:自由金額,數字盤,4:免服務費
*/
private byte discountType;
/**折扣名称1*/
private String remark;
/**折扣名称2*/
......@@ -173,115 +177,6 @@ public class OrderDiscount {
private Byte accumulate;
public String getRemark() {
return remark;
}
public Long getDiscountId() {
return discountId;
}
public void setDiscountId(Long discountId) {
this.discountId = discountId;
}
public double getDiscountAmount() {
return discountAmount;
}
public void setDiscountAmount(double discountAmount) {
this.discountAmount = discountAmount;
}
public int getDiscountValue() {
return discountValue;
}
public void setDiscountValue(int discountValue) {
this.discountValue = discountValue;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public void setRemark(String remark) {
this.remark = remark;
}
public String getRemark2() {
return remark2;
}
public void setRemark2(String remark2) {
this.remark2 = remark2;
}
public String getRemark3() {
return remark3;
}
public void setRemark3(String remark3) {
this.remark3 = remark3;
}
public Double getSpend() {
return spend;
}
public void setSpend(Double spend) {
this.spend = spend;
}
public Byte getAccumulate() {
return accumulate;
}
public void setAccumulate(Byte accumulate) {
this.accumulate = accumulate;
}
}
/**
* 計算折扣金額
*
* @param discount
* @param sourcePrice
* @return
*/
public static double calculationDiscount(Discount discount, double sourcePrice) {
double discountPrice;
if (discount.getType() == Discount.DISCOUNT_TYPE_AMOUNT) {
//金額折扣
discountPrice = discount.getAmount();
} else {
//百分比折扣
discountPrice = MoneyUtil.divide(MoneyUtil.multiply(sourcePrice, discount.getDiscountValue()), 100).doubleValue();
}
if (sourcePrice < discountPrice) {
//折扣金額不能超出總額
discountPrice = sourcePrice;
}
// else {
// discountPrice = sourcePrice - discountPrice;
// }
return -MoneyUtil.get_ItemDecimals_money(Math.abs(discountPrice));
}
public static double calculationMemberDiscount(int discountRate, double sourcePrice) {
double discountPrice = MoneyUtil.divide(MoneyUtil.multiply(sourcePrice, discountRate), 100).doubleValue();
if (sourcePrice < discountPrice) {
//折扣金額不能超出總額
discountPrice = sourcePrice;
}
// else {
// discountPrice = sourcePrice - discountPrice;
// }
return -MoneyUtil.get_ItemDecimals_money(Math.abs(discountPrice));
}
}
......@@ -4,17 +4,12 @@ import com.gingersoft.gsa.cloud.base.common.bean.MemberInfo;
import com.gingersoft.gsa.cloud.base.order.bean.discount.CouponDiscountBean;
import com.gingersoft.gsa.cloud.base.order.billItem.BillItem;
import com.gingersoft.gsa.cloud.base.order.billItem.DiscountItem;
import com.gingersoft.gsa.cloud.base.order.commodity.Commodity;
import com.gingersoft.gsa.cloud.base.order.commodity.MealCommodity;
import com.gingersoft.gsa.cloud.base.order.commodity.MealTakeaway;
import com.gingersoft.gsa.cloud.base.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.base.order.discount.CouponDiscount;
import com.gingersoft.gsa.cloud.base.order.discount.MemberDiscount;
import com.gingersoft.gsa.cloud.base.order.discount.MultyDiscount;
import com.gingersoft.gsa.cloud.base.order.discount.NomalDiscount;
import com.gingersoft.gsa.cloud.constans.FoodSummaryConstans;
import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.jess.arms.utils.Preconditions;
import java.util.ArrayList;
import java.util.List;
......@@ -179,10 +174,16 @@ public class ShoppingCart {
*/
public void delAllMultyDiscount() {
List<MultyDiscount> multyDiscountList = getMultyDiscountList();
// for (MultyDiscount multyDiscount: multyDiscountList) {
// multyDiscountList.remove(multyDiscount);
// }
multyDiscountList.removeAll(multyDiscountList);
boolean result = multyDiscountList.removeAll(multyDiscountList);
int i = 100;
}
/**
* 刪除所有單折扣
*/
public void delAllNomalDiscountList(List<NomalDiscount> nomalDiscountList) {
boolean result = getMultyDiscountList().removeAll(nomalDiscountList);
int i = 100;
}
/**
......@@ -253,7 +254,7 @@ public class ShoppingCart {
}
multyDiscountArrays.add(multyDiscounts);
}
if (multyDiscounts != null) {
if (money != 0 && multyDiscounts != null) {
//計算折扣金額
money = multyDiscounts.calculate(money);
}
......@@ -280,7 +281,7 @@ public class ShoppingCart {
}
/**
* 獲取普通折扣
* 獲取普通折扣列表
*
* @return
*/
......
......@@ -3,6 +3,7 @@ package com.gingersoft.gsa.cloud.base.order.commodity;
import com.gingersoft.gsa.cloud.base.order.bean.OrderBean;
import com.gingersoft.gsa.cloud.base.order.bean.discount.OrderDiscount;
import com.gingersoft.gsa.cloud.base.order.discount.NomalDiscount;
import com.gingersoft.gsa.cloud.base.order.order.BaseOrder;
import com.gingersoft.gsa.cloud.base.order.order.DoshokuOrder;
import com.gingersoft.gsa.cloud.base.order.order.TakeawayOrder;
......@@ -415,7 +416,7 @@ public class MealCommodity implements Commodity {
*/
public static MealCommodity discountTransMealCommodity(Discount discount, boolean isNew, long id, double sourcePrice) {
double discountPrice = OrderDiscount.calculationDiscount(discount, sourcePrice);
double discountPrice = NomalDiscount.calculationDiscount(discount, sourcePrice);
MealCommodity mealCommodity = new MealCommodity();
mealCommodity.setProductName(discount.getRemark());
......
......@@ -183,10 +183,18 @@ public class OrderDetail implements Commodity, Serializable {
*/
private String printSeting;
/**
* 是否免服務費 0:否,1:是
*/
private byte freeServiceCharge;
/**
* 是否参与折扣#0:不參與;1:參與;
*/
private long ablediscount = 1;
/**
* 是否参与折上折 0:否,1:是
*/
private byte additionalDiscount = 1;
/**
* 折扣實體
*/
private Discount discount;
......@@ -195,7 +203,7 @@ public class OrderDetail implements Commodity, Serializable {
*/
private int discountStatus;
/**
* 是否参与折扣#0:不參與;1:參與;
* 是否参与服務費#0:不參與;1:參與;
**/
private byte scAble = 1;
/**
......@@ -305,6 +313,8 @@ public class OrderDetail implements Commodity, Serializable {
this.scAble = orderDetail.scAble;
this.ftName = orderDetail.ftName;
this.majorName = orderDetail.majorName;
this.freeServiceCharge = orderDetail.freeServiceCharge;
this.additionalDiscount = orderDetail.additionalDiscount;
this.discount = orderDetail.discount;
this.discountStatus = orderDetail.discountStatus;
this.status = orderDetail.status;
......
package com.gingersoft.gsa.cloud.base.order.discount;
import android.os.Handler;
import android.os.Looper;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.database.bean.Discount;
......@@ -54,7 +57,13 @@ public class NomalDiscount extends MultyDiscount {
//不能大於折扣上限
discountMoney = discount.getDiscountCap();
if (BuildConfig.DEBUG) {
ArmsUtils.makeText(GsaCloudApplication.getAppContext(), "此折扣上限為:" + discountMoney);
double finalDiscountMoney = discountMoney;
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
ArmsUtils.makeText(GsaCloudApplication.getAppContext(), "此折扣上限為:" + finalDiscountMoney);
}
});
}
}
if (sourceMoney < discountMoney) {
......
......@@ -173,7 +173,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
} else {
// 獲取默認打印機,如果用戶沒有配置默認打印機,就取他最近使用的一個.
// 如果沒有最近使用的打印機,並且當前餐廳只有一台打印機,就用這一台打印機打印
defaultPrint = mPresenter.getDefaultPrintInList(printerDeviceBeans, (String) SPUtils.get(mContext, "defaultPrint", ""));
defaultPrint = mPresenter.getDefaultPrintInList(printerDeviceBeans, (String) SPUtils.get( "defaultPrint", ""));
}
if (defaultPrint == null) {
//沒有默認打印機,查看當前餐廳有沒有打印機
......@@ -194,7 +194,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
PrinterDeviceBean defaultPrint = MyPrintUtils.configPrinterProperties(finalPrintCurrencyBean, printerDeviceBeans.get(position));
printByDevice(defaultPrint);
selectPrint = position;
SPUtils.put(mContext, "defaultPrint", printerDeviceBeans.get(position).getName());
SPUtils.put( "defaultPrint", printerDeviceBeans.get(position).getName());
dialog.dismiss();
});
}
......
......@@ -69,16 +69,14 @@ public class MealStandModel extends BaseModel implements MealStandContract.Model
/**
* 過濾食品條件
* 1、過濾餐種
* @param foodList
* @param summary
* @return
*/
public List<Food> foodConditionFilter(List<Food> foodList, int summary) {
String strSummary = String.valueOf(summary);
String strSummary = String.valueOf(summary);
List<Food> newFoodList = new ArrayList<>();
for (int i = foodList.size() - 1; i >= 0; i--) {
Food food = foodList.get(i);
for (Food food : foodList) {
String foodSummary = food.getFoodSummary();
if (!TextUtils.isEmpty(foodSummary)) {
String[] summarys = foodSummary.split(",");
......@@ -94,16 +92,14 @@ public class MealStandModel extends BaseModel implements MealStandContract.Model
/**
* 過濾套餐食品條件
* 1、過濾餐種
* @param comboItemList
* @param summary
* @return
*/
public List<ComboItem> comboConditionFilter(List<ComboItem> comboItemList, int summary) {
String strSummary = String.valueOf(summary);
String strSummary = String.valueOf(summary);
List<ComboItem> newComboItemList = new ArrayList<>();
for (int i = comboItemList.size() - 1; i >= 0; i--) {
ComboItem comboItem = comboItemList.get(i);
for (ComboItem comboItem : comboItemList) {
String foodSummary = comboItem.getFoodSummary();
if (!TextUtils.isEmpty(foodSummary)) {
String[] summarys = foodSummary.split(",");
......
......@@ -20,6 +20,7 @@ import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.mvp.BaseModel;
import java.util.Date;
import java.util.List;
import javax.inject.Inject;
......@@ -64,8 +65,9 @@ public class OrderContentModel extends BaseModel implements OrderContentContract
DoshokuOrder doshokuOrder = DoshokuOrder.getInstance();
if (doshokuOrder == null) {
doshokuOrder.setOpenTableInfo(new TableBean.DataBean());
String dateTime = new Date(createTime).toString();
doshokuOrder.getOrderPlaced().setCreateTime(dateTime);
}
doshokuOrder.getOpenTableInfo().setCreateTime(TimeUtils.getTime(createTime, TimeUtils.DEFAULT_DATE_FORMAT));
}
@Override
......
......@@ -11,6 +11,7 @@ import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.GridView;
import com.gingersoft.gsa.cloud.base.order.discount.MultyDiscount;
import com.gingersoft.gsa.cloud.base.order.discount.NomalDiscount;
import com.gingersoft.gsa.cloud.base.order.order.BaseOrder;
import com.gingersoft.gsa.cloud.database.bean.Discount;
......@@ -20,6 +21,7 @@ import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.KeyboardDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog;
import com.gingersoft.gsa.cloud.ui.widget.keyboard.VirtualKeyboardView;
import com.jess.arms.utils.ArmsUtils;
import com.jess.arms.utils.DeviceUtils;
import java.lang.reflect.Method;
......@@ -40,42 +42,56 @@ public class BillDiscountAction implements Strategy<Discount> {
private Activity mContext;
/**
* 賬單折扣列表
*/
private List<NomalDiscount> mNomalDiscountList;
private OnCallBackListener mListener;
public BillDiscountAction(Activity context, List<NomalDiscount> nomalDiscountList, OnCallBackListener listener) {
public BillDiscountAction(Activity context, OnCallBackListener listener) {
this.mContext = context;
this.mNomalDiscountList = nomalDiscountList;
this.mListener = listener;
}
public void setNomalDiscountList(List<NomalDiscount> nomalDiscountList) {
this.mNomalDiscountList = nomalDiscountList;
}
@Override
public void action(Discount discount) {
if (mListener == null) {
return;
}
if (isOnlyOnce(discount)) {
//此折扣只一次
ArmsUtils.makeText(mContext, "此折扣只一次");
return;
}
boolean hasExclusive = hasExclusiveDiscount() || discount.getExclusive() == 1;
boolean hasExclusive = hasExclusiveDiscount();
if (hasExclusive) {
//有獨佔折扣
exclusiveDiscount(discount);
return;
} else {
if (discount.getExclusive() == 1 && mNomalDiscountList.size()>0) {
//獨佔折扣
exclusiveDiscount(discount);
return;
}
}
switch (discount.getType()) {
case Discount.DISCOUNT_TYPE_AMOUNT:
case Discount.DISCOUNT_TYPE_RATE:
break;
case Discount.DISCOUNT_TYPE_CUSTOM_AMOUNT:
showCustomAmountDialog(discount);
showCustomAmountDialog(discount, false);
break;
case Discount.DISCOUNT_TYPE_KEYBOARD:
showKeyboardDialog(discount);
break;
case Discount.DISCOUNT_TYPE_FREE_SERVICE_CHARGE:
showKeyboardDialog(discount, false);
break;
// case Discount.DISCOUNT_TYPE_FREE_SERVICE_CHARGE:
//
// break;
default:
mListener.preformAddDiscount(discount);
break;
}
}
......@@ -83,7 +99,6 @@ public class BillDiscountAction implements Strategy<Discount> {
private void exclusiveDiscount(Discount discount) {
if (mListener != null) {
showExclusiveTipDialog(discount);
}
}
......@@ -122,14 +137,18 @@ public class BillDiscountAction implements Strategy<Discount> {
/**
* 顯示自定義金額彈窗
*
* @param discount
*/
private void showCustomAmountDialog(Discount 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() {
@Override
public void inputText(String text) {
discount.setAmount(Double.parseDouble(text));
if (mListener != null) {
if (exclusiveReplace) {
mListener.exclusiveRemoveOthers(mNomalDiscountList);
}
mListener.preformAddDiscount(discount);
}
}
......@@ -138,9 +157,10 @@ public class BillDiscountAction implements Strategy<Discount> {
/**
* 顯示子弟你金額彈窗 鍵盤
*
* @param discount
*/
private void showKeyboardDialog(Discount discount) {
private void showKeyboardDialog(Discount discount, boolean exclusiveReplace) {
new KeyboardDialog(mContext)
.build()
.setOnCallBackListener(new KeyboardDialog.OnCallBackListener() {
......@@ -148,6 +168,9 @@ public class BillDiscountAction implements Strategy<Discount> {
public void onSure(String number) {
discount.setAmount(Double.parseDouble(number));
if (mListener != null) {
if (exclusiveReplace) {
mListener.exclusiveRemoveOthers(mNomalDiscountList);
}
mListener.preformAddDiscount(discount);
}
}
......@@ -157,21 +180,35 @@ public class BillDiscountAction implements Strategy<Discount> {
/**
* 提示有獨佔折扣是否替換
*
* @param discount
*/
private void showExclusiveTipDialog(Discount discount) {
CommonTipDialog.showDoubtDialog2(mContext, "有獨佔折扣,是否替換", new CommonTipDialog.OnCallbackListener() {
@Override
public void onSure() {
mListener.exclusiveRemoveOther();
mListener.preformAddDiscount(discount);
switch (discount.getType()) {
case Discount.DISCOUNT_TYPE_CUSTOM_AMOUNT:
showCustomAmountDialog(discount, true);
break;
case Discount.DISCOUNT_TYPE_KEYBOARD:
showKeyboardDialog(discount, true);
break;
// case Discount.DISCOUNT_TYPE_FREE_SERVICE_CHARGE:
//
// break;
default:
mListener.exclusiveRemoveOthers(mNomalDiscountList);
mListener.preformAddDiscount(discount);
break;
}
}
});
}
public interface OnCallBackListener {
void exclusiveRemoveOther();
void exclusiveRemoveOthers(List<NomalDiscount> nomalDiscountList);
void preformAddDiscount(Discount discount);
}
......
package com.gingersoft.gsa.cloud.table.mvp.model.discount;
import com.gingersoft.gsa.cloud.base.order.discount.MultyDiscount;
import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.gingersoft.gsa.cloud.patterns.Strategy;
/**
* @author : bin
* @create date: 2020-10-27
* @update date: 2020-10-27
* @description:
*/
public interface DiscountAction{
}
......@@ -2,15 +2,14 @@ package com.gingersoft.gsa.cloud.table.mvp.model.discount;
import android.app.Activity;
import android.text.InputType;
import com.gingersoft.gsa.cloud.base.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.base.order.discount.NomalDiscount;
import com.gingersoft.gsa.cloud.base.order.discount.MultyDiscount;
import com.gingersoft.gsa.cloud.base.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.gingersoft.gsa.cloud.patterns.Strategy;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.KeyboardDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog;
import java.util.ArrayList;
import com.jess.arms.utils.ArmsUtils;
import java.util.List;
/**
......@@ -23,13 +22,18 @@ public class MealDiscountAction implements Strategy<Discount> {
private Activity mContext;
/**
* 選中的食品或套餐組
*/
private List<OrderDetail> mSelectMixOrderMealList;
private List<MultyDiscount> mMultyDiscountList;
private MealDiscountAction.OnCallBackListener mListener;
public MealDiscountAction(Activity context, MealDiscountAction.OnCallBackListener listener) {
public MealDiscountAction(Activity context, List<MultyDiscount> multyDiscountList, MealDiscountAction.OnCallBackListener listener) {
this.mContext = context;
this.mMultyDiscountList = multyDiscountList;
this.mListener = listener;
}
......@@ -39,33 +43,45 @@ public class MealDiscountAction implements Strategy<Discount> {
@Override
public void action(Discount discount) {
if (mSelectMixOrderMealList == null || mSelectMixOrderMealList.size() == 0) {
if (mListener == null || mSelectMixOrderMealList == null || mSelectMixOrderMealList.size() == 0) {
return;
}
double mixTotalAomout = getMixTotalAomout(mSelectMixOrderMealList);
if (discount.getMinBillAmount() > mixTotalAomout) {
//最小賬單金額
ArmsUtils.makeText(mContext, "小於最小賬單金額$" + discount.getMinBillAmount() + " 無法使用此折扣");
return;
}
if (isOnlyOnce(discount)) {
//此折扣只一次
ArmsUtils.makeText(mContext, "此折扣只一次");
return;
}
boolean hasExclusive = hasExclusiveDiscount() || discount.getExclusive() == 1;
boolean hasExclusive = hasExclusiveDiscount();
if (hasExclusive) {
//有獨佔折扣
exclusiveDiscount(discount);
return;
} else {
int discountSize = getDiscountSize();
if (discount.getExclusive() == 1 && discountSize > 0) {
//獨佔折扣
exclusiveDiscount(discount);
return;
}
}
switch (discount.getType()) {
case Discount.DISCOUNT_TYPE_AMOUNT:
case Discount.DISCOUNT_TYPE_RATE:
break;
case Discount.DISCOUNT_TYPE_CUSTOM_AMOUNT:
showCustomAmountDialog(discount);
showCustomAmountDialog(discount, false);
break;
case Discount.DISCOUNT_TYPE_KEYBOARD:
showKeyboardDialog(discount);
break;
case Discount.DISCOUNT_TYPE_FREE_SERVICE_CHARGE:
showKeyboardDialog(discount,false);
break;
// case Discount.DISCOUNT_TYPE_FREE_SERVICE_CHARGE:
//
// break;
default:
mListener.preformAddDiscount(discount);
break;
}
}
......@@ -73,7 +89,6 @@ public class MealDiscountAction implements Strategy<Discount> {
private void exclusiveDiscount(Discount discount) {
if (mListener != null) {
showExclusiveTipDialog(discount);
}
}
......@@ -84,8 +99,8 @@ public class MealDiscountAction implements Strategy<Discount> {
* @return
*/
private boolean hasExclusiveDiscount() {
for (NomalDiscount nomalDiscount : mNomalDiscountList) {
if (nomalDiscount.getDiscount().getExclusive() == 1) {
for (OrderDetail orderMealItem : mSelectMixOrderMealList) {
if (orderMealItem.getDiscount() != null && orderMealItem.getDiscount().getExclusive() == 1) {
return true;
}
}
......@@ -100,9 +115,9 @@ public class MealDiscountAction implements Strategy<Discount> {
*/
private boolean isOnlyOnce(Discount discount) {
if (discount.getOnlyOnce() == 1) {
for (NomalDiscount nomalDiscount : mNomalDiscountList) {
Discount item = nomalDiscount.getDiscount();
if (discount.getId().longValue() == item.getId().longValue()) {
for (OrderDetail orderMealItem : mSelectMixOrderMealList) {
Discount item = orderMealItem.getDiscount();
if (item != null && discount.getId().longValue() == item.getId().longValue()) {
return true;
}
}
......@@ -116,12 +131,15 @@ public class MealDiscountAction implements Strategy<Discount> {
*
* @param discount
*/
private void showCustomAmountDialog(Discount 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() {
@Override
public void inputText(String text) {
discount.setAmount(Double.parseDouble(text));
if (mListener != null) {
if (exclusiveReplace) {
mListener.exclusiveRemoveOthers();
}
mListener.preformAddDiscount(discount);
}
}
......@@ -133,7 +151,7 @@ public class MealDiscountAction implements Strategy<Discount> {
*
* @param discount
*/
private void showKeyboardDialog(Discount discount) {
private void showKeyboardDialog(Discount discount, boolean exclusiveReplace) {
new KeyboardDialog(mContext)
.build()
.setOnCallBackListener(new KeyboardDialog.OnCallBackListener() {
......@@ -141,6 +159,9 @@ public class MealDiscountAction implements Strategy<Discount> {
public void onSure(String number) {
discount.setAmount(Double.parseDouble(number));
if (mListener != null) {
if (exclusiveReplace) {
mListener.exclusiveRemoveOthers();
}
mListener.preformAddDiscount(discount);
}
}
......@@ -157,16 +178,58 @@ public class MealDiscountAction implements Strategy<Discount> {
CommonTipDialog.showDoubtDialog2(mContext, "有獨佔折扣,是否替換", new CommonTipDialog.OnCallbackListener() {
@Override
public void onSure() {
mListener.exclusiveRemoveOther();
mListener.preformAddDiscount(discount);
switch (discount.getType()) {
case Discount.DISCOUNT_TYPE_CUSTOM_AMOUNT:
showCustomAmountDialog(discount, true);
break;
case Discount.DISCOUNT_TYPE_KEYBOARD:
showKeyboardDialog(discount, true);
break;
// case Discount.DISCOUNT_TYPE_FREE_SERVICE_CHARGE:
//
// break;
default:
mListener.exclusiveRemoveOthers();
mListener.preformAddDiscount(discount);
break;
}
}
});
}
/**
* 獲取折扣數量
*
* @return
*/
private int getDiscountSize() {
int size = 0;
for (OrderDetail orderMealItem : mSelectMixOrderMealList) {
if (orderMealItem.getDiscount() != null) {
size++;
}
}
return size;
}
/**
* 獲取套餐總金額
*
* @param mixOrderMealList
* @return
*/
private double getMixTotalAomout(List<OrderDetail> mixOrderMealList) {
double mixTotalAomout = 0.0;
for (OrderDetail orderDetail : mixOrderMealList) {
mixTotalAomout = MoneyUtil.sum(mixTotalAomout, orderDetail.getPrice());
}
return mixTotalAomout;
}
public interface OnCallBackListener {
void exclusiveRemoveOther();
void exclusiveRemoveOthers();
void preformAddDiscount(Discount discount);
}
......
......@@ -16,6 +16,7 @@ import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.utils.DeviceUtils;
import com.xuexiang.rxutil2.RxBindingUtils;
import java.util.ArrayList;
import java.util.List;
......
package com.gingersoft.gsa.cloud.table.mvp.presenter;
import android.app.Application;
import android.text.InputType;
import android.text.TextUtils;
import android.util.SparseArray;
import android.view.View;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.aspectj.XClickUtil;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.base.common.bean.MemberInfo;
import com.gingersoft.gsa.cloud.base.order.bean.DeleteOrderRequest;
import com.gingersoft.gsa.cloud.base.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.base.order.discount.MultyDiscount;
import com.gingersoft.gsa.cloud.base.order.order.BaseOrder;
import com.gingersoft.gsa.cloud.base.utils.JsonUtils;
import com.gingersoft.gsa.cloud.base.utils.LanguageUtils;
......@@ -26,7 +23,6 @@ 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;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.CreateOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.model.discount.BillDiscountAction;
import com.gingersoft.gsa.cloud.table.mvp.model.discount.MealDiscountAction;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ComboAdapter;
......@@ -55,11 +51,13 @@ import com.jess.arms.integration.AppManager;
import com.jess.arms.utils.RxLifecycleUtils;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
import com.xuexiang.rxutil2.RxBindingUtils;
import org.simple.eventbus.Subscriber;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import javax.inject.Inject;
......@@ -70,6 +68,7 @@ import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
......@@ -148,11 +147,21 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
super(model, rootView);
this.IActivity = (MealStandActivity) rootView;
mMealDiscountAction = new MealDiscountAction(IActivity, new MealDiscountAction.OnCallBackListener() {
mMealDiscountAction = new MealDiscountAction(IActivity, mShoppingCart.getMultyDiscountList(), new MealDiscountAction.OnCallBackListener() {
@Override
public void exclusiveRemoveOther() {
public void exclusiveRemoveOthers() {
//獨佔折扣刪除其他折扣
int start_position = mSelectMealAdapter.getSelect_full_start_position();
int end_position = mSelectMealAdapter.getSelect_full_end_position();
for (int i = 0; i < mOrderMealList.size(); i++) {
if (start_position <= i && i <= end_position) {
OrderDetail orderMealItem = mOrderMealList.get(i);
if (orderMealItem.getDiscount() != null) {
mOrderMealList.remove(i);
}
}
}
}
@Override
......@@ -162,32 +171,24 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
});
}
/**
* 獲取當前選中的套餐食品組
*
* @return
*/
private List<OrderDetail> getSelectMixOrderMealList() {
List<OrderDetail> mixOrderMealList = new ArrayList<>();
for (int i = mSelectMealAdapter.getSelect_full_start_position();
mSelectMealAdapter.getSelect_full_end_position() < mOrderMealList.size(); i++) {
mixOrderMealList.add(mOrderMealList.get(i));
int start_position = mSelectMealAdapter.getSelect_full_start_position();
int end_position = mSelectMealAdapter.getSelect_full_end_position();
for (int i = 0; i < mOrderMealList.size(); i++) {
if (start_position <= i && i <= end_position) {
mixOrderMealList.add(mOrderMealList.get(i));
}
}
return mixOrderMealList;
}
/**
* 獲取套餐總金額
* @param mixOrderMealList
* @return
*/
private double getMixTotalAomout(List<OrderDetail> mixOrderMealList){
double mixTotalAomout = 0.0;
for (OrderDetail orderDetail: mixOrderMealList) {
mixTotalAomout = MoneyUtil.sum(mixTotalAomout,orderDetail.getPrice());
}
return mixTotalAomout;
}
@Override
public void onDestroy() {
super.onDestroy();
......@@ -383,40 +384,22 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
@Override
public void onItemClick(View view, int viewType, Object data, int position) {
Discount discountBean = (Discount) data;
mRootView.recordOperat(true);
if (XClickUtil.isFastDoubleClick(view, 1000)) {
return;
}
Discount discountBean = (Discount) data;
if (!discountConditionFilter(discountBean)) {
return;
}
if (cutOutDiscount() == -100) {
return;
}
// if (discountBean.getType() == Discount.DISCOUNT_TYPE_CUSTOM_AMOUNT) {
// showCustomAmountDialog(discountBean);
// } else {
// addDiscountItem(discountBean);
// }
mMealDiscountAction.setSelectMixOrderMealList();
// if (cutOutDiscount() == -100) {
// return;
// }
mMealDiscountAction.setSelectMixOrderMealList(getSelectMixOrderMealList());
mMealDiscountAction.action(discountBean);
}
});
}
private void showCustomAmountDialog(Discount discountBean) {
CommonTipDialog.showEditDialog(IActivity, discountBean.getRemark(), "請輸入折扣金額", InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL, new CommonTipDialog.OnEditTextListener() {
@Override
public void inputText(String text) {
discountBean.setType(Discount.DISCOUNT_TYPE_AMOUNT);
discountBean.setAmount(Double.parseDouble(text));
addDiscountItem(discountBean);
}
});
}
private void addFoodItemBefore(OrderDetail datasBean) {
int addPosition = addFoodItem(datasBean);
......@@ -954,7 +937,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
if (TextUtils.isEmpty(ids)) {
return;
}
List<OrderDetail> oldOrders = getSelectedOldFoodAndDicount();
List<OrderDetail> oldOrders = getSelectedOldFoodAndDiscount();
for (OrderDetail item : oldOrders) {
//保存取消前的數量
item.setModifyBeforeNumber(item.getNumber());
......
......@@ -8,7 +8,6 @@ import android.util.Log;
import android.view.View;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.aspectj.XClickUtil;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.base.common.bean.MemberInfo;
......@@ -54,23 +53,27 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.widget.DiscountDialog;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.SplitTableDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.BaseRetryDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog;
import com.jakewharton.rxbinding2.view.RxView;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader;
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 java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.concurrent.TimeUnit;
import javax.inject.Inject;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
......@@ -131,11 +134,11 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
//转移食品可多选
mSelectMealAdapter.setSelectedMode(SelectMealAdapter.MULTIPLE_SELECTED);
}
mNomalDiscountAction = new BillDiscountAction(IActivity, mShoppingCart.getNomalDiscoutByMultyDiscountList(), new BillDiscountAction.OnCallBackListener() {
mNomalDiscountAction = new BillDiscountAction(IActivity, new BillDiscountAction.OnCallBackListener() {
@Override
public void exclusiveRemoveOther() {
mShoppingCart.delAllMultyDiscount();
public void exclusiveRemoveOthers(List<NomalDiscount> nomalDiscountList) {
mShoppingCart.delAllNomalDiscountList(nomalDiscountList);
}
@Override
......@@ -172,10 +175,9 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
mOrderTopFunctionAdapter.setOnClickListener(new OrderTopFunctionAdapter.OnClickListener() {
@Override
public void onItemClick(View v, Function function) {
mRootView.recordOperat(true);
if (XClickUtil.isFastDoubleClick(v, 1000)) {
return;
}
switch (function.getResName()) {
case "送單":
sendOrder(false, null);
......@@ -764,10 +766,11 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
@Override
public void onItemClick(Discount item, int position) {
if (item.getMinBillAmount() > mShoppingCart.getWholeAmount()) {
//小於最小賬單金額 直接提示
mRootView.showMessage("食品總計金額小於" + cashStr + item.getMinBillAmount());
//小於最小賬單金額
mRootView.showMessage("小於最小賬單金額" + cashStr + item.getMinBillAmount() + " 無法使用此折扣");
return;
}
mNomalDiscountAction.setNomalDiscountList(mShoppingCart.getNomalDiscoutByMultyDiscountList());
mNomalDiscountAction.action(item);
}
......
......@@ -5,6 +5,7 @@ import android.content.Context;
import android.os.CountDownTimer;
import android.text.TextUtils;
import android.view.View;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
......@@ -29,6 +30,7 @@ import com.gingersoft.gsa.cloud.table.mvp.model.table.action.TableAction;
import com.gingersoft.gsa.cloud.table.mvp.model.utils.OrderAssemblyUtil;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BottomFunctionAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.FlowLayout;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.SplitTableDialog;
import com.gingersoft.gsa.cloud.constans.GoldConstants;
import com.gingersoft.gsa.cloud.constans.PrintConstans;
......@@ -50,6 +52,7 @@ import com.jess.arms.utils.RxLifecycleUtils;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import java.util.ArrayList;
import java.util.Collections;
......@@ -325,7 +328,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
if (respose.isSuccess()) {
DoshokuOrder doshokuOrder = DoshokuOrder.getInstance();
TableBean.DataBean tableInfo = doshokuOrder.getOpenTableInfo();
tableInfo.setPerson(0);
//設置當前開台數據1584427984728 1584428017196 1584428086282
......@@ -437,7 +440,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
//设置会员信息
doshokuOrder.setMemberInfo(orderBean.getMemberInfo());
doshokuOrder.setMemberUpdateStatus(true + "-" + true);
}else {
} else {
doshokuOrder.setMemberUpdateStatus(false + "-" + false);
}
} else {
......
......@@ -24,7 +24,6 @@ import android.widget.ScrollView;
import android.widget.TextView;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.aspectj.XClickUtil;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.common.bean.MemberInfo;
import com.gingersoft.gsa.cloud.base.order.bean.OrderBean;
......@@ -63,13 +62,13 @@ import com.gingersoft.gsa.cloud.ui.view.RecyclerViewNoBugLinearLayoutManager;
import com.gingersoft.gsa.cloud.ui.view.SearchKeyBoardView;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.gingersoft.gsa.cloud.zxing.MipcaCaptureActivity;
import com.jakewharton.rxbinding4.view.RxView;
import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.alpha.QMUIAlphaTextView;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.xuexiang.rxutil2.RxBindingUtils;
import org.simple.eventbus.EventBus;
......@@ -91,6 +90,7 @@ import androidx.viewpager.widget.ViewPager;
import butterknife.BindView;
import butterknife.OnClick;
import butterknife.OnLongClick;
import io.reactivex.functions.Consumer;
import static com.jess.arms.utils.Preconditions.checkNotNull;
......@@ -551,7 +551,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
@Override
public void setPluMode() {
isPluMode = (boolean) SPUtils.get(this, MealConstant.EXIT_IS_PLU_MODE, false);
isPluMode = (boolean) SPUtils.get(MealConstant.EXIT_IS_PLU_MODE, false);
if (isPluMode) {
showViewModeVisibility(MealConstant.ViewMode_keys);
btn_fid.setBackgroundColor(ArmsUtils.getColor(this, R.color.theme_hint_color));
......@@ -563,7 +563,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
@Override
public void resetPluMode() {
isPluMode = false;
SPUtils.put(this, MealConstant.EXIT_IS_PLU_MODE, false);
SPUtils.put(MealConstant.EXIT_IS_PLU_MODE, false);
btn_fid.setBackground(ArmsUtils.getDrawablebyResource(this, R.drawable.ui_selector_item_background));
}
......@@ -702,10 +702,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
recordOperat(true);
if (XClickUtil.isFastDoubleClick(v, 200)) {
return;
}
//防抖處理
int id = v.getId();
if (id == R.id.btn_numberman) {
if (BaseOrder.isCurrentOrderType(FoodSummaryConstans.TAKEAWAY_TYPE)) {
......@@ -716,24 +713,29 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
//搜索
if (mCurrentViewMode == MealConstant.ViewMode_keys) {
showViewModeVisibility(MealConstant.food_group_ViewMode, MealConstant.food_ViewMode);
SPUtils.put(this, MealConstant.EXIT_IS_PLU_MODE, false);
SPUtils.put(MealConstant.EXIT_IS_PLU_MODE, false);
} else {
showViewModeVisibility(MealConstant.ViewMode_keys);
SPUtils.put(this, MealConstant.EXIT_IS_PLU_MODE, true);
SPUtils.put(MealConstant.EXIT_IS_PLU_MODE, true);
}
setPluMode();
} else if (id == R.id.btn_meal_delete) {
if (mPresenter.getSelectMealAdapter().getSelectedMode() == SelectMealAdapter.MULTIPLE_SELECTED)
if (mPresenter.getSelectMealAdapter().getSelectedMode() == SelectMealAdapter.MULTIPLE_SELECTED) {
return;
}
mPresenter.deleteFoodItem(1);
showViewModeVisibility(MealConstant.food_group_ViewMode, MealConstant.food_ViewMode);
SPUtils.put(this, MealConstant.EXIT_IS_PLU_MODE, false);
SPUtils.put(MealConstant.EXIT_IS_PLU_MODE, false);
setPluMode();
} else if (id == R.id.btn_meal_modify_restore) {
mPresenter.restoreDeleteFood();
showBtnMealModifyRestoreVisibility(false);
} else if (id == R.id.btn_send_order) {
// RxBindingUtils.setViewClicks(v)
// .subscribe(new Consumer<Object>() {
// @Override
// public void accept(Object o) throws Exception {
if (BaseOrder.isCurrentOrderType(FoodSummaryConstans.TAKEAWAY_TYPE)) {
CC.obtainBuilder("ComponentDeliveryPick")
.setActionName("SendOrder")
......@@ -742,9 +744,11 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
return;
}
mPresenter.sendOrder(false, null);
// }
// });
} else if (id == R.id.fl_order_content) {
//如果打印成功會回調
Intent intent = new Intent(this, OrderContentActivity.class);
Intent intent = new Intent(mContext, OrderContentActivity.class);
startActivityForResult(intent, ORDER_CONTENT_CODE);
} else if (id == R.id.tv_no_save_return) {
returnBeforeActivity(true);
......@@ -792,7 +796,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
mPresenter.changeNumber(i);
break;
case 99:
ChooseNumberDialog mChooseNumberDialog = new ChooseNumberDialog(this);
ChooseNumberDialog mChooseNumberDialog = new ChooseNumberDialog(mContext);
mChooseNumberDialog.builder();
mChooseNumberDialog.setOnClickListener(new ChooseNumberDialog.OnClickListener() {
......@@ -819,6 +823,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
} else if (id == R.id.iv_fine_back) {
showViewModeVisibility(MealConstant.combo_ViewMode);
}
}
......@@ -829,7 +834,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
}
public void returnBeforeActivity(boolean initTable) {
SPUtils.put(this, MealConstant.EXIT_IS_PLU_MODE, isPluMode);
SPUtils.put(MealConstant.EXIT_IS_PLU_MODE, isPluMode);
if (BaseOrder.isCurrentOrderType(FoodSummaryConstans.RESTAURANT_MODE) && initTable && !DoshokuOrder.getInstance().isModifyOrder()) {
TableBean.DataBean dataBean = DoshokuOrder.getInstance().getOpenTableInfo();
//通知更新餐台状态
......
......@@ -47,6 +47,7 @@ import com.qmuiteam.qmui.widget.tab.QMUITabBuilder;
import com.qmuiteam.qmui.widget.tab.QMUITabIndicator;
import com.qmuiteam.qmui.widget.tab.QMUITabSegment;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.xuexiang.rxutil2.RxBindingUtils;
import org.simple.eventbus.Subscriber;
......
......@@ -9,7 +9,6 @@ import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.aspectj.XClickUtil;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.table.R;
......@@ -20,12 +19,15 @@ 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 com.xuexiang.rxutil2.RxBindingUtils;
import java.util.ArrayList;
import java.util.List;
import androidx.recyclerview.widget.GridLayoutManager;
import butterknife.BindView;
import io.reactivex.functions.Consumer;
/**
* 作者:ELEGANT_BIN
......@@ -64,9 +66,6 @@ public class FineItemOneAdapter extends DefaultAdapter<Modifier> {
int modColumn = GsaCloudApplication.uiStyleConfiguration.getModColumnValue();
this.mColwidth = (int) ((DeviceUtils.getScreenWidth(context) / modColumn));
// Db_Color dc = new Db_Color(context);
// mColorList = dc.query("");
// dc.closeDb();
}
@Override
......@@ -116,22 +115,9 @@ public class FineItemOneAdapter extends DefaultAdapter<Modifier> {
@Override
public void onViewClick(View view, int position) {
if (XClickUtil.isFastDoubleClick(view, 200)) {
return;
}
if (mOnItemClickListener != null) {
// //设置当前选中item颜色
// datasBean.setSelected(true);
// tv_food_name.setBackgroundColor(mContext.getResources().getColor(R.color.orange_500));
//
// if (currentSelectPosition < mInfos.size()) {
// //重置上次选中item的颜色
// mInfos.get(currentSelectPosition).setSelected(false);
// notifyItemChanged(currentSelectPosition, 1);
// }
//记录当前操作的position
currentSelectPosition = position;
mOnItemClickListener.onItemClick(datasBean, position);
}
}
......@@ -247,7 +233,7 @@ public class FineItemOneAdapter extends DefaultAdapter<Modifier> {
if (TextUtils.isEmpty(qty)) {
tv_soldout.setVisibility(View.INVISIBLE);
} else {
if (qty.equalsIgnoreCase("售罄") || qty.equalsIgnoreCase("暫停") ) {
if (qty.equalsIgnoreCase("售罄") || qty.equalsIgnoreCase("暫停")) {
blv_soldout.setLableText(qty);
blv_soldout.setVisibility(View.VISIBLE);
} else {
......
......@@ -9,7 +9,6 @@ import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.aspectj.XClickUtil;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.table.R;
......@@ -20,12 +19,15 @@ 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 com.xuexiang.rxutil2.RxBindingUtils;
import java.util.ArrayList;
import java.util.List;
import androidx.recyclerview.widget.GridLayoutManager;
import butterknife.BindView;
import io.reactivex.functions.Consumer;
/**
* 作者:ELEGANT_BIN
......@@ -42,7 +44,6 @@ public class FineItemTwoAdapter extends DefaultAdapter<Modifier> {
//所有沽清类型
private List<SoldoutCtrFood> mCurrentSlodoutFoodList_Full = new ArrayList<>();
// private List<Color.DatasBean> mColorList;
private int mOrderNumberShowSize;
private int mOrderNumberFontSize;
private int mModFontSize;
......@@ -65,9 +66,6 @@ public class FineItemTwoAdapter extends DefaultAdapter<Modifier> {
this.mColwidth = (int) ((DeviceUtils.getScreenWidth(context) / modColumn));
this.mColHeight = GsaCloudApplication.uiStyleConfiguration.getModBtnHeightValue();
// Db_Color dc = new Db_Color(context);
// mColorList = dc.query("");
// dc.closeDb();
}
@Override
......@@ -120,27 +118,12 @@ public class FineItemTwoAdapter extends DefaultAdapter<Modifier> {
@Override
public void onClick(View v) {
if(XClickUtil.isFastDoubleClick(v,200)){
return ;
}
if (mOnItemClickListener != null) {
if (datasBean.isReturn()) {
mOnItemClickListener.onClickReturnFineItemOne();
} else {
// //设置当前选中item颜色
// datasBean.setSelected(true);
// tv_food_name.setBackgroundColor(mContext.getResources().getColor(R.color.colorAccent));
//
// if (currentSelectPosition < mInfos.size()) {
// //重置上次选中item的颜色
// mInfos.get(currentSelectPosition).setSelected(false);
// notifyItemChanged(currentSelectPosition, 1);
// }
//记录当前操作的position
currentSelectPosition = position;
mOnItemClickListener.onItemClick(datasBean, position);
}
}
......@@ -173,7 +156,7 @@ public class FineItemTwoAdapter extends DefaultAdapter<Modifier> {
String desc = "";
// switch (GsaCloudApplication.androidSetting.getDataLanguage()) {
// case 1:
desc = datasBean.getModifierName();
desc = datasBean.getModifierName();
// break;
// case 2:
// desc = datasBean.getDesc2();
......@@ -227,13 +210,13 @@ public class FineItemTwoAdapter extends DefaultAdapter<Modifier> {
// }
// }
// } else {
//后台没有设置颜色当前选中高亮色,没有选中默认使用绿色
//后台没有设置颜色当前选中高亮色,没有选中默认使用绿色
// if (datasBean.isSelected()) {
// tv_food_name.setBackgroundColor(ArmsUtils.getColor(mContext, R.color.orange_500));
// tv_food_name.setTextColor(ArmsUtils.getColor(mContext, R.color.theme_white_color));
// } else {
tv_food_name.setBackgroundColor(ArmsUtils.getColor(mContext, R.color.Grass_green));
tv_food_name.setTextColor(ArmsUtils.getColor(mContext, R.color.theme_white_color));
tv_food_name.setBackgroundColor(ArmsUtils.getColor(mContext, R.color.Grass_green));
tv_food_name.setTextColor(ArmsUtils.getColor(mContext, R.color.theme_white_color));
// }
// }
}
......@@ -286,7 +269,7 @@ public class FineItemTwoAdapter extends DefaultAdapter<Modifier> {
if (TextUtils.isEmpty(qty)) {
tv_soldout.setVisibility(View.INVISIBLE);
} else {
if (qty.equalsIgnoreCase("售罄") || qty.equalsIgnoreCase("暫停") ) {
if (qty.equalsIgnoreCase("售罄") || qty.equalsIgnoreCase("暫停")) {
blv_soldout.setLableText(qty);
blv_soldout.setVisibility(View.VISIBLE);
} else {
......@@ -296,7 +279,8 @@ public class FineItemTwoAdapter extends DefaultAdapter<Modifier> {
}
}
}
//
//
public void setCurrentSlodoutFoodList_Full(List<SoldoutCtrFood> currentSlodoutFoodList_Full) {
this.mCurrentSlodoutFoodList_Full = currentSlodoutFoodList_Full;
}
......
......@@ -10,10 +10,12 @@ 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.xuexiang.rxutil2.RxBindingUtils;
import java.util.List;
import butterknife.BindView;
import io.reactivex.functions.Consumer;
/**
* 作者:ELEGANT_BIN
......@@ -77,8 +79,16 @@ public class OrderTopFunctionAdapter extends DefaultAdapter<Function> {
btn_name.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (onClickListener != null)
onClickListener.onItemClick(v, datasBean);
// RxBindingUtils.setViewClicks(v)
// .subscribe(new Consumer<Object>() {
//
// @Override
// public void accept(Object o) throws Exception {
if (onClickListener != null) {
onClickListener.onItemClick(v, datasBean);
}
// }
// });
}
});
btn_name.setOnLongClickListener(new View.OnLongClickListener() {
......
......@@ -23,11 +23,14 @@ import com.jess.arms.base.DefaultAdapter;
import com.qmuiteam.qmui.alpha.QMUIAlphaRelativeLayout;
import com.qmuiteam.qmui.layout.QMUIRelativeLayout;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.xuexiang.rxutil2.RxBindingUtils;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;
import butterknife.BindView;
import io.reactivex.functions.Consumer;
/**
* 作者:ELEGANT_BIN
......@@ -251,11 +254,15 @@ public class TableAdapter extends DefaultAdapter<TableBean.DataBean> {
@Override
public void onClick(View v) {
// if (XClickUtil.isFastDoubleClick(v, 1000)) {
// return;
// }
if (mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(item, position);
// RxBindingUtils.setViewClicks(v)
// .subscribe(new Consumer<Object>() {
//
// @Override
// public void accept(Object o) throws Exception {
mOnItemClickListener.onItemClick(item, position);
// }
// });
}
}
});
......
......@@ -20,6 +20,7 @@ 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 com.xuexiang.rxutil2.RxBindingUtils;
import java.util.List;
......
......@@ -111,15 +111,4 @@ public class DiscountAdapter extends DefaultAdapter<Discount> {
}
}
private OnItemClickListener mOnItemClickListener;
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
mOnItemClickListener = onItemClickListener;
}
public interface OnItemClickListener {
void onItemClick(Discount datasBean, int position);
}
}
......@@ -9,7 +9,6 @@ import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.aspectj.XClickUtil;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.table.R;
......@@ -19,11 +18,14 @@ 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 com.xuexiang.rxutil2.RxBindingUtils;
import java.util.List;
import androidx.recyclerview.widget.GridLayoutManager;
import butterknife.BindView;
import io.reactivex.functions.Consumer;
/**
* 作者:ELEGANT_BIN
......@@ -111,9 +113,6 @@ public class FoodAdapter extends DefaultAdapter<Food> {
setStatus(datasBean);
setOnItemClickListener((view, position1) -> {
if (XClickUtil.isFastDoubleClick(view, 200)) {
return;
}
resetSelect(position1, datasBean);
});
}
......@@ -188,7 +187,7 @@ public class FoodAdapter extends DefaultAdapter<Food> {
if (TextUtils.isEmpty(qty)) {
tv_soldout.setVisibility(View.INVISIBLE);
} else {
if (qty.equalsIgnoreCase("售罄") || qty.equalsIgnoreCase("暫停") ) {
if (qty.equalsIgnoreCase("售罄") || qty.equalsIgnoreCase("暫停")) {
blv_soldout.setLableText(qty);
blv_soldout.setVisibility(View.VISIBLE);
} else {
......
......@@ -8,7 +8,6 @@ import android.view.ViewGroup;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.aspectj.XClickUtil;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.table.R;
......@@ -18,10 +17,12 @@ 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 com.xuexiang.rxutil2.RxBindingUtils;
import java.util.List;
import butterknife.BindView;
import io.reactivex.functions.Consumer;
/**
* 作者:ELEGANT_BIN
......@@ -107,9 +108,6 @@ public class FoodGroupAdapter extends DefaultAdapter<Food> {
@Override
public void onViewClick(View view, int position) {
if (XClickUtil.isFastDoubleClick(view, 200)) {
return;
}
if (mOnItemClickListener != null) {
for (int i = 0; i < mInfos.size(); i++) {
mInfos.get(i).setSelected(false);
......
......@@ -7,6 +7,7 @@ import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.order.commodity.Commodity;
import com.gingersoft.gsa.cloud.base.order.commodity.OrderDetail;
......@@ -175,19 +176,31 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> {
}
private void setViewVisibility(OrderDetail datasBean) {
//是否参与折扣
if (datasBean.getAblediscount() == 0) {
tv_D.setVisibility(View.VISIBLE);
} else {
tv_D.setVisibility(View.INVISIBLE);
}
tv_D_1.setVisibility(View.INVISIBLE);
//是否参与服務費
if (datasBean.getScAble() == 0) {
tv_S.setVisibility(View.VISIBLE);
} else {
tv_S.setVisibility(View.INVISIBLE);
}
tv_S_1.setVisibility(View.INVISIBLE);
//是否可折上折
if (datasBean.getType() != OrderDetail.DISCOUNT_TYPE && datasBean.getAdditionalDiscount() == 0) {
tv_D_1.setVisibility(View.VISIBLE);
} else {
tv_D_1.setVisibility(View.INVISIBLE);
}
//使用此折扣是否可免服務費
if (datasBean.getType() != OrderDetail.DISCOUNT_TYPE && datasBean.getFreeServiceCharge() == 1) {
tv_S_1.setVisibility(View.VISIBLE);
} else {
tv_S_1.setVisibility(View.INVISIBLE);
}
tv_discount_money.setVisibility(View.INVISIBLE);
if (datasBean.isModify()) {
......@@ -196,20 +209,9 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> {
} else {
tv_modify_before_number.setVisibility(View.INVISIBLE);
}
//
// if (datasBean.getMix_DETAIL_ID() > 0) {
// tv_mix.setText(String.valueOf(datasBean.getMix_DETAIL_ID()));
// tv_mix.setVisibility(View.VISIBLE);
// } else {
// tv_mix.setVisibility(View.INVISIBLE);
// }
}
private void setMealCountLayout(OrderDetail datasBean, int position) {
// if (datasBean.isnew &&
// mOrderContentPresenter != null &&
// select_position == position &&
// datasBean.getDiscount_id() == 0) {
if (datasBean.isNew() &&
mOrderContentPresenter != null &&
datasBean.getSelected() != 0 &&
......
......@@ -28,7 +28,6 @@ public class FlowLayout extends ViewGroup {
public FlowLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
private void initMeasureParams() {
......@@ -68,8 +67,8 @@ public class FlowLayout extends ViewGroup {
for(int i = 0 ; i < 10000; i++){
testMethod();
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
initMeasureParams();
int selfWidth = MeasureSpec.getSize(widthMeasureSpec);
......
......@@ -35,11 +35,11 @@
android:inputType="number"
android:background="@drawable/table_shape_input_table_number_frame"
app:met_autoValidate="true"
app:met_baseColor="#0056d3"
app:met_baseColor="@color/theme_black"
app:met_clearButton="true"
app:met_floatingLabel="highlight"
app:met_iconPadding="2dp"
app:met_primaryColor="#982360"
app:met_primaryColor="@color/theme_color"
app:met_singleLineEllipsis="false" />
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
......
......@@ -13,7 +13,7 @@
android:paddingBottom="@dimen/dp_10"
android:paddingStart="@dimen/dp_20"
android:paddingEnd="@dimen/dp_20"
android:background="@drawable/shape_rect_fillet_white_5">
android:background="@drawable/ui_shape_rect_fillet_white_5">
<com.rengwuxian.materialedittext.MaterialEditText
android:id="@+id/ed_text"
......@@ -29,23 +29,23 @@
android:textSize="@dimen/sp_16"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:met_bottomTextSize="@dimen/sp_16"
app:met_floatingLabelTextSize="@dimen/sp_16"
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"
app:met_bottomTextSize="@dimen/sp_16"
app:met_floatingLabelTextSize="@dimen/sp_16"/>
app:met_singleLineEllipsis="false"/>
<View
android:layout_width="1px"
android:layout_height="@dimen/dp_30"
android:background="@color/theme_grey_color"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<!-- <View-->
<!-- android:layout_width="1px"-->
<!-- android:layout_height="@dimen/dp_30"-->
<!-- android:background="@color/theme_light_blue"-->
<!-- app:layout_constraintStart_toStartOf="parent"-->
<!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:layout_constraintBottom_toBottomOf="parent"/>-->
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/tv_sure"
......@@ -67,7 +67,7 @@
android:layout_height="@dimen/dp_40"
android:gravity="center"
android:textSize="@dimen/sp_14"
android:textColor="@color/theme_grey_color"
android:textColor="@color/theme_color"
android:text="取消"
android:layout_marginTop="@dimen/dp_10"
app:layout_constraintTop_toBottomOf="@+id/ed_text"
......
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