Commit 150babe0 by 宁斌

1、新增細項套餐表

2、下單實體由food 換成 orderDetail
3、食品表新增字段
parent 70fa4320
......@@ -9,24 +9,15 @@ project.dependencies.add('api', project(':cc')) //用最新版
//project.dependencies.add('api', "com.billy.android:cc:2.1.6") //用最新版
dependencies {
if (project.name != 'public-base' && project.name != 'arms' && project.name !='public-database') {
if (project.name != 'public-base' && project.name != 'arms') {
implementation project(':public-base')
}
if (project.name != 'public-database' && project.name != 'arms' && project.name != 'public-network') {
implementation project(':public-database')
}
if (project.name != 'public-network' && project.name != 'arms' && project.name != 'public-base' && project.name != 'public-database') {
implementation project(':public-network')
}
if (project.name != 'arms') {
implementation project(':arms')
}
//
if (project.name != 'public-database' && project.name != 'public-network' && project.name != 'arms') {
if (project.name != 'arms') {
implementation rootProject.ext.dependencies["qmui"]
if (project.name != 'public-ui' && project.name != 'public-base') {
implementation project(':public-ui')
}
}
implementation rootProject.ext.dependencies["retrofit-url-manager"]
annotationProcessor rootProject.ext.dependencies["butterknife-compiler"]
......@@ -34,6 +25,8 @@ dependencies {
implementation rootProject.ext.dependencies["multidex"]
implementation rootProject.ext.dependencies["constraintlayout"]
implementation 'org.jetbrains:annotations:15.0'
//日誌管理
implementation 'com.elvishew:xlog:1.6.1'
}
......
......@@ -26,14 +26,20 @@ android {
resourcePrefix "download_data"
buildTypes {
debug {
buildConfigField "boolean", "LOG_DEBUG", "true"
buildConfigField "boolean", "USE_CANARY", "true"
minifyEnabled false
proguardFiles 'proguard.cfg'
}
release {
postprocessing {
removeUnusedCode false
removeUnusedResources false
obfuscate false
optimizeCode false
proguardFiles 'proguard.cfg'
}
buildConfigField "boolean", "LOG_DEBUG", "false"
buildConfigField "boolean", "USE_CANARY", "false"
minifyEnabled false
shrinkResources false
zipAlignEnabled false
proguardFiles 'proguard.cfg'
}
}
......@@ -47,10 +53,10 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
// if (project.ext.runAsApp) {
annotationProcessor rootProject.ext.dependencies["dagger2-compiler"]
debugImplementation rootProject.ext.dependencies["canary-debug"]
releaseImplementation rootProject.ext.dependencies["canary-release"]
testImplementation rootProject.ext.dependencies["canary-release"]
annotationProcessor rootProject.ext.dependencies["dagger2-compiler"]
debugImplementation rootProject.ext.dependencies["canary-debug"]
releaseImplementation rootProject.ext.dependencies["canary-release"]
testImplementation rootProject.ext.dependencies["canary-release"]
// }else {
// compileOnly rootProject.ext.dependencies["dagger2-compiler"]
// compileOnly rootProject.ext.dependencies["canary-debug"]
......
[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0","enabled":true,"outputFile":"2020-02-08_GsAndroid_1.0_ʽ_.apk","fullName":"release","baseName":"release"},"path":"2020-02-08_GsAndroid_1.0_ʽ_.apk","properties":{}}]
\ No newline at end of file
......@@ -9,7 +9,7 @@
<!-- arms配置 -->
<meta-data
android:name="network.config.GlobalConfiguration"
android:name="com.gingersoft.gsa.cloud.globalconfig.GlobalConfiguration"
android:value="ConfigModule" />
</application>
</manifest>
......@@ -2,9 +2,13 @@ package com.gingersoft.gsa.cloud.download.mvp.contract;
import android.content.Context;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.base.common.bean.FoodBean;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.download.mvp.model.bean.FunctionBean;
import com.gingersoft.gsa.cloud.download.mvp.model.bean.ComboRespone;
import com.gingersoft.gsa.cloud.download.mvp.model.bean.FoodModifierRespone;
import com.gingersoft.gsa.cloud.download.mvp.model.bean.FunctionRespone;
import com.gingersoft.gsa.cloud.download.mvp.model.bean.ModifierRespone;
import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel;
......@@ -44,8 +48,14 @@ public interface DownloadContract {
List<Food> queryDB_FoodList(Context context, int parentId);
Observable<FunctionBean> downFunctionList();
Observable<FunctionRespone> downFunctionList();
Observable<FoodBean> downFoodList(String restaurantId);
Observable<FoodBean> downFoodList(int restaurantId);
Observable<ModifierRespone> downModifier(int restaurantId);
Observable<ComboRespone> downCombo(int restaurantId);
Observable<FoodModifierRespone> downFoodModifier(int restaurantId);
}
}
......@@ -3,10 +3,14 @@ package com.gingersoft.gsa.cloud.download.mvp.model;
import android.app.Application;
import android.content.Context;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.base.common.bean.FoodBean;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.utils.FoodDaoUtils;
import com.gingersoft.gsa.cloud.download.mvp.model.bean.FunctionBean;
import com.gingersoft.gsa.cloud.download.mvp.model.bean.ComboRespone;
import com.gingersoft.gsa.cloud.download.mvp.model.bean.FoodModifierRespone;
import com.gingersoft.gsa.cloud.download.mvp.model.bean.FunctionRespone;
import com.gingersoft.gsa.cloud.download.mvp.model.bean.ModifierRespone;
import com.gingersoft.gsa.cloud.download.mvp.model.service.DownloadService;
import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager;
......@@ -64,17 +68,34 @@ public class DownloadModel extends BaseModel implements DownloadContract.Model {
}
@Override
public Observable<FunctionBean> downFunctionList() {
public Observable<FunctionRespone> downFunctionList() {
return mRepositoryManager.obtainRetrofitService(DownloadService.class)
.downFunctionList();
}
@Override
public Observable<FoodBean> downFoodList(String restaurantId) {
public Observable<FoodBean> downFoodList(int restaurantId) {
return mRepositoryManager.obtainRetrofitService(DownloadService.class)
.downFoodList(restaurantId);
}
@Override
public Observable<ModifierRespone> downModifier(int restaurantId) {
return mRepositoryManager.obtainRetrofitService(DownloadService.class)
.downModifier(restaurantId);
}
@Override
public Observable<ComboRespone> downCombo(int restaurantId) {
return mRepositoryManager.obtainRetrofitService(DownloadService.class)
.downCombo(restaurantId);
}
@Override
public Observable<FoodModifierRespone> downFoodModifier(int restaurantId) {
return mRepositoryManager.obtainRetrofitService(DownloadService.class)
.downFoodModifier(restaurantId);
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.download.mvp.model.bean;
import com.gingersoft.gsa.cloud.database.bean.Combo;
import java.util.List;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-02-18
* 修订历史:2020-02-18
* 描述:
*/
public class ComboRespone {
private boolean success;
private String errMsg;
private long sysTime;
private List<Combo> data;
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public String getErrMsg() {
return errMsg;
}
public void setErrMsg(String errMsg) {
this.errMsg = errMsg;
}
public long getSysTime() {
return sysTime;
}
public void setSysTime(long sysTime) {
this.sysTime = sysTime;
}
public List<Combo> getData() {
return data;
}
public void setData(List<Combo> data) {
this.data = data;
}
}
package com.gingersoft.gsa.cloud.download.mvp.model.bean;
import com.gingersoft.gsa.cloud.database.bean.Combo;
import com.gingersoft.gsa.cloud.database.bean.FoodModifier;
import java.util.List;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-02-18
* 修订历史:2020-02-18
* 描述:
*/
public class FoodModifierRespone {
private boolean success;
private String errMsg;
private long sysTime;
private List<FoodModifier> data;
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public String getErrMsg() {
return errMsg;
}
public void setErrMsg(String errMsg) {
this.errMsg = errMsg;
}
public long getSysTime() {
return sysTime;
}
public void setSysTime(long sysTime) {
this.sysTime = sysTime;
}
public List<FoodModifier> getData() {
return data;
}
public void setData(List<FoodModifier> data) {
this.data = data;
}
}
......@@ -11,7 +11,7 @@ import java.util.List;
* 修订历史:2019-12-28
* 描述:
*/
public class FunctionBean {
public class FunctionRespone {
/**
......
package com.gingersoft.gsa.cloud.download.mvp.model.bean;
import com.gingersoft.gsa.cloud.database.bean.FoodModifier;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import java.util.List;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-02-18
* 修订历史:2020-02-18
* 描述:
*/
public class ModifierRespone {
private boolean success;
private String errMsg;
private long sysTime;
private List<Modifier> data;
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public String getErrMsg() {
return errMsg;
}
public void setErrMsg(String errMsg) {
this.errMsg = errMsg;
}
public long getSysTime() {
return sysTime;
}
public void setSysTime(long sysTime) {
this.sysTime = sysTime;
}
public List<Modifier> getData() {
return data;
}
public void setData(List<Modifier> data) {
this.data = data;
}
}
package com.gingersoft.gsa.cloud.download.mvp.model.service;
import com.gingersoft.gsa.cloud.base.Api;
import com.gingersoft.gsa.cloud.base.common.bean.FoodBean;
import com.gingersoft.gsa.cloud.download.mvp.model.bean.FunctionBean;
import com.gingersoft.gsa.cloud.download.mvp.model.bean.ComboRespone;
import com.gingersoft.gsa.cloud.download.mvp.model.bean.FoodModifierRespone;
import com.gingersoft.gsa.cloud.download.mvp.model.bean.FunctionRespone;
import com.gingersoft.gsa.cloud.download.mvp.model.bean.ModifierRespone;
import io.reactivex.Observable;
import me.jessyan.retrofiturlmanager.RetrofitUrlManager;
......@@ -14,8 +18,18 @@ import retrofit2.http.Query;
public interface DownloadService {
@GET("user/resource/list" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<FunctionBean> downFunctionList();
Observable<FunctionRespone> downFunctionList();
@GET(Api.food_list + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<FoodBean> downFoodList(@Query("restaurantId") int restaurantId);
@GET(Api.modifier + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<ModifierRespone> downModifier(@Query("restaurantId") int restaurantId);
@GET(Api.food_package_relation + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<ComboRespone> downCombo(@Query("restaurantId") int restaurantId);
@GET(Api.food_modifiere_relation + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<FoodModifierRespone> downFoodModifier(@Query("restaurantId") int restaurantId);
@GET("food/list" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<FoodBean> downFoodList(@Query("restaurantId") String restaurantId);
}
......@@ -3,14 +3,21 @@ package com.gingersoft.gsa.cloud.download.mvp.presenter;
import android.app.Application;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.base.Api;
import com.gingersoft.gsa.cloud.base.common.bean.FoodBean;
import com.gingersoft.gsa.cloud.base.utils.constans.HttpsConstans;
import com.gingersoft.gsa.cloud.database.bean.Combo;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.bean.FoodModifier;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.database.utils.ComboDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.FoodDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.FoodModifierDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.FunctionDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.ModifierDaoUtils;
import com.gingersoft.gsa.cloud.download.mvp.model.bean.ComboRespone;
import com.gingersoft.gsa.cloud.download.mvp.model.bean.DataDownLoadState;
import com.gingersoft.gsa.cloud.download.mvp.model.bean.FunctionBean;
import com.gingersoft.gsa.cloud.download.mvp.model.bean.FoodModifierRespone;
import com.gingersoft.gsa.cloud.download.mvp.model.bean.FunctionRespone;
import com.gingersoft.gsa.cloud.download.mvp.model.bean.ModifierRespone;
import com.gingersoft.gsa.cloud.download.mvp.ui.activity.DownloadActivity;
import com.gingersoft.gsa.cloud.download.mvp.ui.adapter.DataDownLoadAdapter;
import com.jess.arms.integration.AppManager;
......@@ -62,13 +69,13 @@ public class DownloadPresenter extends BasePresenter<DownloadContract.Model, Dow
private DataDownLoadAdapter mAapter;
private List<DataDownLoadState> mList = new ArrayList<>();
private String serverAddress;
private String[] downTitles = {"功能列表", "食品列表", "食品細項", "套餐", "食品細項關係"};
private int downLoadCount = 0; //下载数据计数
private boolean downLoadState = false;
private String urlList[] = {HttpsConstans.ROOT_SERVER_ADDRESS_FORMAL2 + Api.download_function_list, Api.download_food_list};
private List<Food> foodList;
// private String urlList[] = {HttpsConstans.ROOT_SERVER_ADDRESS_FORMAL2 + Api.download_function_list, Api.download_food_list};
@Inject
public DownloadPresenter(DownloadContract.Model model, DownloadContract.View rootView) {
......@@ -100,13 +107,16 @@ public class DownloadPresenter extends BasePresenter<DownloadContract.Model, Dow
//初始化下载记录标志
downLoadCount = 0;
downLoadState = false;
down_load_data(urlList);
down_load_data();
}
public void down_load_data(String[] url) {
String restaurantId = "26";
Observable.mergeArray(mModel.downFunctionList(), mModel.downFoodList(restaurantId))
public void down_load_data() {
int restaurantId = 26;
// int restaurantId = GsaCloudApplication.getRestaurantId(IActivity);
Observable.mergeArray(mModel.downFunctionList(), mModel.downFoodList(restaurantId)
, mModel.downModifier(restaurantId), mModel.downCombo(restaurantId),
mModel.downFoodModifier(restaurantId))
.subscribeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
......@@ -147,8 +157,8 @@ public class DownloadPresenter extends BasePresenter<DownloadContract.Model, Dow
@Override
public void onNext(Object o) {
if (o instanceof FunctionBean) {
FunctionBean functionBean = (FunctionBean) o;
if (o instanceof FunctionRespone) {
FunctionRespone functionBean = (FunctionRespone) o;
if (functionBean != null) {
FunctionDaoUtils functionDao = new FunctionDaoUtils(IActivity);
......@@ -169,9 +179,7 @@ public class DownloadPresenter extends BasePresenter<DownloadContract.Model, Dow
}
} else if (o instanceof FoodBean) {
FoodBean foodBean = (FoodBean) o;
if (foodBean != null) {
FoodDaoUtils foodDao = new FoodDaoUtils(IActivity);
foodDao.deleteAll();
......@@ -180,21 +188,64 @@ public class DownloadPresenter extends BasePresenter<DownloadContract.Model, Dow
}
}
FoodDaoUtils foodDao = new FoodDaoUtils(IActivity);
List<Food> foodList = foodDao.queryAllFood();
downLoadCount++;
mRootView.getRecycleDownload().smoothScrollToPosition(1);
mList.get(1).setState(2);
if (DeviceUtils.netIsConnected(mApplication)) {
mList.get(2).setState(1);
} else {
mRootView.showMessage("Can not connect server, retry?");
}
} else if (o instanceof ModifierRespone) {
ModifierRespone modifier = (ModifierRespone) o;
if (modifier != null) {
ModifierDaoUtils modifierDao = new ModifierDaoUtils(IActivity);
modifierDao.deleteAll();
if (modifier.isSuccess() && modifier.getData() != null) {
modifierDao.insertMultModifier(modifier.getData());
}
}
downLoadState = true;
downLoadCount++;
mRootView.getRecycleDownload().smoothScrollToPosition(1);
mList.get(2).setState(2);
if (DeviceUtils.netIsConnected(mApplication)) {
mList.get(3).setState(1);
} else {
mRootView.showMessage("Can not connect server, retry?");
}
// if (DeviceUtils.netIsConnected(mApplication)) {
// mList.get(2).setState(1);
// } else {
// mRootView.showMessage("Can not connect server, retry?");
// }
} else if (o instanceof ComboRespone) {
ComboRespone combo = (ComboRespone) o;
if (combo != null) {
ComboDaoUtils comboDao = new ComboDaoUtils(IActivity);
comboDao.deleteAll();
if (combo.isSuccess() && combo.getData() != null) {
comboDao.insertMultCombo(combo.getData());
}
}
downLoadCount++;
mRootView.getRecycleDownload().smoothScrollToPosition(1);
mList.get(3).setState(2);
if (DeviceUtils.netIsConnected(mApplication)) {
mList.get(4).setState(1);
} else {
mRootView.showMessage("Can not connect server, retry?");
}
} else if (o instanceof FoodModifierRespone) {
FoodModifierRespone foodModifier = (FoodModifierRespone) o;
if (foodModifier != null) {
FoodModifierDaoUtils foodModifierDao = new FoodModifierDaoUtils(IActivity);
foodModifierDao.deleteAll();
if (foodModifier.isSuccess() && foodModifier.getData() != null) {
foodModifierDao.insertMultFoodModifier(foodModifier.getData());
}
}
downLoadCount++;
mRootView.getRecycleDownload().smoothScrollToPosition(1);
downLoadState = true;
}
mAapter.notifyDataSetChanged();
......@@ -221,19 +272,12 @@ public class DownloadPresenter extends BasePresenter<DownloadContract.Model, Dow
}
public void initDataDownItem() {
//1
DataDownLoadState downLoadState1 = new DataDownLoadState();
downLoadState1.setState(0);
downLoadState1.setText("功能列表");
mList.add(downLoadState1);
//2
DataDownLoadState downLoadState2 = new DataDownLoadState();
downLoadState2.setState(0);
downLoadState2.setText("食品列表");
mList.add(downLoadState2);
for (int i = 0; i < downTitles.length; i++) {
DataDownLoadState downLoadState1 = new DataDownLoadState();
downLoadState1.setState(0);
downLoadState1.setText(downTitles[i]);
mList.add(downLoadState1);
}
}
}
......@@ -6,7 +6,7 @@ import android.view.View;
import com.gingersoft.gsa.cloud.download.R;
import com.gingersoft.gsa.cloud.download.R2;
import com.gingersoft.gsa.cloud.download.di.component.DaggerDownloadComponent;
import com.gingersoft.gsa.cloud.ui.dialog.LoadingDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.jess.arms.base.BaseActivity;
import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.di.component.AppComponent;
......@@ -15,11 +15,8 @@ import com.gingersoft.gsa.cloud.download.mvp.contract.DownloadContract;
import com.gingersoft.gsa.cloud.download.mvp.presenter.DownloadPresenter;
import com.qmuiteam.qmui.widget.QMUITopBar;
import org.simple.eventbus.EventBus;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import butterknife.BindView;
......
......@@ -26,31 +26,31 @@ android {
resourcePrefix "main"
buildTypes {
debug {
buildConfigField "boolean", "LOG_DEBUG", "true"
buildConfigField "boolean", "USE_CANARY", "true"
minifyEnabled false
proguardFiles 'proguard.cfg'
}
release {
postprocessing {
removeUnusedCode false
removeUnusedResources false
obfuscate false
optimizeCode false
proguardFiles 'proguard.cfg'
}
buildConfigField "boolean", "LOG_DEBUG", "false"
buildConfigField "boolean", "USE_CANARY", "false"
minifyEnabled false
shrinkResources false
zipAlignEnabled false
proguardFiles 'proguard.cfg'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
// if (project.ext.runAsApp) {
annotationProcessor rootProject.ext.dependencies["dagger2-compiler"]
debugImplementation rootProject.ext.dependencies["canary-debug"]
releaseImplementation rootProject.ext.dependencies["canary-release"]
testImplementation rootProject.ext.dependencies["canary-release"]
// }else {
// compileOnly rootProject.ext.dependencies["dagger2-compiler"]
// compileOnly rootProject.ext.dependencies["canary-debug"]
// compileOnly rootProject.ext.dependencies["canary-release"]
// compileOnly rootProject.ext.dependencies["canary-release"]
// }
testImplementation rootProject.ext.dependencies["junit"]
implementation rootProject.ext.dependencies["BaseRecyclerViewAdapter"]
......
......@@ -7,8 +7,8 @@ import android.widget.TextView;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SectionHeader;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SectionItem;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionHeader;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionNormalItem;
import com.gingersoft.gsa.cloud.main.mvp.ui.view.HomeFunctionHead;
import com.qmuiteam.qmui.widget.section.QMUIDefaultStickySectionAdapter;
import com.qmuiteam.qmui.widget.section.QMUISection;
......@@ -21,7 +21,7 @@ import butterknife.ButterKnife;
/**
* Created by Wyh on 2020/1/10.
*/
public class HomeFunctionAdapter extends QMUIDefaultStickySectionAdapter<SectionHeader, SectionItem> {
public class HomeFunctionAdapter extends QMUIDefaultStickySectionAdapter<SectionHeader, SectionNormalItem> {
@NonNull
@Override
......@@ -36,14 +36,14 @@ public class HomeFunctionAdapter extends QMUIDefaultStickySectionAdapter<Section
}
@Override
protected void onBindSectionHeader(QMUIStickySectionAdapter.ViewHolder holder, int position, QMUISection<SectionHeader, SectionItem> section) {
protected void onBindSectionHeader(QMUIStickySectionAdapter.ViewHolder holder, int position, QMUISection<SectionHeader, SectionNormalItem> section) {
super.onBindSectionHeader(holder, position, section);
HomeFunctionHead itemView = (HomeFunctionHead) holder.itemView;
itemView.render(section.getHeader(), section.isFold());
}
@Override
protected void onBindSectionItem(QMUIStickySectionAdapter.ViewHolder holder, int position, QMUISection<SectionHeader, SectionItem> section, int itemIndex) {
protected void onBindSectionItem(QMUIStickySectionAdapter.ViewHolder holder, int position, QMUISection<SectionHeader, SectionNormalItem> section, int itemIndex) {
super.onBindSectionItem(holder, position, section, itemIndex);
ViewHolder viewHolder = (ViewHolder) holder;
viewHolder.ivFun.setImageResource(section.getItemAt(itemIndex).getImage());
......
package com.gingersoft.gsa.cloud.main.mvp.ui.fragment;
import android.content.Intent;
import android.media.Image;
import android.os.Bundle;
import android.util.Log;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
......@@ -20,10 +17,11 @@ import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerHomeComponent;
import com.gingersoft.gsa.cloud.main.mvp.contract.HomeContract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.HomeTurnoverBean;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SectionHeader;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SectionItem;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionHeader;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionNormalItem;
import com.gingersoft.gsa.cloud.main.mvp.presenter.HomePresenter;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.HomeFunctionAdapter;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionNormalItem;
import com.jess.arms.base.BaseFragment;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
......@@ -43,7 +41,6 @@ import androidx.annotation.Nullable;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import butterknife.BindView;
import dagger.Component;
import static com.jess.arms.utils.Preconditions.checkNotNull;
......@@ -85,7 +82,7 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements HomeCon
private String[] title = new String[]{"點餐", "管理", "員工"};
private Map<String, String[]> function = new HashMap<>();
private ArrayList<QMUISection<SectionHeader, SectionItem>> list;
private ArrayList<QMUISection<SectionHeader, SectionNormalItem>> list;
public static HomeFragment newInstance() {
HomeFragment fragment = new HomeFragment();
......@@ -140,9 +137,9 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements HomeCon
mLayoutManager = createLayoutManager();
mSectionLayout.setLayoutManager(mLayoutManager);
mAdapter = new HomeFunctionAdapter();
mAdapter.setCallback(new QMUIStickySectionAdapter.Callback<SectionHeader, SectionItem>() {
mAdapter.setCallback(new QMUIStickySectionAdapter.Callback<SectionHeader, SectionNormalItem>() {
@Override
public void loadMore(QMUISection<SectionHeader, SectionItem> section, boolean loadMoreBefore) {
public void loadMore(QMUISection<SectionHeader, SectionNormalItem> section, boolean loadMoreBefore) {
}
......@@ -189,13 +186,13 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements HomeCon
mAdapter.setData(list);
}
private QMUISection<SectionHeader, SectionItem> createSection(String title) {
private QMUISection<SectionHeader, SectionNormalItem> createSection(String title) {
SectionHeader header = new SectionHeader(title);
ArrayList<SectionItem> contents = new ArrayList<>();
ArrayList<SectionNormalItem> contents = new ArrayList<>();
for (int i = 0; i < Objects.requireNonNull(function.get(title)).length; i++) {
contents.add(new SectionItem(R.drawable.ic_dining_table, Objects.requireNonNull(function.get(title))[i]));
contents.add(new SectionNormalItem(R.drawable.ic_dining_table, Objects.requireNonNull(function.get(title))[i]));
}
// QMUISection<SectionHeader, SectionItem> section = new QMUISection<>(header, contents, false);
// QMUISection<SectionHeader, SectionNormalItem> section = new QMUISection<>(header, contents, false);
// if test load more, you can open the code
// section.setExistAfterDataToLoad(true);
// section.setExistBeforeDataToLoad(true);
......
......@@ -10,7 +10,7 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SectionHeader;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionHeader;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import androidx.annotation.Nullable;
......
......@@ -22,14 +22,18 @@ android {
resourcePrefix "print"
buildTypes {
debug {
buildConfigField "boolean", "LOG_DEBUG", "true"
buildConfigField "boolean", "USE_CANARY", "true"
minifyEnabled false
proguardFiles 'proguard.cfg'
}
release {
postprocessing {
removeUnusedCode false
removeUnusedResources false
obfuscate false
optimizeCode false
proguardFiles 'proguard.cfg'
}
buildConfigField "boolean", "LOG_DEBUG", "false"
buildConfigField "boolean", "USE_CANARY", "false"
minifyEnabled false
zipAlignEnabled false
proguardFiles 'proguard.cfg'
}
}
}
......
......@@ -3,7 +3,7 @@ package com.joe.print.mvp.print;
import android.content.Context;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.ui.dialog.LoadingDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import am.util.printer.PrintExecutor;
import am.util.printer.PrintSocketHolder;
......
......@@ -6,10 +6,11 @@ import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail;
import com.gingersoft.gsa.cloud.base.common.bean.BillingBean;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableContract;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage;
import com.gingersoft.gsa.cloud.base.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.database.bean.Food;
......@@ -120,11 +121,11 @@ public class SendPrint implements PrintDataMaker {
checkOutTime = view.findViewById(R.id.tv_checkout_time);
line_food_info = view.findViewById(R.id.line_food_info);
}
List<Food> foodList = MyOrderManage.getInstance().getOrderFoodList();
TableBean.DataBean tableBean = OpenTableContract.getDefault().getTableBean();
List<OrderDetail> foodList = MyOrderManage.getInstance().getOrderFoodList();
TableBean.DataBean tableBean = OpenTableManage.getDefault().getTableBean();
tableNum.setText(tableBean.getTableName());
people.setText(tableBean.getPeopleNumber() + "");
people.setText(OpenTableManage.getDefault().getPeopleNumber() + "");
orderData.setText(tableBean.getCreateTime());
checkOutTime.setText(TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT));
......@@ -144,17 +145,17 @@ public class SendPrint implements PrintDataMaker {
rvBillAmount.setLayoutManager(new LinearLayoutManager(context));
rvBillAmount.setAdapter(billAdapter);
}
if(OpenTableContract.getDefault().getTableBean() != null) {
tableNum.setText(OpenTableContract.getDefault().getTableBean().getTableName());
people.setText(OpenTableContract.getDefault().getTableBean().getPeopleNumber() + "");
if(OpenTableManage.getDefault().getTableBean() != null) {
tableNum.setText(OpenTableManage.getDefault().getTableBean().getTableName());
people.setText(OpenTableManage.getDefault().getPeopleNumber() + "");
}
if(MyOrderManage.getInstance().getOrderId() != -1){
orderNum.setText(MyOrderManage.getInstance().getOrderId() + "");
}
BigDecimal totalAmount = new BigDecimal(0);
for (Food food : MyOrderManage.getInstance().getOrderFoodList()) {
totalAmount = MoneyUtil.sum(totalAmount, MoneyUtil.priceCalculation(food.getPrice(), food.getNumber()));
for (OrderDetail food : MyOrderManage.getInstance().getOrderFoodList()) {
totalAmount = MoneyUtil.sum(totalAmount, MoneyUtil.priceCalculation(food.getUnit_price(), food.getNumber()));
}
//總金額
mTvTotalAmount.setText(totalAmount +"");
......
......@@ -6,16 +6,13 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.WindowManager;
import com.billy.cc.core.component.CC;
import com.billy.cc.core.component.CCResult;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.database.DaoManager;
import com.gingersoft.gsa.cloud.database.greendao.PrinterDeviceBeanDao;
import com.gingersoft.gsa.cloud.ui.dialog.LoadingDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.joe.print.mvp.print.SendPrint;
import am.util.printer.PrintExecutor;
......@@ -24,8 +21,6 @@ import am.util.printer.PrinterWriter58mm;
import am.util.printer.PrinterWriter80mm;
import androidx.annotation.Nullable;
import static com.gingersoft.gsa.cloud.database.DaoManager.getInstance;
/**
* Created by Wyh on 2020/1/7.
*/
......
......@@ -15,6 +15,7 @@ import com.billy.cc.core.component.CC;
import com.billy.cc.core.component.CCResult;
import com.billy.cc.core.component.CCUtil;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail;
import com.gingersoft.gsa.cloud.base.common.bean.PrinterManger.PrinterManager;
import com.gingersoft.gsa.cloud.base.utils.PrintUtils;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
......@@ -104,7 +105,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
type = CCUtil.getNavigateParam(this, "type", 1001);
if(type == 0){
//上菜紙
List<Food> foods = CCUtil.getNavigateParam(this, "NewFoods", new ArrayList<>());
List<OrderDetail> foods = CCUtil.getNavigateParam(this, "NewFoods", new ArrayList<>());
bitmap = PrintUtils.getPrintBitmap(mContext, foods);
} else if(type == 1){
//印單
......@@ -120,6 +121,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
selectDialog = new DialogUtils(mContext, R.layout.print_dialog_select_device) {
@Override
public void initLayout(ViewHepler hepler, Dialog dialog) {
dialogCount++;
......
......@@ -107,7 +107,7 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem
}
topBar.setTitle(title);
topBar.setBackgroundColor(getResources().getColor(R.color.theme_color));
topBar.addLeftImageButton(R.drawable.icon_white_back, R.id.iv_left_back).setOnClickListener(v -> finish());
topBar.addLeftImageButton(R.drawable.icon_return, R.id.iv_left_back).setOnClickListener(v -> finish());
topBar.addRightTextButton("保存", R.id.printer_add).setOnClickListener(this);
}
......
......@@ -133,7 +133,7 @@ public class PrinterListActivity extends BaseActivity<PrintListPresenter> implem
public void initTopBar() {
topBar.setTitle("打印設置");
topBar.setBackgroundColor(getResources().getColor(R.color.theme_color));
topBar.addLeftImageButton(R.drawable.icon_white_back, R.id.iv_left_back).setOnClickListener(v -> finish());
topBar.addLeftImageButton(R.drawable.icon_return, R.id.iv_left_back).setOnClickListener(v -> finish());
topBar.addRightImageButton(R.drawable.ic_add, R.id.printer_add).setOnClickListener(v -> startActivity(new Intent(mContext, PrinterAddActivity.class)));
}
......
ext.alwaysLib = true //虽然apply了cc-settings-2.gradle,但一直作为library编译,否则别的组件依赖此module时会报错
apply from: rootProject.file("cc-settings.gradle")
apply plugin: 'com.jakewharton.butterknife'
apply plugin: 'org.greenrobot.greendao'
android {
compileSdkVersion rootProject.ext.android["compileSdkVersion"]
......@@ -19,29 +20,65 @@ android {
sourceCompatibility JavaVersion.VERSION_1_8
}
resourcePrefix "base"
// resourcePrefix "base"
buildTypes {
debug {
buildConfigField "boolean", "LOG_DEBUG", "true"
buildConfigField "boolean", "USE_CANARY", "true"
minifyEnabled false
proguardFiles 'proguard.cfg'
}
release {
buildConfigField "boolean", "LOG_DEBUG", "false"
buildConfigField "boolean", "USE_CANARY", "false"
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
zipAlignEnabled false
proguardFiles 'proguard.cfg'
}
}
greendao {
/**
* 版本号
*/
schemaVersion 13
/**
* greendao输出dao的数据库操作实体类文件夹(相对路径 包名+自定义路径名称,包将创建于包名的直接路径下)
*/
daoPackage 'com.gingersoft.gsa.cloud.database.greendao'
/**
* greenDao实体类包文件夹
*/
targetGenDir 'src/main/java'
generateTests false //设置为true以自动生成单元测试。
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation files('libs/javabase64-1.2.jar')
implementation files('libs/sun.misc.BASE64Decoder.jar')
// test
testImplementation rootProject.ext.dependencies["junit"]
debugImplementation rootProject.ext.dependencies["canary-debug"]
releaseImplementation rootProject.ext.dependencies["canary-release"]
testImplementation rootProject.ext.dependencies["canary-release"]
annotationProcessor rootProject.ext.dependencies["dagger2-compiler"]
// implementation 'androidx.appcompat:appcompat:1.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation rootProject.ext.dependencies["fastjson"]
//日誌管理
implementation 'com.elvishew:xlog:1.6.1'
implementation rootProject.ext.dependencies["zxing"]
implementation rootProject.ext.dependencies["progressmanager"]
// 數據庫
implementation 'org.greenrobot:greendao:3.2.2'
implementation 'org.greenrobot:greendao-generator:3.2.2'
implementation rootProject.ext.dependencies["BaseRecyclerViewAdapter"]
implementation files('libs/ecracalib.jar')
implementation files('libs/nexgon5lib.jar')
}
......@@ -12,7 +12,15 @@ public interface Api {
String login = "gsa/login";
String logout = "gsa/logout";
//功能列表
String download_function_list = "user/resource/list";
String download_food_list = "food/list";
//食品列表
String food_list = "food/list";
//細項
String modifier = "food/items";
//食品套餐關係
String food_package_relation = "food/package";
//食品細項關係
String food_modifiere_relation = "food/modifierDetail";
}
......@@ -4,6 +4,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.gingersoft.gsa.cloud.base.R;
import com.gingersoft.gsa.cloud.base.common.bean.BillMethodBean;
import com.gingersoft.gsa.cloud.base.common.bean.PayMethod;
import com.gingersoft.gsa.cloud.database.bean.Food;
import java.util.List;
......@@ -14,15 +15,15 @@ import androidx.annotation.Nullable;
* Created by Wyh on 2020/1/9.
* 結賬方式
*/
public class BillTypeAdapter extends BaseQuickAdapter<BillMethodBean, BaseViewHolder> {
public class BillTypeAdapter extends BaseQuickAdapter<PayMethod, BaseViewHolder> {
public BillTypeAdapter(@Nullable List<BillMethodBean> data) {
public BillTypeAdapter(@Nullable List<PayMethod> data) {
super(R.layout.base_print_item_bill_type, data);
}
@Override
protected void convert(BaseViewHolder helper, BillMethodBean item) {
protected void convert(BaseViewHolder helper, PayMethod item) {
helper.setText(R.id.tv_total_amount_text, item.getName());
helper.setText(R.id.tv_total_amount, item.getMoney() + "");
helper.setText(R.id.tv_total_amount, item.getPayMoney() + "");
}
}
......@@ -3,24 +3,24 @@ package com.gingersoft.gsa.cloud.base.adapter.print;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.gingersoft.gsa.cloud.base.R;
import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail;
import com.gingersoft.gsa.cloud.database.bean.Food;
import java.util.List;
import androidx.annotation.Nullable;
/**
* Created by Wyh on 2020/1/9.
*/
public class FoodAdapter extends BaseQuickAdapter<Food, BaseViewHolder> {
public class FoodAdapter extends BaseQuickAdapter<OrderDetail, BaseViewHolder> {
public FoodAdapter(@Nullable List<Food> data) {
public FoodAdapter(@Nullable List<OrderDetail> data) {
super(R.layout.print_item_food, data);
}
@Override
protected void convert(BaseViewHolder helper, Food item) {
helper.setText(R.id.tv_food_name, item.getFoodName());
protected void convert(BaseViewHolder helper, OrderDetail item) {
helper.setText(R.id.tv_food_name, item.getName());
helper.setText(R.id.tv_food_quantity, String.valueOf(item.getNumber()));
helper.setText(R.id.tv_food_price, "$" + item.getPrice());
helper.setText(R.id.tv_food_price, "$" + item.getAmount_price());
}
}
......@@ -3,6 +3,7 @@ package com.gingersoft.gsa.cloud.base.application;
import android.content.Context;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.base.common.bean.CurrentAndroidSetting;
import com.gingersoft.gsa.cloud.base.utils.constans.UserConstans;
import com.gingersoft.gsa.cloud.base.utils.crash.AppCrashHandler;
import com.gingersoft.gsa.cloud.base.utils.other.SPUtils;
......@@ -21,11 +22,15 @@ public class GsaCloudApplication extends BaseApplication {
public static boolean isLogin = false;
public static CurrentAndroidSetting androidSetting;
@Override
public void onCreate() {
super.onCreate();
this.mAppContext = this;
androidSetting = new CurrentAndroidSetting();
CC.enableVerboseLog(true);
CC.enableDebug(true);
CC.enableRemoteCC(true);
......@@ -65,6 +70,10 @@ public class GsaCloudApplication extends BaseApplication {
return (int) SPUtils.get(context, UserConstans.memberId, 0);
}
public static String getMemberName(Context context) {
return (String) SPUtils.get(context, UserConstans.memberName, "");
}
public static int getRestaurantId(Context context) {
return (int) SPUtils.get(context, UserConstans.restaurantId, 0);
}
......@@ -77,6 +86,10 @@ public class GsaCloudApplication extends BaseApplication {
SPUtils.put(context, UserConstans.memberId, memberId);
}
public static void setMemberName(Context context, String memberName) {
SPUtils.put(context, UserConstans.memberName, memberName);
}
public static void setRestaurantId(Context context, int restaurantId) {
SPUtils.put(context, UserConstans.restaurantId, restaurantId);
}
......
......@@ -126,6 +126,14 @@ public class OrderBean {
this.orderId = orderId;
}
public OrderDetailsBean(String productName, String productId, double price, double lunchboxPrice, int number) {
this.productName = productName;
this.productId = productId;
this.price = price;
this.lunchboxPrice = lunchboxPrice;
this.number = number;
}
public int getId() {
return id;
}
......@@ -200,10 +208,20 @@ public class OrderBean {
}
public static List<OrderDetailsBean> transOrderDetails(List<Food> foods) {
// public static List<OrderDetailsBean> transOrderDetails(List<Food> foods) {
// List<OrderDetailsBean> orderDetailsBeans = new ArrayList<>();
// for (Food food : foods) {
// OrderDetailsBean orderDetailsBean = new OrderDetailsBean(food.getFoodName(), food.getParentId()+ "", food.getPrice(), food.getLunchboxPrice(), food.getNumber(), food.getOrderId());
// orderDetailsBeans.add(orderDetailsBean);
// }
// return orderDetailsBeans;
// }
public static List<OrderDetailsBean> transOrderDetails(List<OrderDetail> foods) {
List<OrderDetailsBean> orderDetailsBeans = new ArrayList<>();
for (Food food : foods) {
OrderDetailsBean orderDetailsBean = new OrderDetailsBean(food.getFoodName(), food.getParentId()+ "", food.getPrice(), food.getLunchboxPrice(), food.getNumber(), food.getOrderId());
for (OrderDetail food : foods) {
// OrderDetailsBean orderDetailsBean = new OrderDetailsBean(food.getName(), food.getParentId()+ "", food.getAmount_price(), food.getLunchboxPrice(), food.getNumber(), food.getOrderId());
OrderDetailsBean orderDetailsBean = new OrderDetailsBean(food.getName(), food.getParentId()+ "", food.getAmount_price(), food.getLunchboxPrice(), food.getNumber());
orderDetailsBeans.add(orderDetailsBean);
}
return orderDetailsBeans;
......
package com.gingersoft.gsa.cloud.base.common.bean;
import android.graphics.Color;
import java.util.List;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-02-15
* 修订历史:2020-02-15
* 描述:
*/
public class PayMethod {
private int id;
private String name;
private String NAME;
private String NAME2;
private String NAME3;
private String PAYWAY;
//*************自定義字段***************
private double payMoney = 0.0;
private double TipsPrice = 0.0;
private int payModeTextColor = android.graphics.Color.parseColor("#000000");
private int payMoneyTextColor = android.graphics.Color.parseColor("#000000");
private int payModeTextSelectColor = android.graphics.Color.parseColor("#000000");
private int payMoneyTextSelectColor = Color.parseColor("#000000");
private int payModeSize = 18;
private int payMoneySize = 18;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPayName() {
return name;
}
public String getPAYWAY() {
return PAYWAY;
}
public void setPAYWAY(String PAYWAY) {
this.PAYWAY = PAYWAY;
}
public double getPayMoney() {
return payMoney;
}
public void setPayMoney(double payMoney) {
this.payMoney = payMoney;
}
public double getTipsPrice() {
return TipsPrice;
}
public void setTipsPrice(double tipsPrice) {
TipsPrice = tipsPrice;
}
public int getPayModeTextColor() {
return payModeTextColor;
}
public void setPayModeTextColor(int payModeTextColor) {
this.payModeTextColor = payModeTextColor;
}
public int getPayMoneyTextColor() {
return payMoneyTextColor;
}
public void setPayMoneyTextColor(int payMoneyTextColor) {
this.payMoneyTextColor = payMoneyTextColor;
}
public int getPayModeTextSelectColor() {
return payModeTextSelectColor;
}
public void setPayModeTextSelectColor(int payModeTextSelectColor) {
this.payModeTextSelectColor = payModeTextSelectColor;
}
public int getPayMoneyTextSelectColor() {
return payMoneyTextSelectColor;
}
public void setPayMoneyTextSelectColor(int payMoneyTextSelectColor) {
this.payMoneyTextSelectColor = payMoneyTextSelectColor;
}
public int getPayModeSize() {
return payModeSize;
}
public void setPayModeSize(int payModeSize) {
this.payModeSize = payModeSize;
}
public int getPayMoneySize() {
return payMoneySize;
}
public void setPayMoneySize(int payMoneySize) {
this.payMoneySize = payMoneySize;
}
}
......@@ -82,7 +82,6 @@ public class TableBean {
private int posTableId;
private int serviceCharge;
private int memberId;
/**
* 可使用 0
* 操作中 1
......@@ -92,19 +91,15 @@ public class TableBean {
* 连台 6
*/
private int status;
private int useStatus;
//是否刷新數據
private boolean isRefresh = false;
//開台人數
private int peopleNumber;
public boolean isRefresh() {
return isRefresh;
public int getUseStatus() {
return useStatus;
}
public void setRefresh(boolean refresh) {
isRefresh = refresh;
public void setUseStatus(int useStatus) {
this.useStatus = useStatus;
}
public int getId() {
......@@ -115,14 +110,6 @@ public class TableBean {
this.id = id;
}
public int getPeopleNumber() {
return peopleNumber;
}
public void setPeopleNumber(int peopleNumber) {
this.peopleNumber = peopleNumber;
}
public String getTableName() {
return tableName;
}
......@@ -211,12 +198,5 @@ public class TableBean {
this.status = status;
}
public int getUseStatus() {
return useStatus;
}
public void setUseStatus(int useStatus) {
this.useStatus = useStatus;
}
}
}
......@@ -10,21 +10,30 @@ import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
* 修订历史:2020-01-09
* 描述:保存開台返回的訂單數據
*/
public class OpenTableContract {
public class OpenTableManage {
private String TAG = getClass().getSimpleName();
private static OpenTableContract sDefaultOpenTableManage;
private static OpenTableManage sDefaultOpenTableManage;
//記錄開台信息
//開台信息
private TableBean.DataBean tableBean;
//記錄訂單信息
//使用狀態
private int useStatus;
//是否刷新數據
private boolean isRefresh = false;
//開台人數
private int peopleNumber;
//是否分檯
private boolean isSplite = false;
//分檯編號
private String splitNo;
//訂單ID
// private int orderId ;
public static OpenTableContract getDefault() {
public static OpenTableManage getDefault() {
if (sDefaultOpenTableManage == null) {
sDefaultOpenTableManage = new OpenTableContract();
sDefaultOpenTableManage = new OpenTableManage();
}
return sDefaultOpenTableManage;
}
......@@ -37,7 +46,47 @@ public class OpenTableContract {
this.tableBean = tableBean;
}
// public int getOrderId() {
public int getUseStatus() {
return useStatus;
}
public void setUseStatus(int useStatus) {
this.useStatus = useStatus;
}
public boolean isRefresh() {
return isRefresh;
}
public void setRefresh(boolean refresh) {
isRefresh = refresh;
}
public int getPeopleNumber() {
return peopleNumber;
}
public void setPeopleNumber(int peopleNumber) {
this.peopleNumber = peopleNumber;
}
public boolean isSplite() {
return isSplite;
}
public void setSplite(boolean splite) {
isSplite = splite;
}
public String getSplitNo() {
return splitNo;
}
public void setSplitNo(String splitNo) {
this.splitNo = splitNo;
}
// public int getOrderId() {
// return orderId;
// }
//
......
......@@ -5,24 +5,21 @@ import android.graphics.Bitmap;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.base.R;
import com.gingersoft.gsa.cloud.base.adapter.print.BillAdapter;
import com.gingersoft.gsa.cloud.base.adapter.print.BillTypeAdapter;
import com.gingersoft.gsa.cloud.base.adapter.print.FoodAdapter;
import com.gingersoft.gsa.cloud.base.common.bean.BillingBean;
import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableContract;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage;
import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.base.utils.view.ImageUtils;
import com.gingersoft.gsa.cloud.base.utils.view.LayoutToBitmapUtils;
import com.gingersoft.gsa.cloud.database.bean.Food;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
......@@ -41,7 +38,7 @@ public class PrintUtils {
* @param context
* @return
*/
public static Bitmap getPrintBitmap(Context context, List<Food> foodList) {
public static Bitmap getPrintBitmap(Context context, List<OrderDetail> foodList) {
View view = LinearLayout.inflate(context, R.layout.print_layout_print, null);
TextView brandName = view.findViewById(R.id.tv_brand_name);
TextView restaurantName = view.findViewById(R.id.tv_restaurant_name);
......@@ -54,11 +51,11 @@ public class PrintUtils {
TextView mTvTotalAmount = view.findViewById(R.id.tv_total_amount);
TextView checkOutTime = view.findViewById(R.id.tv_checkout_time);
TextView line_food_info = view.findViewById(R.id.line_food_info);
// List<Food> foodList = MyOrderManage.getInstance().getOrderFoodList();
TableBean.DataBean tableBean = OpenTableContract.getDefault().getTableBean();
// List<OrderDetail> foodList = MyOrderManage.getInstance().getOrderFoodList();
TableBean.DataBean tableBean = OpenTableManage.getDefault().getTableBean();
tableNum.setText(tableBean.getTableName());
people.setText(tableBean.getPeopleNumber() + "");
people.setText(OpenTableManage.getDefault().getPeopleNumber() + "");
orderData.setText(tableBean.getCreateTime());
checkOutTime.setText(TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT));
......@@ -78,11 +75,10 @@ public class PrintUtils {
rvBillAmount.setLayoutManager(new LinearLayoutManager(context));
rvBillAmount.setAdapter(billAdapter);
}
if (OpenTableContract.getDefault().
if (OpenTableManage.getDefault().
getTableBean() != null) {
tableNum.setText(OpenTableContract.getDefault().getTableBean().getTableName());
people.setText(OpenTableContract.getDefault().getTableBean().getPeopleNumber() + "");
tableNum.setText(OpenTableManage.getDefault().getTableBean().getTableName());
people.setText(OpenTableManage.getDefault().getPeopleNumber() + "");
}
if (MyOrderManage.getInstance().
......@@ -93,10 +89,10 @@ public class PrintUtils {
BigDecimal totalAmount = new BigDecimal(0);
for (
Food food : MyOrderManage.getInstance().
OrderDetail OrderDetail : MyOrderManage.getInstance().
getOrderFoodList()) {
totalAmount = MoneyUtil.sum(totalAmount, MoneyUtil.priceCalculation(food.getPrice(), food.getNumber()));
totalAmount = MoneyUtil.sum(totalAmount, MoneyUtil.priceCalculation(OrderDetail.getUnit_price(), OrderDetail.getNumber()));
}
//總金額
mTvTotalAmount.setText(totalAmount + "");
......@@ -131,11 +127,11 @@ public class PrintUtils {
TextView line_food_info = view.findViewById(R.id.line_food_info);
RecyclerView rvPayType = view.findViewById(R.id.rv_print_pay_type);//顯示支付方式
List<Food> foodList = MyOrderManage.getInstance().getOrderFoodList();
TableBean.DataBean tableBean = OpenTableContract.getDefault().getTableBean();
List<OrderDetail> foodList = MyOrderManage.getInstance().getOrderFoodList();
TableBean.DataBean tableBean = OpenTableManage.getDefault().getTableBean();
tableNum.setText(tableBean.getTableName());
people.setText(tableBean.getPeopleNumber() + "");
people.setText(OpenTableManage.getDefault().getPeopleNumber() + "");
orderData.setText(tableBean.getCreateTime());
checkOutTime.setText(TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT));
......@@ -155,9 +151,9 @@ public class PrintUtils {
rvBillAmount.setLayoutManager(new LinearLayoutManager(context));
rvBillAmount.setAdapter(billAdapter);
}
if (OpenTableContract.getDefault().getTableBean() != null) {
tableNum.setText(OpenTableContract.getDefault().getTableBean().getTableName());
people.setText(OpenTableContract.getDefault().getTableBean().getPeopleNumber() + "");
if (OpenTableManage.getDefault().getTableBean() != null) {
tableNum.setText(OpenTableManage.getDefault().getTableBean().getTableName());
people.setText(OpenTableManage.getDefault().getPeopleNumber() + "");
}
if (MyOrderManage.getInstance().getOrderId() != -1) {
......@@ -165,8 +161,8 @@ public class PrintUtils {
}
BigDecimal totalAmount = new BigDecimal(0);
for (Food food : MyOrderManage.getInstance().getOrderFoodList()) {
totalAmount = MoneyUtil.sum(totalAmount, MoneyUtil.priceCalculation(food.getPrice(), food.getNumber()));
for (OrderDetail OrderDetail : MyOrderManage.getInstance().getOrderFoodList()) {
totalAmount = MoneyUtil.sum(totalAmount, MoneyUtil.priceCalculation(OrderDetail.getUnit_price(), OrderDetail.getNumber()));
}
//總金額
mTvTotalAmount.setText(totalAmount + "");
......
......@@ -6,6 +6,7 @@ package com.gingersoft.gsa.cloud.base.utils.constans;
public class UserConstans {
public static String memberId = "member_id";
public static String memberName = "member_name";
public static String token = "user_token";
public static String restaurantId = "restaurant_id";
......
......@@ -15,7 +15,6 @@ import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
......
package com.gingersoft.gsa.cloud.database;
import android.content.Context;
import com.gingersoft.gsa.cloud.base.BuildConfig;
import com.gingersoft.gsa.cloud.database.greendao.DaoMaster;
import com.gingersoft.gsa.cloud.database.greendao.DaoSession;
import org.greenrobot.greendao.query.QueryBuilder;
/**
......
package com.gingersoft.gsa.cloud.database.bean;
import android.graphics.Color;
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.NotNull;
import org.greenrobot.greendao.annotation.Property;
import org.greenrobot.greendao.annotation.ToMany;
import org.greenrobot.greendao.annotation.Transient;
import org.greenrobot.greendao.annotation.Generated;
import java.util.List;
import org.greenrobot.greendao.DaoException;
import com.gingersoft.gsa.cloud.database.greendao.DaoSession;
import com.gingersoft.gsa.cloud.database.greendao.FoodDao;
import com.gingersoft.gsa.cloud.database.greendao.ComboDao;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-02-18
* 修订历史:2020-02-18
* 描述:套餐關係
*/
@Entity
public class Combo {
@Property(nameInDb = "_id")
@Id(autoincrement = true)
private Long dbid;
@NotNull
private Long id;
private Long fid; //食品ID
private int comId;//套餐ID
//關聯食品表
@ToMany(referencedJoinProperty = "id")
private List<Food> foods;
/**
* 自定義字段
*/
@Transient
private String name;
/**價格*/
@Transient
private double price = 0.00;
/**是否自動展開*/
@Transient
private int autoMode = 0;
/**是否备注细项*/
@Transient
private boolean isModifier;
/**背景顏色*/
@Transient
private int bgColor = Color.parseColor("#067878");
/**字體顏色*/
@Transient
private int fontColor = Color.parseColor("#FFFFFF");
/**套餐細項*/
@Transient
private Modifier modifier;
/**
* Used to resolve relations
*/
@Generated(hash = 2040040024)
private transient DaoSession daoSession;
/**
* Used for active entity operations.
*/
@Generated(hash = 1678159415)
private transient ComboDao myDao;
@Generated(hash = 1487508076)
public Combo(Long dbid, @NotNull Long id, Long fid, int comId) {
this.dbid = dbid;
this.id = id;
this.fid = fid;
this.comId = comId;
}
@Generated(hash = 2090634475)
public Combo() {
}
// @Generated(hash = 196636064)
// public Combo(Long dbid, @NotNull Long id, Long fid, int comId) {
// this.dbid = dbid;
// this.id = id;
// this.fid = fid;
// this.comId = comId;
// }
//
// @Generated(hash = 2090634475)
// public Combo() {
// }
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public Long getFid() {
return fid;
}
public void setFid(Long fid) {
this.fid = fid;
}
public int getComId() {
return comId;
}
public void setComId(int comId) {
this.comId = comId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAutoMode() {
return autoMode;
}
public void setAutoMode(int autoMode) {
this.autoMode = autoMode;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public boolean isModifier() {
return isModifier;
}
public void setModifier(boolean modifier) {
isModifier = modifier;
}
public int getBgColor() {
return bgColor;
}
public void setBgColor(int bgColor) {
this.bgColor = bgColor;
}
public int getFontColor() {
return fontColor;
}
public void setFontColor(int fontColor) {
this.fontColor = fontColor;
}
public Long getDbid() {
return dbid;
}
public void setDbid(Long dbid) {
this.dbid = dbid;
}
public Modifier getModifier() {
return modifier;
}
public void setModifier(Modifier modifier) {
this.modifier = modifier;
}
public void setId(Long id) {
this.id = id;
}
/**
* To-many relationship, resolved on first access (and after reset).
* Changes to to-many relations are not persisted, make changes to the target entity.
*/
@Generated(hash = 696813942)
public List<Food> getFoods() {
if (foods == null) {
final DaoSession daoSession = this.daoSession;
if (daoSession == null) {
throw new DaoException("Entity is detached from DAO context");
}
FoodDao targetDao = daoSession.getFoodDao();
List<Food> foodsNew = targetDao._queryCombo_Foods(dbid);
synchronized (this) {
if (foods == null) {
foods = foodsNew;
}
}
}
return foods;
}
/**
* Resets a to-many relationship, making the next get call to query for a fresh result.
*/
@Generated(hash = 1950966)
public synchronized void resetFoods() {
foods = null;
}
/**
* Convenient call for {@link org.greenrobot.greendao.AbstractDao#delete(Object)}.
* Entity must attached to an entity context.
*/
@Generated(hash = 128553479)
public void delete() {
if (myDao == null) {
throw new DaoException("Entity is detached from DAO context");
}
myDao.delete(this);
}
/**
* Convenient call for {@link org.greenrobot.greendao.AbstractDao#refresh(Object)}.
* Entity must attached to an entity context.
*/
@Generated(hash = 1942392019)
public void refresh() {
if (myDao == null) {
throw new DaoException("Entity is detached from DAO context");
}
myDao.refresh(this);
}
/**
* Convenient call for {@link org.greenrobot.greendao.AbstractDao#update(Object)}.
* Entity must attached to an entity context.
*/
@Generated(hash = 713229351)
public void update() {
if (myDao == null) {
throw new DaoException("Entity is detached from DAO context");
}
myDao.update(this);
}
/**
* called by internal mechanisms, do not call yourself.
*/
@Generated(hash = 589205575)
public void __setDaoSession(DaoSession daoSession) {
this.daoSession = daoSession;
myDao = daoSession != null ? daoSession.getComboDao() : null;
}
public static Combo addFoodInfo(Food food, Combo combo) {
combo.setName(food.getFoodName());
combo.setFid(food.getId());
combo.setPrice(food.getPrice());
combo.setAutoMode(food.getAutoMod());
return combo;
}
}
package com.gingersoft.gsa.cloud.database.bean;
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.NotNull;
import org.greenrobot.greendao.annotation.Property;
import org.greenrobot.greendao.annotation.Generated;
import org.greenrobot.greendao.annotation.ToMany;
import java.util.List;
import org.greenrobot.greendao.DaoException;
import com.gingersoft.gsa.cloud.database.greendao.DaoSession;
import com.gingersoft.gsa.cloud.database.greendao.FoodDao;
import com.gingersoft.gsa.cloud.database.greendao.FoodModifierDao;
import com.gingersoft.gsa.cloud.database.greendao.ModifierDao;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-02-18
* 修订历史:2020-02-18
* 描述:
*/
@Entity
public class FoodModifier {
@Property(nameInDb = "_id")
@Id(autoincrement = true)
private Long dbid;
@NotNull
private Long id;
private Long fid;
private Long mid;
//關聯食品表
@ToMany(referencedJoinProperty = "mid")
private List<Modifier> modifiers;
/** Used to resolve relations */
@Generated(hash = 2040040024)
private transient DaoSession daoSession;
/** Used for active entity operations. */
@Generated(hash = 1456075793)
private transient FoodModifierDao myDao;
@Generated(hash = 969556490)
public FoodModifier(Long dbid, @NotNull Long id, Long fid, Long mid) {
this.dbid = dbid;
this.id = id;
this.fid = fid;
this.mid = mid;
}
@Generated(hash = 1385518392)
public FoodModifier() {
}
public Long getDbid() {
return dbid;
}
public void setDbid(Long dbid) {
this.dbid = dbid;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getFid() {
return fid;
}
public void setFid(Long fid) {
this.fid = fid;
}
public Long getMid() {
return mid;
}
public void setMid(Long mid) {
this.mid = mid;
}
/**
* Convenient call for {@link org.greenrobot.greendao.AbstractDao#delete(Object)}.
* Entity must attached to an entity context.
*/
@Generated(hash = 128553479)
public void delete() {
if (myDao == null) {
throw new DaoException("Entity is detached from DAO context");
}
myDao.delete(this);
}
/**
* Convenient call for {@link org.greenrobot.greendao.AbstractDao#refresh(Object)}.
* Entity must attached to an entity context.
*/
@Generated(hash = 1942392019)
public void refresh() {
if (myDao == null) {
throw new DaoException("Entity is detached from DAO context");
}
myDao.refresh(this);
}
/**
* Convenient call for {@link org.greenrobot.greendao.AbstractDao#update(Object)}.
* Entity must attached to an entity context.
*/
@Generated(hash = 713229351)
public void update() {
if (myDao == null) {
throw new DaoException("Entity is detached from DAO context");
}
myDao.update(this);
}
/** called by internal mechanisms, do not call yourself. */
@Generated(hash = 638717814)
public void __setDaoSession(DaoSession daoSession) {
this.daoSession = daoSession;
myDao = daoSession != null ? daoSession.getFoodModifierDao() : null;
}
/**
* To-many relationship, resolved on first access (and after reset).
* Changes to to-many relations are not persisted, make changes to the target entity.
*/
@Generated(hash = 1902490580)
public List<Modifier> getModifiers() {
if (modifiers == null) {
final DaoSession daoSession = this.daoSession;
if (daoSession == null) {
throw new DaoException("Entity is detached from DAO context");
}
ModifierDao targetDao = daoSession.getModifierDao();
List<Modifier> modifiersNew = targetDao._queryFoodModifier_Modifiers(dbid);
synchronized (this) {
if (modifiers == null) {
modifiers = modifiersNew;
}
}
}
return modifiers;
}
/** Resets a to-many relationship, making the next get call to query for a fresh result. */
@Generated(hash = 51124353)
public synchronized void resetModifiers() {
modifiers = null;
}
}
......@@ -5,6 +5,7 @@ import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Generated;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.NotNull;
import org.greenrobot.greendao.annotation.Property;
import org.greenrobot.greendao.annotation.Transient;
/**
......@@ -18,11 +19,12 @@ import org.greenrobot.greendao.annotation.Transient;
@Entity
public class Function {
@Property(nameInDb = "_id")
@Id(autoincrement = true)
private Long id;
private Long dbid;
@NotNull
private Long id;
private int status;
private long effectiveTime;
private String resName;
......@@ -50,9 +52,10 @@ public class Function {
private int textSizeRes;
@Generated(hash = 291948792)
public Function(Long id, int status, long effectiveTime, String resName,
String resUrl, String imageURL) {
@Generated(hash = 1134214411)
public Function(Long dbid, @NotNull Long id, int status, long effectiveTime,
String resName, String resUrl, String imageURL) {
this.dbid = dbid;
this.id = id;
this.status = status;
this.effectiveTime = effectiveTime;
......@@ -65,6 +68,16 @@ public class Function {
public Function() {
}
public Function(@NotNull Long id, int status, long effectiveTime,
String resName, String resUrl, String imageURL) {
this.id = id;
this.status = status;
this.effectiveTime = effectiveTime;
this.resName = resName;
this.resUrl = resUrl;
this.imageURL = imageURL;
}
public Function(String resName, int textColor, int backgroundColor, int textSize) {
this.resName = resName;
this.textColor = textColor;
......@@ -200,4 +213,12 @@ public class Function {
", textSizeRes=" + textSizeRes +
'}';
}
public Long getDbid() {
return this.dbid;
}
public void setDbid(Long dbid) {
this.dbid = dbid;
}
}
package com.gingersoft.gsa.cloud.database.bean;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-02-19
* 修订历史:2020-02-19
* 描述:
*/
public class Score {
}
package com.gingersoft.gsa.cloud.database.greendao;
import android.database.Cursor;
import android.database.sqlite.SQLiteStatement;
import org.greenrobot.greendao.AbstractDao;
import org.greenrobot.greendao.Property;
import org.greenrobot.greendao.internal.DaoConfig;
import org.greenrobot.greendao.database.Database;
import org.greenrobot.greendao.database.DatabaseStatement;
import com.gingersoft.gsa.cloud.database.bean.Combo;
// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
/**
* DAO for table "COMBO".
*/
public class ComboDao extends AbstractDao<Combo, Long> {
public static final String TABLENAME = "COMBO";
/**
* Properties of entity Combo.<br/>
* Can be used for QueryBuilder and for referencing column names.
*/
public static class Properties {
public final static Property Dbid = new Property(0, Long.class, "dbid", true, "_id");
public final static Property Id = new Property(1, Long.class, "id", false, "ID");
public final static Property Fid = new Property(2, Long.class, "fid", false, "FID");
public final static Property ComId = new Property(3, int.class, "comId", false, "COM_ID");
}
private DaoSession daoSession;
public ComboDao(DaoConfig config) {
super(config);
}
public ComboDao(DaoConfig config, DaoSession daoSession) {
super(config, daoSession);
this.daoSession = daoSession;
}
/** Creates the underlying database table. */
public static void createTable(Database db, boolean ifNotExists) {
String constraint = ifNotExists? "IF NOT EXISTS ": "";
db.execSQL("CREATE TABLE " + constraint + "\"COMBO\" (" + //
"\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: dbid
"\"ID\" INTEGER NOT NULL ," + // 1: id
"\"FID\" INTEGER," + // 2: fid
"\"COM_ID\" INTEGER NOT NULL );"); // 3: comId
}
/** Drops the underlying database table. */
public static void dropTable(Database db, boolean ifExists) {
String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"COMBO\"";
db.execSQL(sql);
}
@Override
protected final void bindValues(DatabaseStatement stmt, Combo entity) {
stmt.clearBindings();
Long dbid = entity.getDbid();
if (dbid != null) {
stmt.bindLong(1, dbid);
}
stmt.bindLong(2, entity.getId());
Long fid = entity.getFid();
if (fid != null) {
stmt.bindLong(3, fid);
}
stmt.bindLong(4, entity.getComId());
}
@Override
protected final void bindValues(SQLiteStatement stmt, Combo entity) {
stmt.clearBindings();
Long dbid = entity.getDbid();
if (dbid != null) {
stmt.bindLong(1, dbid);
}
stmt.bindLong(2, entity.getId());
Long fid = entity.getFid();
if (fid != null) {
stmt.bindLong(3, fid);
}
stmt.bindLong(4, entity.getComId());
}
@Override
protected final void attachEntity(Combo entity) {
super.attachEntity(entity);
entity.__setDaoSession(daoSession);
}
@Override
public Long readKey(Cursor cursor, int offset) {
return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0);
}
@Override
public Combo readEntity(Cursor cursor, int offset) {
Combo entity = new Combo( //
cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // dbid
cursor.getLong(offset + 1), // id
cursor.isNull(offset + 2) ? null : cursor.getLong(offset + 2), // fid
cursor.getInt(offset + 3) // comId
);
return entity;
}
@Override
public void readEntity(Cursor cursor, Combo entity, int offset) {
entity.setDbid(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0));
entity.setId(cursor.getLong(offset + 1));
entity.setFid(cursor.isNull(offset + 2) ? null : cursor.getLong(offset + 2));
entity.setComId(cursor.getInt(offset + 3));
}
@Override
protected final Long updateKeyAfterInsert(Combo entity, long rowId) {
entity.setDbid(rowId);
return rowId;
}
@Override
public Long getKey(Combo entity) {
if(entity != null) {
return entity.getDbid();
} else {
return null;
}
}
@Override
public boolean hasKey(Combo entity) {
return entity.getDbid() != null;
}
@Override
protected final boolean isEntityUpdateable() {
return true;
}
}
......@@ -14,22 +14,28 @@ import org.greenrobot.greendao.identityscope.IdentityScopeType;
// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
/**
* Master of DAO (schema version 1): knows all DAOs.
* Master of DAO (schema version 13): knows all DAOs.
*/
public class DaoMaster extends AbstractDaoMaster {
public static final int SCHEMA_VERSION = 1;
public static final int SCHEMA_VERSION = 13;
/** Creates underlying database table using DAOs. */
public static void createAllTables(Database db, boolean ifNotExists) {
ComboDao.createTable(db, ifNotExists);
FoodDao.createTable(db, ifNotExists);
FoodModifierDao.createTable(db, ifNotExists);
FunctionDao.createTable(db, ifNotExists);
ModifierDao.createTable(db, ifNotExists);
PrinterDeviceBeanDao.createTable(db, ifNotExists);
}
/** Drops underlying database table using DAOs. */
public static void dropAllTables(Database db, boolean ifExists) {
ComboDao.dropTable(db, ifExists);
FoodDao.dropTable(db, ifExists);
FoodModifierDao.dropTable(db, ifExists);
FunctionDao.dropTable(db, ifExists);
ModifierDao.dropTable(db, ifExists);
PrinterDeviceBeanDao.dropTable(db, ifExists);
}
......@@ -49,8 +55,11 @@ public class DaoMaster extends AbstractDaoMaster {
public DaoMaster(Database db) {
super(db, SCHEMA_VERSION);
registerDaoClass(ComboDao.class);
registerDaoClass(FoodDao.class);
registerDaoClass(FoodModifierDao.class);
registerDaoClass(FunctionDao.class);
registerDaoClass(ModifierDao.class);
registerDaoClass(PrinterDeviceBeanDao.class);
}
......
......@@ -8,12 +8,18 @@ import org.greenrobot.greendao.database.Database;
import org.greenrobot.greendao.identityscope.IdentityScopeType;
import org.greenrobot.greendao.internal.DaoConfig;
import com.gingersoft.gsa.cloud.database.bean.Combo;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.bean.FoodModifier;
import com.gingersoft.gsa.cloud.database.bean.Function;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.database.greendao.ComboDao;
import com.gingersoft.gsa.cloud.database.greendao.FoodDao;
import com.gingersoft.gsa.cloud.database.greendao.FoodModifierDao;
import com.gingersoft.gsa.cloud.database.greendao.FunctionDao;
import com.gingersoft.gsa.cloud.database.greendao.ModifierDao;
import com.gingersoft.gsa.cloud.database.greendao.PrinterDeviceBeanDao;
// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
......@@ -25,50 +31,86 @@ import com.gingersoft.gsa.cloud.database.greendao.PrinterDeviceBeanDao;
*/
public class DaoSession extends AbstractDaoSession {
private final DaoConfig comboDaoConfig;
private final DaoConfig foodDaoConfig;
private final DaoConfig foodModifierDaoConfig;
private final DaoConfig functionDaoConfig;
private final DaoConfig modifierDaoConfig;
private final DaoConfig printerDeviceBeanDaoConfig;
private final ComboDao comboDao;
private final FoodDao foodDao;
private final FoodModifierDao foodModifierDao;
private final FunctionDao functionDao;
private final ModifierDao modifierDao;
private final PrinterDeviceBeanDao printerDeviceBeanDao;
public DaoSession(Database db, IdentityScopeType type, Map<Class<? extends AbstractDao<?, ?>>, DaoConfig>
daoConfigMap) {
super(db);
comboDaoConfig = daoConfigMap.get(ComboDao.class).clone();
comboDaoConfig.initIdentityScope(type);
foodDaoConfig = daoConfigMap.get(FoodDao.class).clone();
foodDaoConfig.initIdentityScope(type);
foodModifierDaoConfig = daoConfigMap.get(FoodModifierDao.class).clone();
foodModifierDaoConfig.initIdentityScope(type);
functionDaoConfig = daoConfigMap.get(FunctionDao.class).clone();
functionDaoConfig.initIdentityScope(type);
modifierDaoConfig = daoConfigMap.get(ModifierDao.class).clone();
modifierDaoConfig.initIdentityScope(type);
printerDeviceBeanDaoConfig = daoConfigMap.get(PrinterDeviceBeanDao.class).clone();
printerDeviceBeanDaoConfig.initIdentityScope(type);
comboDao = new ComboDao(comboDaoConfig, this);
foodDao = new FoodDao(foodDaoConfig, this);
foodModifierDao = new FoodModifierDao(foodModifierDaoConfig, this);
functionDao = new FunctionDao(functionDaoConfig, this);
modifierDao = new ModifierDao(modifierDaoConfig, this);
printerDeviceBeanDao = new PrinterDeviceBeanDao(printerDeviceBeanDaoConfig, this);
registerDao(Combo.class, comboDao);
registerDao(Food.class, foodDao);
registerDao(FoodModifier.class, foodModifierDao);
registerDao(Function.class, functionDao);
registerDao(Modifier.class, modifierDao);
registerDao(PrinterDeviceBean.class, printerDeviceBeanDao);
}
public void clear() {
comboDaoConfig.clearIdentityScope();
foodDaoConfig.clearIdentityScope();
foodModifierDaoConfig.clearIdentityScope();
functionDaoConfig.clearIdentityScope();
modifierDaoConfig.clearIdentityScope();
printerDeviceBeanDaoConfig.clearIdentityScope();
}
public ComboDao getComboDao() {
return comboDao;
}
public FoodDao getFoodDao() {
return foodDao;
}
public FoodModifierDao getFoodModifierDao() {
return foodModifierDao;
}
public FunctionDao getFunctionDao() {
return functionDao;
}
public ModifierDao getModifierDao() {
return modifierDao;
}
public PrinterDeviceBeanDao getPrinterDeviceBeanDao() {
return printerDeviceBeanDao;
}
......
package com.gingersoft.gsa.cloud.database.greendao;
import android.database.Cursor;
import android.database.sqlite.SQLiteStatement;
import org.greenrobot.greendao.AbstractDao;
import org.greenrobot.greendao.Property;
import org.greenrobot.greendao.internal.DaoConfig;
import org.greenrobot.greendao.database.Database;
import org.greenrobot.greendao.database.DatabaseStatement;
import com.gingersoft.gsa.cloud.database.bean.FoodModifier;
// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
/**
* DAO for table "FOOD_MODIFIER".
*/
public class FoodModifierDao extends AbstractDao<FoodModifier, Long> {
public static final String TABLENAME = "FOOD_MODIFIER";
/**
* Properties of entity FoodModifier.<br/>
* Can be used for QueryBuilder and for referencing column names.
*/
public static class Properties {
public final static Property Dbid = new Property(0, Long.class, "dbid", true, "_id");
public final static Property Id = new Property(1, Long.class, "id", false, "ID");
public final static Property Fid = new Property(2, Long.class, "fid", false, "FID");
public final static Property Mid = new Property(3, Long.class, "mid", false, "MID");
}
private DaoSession daoSession;
public FoodModifierDao(DaoConfig config) {
super(config);
}
public FoodModifierDao(DaoConfig config, DaoSession daoSession) {
super(config, daoSession);
this.daoSession = daoSession;
}
/** Creates the underlying database table. */
public static void createTable(Database db, boolean ifNotExists) {
String constraint = ifNotExists? "IF NOT EXISTS ": "";
db.execSQL("CREATE TABLE " + constraint + "\"FOOD_MODIFIER\" (" + //
"\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: dbid
"\"ID\" INTEGER NOT NULL ," + // 1: id
"\"FID\" INTEGER," + // 2: fid
"\"MID\" INTEGER);"); // 3: mid
}
/** Drops the underlying database table. */
public static void dropTable(Database db, boolean ifExists) {
String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"FOOD_MODIFIER\"";
db.execSQL(sql);
}
@Override
protected final void bindValues(DatabaseStatement stmt, FoodModifier entity) {
stmt.clearBindings();
Long dbid = entity.getDbid();
if (dbid != null) {
stmt.bindLong(1, dbid);
}
stmt.bindLong(2, entity.getId());
Long fid = entity.getFid();
if (fid != null) {
stmt.bindLong(3, fid);
}
Long mid = entity.getMid();
if (mid != null) {
stmt.bindLong(4, mid);
}
}
@Override
protected final void bindValues(SQLiteStatement stmt, FoodModifier entity) {
stmt.clearBindings();
Long dbid = entity.getDbid();
if (dbid != null) {
stmt.bindLong(1, dbid);
}
stmt.bindLong(2, entity.getId());
Long fid = entity.getFid();
if (fid != null) {
stmt.bindLong(3, fid);
}
Long mid = entity.getMid();
if (mid != null) {
stmt.bindLong(4, mid);
}
}
@Override
protected final void attachEntity(FoodModifier entity) {
super.attachEntity(entity);
entity.__setDaoSession(daoSession);
}
@Override
public Long readKey(Cursor cursor, int offset) {
return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0);
}
@Override
public FoodModifier readEntity(Cursor cursor, int offset) {
FoodModifier entity = new FoodModifier( //
cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // dbid
cursor.getLong(offset + 1), // id
cursor.isNull(offset + 2) ? null : cursor.getLong(offset + 2), // fid
cursor.isNull(offset + 3) ? null : cursor.getLong(offset + 3) // mid
);
return entity;
}
@Override
public void readEntity(Cursor cursor, FoodModifier entity, int offset) {
entity.setDbid(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0));
entity.setId(cursor.getLong(offset + 1));
entity.setFid(cursor.isNull(offset + 2) ? null : cursor.getLong(offset + 2));
entity.setMid(cursor.isNull(offset + 3) ? null : cursor.getLong(offset + 3));
}
@Override
protected final Long updateKeyAfterInsert(FoodModifier entity, long rowId) {
entity.setDbid(rowId);
return rowId;
}
@Override
public Long getKey(FoodModifier entity) {
if(entity != null) {
return entity.getDbid();
} else {
return null;
}
}
@Override
public boolean hasKey(FoodModifier entity) {
return entity.getDbid() != null;
}
@Override
protected final boolean isEntityUpdateable() {
return true;
}
}
......@@ -24,12 +24,13 @@ public class FunctionDao extends AbstractDao<Function, Long> {
* Can be used for QueryBuilder and for referencing column names.
*/
public static class Properties {
public final static Property Id = new Property(0, Long.class, "id", true, "_id");
public final static Property Status = new Property(1, int.class, "status", false, "STATUS");
public final static Property EffectiveTime = new Property(2, long.class, "effectiveTime", false, "EFFECTIVE_TIME");
public final static Property ResName = new Property(3, String.class, "resName", false, "RES_NAME");
public final static Property ResUrl = new Property(4, String.class, "resUrl", false, "RES_URL");
public final static Property ImageURL = new Property(5, String.class, "imageURL", false, "IMAGE_URL");
public final static Property Dbid = new Property(0, Long.class, "dbid", true, "_id");
public final static Property Id = new Property(1, Long.class, "id", false, "ID");
public final static Property Status = new Property(2, int.class, "status", false, "STATUS");
public final static Property EffectiveTime = new Property(3, long.class, "effectiveTime", false, "EFFECTIVE_TIME");
public final static Property ResName = new Property(4, String.class, "resName", false, "RES_NAME");
public final static Property ResUrl = new Property(5, String.class, "resUrl", false, "RES_URL");
public final static Property ImageURL = new Property(6, String.class, "imageURL", false, "IMAGE_URL");
}
......@@ -45,12 +46,13 @@ public class FunctionDao extends AbstractDao<Function, Long> {
public static void createTable(Database db, boolean ifNotExists) {
String constraint = ifNotExists? "IF NOT EXISTS ": "";
db.execSQL("CREATE TABLE " + constraint + "\"FUNCTION\" (" + //
"\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id
"\"STATUS\" INTEGER NOT NULL ," + // 1: status
"\"EFFECTIVE_TIME\" INTEGER NOT NULL ," + // 2: effectiveTime
"\"RES_NAME\" TEXT," + // 3: resName
"\"RES_URL\" TEXT," + // 4: resUrl
"\"IMAGE_URL\" TEXT);"); // 5: imageURL
"\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: dbid
"\"ID\" INTEGER NOT NULL ," + // 1: id
"\"STATUS\" INTEGER NOT NULL ," + // 2: status
"\"EFFECTIVE_TIME\" INTEGER NOT NULL ," + // 3: effectiveTime
"\"RES_NAME\" TEXT," + // 4: resName
"\"RES_URL\" TEXT," + // 5: resUrl
"\"IMAGE_URL\" TEXT);"); // 6: imageURL
}
/** Drops the underlying database table. */
......@@ -63,26 +65,27 @@ public class FunctionDao extends AbstractDao<Function, Long> {
protected final void bindValues(DatabaseStatement stmt, Function entity) {
stmt.clearBindings();
Long id = entity.getId();
if (id != null) {
stmt.bindLong(1, id);
Long dbid = entity.getDbid();
if (dbid != null) {
stmt.bindLong(1, dbid);
}
stmt.bindLong(2, entity.getStatus());
stmt.bindLong(3, entity.getEffectiveTime());
stmt.bindLong(2, entity.getId());
stmt.bindLong(3, entity.getStatus());
stmt.bindLong(4, entity.getEffectiveTime());
String resName = entity.getResName();
if (resName != null) {
stmt.bindString(4, resName);
stmt.bindString(5, resName);
}
String resUrl = entity.getResUrl();
if (resUrl != null) {
stmt.bindString(5, resUrl);
stmt.bindString(6, resUrl);
}
String imageURL = entity.getImageURL();
if (imageURL != null) {
stmt.bindString(6, imageURL);
stmt.bindString(7, imageURL);
}
}
......@@ -90,26 +93,27 @@ public class FunctionDao extends AbstractDao<Function, Long> {
protected final void bindValues(SQLiteStatement stmt, Function entity) {
stmt.clearBindings();
Long id = entity.getId();
if (id != null) {
stmt.bindLong(1, id);
Long dbid = entity.getDbid();
if (dbid != null) {
stmt.bindLong(1, dbid);
}
stmt.bindLong(2, entity.getStatus());
stmt.bindLong(3, entity.getEffectiveTime());
stmt.bindLong(2, entity.getId());
stmt.bindLong(3, entity.getStatus());
stmt.bindLong(4, entity.getEffectiveTime());
String resName = entity.getResName();
if (resName != null) {
stmt.bindString(4, resName);
stmt.bindString(5, resName);
}
String resUrl = entity.getResUrl();
if (resUrl != null) {
stmt.bindString(5, resUrl);
stmt.bindString(6, resUrl);
}
String imageURL = entity.getImageURL();
if (imageURL != null) {
stmt.bindString(6, imageURL);
stmt.bindString(7, imageURL);
}
}
......@@ -121,36 +125,38 @@ public class FunctionDao extends AbstractDao<Function, Long> {
@Override
public Function readEntity(Cursor cursor, int offset) {
Function entity = new Function( //
cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id
cursor.getInt(offset + 1), // status
cursor.getLong(offset + 2), // effectiveTime
cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // resName
cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // resUrl
cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5) // imageURL
cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // dbid
cursor.getLong(offset + 1), // id
cursor.getInt(offset + 2), // status
cursor.getLong(offset + 3), // effectiveTime
cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // resName
cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // resUrl
cursor.isNull(offset + 6) ? null : cursor.getString(offset + 6) // imageURL
);
return entity;
}
@Override
public void readEntity(Cursor cursor, Function entity, int offset) {
entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0));
entity.setStatus(cursor.getInt(offset + 1));
entity.setEffectiveTime(cursor.getLong(offset + 2));
entity.setResName(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3));
entity.setResUrl(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4));
entity.setImageURL(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5));
entity.setDbid(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0));
entity.setId(cursor.getLong(offset + 1));
entity.setStatus(cursor.getInt(offset + 2));
entity.setEffectiveTime(cursor.getLong(offset + 3));
entity.setResName(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4));
entity.setResUrl(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5));
entity.setImageURL(cursor.isNull(offset + 6) ? null : cursor.getString(offset + 6));
}
@Override
protected final Long updateKeyAfterInsert(Function entity, long rowId) {
entity.setId(rowId);
entity.setDbid(rowId);
return rowId;
}
@Override
public Long getKey(Function entity) {
if(entity != null) {
return entity.getId();
return entity.getDbid();
} else {
return null;
}
......@@ -158,7 +164,7 @@ public class FunctionDao extends AbstractDao<Function, Long> {
@Override
public boolean hasKey(Function entity) {
return entity.getId() != null;
return entity.getDbid() != null;
}
@Override
......
package com.gingersoft.gsa.cloud.database.utils;
import android.content.Context;
import android.util.Log;
import com.gingersoft.gsa.cloud.database.DaoManager;
import com.gingersoft.gsa.cloud.database.bean.Combo;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.greendao.ComboDao;
import com.gingersoft.gsa.cloud.database.greendao.FoodDao;
import org.greenrobot.greendao.query.QueryBuilder;
import java.util.ArrayList;
import java.util.List;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-01-02
* 修订历史:2020-01-02
* 描述:
*/
public class ComboDaoUtils {
private static final String TAG = ComboDaoUtils.class.getSimpleName();
private DaoManager mManager;
private Context mContext;
public ComboDaoUtils(Context context) {
mManager = DaoManager.getInstance();
mManager.init(context);
this.mContext =context;
}
/**
* 完成Food记录的插入,如果表未创建,先创建Food表
*
* @param combo
* @return
*/
public boolean insertCombo(Combo combo) {
boolean flag = false;
flag = mManager.getDaoSession().getComboDao().insert(combo) == -1 ? false : true;
Log.i(TAG, "insert Combo :" + flag + "-->" + combo.toString());
return flag;
}
/**
* 插入多条数据,在子线程操作
*
* @param foodList
* @return
*/
public boolean insertMultCombo(final List<Combo> foodList) {
boolean flag = false;
try {
mManager.getDaoSession().runInTx(new Runnable() {
@Override
public void run() {
for (Combo Food : foodList) {
mManager.getDaoSession().insertOrReplace(Food);
}
}
});
flag = true;
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
/**
* 修改一条数据
*
* @param combo
* @return
*/
public boolean updateCombo(Combo combo) {
boolean flag = false;
try {
mManager.getDaoSession().update(combo);
flag = true;
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
/**
* 删除单条记录
*
* @param food
* @return
*/
public boolean deleteCombo(Combo food) {
boolean flag = false;
try {
//按照id删除
mManager.getDaoSession().delete(food);
flag = true;
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
/**
* 删除所有记录
*
* @return
*/
public boolean deleteAll() {
boolean flag = false;
try {
//按照id删除
mManager.getDaoSession().deleteAll(Combo.class);
flag = true;
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
/**
* 查询所有记录
*
* @return
*/
public List<Combo> queryAllCombo() {
return mManager.getDaoSession().loadAll(Combo.class);
}
/**
* 根据主键id查询记录
*
* @param key
* @return
*/
public Combo queryComboById(long key) {
return mManager.getDaoSession().load(Combo.class, key);
}
/**
* 使用native sql进行查询操作
*/
public List<Combo> queryComboByNativeSql(String sql, String[] conditions) {
return mManager.getDaoSession().queryRaw(Combo.class, sql, conditions);
}
/**
* 使用queryBuilder进行查询食品
*
* @return
*/
public List<Combo> queryComboFoodsByQueryBuilder(long fid) {
Combo combo = queryComboByQueryBuilder(fid);
List<Combo> combos = null;
if (combo != null) {
combos = queryCombosByComIdQueryBuilder(combo.getComId());
}
List<Combo> list = new ArrayList<>();
FoodDaoUtils foodDao = new FoodDaoUtils(mContext);
if (combos != null) {
for (int i = 0; i < combos.size(); i++) {
Food food = foodDao.queryFoodByFidQueryBuilder(combos.get(i).getFid());
list.add(Combo.addFoodInfo(food,combos.get(i)));
}
}
return list;
}
/**
* 使用queryBuilder进行查询食品
*
* @return
*/
public Combo queryComboByQueryBuilder(long fid) {
QueryBuilder<Combo> queryBuilder = mManager.getDaoSession().queryBuilder(Combo.class);
return queryBuilder.where(ComboDao.Properties.Fid.eq(fid)).build().unique();
}
/**
* 使用queryBuilder进行查询食品
*
* @return
*/
public List<Combo> queryCombosByComIdQueryBuilder(int comId) {
QueryBuilder<Combo> queryBuilder = mManager.getDaoSession().queryBuilder(Combo.class);
return queryBuilder.where(ComboDao.Properties.ComId.eq(comId)).list();
}
}
//package com.gingersoft.gsa.cloud.database.utils;
package com.gingersoft.gsa.cloud.database.utils;//package com.gingersoft.gsa.cloud.database.utils;
//
//import android.content.Context;
//import android.util.Log;
......
......@@ -159,6 +159,15 @@ public class FoodDaoUtils {
* 使用queryBuilder进行查询食品
* @return
*/
public Food queryFoodByFidQueryBuilder(long fid){
QueryBuilder<Food> queryBuilder = mManager.getDaoSession().queryBuilder(Food.class);
return queryBuilder.where(FoodDao.Properties.Id.eq(fid)).build().unique();
}
/**
* 使用queryBuilder进行查询食品
* @return
*/
public Food queryFoodByQueryBuilder(String plu){
QueryBuilder<Food> queryBuilder = mManager.getDaoSession().queryBuilder(Food.class);
return queryBuilder.where(FoodDao.Properties.Plu.eq(plu)).build().unique();
......
package com.gingersoft.gsa.cloud.database.utils;
import android.content.Context;
import android.util.Log;
import com.gingersoft.gsa.cloud.database.DaoManager;
import com.gingersoft.gsa.cloud.database.bean.Combo;
import com.gingersoft.gsa.cloud.database.bean.FoodModifier;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.database.greendao.ComboDao;
import com.gingersoft.gsa.cloud.database.greendao.FoodModifierDao;
import com.gingersoft.gsa.cloud.database.greendao.ModifierDao;
import org.greenrobot.greendao.query.QueryBuilder;
import java.util.ArrayList;
import java.util.List;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-01-02
* 修订历史:2020-01-02
* 描述:
*/
public class FoodModifierDaoUtils {
private static final String TAG = FoodModifierDaoUtils.class.getSimpleName();
private DaoManager mManager;
private Context mContext;
public FoodModifierDaoUtils(Context context) {
mManager = DaoManager.getInstance();
mManager.init(context);
this.mContext = context;
}
/**
* 完成Food记录的插入,如果表未创建,先创建Food表
*
* @param foodModifier
* @return
*/
public boolean insertCombo(FoodModifier foodModifier) {
boolean flag = false;
flag = mManager.getDaoSession().getFoodModifierDao().insert(foodModifier) == -1 ? false : true;
Log.i(TAG, "insert FoodModifier :" + flag + "-->" + foodModifier.toString());
return flag;
}
/**
* 插入多条数据,在子线程操作
*
* @param foodList
* @return
*/
public boolean insertMultFoodModifier(final List<FoodModifier> foodList) {
boolean flag = false;
try {
mManager.getDaoSession().runInTx(new Runnable() {
@Override
public void run() {
for (FoodModifier Food : foodList) {
mManager.getDaoSession().insertOrReplace(Food);
}
}
});
flag = true;
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
/**
* 修改一条数据
*
* @param foodModifier
* @return
*/
public boolean updateFoodModifier(FoodModifier foodModifier) {
boolean flag = false;
try {
mManager.getDaoSession().update(foodModifier);
flag = true;
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
/**
* 删除单条记录
*
* @param food
* @return
*/
public boolean deleteFoodModifier(FoodModifier food) {
boolean flag = false;
try {
//按照id删除
mManager.getDaoSession().delete(food);
flag = true;
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
/**
* 删除所有记录
*
* @return
*/
public boolean deleteAll() {
boolean flag = false;
try {
//按照id删除
mManager.getDaoSession().deleteAll(FoodModifier.class);
flag = true;
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
/**
* 查询所有记录
*
* @return
*/
public List<FoodModifier> queryAllFoodModifier() {
return mManager.getDaoSession().loadAll(FoodModifier.class);
}
/**
* 根据主键id查询记录
*
* @param key
* @return
*/
public FoodModifier queryFoodModifierById(long key) {
return mManager.getDaoSession().load(FoodModifier.class, key);
}
/**
* 使用queryBuilder进行查询食品
*
* @return
*/
public List<Modifier> queryModifiersByQueryBuilder(long fid) {
List<FoodModifier> foodModifiers = queryFoodModifiersByMidQueryBuilder(fid);
List<Modifier> list = new ArrayList<>();
ModifierDaoUtils modifierDao = new ModifierDaoUtils(mContext);
if (foodModifiers != null) {
for (int i = 0; i < foodModifiers.size(); i++) {
Modifier modifier = modifierDao.queryModifierByQueryBuilder(foodModifiers.get(i).getMid());
list.add(modifier);
}
}
return list;
}
/**
* 使用native sql进行查询操作
*/
public List<FoodModifier> queryFoodModifierByNativeSql(String sql, String[] conditions) {
return mManager.getDaoSession().queryRaw(FoodModifier.class, sql, conditions);
}
/**
* 使用queryBuilder进行查询食品
*
* @return
*/
public FoodModifier queryFoodModifierByQueryBuilder(long fid) {
QueryBuilder<FoodModifier> queryBuilder = mManager.getDaoSession().queryBuilder(FoodModifier.class);
return queryBuilder.where(FoodModifierDao.Properties.Fid.eq(fid)).build().unique();
}
/**
* 使用queryBuilder进行查询食品
*
* @return
*/
public List<FoodModifier> queryFoodModifiersByMidQueryBuilder(long fid) {
QueryBuilder<FoodModifier> queryBuilder = mManager.getDaoSession().queryBuilder(FoodModifier.class);
return queryBuilder.where(FoodModifierDao.Properties.Fid.eq(fid)).list();
}
}
package com.gingersoft.gsa.cloud.database.utils;
import android.content.Context;
import android.util.Log;
import com.gingersoft.gsa.cloud.database.DaoManager;
import com.gingersoft.gsa.cloud.database.bean.Combo;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.database.greendao.ComboDao;
import com.gingersoft.gsa.cloud.database.greendao.FoodModifierDao;
import com.gingersoft.gsa.cloud.database.greendao.ModifierDao;
import org.greenrobot.greendao.query.QueryBuilder;
import java.util.ArrayList;
import java.util.List;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-01-02
* 修订历史:2020-01-02
* 描述:
*/
public class ModifierDaoUtils {
private static final String TAG = ModifierDaoUtils.class.getSimpleName();
private DaoManager mManager;
private Context mContext;
public ModifierDaoUtils(Context context){
mManager = DaoManager.getInstance();
mManager.init(context);
this.mContext = context;
}
/**
* 完成Food记录的插入,如果表未创建,先创建Food表
* @param modifier
* @return
*/
public boolean insertModifier(Modifier modifier){
boolean flag = false;
flag = mManager.getDaoSession().getModifierDao().insert(modifier) == -1 ? false : true;
Log.i(TAG, "insert Modifier :" + flag + "-->" + modifier.toString());
return flag;
}
/**
* 插入多条数据,在子线程操作
* @param foodList
* @return
*/
public boolean insertMultModifier(final List<Modifier> foodList) {
boolean flag = false;
try {
mManager.getDaoSession().runInTx(new Runnable() {
@Override
public void run() {
for (Modifier Food : foodList) {
mManager.getDaoSession().insertOrReplace(Food);
}
}
});
flag = true;
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
/**
* 修改一条数据
* @param modifier
* @return
*/
public boolean updateModifier(Modifier modifier){
boolean flag = false;
try {
mManager.getDaoSession().update(modifier);
flag = true;
}catch (Exception e){
e.printStackTrace();
}
return flag;
}
/**
* 删除单条记录
* @param modifier
* @return
*/
public boolean deleteModifier(Modifier modifier){
boolean flag = false;
try {
//按照id删除
mManager.getDaoSession().delete(modifier);
flag = true;
}catch (Exception e){
e.printStackTrace();
}
return flag;
}
/**
* 删除所有记录
* @return
*/
public boolean deleteAll(){
boolean flag = false;
try {
//按照id删除
mManager.getDaoSession().deleteAll(Modifier.class);
flag = true;
}catch (Exception e){
e.printStackTrace();
}
return flag;
}
/**
* 查询所有记录
* @return
*/
public List<Modifier> queryAllModifier(){
return mManager.getDaoSession().loadAll(Modifier.class);
}
/**
* 根据主键id查询记录
* @param key
* @return
*/
public Modifier queryModifierById(long key){
return mManager.getDaoSession().load(Modifier.class, key);
}
/**
* 使用native sql进行查询操作
*/
public List<Modifier> queryModifierByNativeSql(String sql, String[] conditions){
return mManager.getDaoSession().queryRaw(Modifier.class, sql, conditions);
}
/**
* 使用queryBuilder进行查询食品
* @return
*/
public Modifier queryModifierByQueryBuilder(long mid){
QueryBuilder<Modifier> queryBuilder = mManager.getDaoSession().queryBuilder(Modifier.class);
return queryBuilder.where(ModifierDao.Properties.Mid.eq(mid)).build().unique();
}
/**
* 使用queryBuilder进行查询食品
* @param mid
* @return
*/
public List<Modifier> queryModifierByMidIdQueryBuilder(long mid) {
QueryBuilder<Modifier> queryBuilder = mManager.getDaoSession().queryBuilder(Modifier.class);
return queryBuilder.where(ModifierDao.Properties.Mid.eq(mid)).list();
}
/**
* 使用queryBuilder进行查询食品
* @param mod_msg
* @param visible
* @return
*/
public List<Modifier> queryModifierByModMsgAndVisibleQueryBuilder(String mod_msg,int visible) {
QueryBuilder<Modifier> queryBuilder = mManager.getDaoSession().queryBuilder(Modifier.class);
return queryBuilder.where(ModifierDao.Properties.ModMsg.eq(mod_msg)).where(ModifierDao.Properties.Invisible.eq(visible)).list();
}
/**
* 使用queryBuilder进行查询食品
* @param mod_taste
* @param visible
* @return
*/
public List<Modifier> queryModifierByModModTasteVisibleQueryBuilder(long mod_taste,int visible) {
QueryBuilder<Modifier> queryBuilder = mManager.getDaoSession().queryBuilder(Modifier.class);
return queryBuilder.where(ModifierDao.Properties.ModTaste.eq(mod_taste)).where(ModifierDao.Properties.Invisible.eq(visible)).list();
}
/**
* 使用queryBuilder进行查询食品
* @param topid
* @param visible
* @return
*/
public List<Modifier> queryModifierByTopidAndVisibleQueryBuilder(long topid,int visible) {
QueryBuilder<Modifier> queryBuilder = mManager.getDaoSession().queryBuilder(Modifier.class);
return queryBuilder.where(ModifierDao.Properties.TopId.eq(topid)).where(ModifierDao.Properties.Invisible.eq(visible)).list();
}
}
//package com.gingersoft.gsa.cloud.database.utils;
package com.gingersoft.gsa.cloud.database.utils;//package com.gingersoft.gsa.cloud.database.utils;
//
//import android.content.Context;
//import android.util.Log;
......
package network.config;
package com.gingersoft.gsa.cloud.globalconfig;
import android.app.Application;
import android.content.Context;
import com.gingersoft.gsa.cloud.base.utils.constans.HttpsConstans;
import com.gingersoft.gsa.cloud.globalconfig.applyOptions.MyGlobalHttpHandler;
import com.gingersoft.gsa.cloud.globalconfig.applyOptions.MyGsonConfiguration;
import com.gingersoft.gsa.cloud.globalconfig.applyOptions.MyOkhttpConfiguration;
import com.gingersoft.gsa.cloud.globalconfig.applyOptions.MyResponseErrorListener;
import com.gingersoft.gsa.cloud.globalconfig.applyOptions.MyRetrofitConfiguration;
import com.gingersoft.gsa.cloud.globalconfig.applyOptions.MyRxCacheConfiguration;
import com.gingersoft.gsa.cloud.globalconfig.lifecyclesOptioins.MyActivityLifecycle;
import com.gingersoft.gsa.cloud.globalconfig.lifecyclesOptioins.MyAppLifecycles;
import com.jess.arms.base.delegate.AppLifecycles;
import com.jess.arms.di.module.GlobalConfigModule;
import com.jess.arms.integration.ConfigModule;
import com.jess.arms.utils.DataHelper;
import com.gingersoft.gsa.cloud.base.utils.constans.HttpsConstans;
import java.io.File;
import java.util.List;
import androidx.fragment.app.FragmentManager;
import network.config.applyOptions.MyGlobalHttpHandler;
import network.config.applyOptions.MyGsonConfiguration;
import network.config.applyOptions.MyOkhttpConfiguration;
import network.config.applyOptions.MyResponseErrorListener;
import network.config.applyOptions.MyRetrofitConfiguration;
import network.config.applyOptions.MyRxCacheConfiguration;
import network.config.lifecyclesOptioins.MyActivityLifecycle;
import network.config.lifecyclesOptioins.MyAppLifecycles;
public class GlobalConfiguration implements ConfigModule {
......
package network.config.applyOptions;
package com.gingersoft.gsa.cloud.globalconfig.applyOptions;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.request.RequestUtils;
import com.jess.arms.http.GlobalHttpHandler;
import com.gingersoft.gsa.cloud.base.utils.constans.AppConstans;
import com.gingersoft.gsa.cloud.base.utils.encryption.Aes;
import com.gingersoft.gsa.cloud.base.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.base.utils.other.AppUtils;
import com.jess.arms.http.GlobalHttpHandler;
import okhttp3.Headers;
import okhttp3.Interceptor;
......@@ -30,7 +29,6 @@ public class MyGlobalHttpHandler implements GlobalHttpHandler {
// 统一处理http请求。eg:给request统一添加token或者header以及参数加密等操作
String requestBody = request.toString();
e(requestBody);
String url = chain.request().url().url().toString();
String token = "";
......
package network.config.applyOptions;
package com.gingersoft.gsa.cloud.globalconfig.applyOptions;
import android.content.Context;
import com.jess.arms.di.module.ClientModule;
import java.util.concurrent.TimeUnit;
import me.jessyan.progressmanager.ProgressManager;
import me.jessyan.retrofiturlmanager.RetrofitUrlManager;
import okhttp3.OkHttpClient;
......
package network.config.applyOptions;
package com.gingersoft.gsa.cloud.globalconfig.applyOptions;
import android.content.Context;
import android.net.ParseException;
import com.gingersoft.gsa.cloud.network.R;
import com.gingersoft.gsa.cloud.base.R;
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.gingersoft.gsa.cloud.base.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
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;
......
package network.config.applyOptions;
package com.gingersoft.gsa.cloud.globalconfig.applyOptions;
import android.content.Context;
import com.gingersoft.gsa.cloud.globalconfig.applyOptions.intercept.LoggingInterceptor;
import com.jess.arms.di.module.ClientModule;
import network.config.applyOptions.intercept.LoggingInterceptor;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
......
package network.config.applyOptions.intercept;
package com.gingersoft.gsa.cloud.globalconfig.applyOptions.intercept;
import android.util.Log;
import com.billy.cc.core.component.Chain;
import com.gingersoft.gsa.cloud.base.utils.log.LogUtil;
import java.io.IOException;
......
package network.config.lifecyclesOptioins;
package com.gingersoft.gsa.cloud.globalconfig.lifecyclesOptioins;
import android.annotation.SuppressLint;
import android.app.Activity;
......
package network.config.lifecyclesOptioins;
package com.gingersoft.gsa.cloud.globalconfig.lifecyclesOptioins;
import android.app.Application;
import android.content.Context;
import com.jess.arms.base.delegate.AppLifecycles;
import com.squareup.leakcanary.RefWatcher;
//import com.alibaba.android.arouter.launcher.ARouter;
......
package com.gingersoft.gsa.cloud.ui.adapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.base.R;
import com.gingersoft.gsa.cloud.base.R2;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionHeader;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem;
import com.gingersoft.gsa.cloud.ui.view.BaseTextSection;
import com.qmuiteam.qmui.widget.section.QMUIDefaultStickySectionAdapter;
import com.qmuiteam.qmui.widget.section.QMUISection;
import com.qmuiteam.qmui.widget.section.QMUIStickySectionAdapter;
import androidx.annotation.NonNull;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-02-09
* 修订历史:2020-02-09
* 描述:
*/
public class BasTextSectiontAdapter extends QMUIDefaultStickySectionAdapter<SectionHeader, SectionTextItem> {
@NonNull
@Override
protected QMUIStickySectionAdapter.ViewHolder onCreateSectionHeaderViewHolder(@NonNull ViewGroup viewGroup) {
return new QMUIStickySectionAdapter.ViewHolder(new BaseTextSection(viewGroup.getContext()));
}
@NonNull
@Override
protected ViewHolder onCreateSectionItemViewHolder(@NonNull ViewGroup viewGroup) {
return new ViewHolder(View.inflate(viewGroup.getContext(), R.layout.iu_item_base_text_section, null));
}
@Override
protected void onBindSectionHeader(QMUIStickySectionAdapter.ViewHolder holder, int position, QMUISection<SectionHeader, SectionTextItem> section) {
super.onBindSectionHeader(holder, position, section);
BaseTextSection itemView = (BaseTextSection) holder.itemView;
itemView.render(section.getHeader(), section.isFold());
}
@Override
protected void onBindSectionItem(QMUIStickySectionAdapter.ViewHolder holder, int position, QMUISection<SectionHeader, SectionTextItem> section, int itemIndex) {
super.onBindSectionItem(holder, position, section, itemIndex);
ViewHolder viewHolder = (ViewHolder) holder;
viewHolder.tv_name.setText(section.getItemAt(itemIndex).getText());
}
public class ViewHolder extends QMUIStickySectionAdapter.ViewHolder {
@BindView(R2.id.tv_name)
TextView tv_name;//功能名
public ViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
public TextView getTvName() {
return tv_name;
}
public SectionTextItem getSectionTextItem(int position) {
SectionTextItem item = getSectionItem(position);
return item;
}
}
}
package com.gingersoft.gsa.cloud.ui.adapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.gingersoft.gsa.cloud.base.R;
import com.gingersoft.gsa.cloud.base.R2;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionHeader;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionImageItem;
import com.gingersoft.gsa.cloud.ui.view.BaseTextSection;
import com.qmuiteam.qmui.widget.section.QMUIDefaultStickySectionAdapter;
import com.qmuiteam.qmui.widget.section.QMUISection;
import com.qmuiteam.qmui.widget.section.QMUIStickySectionAdapter;
import androidx.annotation.NonNull;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-02-09
* 修订历史:2020-02-09
* 描述:
*/
public class BaseImageSectiontAdapter extends QMUIDefaultStickySectionAdapter<SectionHeader, SectionImageItem> {
@NonNull
@Override
protected QMUIStickySectionAdapter.ViewHolder onCreateSectionHeaderViewHolder(@NonNull ViewGroup viewGroup) {
return new QMUIStickySectionAdapter.ViewHolder(new BaseTextSection(viewGroup.getContext()));
}
@NonNull
@Override
protected ViewHolder onCreateSectionItemViewHolder(@NonNull ViewGroup viewGroup) {
return new ViewHolder(View.inflate(viewGroup.getContext(), R.layout.iu_item_base_image_section, null));
}
@Override
protected void onBindSectionHeader(QMUIStickySectionAdapter.ViewHolder holder, int position, QMUISection<SectionHeader, SectionImageItem> section) {
super.onBindSectionHeader(holder, position, section);
BaseTextSection itemView = (BaseTextSection) holder.itemView;
itemView.render(section.getHeader(), section.isFold());
}
@Override
protected void onBindSectionItem(QMUIStickySectionAdapter.ViewHolder holder, int position, QMUISection<SectionHeader, SectionImageItem> section, int itemIndex) {
super.onBindSectionItem(holder, position, section, itemIndex);
ViewHolder viewHolder = (ViewHolder) holder;
viewHolder.iv_icon.setImageResource(section.getItemAt(itemIndex).getImage());
}
public class ViewHolder extends QMUIStickySectionAdapter.ViewHolder {
@BindView(R2.id.iv_icon)
ImageView iv_icon;//功能名
public ViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
public ImageView getIcon() {
return iv_icon;
}
}
}
package com.gingersoft.gsa.cloud.ui.bean.mode;
import java.util.List;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2019-12-28
* 修订历史:2019-12-28
* 描述:
*/
public class LoginBean {
/**
* success : true
* sysTime : 1578563902000
* data : {"user":{"userId":1,"userName":"admin","brands":[{"brandId":242,"brandName":"莫拉塔","restaurants":[]},{"brandId":243,"brandName":"蕭蕭","restaurants":[{"restaurantId":337,"restaurantName":"小張"}]}]},"token":"24ce30df203b41619a21967dbd9988b9"}
*/
private boolean success;
private String errMsg;
private long sysTime;
private DataBean data;
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public String getErrMsg() {
return errMsg;
}
public void setErrMsg(String errMsg) {
this.errMsg = errMsg;
}
public long getSysTime() {
return sysTime;
}
public void setSysTime(long sysTime) {
this.sysTime = sysTime;
}
public DataBean getData() {
return data;
}
public void setData(DataBean data) {
this.data = data;
}
public static class DataBean {
/**
* user : {"userId":1,"userName":"admin","brands":[{"brandId":242,"brandName":"莫拉塔","restaurants":[]},{"brandId":243,"brandName":"蕭蕭","restaurants":[{"restaurantId":337,"restaurantName":"小張"}]}]}
* token : 24ce30df203b41619a21967dbd9988b9
*/
private UserBean user;
private String token;
public UserBean getUser() {
return user;
}
public void setUser(UserBean user) {
this.user = user;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public static class UserBean {
/**
* userId : 1
* userName : admin
* brands : [{"brandId":242,"brandName":"莫拉塔","restaurants":[]},{"brandId":243,"brandName":"蕭蕭","restaurants":[{"restaurantId":337,"restaurantName":"小張"}]}]
*/
private int userId;
private String userName;
private List<BrandsBean> brands;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public List<BrandsBean> getBrands() {
return brands;
}
public void setBrands(List<BrandsBean> brands) {
this.brands = brands;
}
public static class BrandsBean {
/**
* brandId : 242
* brandName : 莫拉塔
* restaurants : []
*/
private int brandId;
private String brandName;
private List<RestaurantsBean> restaurants;
public int getBrandId() {
return brandId;
}
public void setBrandId(int brandId) {
this.brandId = brandId;
}
public String getBrandName() {
return brandName;
}
public void setBrandName(String brandName) {
this.brandName = brandName;
}
public List<RestaurantsBean> getRestaurants() {
return restaurants;
}
public void setRestaurants(List<RestaurantsBean> restaurants) {
this.restaurants = restaurants;
}
public static class RestaurantsBean {
private int restaurantId;
private String restaurantName;
public int getRestaurantId() {
return restaurantId;
}
public void setRestaurantId(int restaurantId) {
this.restaurantId = restaurantId;
}
public String getRestaurantName() {
return restaurantName;
}
public void setRestaurantName(String restaurantName) {
this.restaurantName = restaurantName;
}
}
}
}
}
}
......@@ -15,7 +15,7 @@
*/
package com.gingersoft.gsa.cloud.main.mvp.model.bean;
package com.gingersoft.gsa.cloud.ui.bean.view;
import com.qmuiteam.qmui.widget.section.QMUISection.Model;
import java.util.Objects;
......
package com.gingersoft.gsa.cloud.ui.bean.view;
import com.qmuiteam.qmui.widget.section.QMUISection.Model;
import java.util.Objects;
/**
* 單個圖片
*/
public class SectionImageItem implements Model<SectionImageItem> {
private int image;
public SectionImageItem(int image) {
this.image = image;
}
public int getImage() {
return image;
}
@Override
public SectionImageItem cloneForDiff() {
return new SectionImageItem(getImage());
}
@Override
public boolean isSameItem(SectionImageItem other) {
return Objects.equals(image, other.image);
}
@Override
public boolean isSameContent(SectionImageItem other) {
return true;
}
}
package com.gingersoft.gsa.cloud.ui.bean.view;
import com.qmuiteam.qmui.widget.section.QMUISection.Model;
import java.util.Objects;
/**
* 文字加圖片
*/
public class SectionNormalItem implements Model<SectionNormalItem> {
private int image;
private String text;
public SectionNormalItem(int image, String text) {
this.image = image;
this.text = text;
}
public String getText() {
return text;
}
public int getImage() {
return image;
}
@Override
public SectionNormalItem cloneForDiff() {
return new SectionNormalItem(getImage(), getText());
}
@Override
public boolean isSameItem(SectionNormalItem other) {
return Objects.equals(text, other.text);
}
@Override
public boolean isSameContent(SectionNormalItem other) {
return true;
}
}
package com.gingersoft.gsa.cloud.ui.bean.view;
import com.qmuiteam.qmui.widget.section.QMUISection.Model;
import java.util.Objects;
/**
* 單個文字
*/
public class SectionTextItem implements Model<SectionTextItem> {
private int id;
private String text;
public SectionTextItem(int id, String text) {
this.id = id;
this.text = text;
}
public SectionTextItem(String text) {
this.text = text;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getText() {
return text;
}
@Override
public SectionTextItem cloneForDiff() {
return new SectionTextItem(getText());
}
@Override
public boolean isSameItem(SectionTextItem other) {
return Objects.equals(text, other.text);
}
@Override
public boolean isSameContent(SectionTextItem other) {
return true;
}
}
package com.gingersoft.gsa.cloud.ui.bean.view;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2018/11/27
* 修订历史:2018/11/27
* 描述:
*/
public class TagViewBean {
private boolean checked = false;
private String tagName;
private int id;
public TagViewBean(boolean checked, String tagName, int id) {
this.checked = checked;
this.tagName = tagName;
this.id = id;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public boolean isChecked() {
return checked;
}
public void setChecked(boolean checked) {
this.checked = checked;
}
public String getTagName() {
return tagName;
}
public void setTagName(String tagName) {
this.tagName = tagName;
}
}
package com.gingersoft.gsa.cloud.ui.recylcler;
import android.content.Context;
import android.util.AttributeSet;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2019-10-26
* 修订历史:2019-10-26
* 描述:
*/
public class RecyclerViewNoBugLinearLayoutManager extends LinearLayoutManager {
public RecyclerViewNoBugLinearLayoutManager(Context context) {
super(context);
}
public RecyclerViewNoBugLinearLayoutManager(Context context, int orientation, boolean reverseLayout) {
super(context, orientation, reverseLayout);
}
public RecyclerViewNoBugLinearLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) {
try {
//try catch一下
super.onLayoutChildren(recycler, state);
} catch (IndexOutOfBoundsException e) {
e.printStackTrace();
}
}
}
/*
* Tencent is pleased to support the open source community by making QMUI_Android available.
*
* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.
*
* Licensed under the MIT License (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
*
* http://opensource.org/licenses/MIT
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is
* distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.gingersoft.gsa.cloud.ui.recylcler.decorator;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.view.View;
import androidx.core.view.ViewCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
/**
* @author cginechen
* @date 2016-10-21
*/
public class DividerItemDecoration extends RecyclerView.ItemDecoration {
private static final int[] ATTRS = new int[]{
android.R.attr.listDivider
};
public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL;
public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL;
private Drawable mDivider;
private int mOrientation;
public DividerItemDecoration(Context context, int orientation) {
final TypedArray a = context.obtainStyledAttributes(ATTRS);
mDivider = a.getDrawable(0);
a.recycle();
setOrientation(orientation);
}
public void setOrientation(int orientation) {
if (orientation != HORIZONTAL_LIST && orientation != VERTICAL_LIST) {
throw new IllegalArgumentException("invalid orientation");
}
mOrientation = orientation;
}
@Override
public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
if (mOrientation == VERTICAL_LIST) {
drawVertical(c, parent);
} else {
drawHorizontal(c, parent);
}
}
public void drawVertical(Canvas c, RecyclerView parent) {
final int left = parent.getPaddingLeft();
final int right = parent.getWidth() - parent.getPaddingRight();
final int childCount = parent.getChildCount();
for (int i = 0; i < childCount; i++) {
final View child = parent.getChildAt(i);
final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
.getLayoutParams();
final int top = child.getBottom() + params.bottomMargin +
Math.round(ViewCompat.getTranslationY(child));
final int bottom = top + mDivider.getIntrinsicHeight();
mDivider.setBounds(left, top, right, bottom);
mDivider.draw(c);
}
}
public void drawHorizontal(Canvas c, RecyclerView parent) {
final int top = parent.getPaddingTop();
final int bottom = parent.getHeight() - parent.getPaddingBottom();
final int childCount = parent.getChildCount();
for (int i = 0; i < childCount; i++) {
final View child = parent.getChildAt(i);
final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
.getLayoutParams();
final int left = child.getRight() + params.rightMargin +
Math.round(ViewCompat.getTranslationX(child));
final int right = left + mDivider.getIntrinsicHeight();
mDivider.setBounds(left, top, right, bottom);
mDivider.draw(c);
}
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
if (mOrientation == VERTICAL_LIST) {
outRect.set(0, 0, 0, mDivider.getIntrinsicHeight());
} else {
outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0);
}
}
}
/*
* Tencent is pleased to support the open source community by making QMUI_Android available.
*
* Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved.
*
* Licensed under the MIT License (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
*
* http://opensource.org/licenses/MIT
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is
* distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.gingersoft.gsa.cloud.ui.recylcler.decorator;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.view.View;
import androidx.annotation.ColorInt;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
/**
* @author cginechen
* @date 2016-10-21
*/
public class GridDividerItemDecoration extends RecyclerView.ItemDecoration {
private Paint mPaint;
private int mDividerWidth;
public GridDividerItemDecoration(int height, @ColorInt int color) {
mDividerWidth = height;
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setColor(color);
mPaint.setStyle(Paint.Style.FILL);
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
int itemPosition = ((RecyclerView.LayoutParams) view.getLayoutParams()).getViewLayoutPosition();
int spanCount = getSpanCount(parent);
boolean isfirsColumn = isfirsColumn(itemPosition, spanCount);
boolean isLastColumn = isLastColumn(itemPosition, spanCount);
boolean isfirstRow = isfirstRow(itemPosition, spanCount);
int top;
int left;
int right;
int bottom;
int eachWidth = (spanCount - 1) * mDividerWidth / spanCount;
int dl = mDividerWidth - eachWidth;
left = itemPosition % spanCount * dl;
right = eachWidth - left;
bottom = mDividerWidth;
if (isfirstRow) {
top = mDividerWidth;
} else {
top = 0;
}
if (isfirsColumn) {
left = mDividerWidth;
}
if (isLastColumn) {
right = mDividerWidth;
}
outRect.set(left, top, right, bottom);
}
@Override
public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
super.onDraw(c, parent, state);
draw(c, parent);
}
private void draw(Canvas canvas, RecyclerView parent) {
int childSize = parent.getChildCount();
for (int i = 0; i < childSize; i++) {
View child = parent.getChildAt(i);
RecyclerView.LayoutParams layoutParams = (RecyclerView.LayoutParams) child.getLayoutParams();
/**
* 画水平分隔线
*/
int left = child.getLeft();
int right = child.getRight();
int top = child.getBottom() + layoutParams.bottomMargin;
int bottom = top + mDividerWidth;
canvas.drawRect(left, top, right, bottom, mPaint);
/**
* 画垂直分割线
*/
top = child.getTop();
bottom = child.getBottom() + mDividerWidth;
left = child.getRight() + layoutParams.rightMargin;
right = left + mDividerWidth;
canvas.drawRect(left, top, right, bottom, mPaint);
int spanCount = getSpanCount(parent);
/**
* 如果是第一行
*/
if (isfirstRow(i, spanCount)) {
canvas.drawRect(0, 0, right, mDividerWidth, mPaint);
}
/**
* 如果是第一列
*/
if (isfirsColumn(i, spanCount)) {
canvas.drawRect(0, 0, mDividerWidth, bottom, mPaint);
}
}
}
/**
* 判断是不是第一行
*
* @param pos
* @param spanCount
* @return
*/
private boolean isfirstRow(int pos, int spanCount) {
if ((pos / spanCount + 1) == 1) {
return true;
} else {
return false;
}
}
/**
* 判断是不是第一列
*
* @param pos
* @param spanCount
* @return
*/
private boolean isfirsColumn(int pos, int spanCount) {
if (pos % spanCount == 0) {
return true;
} else {
return false;
}
}
/**
* 判断是不是最后一列
*
* @param pos
* @param spanCount
* @return
*/
private boolean isLastColumn(int pos, int spanCount) {
if ((pos - spanCount + 1) % spanCount == 0) {
return true;
} else {
return false;
}
}
/**
* 列数
*
* @param parent
* @return
*/
private int getSpanCount(RecyclerView parent) {
RecyclerView.LayoutManager layoutManager = parent.getLayoutManager();
return ((GridLayoutManager) layoutManager).getSpanCount();
}
}
package com.gingersoft.gsa.cloud.ui.view;
import android.content.Context;
import android.graphics.Color;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.base.R;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionHeader;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import androidx.annotation.Nullable;
/**
* Created by Wyh on 2020/1/10.
*/
public class BaseTextSection extends LinearLayout {
private TextView mTitleTv;
public BaseTextSection(Context context) {
this(context, null);
}
public BaseTextSection(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
setOrientation(LinearLayout.HORIZONTAL);
setGravity(Gravity.CENTER_VERTICAL);
setBackgroundColor(Color.WHITE);
int paddingHor = QMUIDisplayHelper.dp2px(context, 10);
int paddingVer = QMUIDisplayHelper.dp2px(context, 8);
mTitleTv = new TextView(getContext());
mTitleTv.setTextSize(16);
mTitleTv.setTypeface(Typeface.DEFAULT_BOLD);
mTitleTv.setTextColor(getColor(context, R.color.black));
mTitleTv.setPadding(paddingHor, paddingVer, paddingHor, paddingVer);
mTitleTv.setGravity(Gravity.CENTER_VERTICAL);
addView(mTitleTv, new LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 1f));
setBackgroundColor(getColor(context, R.color.theme_white_color));
}
private int getColor(Context context, int colorId) {
return context.getResources().getColor(colorId);
}
// public ImageView getArrowView() {
// return mArrowView;
// }
public void render(SectionHeader header, boolean isFold) {
mTitleTv.setText(header.getText());
}
//
// @Override
// protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(headerHeight, MeasureSpec.EXACTLY));
// }
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment