Commit 7c01d339cec77ff91bcefc4d4aafc706ad957890

Authored by gaiyaguang
0 parents

v1.0

Showing 45 changed files with 4814 additions and 0 deletions

Too many changes to show.

To preserve performance only 45 of 45+ files are displayed.

*.iml
.gradle
/local.properties
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
.DS_Store
/build
/captures
.externalNativeBuild
... ...
No preview for this file type
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<Objective-C-extensions>
<file>
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Import" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Macro" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Typedef" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Enum" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Constant" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Global" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Struct" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="FunctionPredecl" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Function" />
</file>
<class>
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Property" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Synthesize" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InitMethod" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="StaticMethod" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InstanceMethod" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="DeallocMethod" />
</class>
<extensions>
<pair source="cpp" header="h" fileNamingConvention="NONE" />
<pair source="c" header="h" fileNamingConvention="NONE" />
</extensions>
</Objective-C-extensions>
</code_scheme>
</component>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
<option value="$PROJECT_DIR$/login" />
<option value="$PROJECT_DIR$/mvvmhabit" />
</set>
</option>
<option name="resolveModulePerSourceSet" value="false" />
</GradleProjectSettings>
</option>
</component>
</project>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="NullableNotNullManager">
<option name="myDefaultNullable" value="android.support.annotation.Nullable" />
<option name="myDefaultNotNull" value="android.support.annotation.NonNull" />
<option name="myNullables">
<value>
<list size="5">
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
<item index="2" class="java.lang.String" itemvalue="javax.annotation.CheckForNull" />
<item index="3" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" />
<item index="4" class="java.lang.String" itemvalue="android.support.annotation.Nullable" />
</list>
</value>
</option>
<option name="myNotNulls">
<value>
<list size="4">
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" />
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
<item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" />
<item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" />
</list>
</value>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
</set>
</option>
</component>
</project>
\ No newline at end of file
... ...
/build
... ...
apply plugin: 'com.android.application'
android {
compileSdkVersion 27
defaultConfig {
applicationId "com.naji.xiaotao"
minSdkVersion 15
targetSdkVersion 27
versionCode 1
versionName "1.0.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
ndk {
//选择要添加的对应cpu类型的.so库。
abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'
// 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
}
manifestPlaceholders = [
JPUSH_PKGNAME : "com.naji.xiaotao",
JPUSH_APPKEY : "7d1e57b0d37d8d4cdf945912", //JPush上注册的包名对应的appkey.
JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.
]
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dataBinding {
enabled true
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
implementation 'com.android.support:design:27.1.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation('com.jcodecraeer:xrecyclerview:1.5.9', {
exclude group: 'com.android.support', module: 'design'
})
//动态修改状态栏颜色
implementation 'com.githang:status-bar-compat:0.7'
//圆角图片
implementation 'com.github.Othershe:NiceImageView:1.0.1'
implementation 'cn.jiguang.sdk:jpush:3.1.5' // 此处以JPush 3.1.5 版本为例。
implementation 'cn.jiguang.sdk:jcore:1.2.3' // 此处以JCore 1.2.3 版本为例。
//MVVMHabit
implementation project(':mvvmhabit')
annotationProcessor "com.github.Raizlabs.DBFlow:dbflow-processor:4.2.4"
// gradle 3.0.0 可以使用 implementation,否则用 compile
implementation "com.github.Raizlabs.DBFlow:dbflow-core:4.2.4"
implementation "com.github.Raizlabs.DBFlow:dbflow:4.2.4"
//进度条
implementation 'com.daimajia.numberprogressbar:library:1.4@aar'
//bugly自动升级
implementation 'com.tencent.bugly:crashreport_upgrade:latest.release'
implementation 'com.tencent.bugly:nativecrashreport:latest.release'
}
... ...
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
-dontwarn com.tencent.bugly.**
-keep public class com.tencent.bugly.**{*;}
-keep class android.support.**{*;}
... ...
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0.1","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
\ No newline at end of file
... ...
No preview for this file type
package com.naji.xiaotao;
import android.content.Context;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
/**
* Instrumented test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getTargetContext();
assertEquals("com.naji.xiaotao", appContext.getPackageName());
}
}
... ...
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.naji.xiaotao">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
<!-- Required -->
<permission
android:name="com.naji.xiaotao.permission.JPUSH_MESSAGE"
android:protectionLevel="signature" />
<!-- Required -->
<uses-permission android:name="您应用的包名.permission.JPUSH_MESSAGE" />
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<!-- Optional. Required for location feature -->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 用于开启 debug 版本的应用在6.0 系统上 层叠窗口权限 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_LOGS" />
<application
android:name=".App"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher"
android:supportsRtl="true"
android:theme="@style/AppTheme"
>
<activity android:name=".login.ui.LoginActivity"
android:screenOrientation="landscape"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".main.ui.MainActivity"
android:label="主页"
android:screenOrientation="landscape"
/>
<activity android:name=".tangshi.ui.TangShiActivity"
android:label="控制台主页"
android:screenOrientation="portrait"
android:launchMode="singleTask"
/>
<activity android:name=".cookbook.ui.CookBookMainActivity"
android:label="菜谱主页"
android:screenOrientation="portrait"
android:launchMode="singleTask"
/>
<activity android:name=".cart.ui.CartActivity"
android:label="购物车"
android:screenOrientation="portrait"
android:launchMode="singleTask"
android:windowSoftInputMode="adjustPan"
/>
<activity android:name=".cart.ui.RemarkActivity"
android:label="整单备注"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan"
/>
<activity android:name=".order.ui.OrderActivity"
android:label="订单详情"
android:screenOrientation="landscape"
/>
<activity android:name=".pay.ui.PayActivity"
android:label="结账"
android:screenOrientation="portrait"
/>
<activity android:name=".order.ui.OrderAffirmActivity"
android:label="订单确认"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan"
/>
<activity android:name=".order.ui.OrderRetireActivity"
android:label="退菜"
android:screenOrientation="portrait"
/>
<activity android:name=".receipt.ui.ReceiptActivity"
android:label="发票详情"
/>
<activity android:name=".pay.ui.ZddzActivity"
android:label="整单打折"
android:screenOrientation="portrait"
/>
<activity android:name=".pay.ui.ZdyyhActivity"
android:label="自定义优惠"
android:screenOrientation="portrait"
/>
<activity android:name=".tangshi.ui.TableListActivity"
android:label="可选桌位列表"
android:screenOrientation="portrait"
/>
<activity android:name=".history.ui.HistoryActivity"
android:label="历史订单"
android:screenOrientation="portrait"
/>
<!--版本更新-->
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.fileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
</provider>
<activity
android:name="com.tencent.bugly.beta.ui.BetaActivity"
android:configChanges="keyboardHidden|orientation|screenSize|locale"
android:theme="@android:style/Theme.Translucent" />
<!-- Required SDK 核心功能-->
<!-- 可配置android:process参数将PushService放在其他进程中 -->
<service
android:name="cn.jpush.android.service.PushService"
android:enabled="true"
android:exported="false" >
<intent-filter>
<action android:name="cn.jpush.android.intent.REGISTER" />
<action android:name="cn.jpush.android.intent.REPORT" />
<action android:name="cn.jpush.android.intent.PushService" />
<action android:name="cn.jpush.android.intent.PUSH_TIME" />
</intent-filter>
</service>
<!-- since 3.0.9 Required SDK 核心功能-->
<provider
android:authorities="com.naji.xiaotao.DataProvider"
android:name="cn.jpush.android.service.DataProvider"
android:exported="true"
tools:replace="android:exported" />
<!-- since 1.8.0 option 可选项。用于同一设备中不同应用的JPush服务相互拉起的功能。 -->
<!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 -->
<service
android:name="cn.jpush.android.service.DaemonService"
android:enabled="true"
android:exported="true">
<intent-filter >
<action android:name="cn.jpush.android.intent.DaemonService" />
<category android:name="com.naji.xiaotao"/>
</intent-filter>
</service>
<!-- since 3.1.0 Required SDK 核心功能-->
<provider
android:authorities="com.naji.xiaotao.DownloadProvider"
android:name="cn.jpush.android.service.DownloadProvider"
android:exported="true"
/>
<!-- Required SDK核心功能-->
<receiver
android:name="cn.jpush.android.service.PushReceiver"
android:enabled="true" >
<intent-filter android:priority="1000">
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
<category android:name="com.naji.xiaotao"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.USER_PRESENT" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
<!-- Optional -->
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED" />
<action android:name="android.intent.action.PACKAGE_REMOVED" />
<data android:scheme="package" />
</intent-filter>
</receiver>
<!-- Required SDK核心功能-->
<activity
android:name="cn.jpush.android.ui.PushActivity"
android:configChanges="orientation|keyboardHidden"
android:theme="@android:style/Theme.NoTitleBar"
android:exported="false" >
<intent-filter>
<action android:name="cn.jpush.android.ui.PushActivity" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="com.naji.xiaotao" />
</intent-filter>
</activity>
<!-- SDK核心功能-->
<activity
android:name="cn.jpush.android.ui.PopWinActivity"
android:configChanges="orientation|keyboardHidden"
android:exported="false"
android:theme="@style/MyDialogStyle">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="com.naji.xiaotao" />
</intent-filter>
</activity>
<!-- Required SDK核心功能-->
<service
android:name="cn.jpush.android.service.DownloadService"
android:enabled="true"
android:exported="false" >
</service>
<!-- Required SDK核心功能-->
<receiver android:name="cn.jpush.android.service.AlarmReceiver" />
<!-- Required since 3.0.7 -->
<!-- 新的tag/alias接口结果返回需要开发者配置一个自定的广播 -->
<!-- 该广播需要继承JPush提供的JPushMessageReceiver类, 并如下新增一个 Intent-Filter -->
<receiver
android:name=".message.receiver.TagReceiver"
android:enabled="true"
android:exported="false" >
<intent-filter>
<action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />
<category android:name="com.naji.xiaotao" />
</intent-filter>
</receiver>
<!-- User defined. 用户自定义的广播接收器-->
<receiver
android:name=".message.receiver.MessageReceiver"
android:enabled="true"
android:exported="false">
<intent-filter>
<!--Required 用户注册SDK的intent-->
<action android:name="cn.jpush.android.intent.REGISTRATION" />
<!--Required 用户接收SDK消息的intent-->
<action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
<!--Required 用户接收SDK通知栏信息的intent-->
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />
<!--Required 用户打开自定义通知栏的intent-->
<action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />
<!-- 接收网络变化 连接/断开 since 1.6.3 -->
<action android:name="cn.jpush.android.intent.CONNECTION" />
<category android:name="com.naji.xiaotao" />
</intent-filter>
</receiver>
<!-- Required. For publish channel feature -->
<!-- JPUSH_CHANNEL 是为了方便开发者统计APK分发渠道。-->
<!-- 例如: -->
<!-- 发到 Google Play 的APK可以设置为 google-play; -->
<!-- 发到其他市场的 APK 可以设置为 xxx-market。 -->
<meta-data android:name="JPUSH_CHANNEL" android:value="developer-default"/>
<!-- Required. AppKey copied from Portal -->
<meta-data android:name="JPUSH_APPKEY" android:value="7d1e57b0d37d8d4cdf945912"/>
</application>
</manifest>
\ No newline at end of file
... ...
No preview for this file type
package com.naji.xiaotao;
import android.app.Activity;
import android.content.Context;
import com.githang.statusbar.StatusBarCompat;
import com.naji.xiaotao.login.ui.LoginActivity;
import com.naji.xiaotao.main.ui.MainActivity;
import com.raizlabs.android.dbflow.config.FlowManager;
import com.tencent.bugly.Bugly;
import com.tencent.bugly.beta.Beta;
import cn.jpush.android.api.JPushInterface;
import me.goldze.mvvmhabit.base.BaseApplication;
import me.goldze.mvvmhabit.crash.CaocConfig;
import me.goldze.mvvmhabit.utils.KLog;
public class App extends BaseApplication {
@Override
public void onCreate() {
super.onCreate();
Bugly.init(getApplicationContext(), "493c3c1046", false);
Beta.canShowUpgradeActs.add(MainActivity.class);
//初始化DbFlow
FlowManager.init(this);
//初始化极光推送
JPushInterface.setDebugMode(false);
JPushInterface.init(this);
//开启打印日志
KLog.init(false);
//初始化全局异常崩溃
initCrash();
}
private void initCrash() {
CaocConfig.Builder.create()
.backgroundMode(CaocConfig.BACKGROUND_MODE_SILENT) //背景模式,开启沉浸式
.enabled(true) //是否启动全局异常捕获
.showErrorDetails(true) //是否显示错误详细信息
.showRestartButton(true) //是否显示重启按钮
.trackActivities(true) //是否跟踪Activity
.minTimeBetweenCrashesMs(2000) //崩溃的间隔时间(毫秒)
.errorDrawable(R.mipmap.ic_launcher) //错误图标
.restartActivity(LoginActivity.class) //重新启动后的activity
// .errorActivity(YourCustomErrorActivity.class) //崩溃后的错误activity
// .eventListener(new YourCustomEventListener()) //崩溃后的错误监听
.apply();
}
}
... ...
package com.naji.xiaotao.cart.adapter;
import android.content.Context;
import android.text.TextUtils;
import android.view.View;
import android.widget.TextView;
import com.naji.xiaotao.R;
import com.naji.xiaotao.cart.entity.ClearDetail;
import com.naji.xiaotao.cookbook.adapter.RvAdapter;
import com.naji.xiaotao.cookbook.listener.RvListener;
import com.naji.xiaotao.cookbook.viewholder.RvHolder;
import java.util.List;
public class ClearAdapter extends RvAdapter<ClearDetail>{
public ClearAdapter(Context context, List<ClearDetail> list){
super(context,list,null);
}
@Override
protected int getLayoutId(int viewType) {
return R.layout.layout_clear_item;
}
@Override
protected RvHolder getHolder(View view, int viewType) {
return new ClearHolder(view,viewType,null);
}
public class ClearHolder extends RvHolder<ClearDetail>{
private TextView cookName;
private TextView cookPractice;
private TextView cookNum;
private TextView cookMinNum;
public ClearHolder(View itemView, int type, RvListener rvListener){
super(itemView,type,rvListener);
cookName=itemView.findViewById(R.id.cook_name);
cookPractice=itemView.findViewById(R.id.cook_practice);
cookNum=itemView.findViewById(R.id.cook_num);
cookMinNum=itemView.findViewById(R.id.cook_min_num);
}
@Override
public void bindHolder(ClearDetail clearDetail, int position) {
cookName.setText(clearDetail.getName());
if(TextUtils.isEmpty(clearDetail.getPractice_name())){
cookPractice.setVisibility(View.INVISIBLE);
}else{
cookPractice.setText(clearDetail.getPractice_name());
cookPractice.setVisibility(View.VISIBLE);
}
cookNum.setText(clearDetail.getCount()+"份");
if(Integer.parseInt(clearDetail.getMin_num())==0){
cookMinNum.setText("卖光了");
cookMinNum.setTextColor(mContext.getResources().getColor(R.color.text4));
}else{
cookMinNum.setText("本次下单"+clearDetail.getMin_num()+"份");
cookMinNum.setTextColor(mContext.getResources().getColor(R.color.text5));
}
}
}
}
... ...
package com.naji.xiaotao.cart.entity;
import android.os.Parcel;
import android.os.Parcelable;
import java.util.List;
public class CartCookbook implements Parcelable {
private String class_name;
private List<CartCookbookDetail> list;
private int total;
public String getClass_name() {
return class_name;
}
public void setClass_name(String class_name) {
this.class_name = class_name;
}
public List<CartCookbookDetail> getList() {
return list;
}
public void setList(List<CartCookbookDetail> list) {
this.list = list;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.class_name);
dest.writeTypedList(this.list);
dest.writeInt(this.total);
}
public CartCookbook() {
}
protected CartCookbook(Parcel in) {
this.class_name = in.readString();
this.list = in.createTypedArrayList(CartCookbookDetail.CREATOR);
this.total = in.readInt();
}
public static final Creator<CartCookbook> CREATOR = new Creator<CartCookbook>() {
@Override
public CartCookbook createFromParcel(Parcel source) {
return new CartCookbook(source);
}
@Override
public CartCookbook[] newArray(int size) {
return new CartCookbook[size];
}
};
}
... ...
package com.naji.xiaotao.cart.entity;
import android.os.Parcel;
import android.os.Parcelable;
public class CartCookbookDetail implements Parcelable {
private String count;//数量
private String cookbookid;
private String price;
private String member_price;
private String specid;
private String fromSource;
private String openid;
private String id;
private String practiceid;
private String identity;
private String image;
private String unit;
private String name;
private String class_name;
private String classid;
private String spec_price;
private String spec_member_price;
private String practice_name;
private String headerimg;
private String sellerid;
private String pnum;
private String cdate;
private String meal_fee;
private String specs;
private String titleName;
private boolean isTitle;//title标志位
private String tag;
private int size;//标题栏下面的item数量
private String retire_reason;//退菜原因
private String open_name;//操作员
public String getCount() {
return count;
}
public void setCount(String count) {
this.count = count;
}
public String getCookbookid() {
return cookbookid;
}
public void setCookbookid(String cookbookid) {
this.cookbookid = cookbookid;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getMember_price() {
return member_price;
}
public void setMember_price(String member_price) {
this.member_price = member_price;
}
public String getSpecid() {
return specid;
}
public void setSpecid(String specid) {
this.specid = specid;
}
public String getFromSource() {
return fromSource;
}
public void setFromSource(String fromSource) {
this.fromSource = fromSource;
}
public String getOpenid() {
return openid;
}
public void setOpenid(String openid) {
this.openid = openid;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPracticeid() {
return practiceid;
}
public void setPracticeid(String practiceid) {
this.practiceid = practiceid;
}
public String getIdentity() {
return identity;
}
public void setIdentity(String identity) {
this.identity = identity;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getClass_name() {
return class_name;
}
public void setClass_name(String class_name) {
this.class_name = class_name;
}
public String getClassid() {
return classid;
}
public void setClassid(String classid) {
this.classid = classid;
}
public String getSpec_price() {
return spec_price;
}
public void setSpec_price(String spec_price) {
this.spec_price = spec_price;
}
public String getSpec_member_price() {
return spec_member_price;
}
public void setSpec_member_price(String spec_member_price) {
this.spec_member_price = spec_member_price;
}
public String getPractice_name() {
return practice_name;
}
public void setPractice_name(String practice_name) {
this.practice_name = practice_name;
}
public String getHeaderimg() {
return headerimg;
}
public void setHeaderimg(String headerimg) {
this.headerimg = headerimg;
}
public String getSellerid() {
return sellerid;
}
public void setSellerid(String sellerid) {
this.sellerid = sellerid;
}
public String getPnum() {
return pnum;
}
public void setPnum(String pnum) {
this.pnum = pnum;
}
public String getCdate() {
return cdate;
}
public void setCdate(String cdate) {
this.cdate = cdate;
}
public String getMeal_fee() {
return meal_fee;
}
public void setMeal_fee(String meal_fee) {
this.meal_fee = meal_fee;
}
public String getSpecs() {
return specs;
}
public void setSpecs(String specs) {
this.specs = specs;
}
public String getTitleName() {
return titleName;
}
public void setTitleName(String titleName) {
this.titleName = titleName;
}
public boolean isTitle() {
return isTitle;
}
public void setTitle(boolean title) {
isTitle = title;
}
public String getTag() {
return tag;
}
public void setTag(String tag) {
this.tag = tag;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public String getRetire_reason() {
return retire_reason;
}
public void setRetire_reason(String retire_reason) {
this.retire_reason = retire_reason;
}
public String getOpen_name() {
return open_name;
}
public void setOpen_name(String open_name) {
this.open_name = open_name;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.count);
dest.writeString(this.cookbookid);
dest.writeString(this.price);
dest.writeString(this.member_price);
dest.writeString(this.specid);
dest.writeString(this.fromSource);
dest.writeString(this.openid);
dest.writeString(this.id);
dest.writeString(this.practiceid);
dest.writeString(this.identity);
dest.writeString(this.image);
dest.writeString(this.unit);
dest.writeString(this.name);
dest.writeString(this.class_name);
dest.writeString(this.classid);
dest.writeString(this.spec_price);
dest.writeString(this.spec_member_price);
dest.writeString(this.practice_name);
dest.writeString(this.headerimg);
dest.writeString(this.sellerid);
dest.writeString(this.pnum);
dest.writeString(this.cdate);
dest.writeString(this.meal_fee);
dest.writeString(this.specs);
dest.writeString(this.titleName);
dest.writeByte(this.isTitle ? (byte) 1 : (byte) 0);
dest.writeString(this.tag);
dest.writeInt(this.size);
dest.writeString(this.retire_reason);
dest.writeString(this.open_name);
}
public CartCookbookDetail() {
}
protected CartCookbookDetail(Parcel in) {
this.count = in.readString();
this.cookbookid = in.readString();
this.price = in.readString();
this.member_price = in.readString();
this.specid = in.readString();
this.fromSource = in.readString();
this.openid = in.readString();
this.id = in.readString();
this.practiceid = in.readString();
this.identity = in.readString();
this.image = in.readString();
this.unit = in.readString();
this.name = in.readString();
this.class_name = in.readString();
this.classid = in.readString();
this.spec_price = in.readString();
this.spec_member_price = in.readString();
this.practice_name = in.readString();
this.headerimg = in.readString();
this.sellerid = in.readString();
this.pnum = in.readString();
this.cdate = in.readString();
this.meal_fee = in.readString();
this.specs = in.readString();
this.titleName = in.readString();
this.isTitle = in.readByte() != 0;
this.tag = in.readString();
this.size = in.readInt();
this.retire_reason = in.readString();
this.open_name = in.readString();
}
public static final Creator<CartCookbookDetail> CREATOR = new Creator<CartCookbookDetail>() {
@Override
public CartCookbookDetail createFromParcel(Parcel source) {
return new CartCookbookDetail(source);
}
@Override
public CartCookbookDetail[] newArray(int size) {
return new CartCookbookDetail[size];
}
};
}
... ...
package com.naji.xiaotao.cart.entity;
import android.os.Parcel;
import android.os.Parcelable;
import java.util.ArrayList;
import java.util.List;
public class CartEntity implements Parcelable {
private List<OrderEntity> order;
private List<CartCookbook> cookbooklist;
private int countTotal;
private float countPirce;
private float countMemberPirce;
public List<OrderEntity> getOrder() {
return order;
}
public void setOrder(List<OrderEntity> order) {
this.order = order;
}
public List<CartCookbook> getCookbooklist() {
return cookbooklist;
}
public void setCookbooklist(List<CartCookbook> cookbooklist) {
this.cookbooklist = cookbooklist;
}
public int getCountTotal() {
return countTotal;
}
public void setCountTotal(int countTotal) {
this.countTotal = countTotal;
}
public float getCountPirce() {
return countPirce;
}
public void setCountPirce(float countPirce) {
this.countPirce = countPirce;
}
public float getCountMemberPirce() {
return countMemberPirce;
}
public void setCountMemberPirce(float countMemberPirce) {
this.countMemberPirce = countMemberPirce;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeTypedList(this.order);
dest.writeTypedList(this.cookbooklist);
dest.writeInt(this.countTotal);
dest.writeFloat(this.countPirce);
dest.writeFloat(this.countMemberPirce);
}
public CartEntity() {
}
protected CartEntity(Parcel in) {
this.order = in.createTypedArrayList(OrderEntity.CREATOR);
this.cookbooklist = in.createTypedArrayList(CartCookbook.CREATOR);
this.countTotal = in.readInt();
this.countPirce = in.readFloat();
this.countMemberPirce = in.readFloat();
}
public static final Parcelable.Creator<CartEntity> CREATOR = new Parcelable.Creator<CartEntity>() {
@Override
public CartEntity createFromParcel(Parcel source) {
return new CartEntity(source);
}
@Override
public CartEntity[] newArray(int size) {
return new CartEntity[size];
}
};
}
... ...
package com.naji.xiaotao.cart.entity;
import android.os.Parcel;
import android.os.Parcelable;
public class ClearDetail implements Parcelable {
private String count;
private String cookbookid;
private String status;
private String price;
private String member_price;
private String specid;
private String fromSource;
private String openid;
private String id;
private String practiceid;
private String identity;
private String image;
private String unit;
private String name;
private String class_name;
private String classid;
private String spec_price;
private String spec_member_price;
private String practice_name;
private String headerimg;
private String sellerid;
private String pnum;
private String cdate;
private String meal_fee;
private String min_num;
public String getCount() {
return count;
}
public void setCount(String count) {
this.count = count;
}
public String getCookbookid() {
return cookbookid;
}
public void setCookbookid(String cookbookid) {
this.cookbookid = cookbookid;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getMember_price() {
return member_price;
}
public void setMember_price(String member_price) {
this.member_price = member_price;
}
public String getSpecid() {
return specid;
}
public void setSpecid(String specid) {
this.specid = specid;
}
public String getFromSource() {
return fromSource;
}
public void setFromSource(String fromSource) {
this.fromSource = fromSource;
}
public String getOpenid() {
return openid;
}
public void setOpenid(String openid) {
this.openid = openid;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPracticeid() {
return practiceid;
}
public void setPracticeid(String practiceid) {
this.practiceid = practiceid;
}
public String getIdentity() {
return identity;
}
public void setIdentity(String identity) {
this.identity = identity;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getClass_name() {
return class_name;
}
public void setClass_name(String class_name) {
this.class_name = class_name;
}
public String getClassid() {
return classid;
}
public void setClassid(String classid) {
this.classid = classid;
}
public String getSpec_price() {
return spec_price;
}
public void setSpec_price(String spec_price) {
this.spec_price = spec_price;
}
public String getSpec_member_price() {
return spec_member_price;
}
public void setSpec_member_price(String spec_member_price) {
this.spec_member_price = spec_member_price;
}
public String getPractice_name() {
return practice_name;
}
public void setPractice_name(String practice_name) {
this.practice_name = practice_name;
}
public String getHeaderimg() {
return headerimg;
}
public void setHeaderimg(String headerimg) {
this.headerimg = headerimg;
}
public String getSellerid() {
return sellerid;
}
public void setSellerid(String sellerid) {
this.sellerid = sellerid;
}
public String getPnum() {
return pnum;
}
public void setPnum(String pnum) {
this.pnum = pnum;
}
public String getCdate() {
return cdate;
}
public void setCdate(String cdate) {
this.cdate = cdate;
}
public String getMeal_fee() {
return meal_fee;
}
public void setMeal_fee(String meal_fee) {
this.meal_fee = meal_fee;
}
public String getMin_num() {
return min_num;
}
public void setMin_num(String min_num) {
this.min_num = min_num;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.count);
dest.writeString(this.cookbookid);
dest.writeString(this.status);
dest.writeString(this.price);
dest.writeString(this.member_price);
dest.writeString(this.specid);
dest.writeString(this.fromSource);
dest.writeString(this.openid);
dest.writeString(this.id);
dest.writeString(this.practiceid);
dest.writeString(this.identity);
dest.writeString(this.image);
dest.writeString(this.unit);
dest.writeString(this.name);
dest.writeString(this.class_name);
dest.writeString(this.classid);
dest.writeString(this.spec_price);
dest.writeString(this.spec_member_price);
dest.writeString(this.practice_name);
dest.writeString(this.headerimg);
dest.writeString(this.sellerid);
dest.writeString(this.pnum);
dest.writeString(this.cdate);
dest.writeString(this.meal_fee);
dest.writeString(this.min_num);
}
public ClearDetail() {
}
protected ClearDetail(Parcel in) {
this.count = in.readString();
this.cookbookid = in.readString();
this.status = in.readString();
this.price = in.readString();
this.member_price = in.readString();
this.specid = in.readString();
this.fromSource = in.readString();
this.openid = in.readString();
this.id = in.readString();
this.practiceid = in.readString();
this.identity = in.readString();
this.image = in.readString();
this.unit = in.readString();
this.name = in.readString();
this.class_name = in.readString();
this.classid = in.readString();
this.spec_price = in.readString();
this.spec_member_price = in.readString();
this.practice_name = in.readString();
this.headerimg = in.readString();
this.sellerid = in.readString();
this.pnum = in.readString();
this.cdate = in.readString();
this.meal_fee = in.readString();
this.min_num = in.readString();
}
public static final Parcelable.Creator<ClearDetail> CREATOR = new Parcelable.Creator<ClearDetail>() {
@Override
public ClearDetail createFromParcel(Parcel source) {
return new ClearDetail(source);
}
@Override
public ClearDetail[] newArray(int size) {
return new ClearDetail[size];
}
};
}
... ...
package com.naji.xiaotao.cart.entity;
import android.os.Parcel;
import android.os.Parcelable;
import java.util.ArrayList;
import java.util.List;
public class ClearOutter implements Parcelable {
private List<ClearDetail> min_num;
private List<ClearDetail> clear_error;
public List<ClearDetail> getMin_num() {
return min_num;
}
public void setMin_num(List<ClearDetail> min_num) {
this.min_num = min_num;
}
public List<ClearDetail> getClear_error() {
return clear_error;
}
public void setClear_error(List<ClearDetail> clear_error) {
this.clear_error = clear_error;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeList(this.min_num);
dest.writeList(this.clear_error);
}
public ClearOutter() {
}
protected ClearOutter(Parcel in) {
this.min_num = new ArrayList<ClearDetail>();
in.readList(this.min_num, ClearDetail.class.getClassLoader());
this.clear_error = new ArrayList<ClearDetail>();
in.readList(this.clear_error, ClearDetail.class.getClassLoader());
}
public static final Parcelable.Creator<ClearOutter> CREATOR = new Parcelable.Creator<ClearOutter>() {
@Override
public ClearOutter createFromParcel(Parcel source) {
return new ClearOutter(source);
}
@Override
public ClearOutter[] newArray(int size) {
return new ClearOutter[size];
}
};
}
... ...
package com.naji.xiaotao.cart.entity;
import android.os.Parcel;
import android.os.Parcelable;
import java.util.List;
public class OrderEntity implements Parcelable {
private String id;
private String no;
private String row_num;
private String pnum;
private String sellerid;
private String tableid;
private String openid;
private String price;
private String status;
private String remark;
private String remarkid;
private String type;
private String phone;
private String behavior;
private String cdate;
private String meal_fee;
private String is_clear_table;
private String tablename;
private String table_pnum;
private String qrcode;
private String sellername;
private List<RemarkItemEntity> remarkList;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getRow_num() {
return row_num;
}
public void setRow_num(String row_num) {
this.row_num = row_num;
}
public String getPnum() {
return pnum;
}
public void setPnum(String pnum) {
this.pnum = pnum;
}
public String getSellerid() {
return sellerid;
}
public void setSellerid(String sellerid) {
this.sellerid = sellerid;
}
public String getTableid() {
return tableid;
}
public void setTableid(String tableid) {
this.tableid = tableid;
}
public String getOpenid() {
return openid;
}
public void setOpenid(String openid) {
this.openid = openid;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public String getRemarkid() {
return remarkid;
}
public void setRemarkid(String remarkid) {
this.remarkid = remarkid;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getBehavior() {
return behavior;
}
public void setBehavior(String behavior) {
this.behavior = behavior;
}
public String getCdate() {
return cdate;
}
public void setCdate(String cdate) {
this.cdate = cdate;
}
public String getMeal_fee() {
return meal_fee;
}
public void setMeal_fee(String meal_fee) {
this.meal_fee = meal_fee;
}
public String getIs_clear_table() {
return is_clear_table;
}
public void setIs_clear_table(String is_clear_table) {
this.is_clear_table = is_clear_table;
}
public String getTablename() {
return tablename;
}
public void setTablename(String tablename) {
this.tablename = tablename;
}
public String getTable_pnum() {
return table_pnum;
}
public void setTable_pnum(String table_pnum) {
this.table_pnum = table_pnum;
}
public String getQrcode() {
return qrcode;
}
public void setQrcode(String qrcode) {
this.qrcode = qrcode;
}
public String getSellername() {
return sellername;
}
public void setSellername(String sellername) {
this.sellername = sellername;
}
public List<RemarkItemEntity> getRemarkList() {
return remarkList;
}
public void setRemarkList(List<RemarkItemEntity> remarkList) {
this.remarkList = remarkList;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.id);
dest.writeString(this.no);
dest.writeString(this.row_num);
dest.writeString(this.pnum);
dest.writeString(this.sellerid);
dest.writeString(this.tableid);
dest.writeString(this.openid);
dest.writeString(this.price);
dest.writeString(this.status);
dest.writeString(this.remark);
dest.writeString(this.remarkid);
dest.writeString(this.type);
dest.writeString(this.phone);
dest.writeString(this.behavior);
dest.writeString(this.cdate);
dest.writeString(this.meal_fee);
dest.writeString(this.is_clear_table);
dest.writeString(this.tablename);
dest.writeString(this.table_pnum);
dest.writeString(this.qrcode);
dest.writeString(this.sellername);
dest.writeTypedList(this.remarkList);
}
public OrderEntity() {
}
protected OrderEntity(Parcel in) {
this.id = in.readString();
this.no = in.readString();
this.row_num = in.readString();
this.pnum = in.readString();
this.sellerid = in.readString();
this.tableid = in.readString();
this.openid = in.readString();
this.price = in.readString();
this.status = in.readString();
this.remark = in.readString();
this.remarkid = in.readString();
this.type = in.readString();
this.phone = in.readString();
this.behavior = in.readString();
this.cdate = in.readString();
this.meal_fee = in.readString();
this.is_clear_table = in.readString();
this.tablename = in.readString();
this.table_pnum = in.readString();
this.qrcode = in.readString();
this.sellername = in.readString();
this.remarkList = in.createTypedArrayList(RemarkItemEntity.CREATOR);
}
public static final Creator<OrderEntity> CREATOR = new Creator<OrderEntity>() {
@Override
public OrderEntity createFromParcel(Parcel source) {
return new OrderEntity(source);
}
@Override
public OrderEntity[] newArray(int size) {
return new OrderEntity[size];
}
};
}
... ...
package com.naji.xiaotao.cart.entity;
import android.os.Parcel;
import android.os.Parcelable;
import java.util.List;
public class RemarkEntity implements Parcelable {
private List<RemarkItemEntity> list;
public List<RemarkItemEntity> getList() {
return list;
}
public void setList(List<RemarkItemEntity> list) {
this.list = list;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeTypedList(this.list);
}
public RemarkEntity() {
}
protected RemarkEntity(Parcel in) {
this.list = in.createTypedArrayList(RemarkItemEntity.CREATOR);
}
public static final Parcelable.Creator<RemarkEntity> CREATOR = new Parcelable.Creator<RemarkEntity>() {
@Override
public RemarkEntity createFromParcel(Parcel source) {
return new RemarkEntity(source);
}
@Override
public RemarkEntity[] newArray(int size) {
return new RemarkEntity[size];
}
};
}
... ...
package com.naji.xiaotao.cart.entity;
import android.os.Parcel;
import android.os.Parcelable;
public class RemarkItemEntity implements Parcelable {
private String id;
private String sellerid;
private String remark;
private String cdate;
private String desc;
private String line;
private boolean selected;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getSellerid() {
return sellerid;
}
public void setSellerid(String sellerid) {
this.sellerid = sellerid;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public String getCdate() {
return cdate;
}
public void setCdate(String cdate) {
this.cdate = cdate;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getLine() {
return line;
}
public void setLine(String line) {
this.line = line;
}
public boolean isSelected() {
return selected;
}
public void setSelected(boolean selected) {
this.selected = selected;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.id);
dest.writeString(this.sellerid);
dest.writeString(this.remark);
dest.writeString(this.cdate);
dest.writeString(this.desc);
dest.writeString(this.line);
dest.writeByte(this.selected ? (byte) 1 : (byte) 0);
}
public RemarkItemEntity() {
}
protected RemarkItemEntity(Parcel in) {
this.id = in.readString();
this.sellerid = in.readString();
this.remark = in.readString();
this.cdate = in.readString();
this.desc = in.readString();
this.line = in.readString();
this.selected = in.readByte() != 0;
}
public static final Creator<RemarkItemEntity> CREATOR = new Creator<RemarkItemEntity>() {
@Override
public RemarkItemEntity createFromParcel(Parcel source) {
return new RemarkItemEntity(source);
}
@Override
public RemarkItemEntity[] newArray(int size) {
return new RemarkItemEntity[size];
}
};
}
... ...
package com.naji.xiaotao.cart.service;
import com.naji.xiaotao.cart.entity.CartEntity;
import com.naji.xiaotao.cart.entity.ClearOutter;
import com.naji.xiaotao.cart.entity.RemarkEntity;
import com.naji.xiaotao.cookbook.bean.OuterEntity;
import java.util.List;
import java.util.Map;
import io.reactivex.Observable;
import me.goldze.mvvmhabit.http.BaseResponse;
import retrofit2.http.GET;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
public interface CartApiService {
//获取订单详情
@GET("?service=Android.Orders.GetOrderById")
Observable<BaseResponse<List<CartEntity>>> getOrderById(@QueryMap Map<String,String> params);
//获取备注列表
@GET("?service=Android.Orders.GetRemarkBySellerid")
Observable<BaseResponse<List<List<RemarkEntity>>>> getRemarkBySellerid(@QueryMap Map<String,String> params);
//修改订单人数备注
@GET("?service=Android.Orders.SetOrderById")
Observable<BaseResponse<List<String>>> setOrderById(@QueryMap Map<String,String> params);
//下单时检测菜品是否充足
@GET("?service=Android.Orders.SetClearNum")
Observable<BaseResponse<List<ClearOutter>>> setClearNum(@QueryMap Map<String,String> params);
//去除购物车中数量不足或卖光菜品
@GET("?service=Android.Orders.ClearCookbook")
Observable<BaseResponse<List<String>>> clearCookbook(@QueryMap Map<String,String> params);
//下单接口
@GET("?service=Android.Orders.PlaceOrder")
Observable<BaseResponse<List<String>>> placeOrder(@QueryMap Map<String,String> params);
}
... ...
package com.naji.xiaotao.cart.ui;
import android.content.Context;
import android.databinding.ObservableList;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import com.naji.xiaotao.BR;
import com.naji.xiaotao.R;
import com.naji.xiaotao.cart.vm.CartItemViewModel;
import com.naji.xiaotao.cart.vm.CartViewModel;
import com.naji.xiaotao.databinding.ActivityCartBinding;
import me.goldze.mvvmhabit.base.BaseActivity;
import me.goldze.mvvmhabit.utils.KLog;
public class CartActivity extends BaseActivity<ActivityCartBinding,CartViewModel>implements CartViewModel.OnRequestFocusListener{
private InputMethodManager mInputMethorManager;
@Override
public int initContentView(Bundle savedInstanceState) {
mInputMethorManager=(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
return R.layout.activity_cart;
}
@Override
public int initVariableId() {
return BR.viewModel;
}
@Override
public CartViewModel initViewModel() {
return new CartViewModel(this,getIntent().getStringExtra("orderid"),this,getIntent().getStringExtra("fromSource"),getIntent().getBooleanExtra("isFast",false),getIntent().getBooleanExtra("isWaitingSure",false));
}
@Override
public void initViewObservable() {
super.initViewObservable();
binding.remarkEdt.setCursorVisible(false);
binding.remarkEdt.setFocusableInTouchMode(false);
binding.remarkEdt.setFocusable(false);
viewModel.observableList.addOnListChangedCallback(new ObservableList.OnListChangedCallback<ObservableList<CartItemViewModel>>() {
@Override
public void onChanged(ObservableList<CartItemViewModel> sender) {
KLog.d("AAAAAAAAA");
}
@Override
public void onItemRangeChanged(ObservableList<CartItemViewModel> sender, int positionStart, int itemCount) {
KLog.d("BBBBBBBBB");
}
@Override
public void onItemRangeInserted(ObservableList<CartItemViewModel> sender, int positionStart, int itemCount) {
KLog.d("CCCCCCCC");
if(viewModel.isSetMealFee.equals("1")){
if(viewModel.observableList.size()>2){
binding.empty.setVisibility(View.GONE);
binding.content.setVisibility(View.VISIBLE);
}
}else{
binding.empty.setVisibility(View.GONE);
binding.content.setVisibility(View.VISIBLE);
}
}
@Override
public void onItemRangeMoved(ObservableList<CartItemViewModel> sender, int fromPosition, int toPosition, int itemCount) {
KLog.d("DDDDDDDDDDD");
}
@Override
public void onItemRangeRemoved(ObservableList<CartItemViewModel> sender, int positionStart, int itemCount) {
KLog.d("EEEEEEEEEEE");
if(!TextUtils.isEmpty(viewModel.orderEntity.getMeal_fee())){
if(viewModel.observableList.size()<=2){
binding.content.setVisibility(View.GONE);
binding.empty.setVisibility(View.VISIBLE);
}
}else{
if(viewModel.observableList.size()<=0){
binding.content.setVisibility(View.GONE);
binding.empty.setVisibility(View.VISIBLE);
}
}
}
});
}
@Override
public void onPnumRequestFocus() {
binding.pnumEdt.setFocusable(true);
binding.pnumEdt.setFocusableInTouchMode(true);
binding.pnumEdt.requestFocus();
binding.pnumEdt.findFocus();
binding.pnumEdt.setSelection(binding.pnumEdt.getText().toString().length());
mInputMethorManager.showSoftInput(binding.pnumEdt,InputMethodManager.SHOW_FORCED);
}
@Override
public void onRemardRequestFocus() {
binding.remarkEdt.setFocusable(true);
binding.remarkEdt.setFocusableInTouchMode(true);
binding.remarkEdt.requestFocus();
binding.remarkEdt.findFocus();
binding.remarkEdt.setSelection(binding.remarkEdt.getText().toString().length());
mInputMethorManager.showSoftInput(binding.remarkEdt,InputMethodManager.SHOW_FORCED);
}
}
... ...
package com.naji.xiaotao.cart.ui;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.DialogFragment;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Toast;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.naji.xiaotao.R;
import com.naji.xiaotao.cart.adapter.ClearAdapter;
import com.naji.xiaotao.cart.entity.ClearDetail;
import com.naji.xiaotao.cart.entity.ClearOutter;
import com.naji.xiaotao.cart.service.CartApiService;
import com.naji.xiaotao.common.dialog.RightDialog;
import com.naji.xiaotao.cookbook.bean.OuterEntity;
import com.naji.xiaotao.http.RetrofitClient;
import com.naji.xiaotao.order.ui.OrderActivity;
import com.naji.xiaotao.tangshi.service.TangshiApiService;
import com.naji.xiaotao.tangshi.ui.TangShiActivity;
import com.naji.xiaotao.util.DialogUtil;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import me.goldze.mvvmhabit.http.BaseResponse;
import me.goldze.mvvmhabit.http.ResponseThrowable;
import me.goldze.mvvmhabit.utils.MaterialDialogUtils;
import me.goldze.mvvmhabit.utils.RxUtils;
import me.goldze.mvvmhabit.utils.SPUtils;
import me.goldze.mvvmhabit.utils.ToastUtils;
public class ClearDialogFragment extends DialogFragment{
private RecyclerView mRecyclerview;
private ClearAdapter mAdapter;
private ClearOutter clearOutter;
private String orderid;
private String sellerid;
private boolean isFast;//是否快餐
private List<ClearDetail> mDatas=new ArrayList<>();
private Context context;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context=getContext();
clearOutter=getArguments().getParcelable("clearOuter");
orderid=getArguments().getString("orderid");
sellerid= SPUtils.getInstance("user_info").getString("sellerid");
isFast=getArguments().getBoolean("isFast");
mDatas.addAll(clearOutter.getMin_num());
for(ClearDetail detail:clearOutter.getClear_error()){
detail.setMin_num("0");
mDatas.add(detail);
}
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.dialog_clear,container);
mRecyclerview=view.findViewById(R.id.recyclerview);
mRecyclerview.setLayoutManager(new LinearLayoutManager(getContext(),LinearLayoutManager.VERTICAL,false));
mAdapter=new ClearAdapter(getContext(),mDatas);
mRecyclerview.setAdapter(mAdapter);
view.findViewById(R.id.think_again).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dismiss();
}
});
view.findViewById(R.id.place_order).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dismiss();
DialogUtil.showDialog(context);
for(int i=0;i<mDatas.size();i++){
ClearDetail detail=mDatas.get(i);
String id=detail.getId();
int num=Integer.parseInt(detail.getCount())-Integer.parseInt(detail.getMin_num());
String type="";
if(detail.getMin_num().equals("0")){
type="clear_error";
}else{
type="min_num";
}
clearCookbookRequest(detail.getCookbookid(),detail.getSpecid(),id,num+"",i,type);
}
}
});
return view;
}
//去除数量不足菜品或卖光菜品
private void clearCookbookRequest(String cookbookid,String specid,String id, String num, final int i,String type){
Map<String,String> params=new HashMap<>();
params.put("orderid",orderid);
params.put("cookbookid",cookbookid);
params.put("type",type);//min_num 菜品不足 clear_error卖光了
params.put("id",id);//清楚主键idmin_
params.put("num",num);//清楚数量
if(!TextUtils.isEmpty(specid)){
params.put("specid",specid);
}
RetrofitClient.getInstance().create(CartApiService.class)
.clearCookbook(params)
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
})
.subscribe(new Consumer<BaseResponse<List<String>>>() {
@Override
public void accept(BaseResponse<List<String>> listBaseResponse) throws Exception {
if(listBaseResponse.getRet()==200){
if(i==mDatas.size()-1){//去除掉最后一件商品后下单
placeOrderRequest();
}
}else{
DialogUtil.dismissDialog();
ToastUtils.showShort(listBaseResponse.getMsg());
}
}
}, new Consumer<ResponseThrowable>() {
@Override
public void accept(ResponseThrowable responseThrowable) throws Exception {
DialogUtil.dismissDialog();
responseThrowable.printStackTrace();
ToastUtils.showShort(responseThrowable.msg);
}
});
}
//下单接口
private void placeOrderRequest(){
Map<String,String> params=new HashMap<>();
params.put("sellerid",sellerid);
params.put("orderid",orderid);
if(TextUtils.isEmpty(getArguments().getString("fromSource"))){
params.put("type","1");//下单1、加菜2
}else{
params.put("type","2");//下单1、加菜2
}
params.put("identity","2");//1 顾客 2 服务员
RetrofitClient.getInstance().create(CartApiService.class)
.placeOrder(params)
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
})
.subscribe(new Consumer<BaseResponse<List<String>>>() {
@Override
public void accept(BaseResponse<List<String>> listBaseResponse) throws Exception {
DialogUtil.dismissDialog();
if(listBaseResponse.getRet()==200){
final RightDialog dialog=new RightDialog();
Bundle bundle=new Bundle();
bundle.putString("msg","下单成功");
dialog.setArguments(bundle);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
dialog.dismiss();
if(isFast){//快速点餐直接跳到订单详情
Intent intent=new Intent(context, OrderActivity.class);
intent.putExtra("orderid",orderid);
context.startActivity(intent);
}else{
context.startActivity(new Intent(context, TangShiActivity.class));
}
}
}, 1000);
dialog.show(((AppCompatActivity)context).getSupportFragmentManager(),"rightDialog");
}else{
ToastUtils.showShort(listBaseResponse.getMsg());
}
}
}, new Consumer<ResponseThrowable>() {
@Override
public void accept(ResponseThrowable responseThrowable) throws Exception {
DialogUtil.dismissDialog();
responseThrowable.printStackTrace();
ToastUtils.showShort(responseThrowable.msg);
}
});
}
@Override
public void onStart() {
super.onStart();
getDialog().setCanceledOnTouchOutside(false);
Window window=getDialog().getWindow();
WindowManager.LayoutParams lp=window.getAttributes();
DisplayMetrics dm=new DisplayMetrics();
window.getWindowManager().getDefaultDisplay().getMetrics(dm);
window.setLayout((int) (dm.widthPixels*0.9),ViewGroup.LayoutParams.WRAP_CONTENT);
}
}
... ...
package com.naji.xiaotao.cart.ui;
import android.os.Bundle;
import com.naji.xiaotao.R;
import com.naji.xiaotao.BR;
import com.naji.xiaotao.cart.vm.RemarkViewModel;
import com.naji.xiaotao.databinding.ActivityRemarkBinding;
import me.goldze.mvvmhabit.base.BaseActivity;
public class RemarkActivity extends BaseActivity<ActivityRemarkBinding,RemarkViewModel>{
@Override
public int initContentView(Bundle savedInstanceState) {
return R.layout.activity_remark;
}
@Override
public int initVariableId() {
return BR.viewModel;
}
@Override
public RemarkViewModel initViewModel() {
return new RemarkViewModel(this,getIntent().getExtras().getString("orderid"),getIntent().getExtras().getString("remarkid"),getIntent().getExtras().getString("remark"));
}
}
... ...
package com.naji.xiaotao.cart.vm;
import android.content.Context;
import android.databinding.ObservableField;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.naji.xiaotao.cart.entity.CartCookbookDetail;
import com.naji.xiaotao.cookbook.bean.ResultEntity;
import com.naji.xiaotao.cookbook.service.CookbookApiService;
import com.naji.xiaotao.http.RetrofitClient;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import me.goldze.mvvmhabit.base.BaseViewModel;
import me.goldze.mvvmhabit.binding.command.BindingAction;
import me.goldze.mvvmhabit.binding.command.BindingCommand;
import me.goldze.mvvmhabit.bus.Messenger;
import me.goldze.mvvmhabit.bus.RxBus;
import me.goldze.mvvmhabit.bus.RxSubscriptions;
import me.goldze.mvvmhabit.http.BaseResponse;
import me.goldze.mvvmhabit.http.ResponseThrowable;
import me.goldze.mvvmhabit.utils.KLog;
import me.goldze.mvvmhabit.utils.RxUtils;
import me.goldze.mvvmhabit.utils.ToastUtils;
public class CartItemViewModel extends BaseViewModel{
private String orderid;
private String fromSource;
public CartCookbookDetail entity;
public ObservableField<String> title=new ObservableField<>();//标题栏显示
public ObservableField<String> count=new ObservableField<>();
private Disposable mSubscription;
public CartItemViewModel(Context context,CartCookbookDetail entity,String orderid,String fromSource){
super(context);
this.entity=entity;
this.orderid=orderid;
this.fromSource=fromSource;
count.set(entity.getCount());
if(entity.getTitleName().equals("其它")){
title.set(entity.getClass_name());
if(entity.getName()!=null&&entity.getName().equals("餐位费")){
mSubscription=RxBus.getDefault().toObservable(Integer.class).subscribe(new Consumer<Integer>() {
@Override
public void accept(Integer integer) throws Exception {
count.set(integer+"");
KLog.d("count:"+count.get().toString());
}
});
RxSubscriptions.add(mSubscription);
}
}else{
title.set(entity.getClass_name()+"("+entity.getSize()+")");
}
}
@Override
public void onDestroy() {
super.onDestroy();
if(entity.getName().equals("餐位费")){
RxSubscriptions.remove(mSubscription);
}
}
//减菜按钮
public BindingCommand onReduceClickCommand=new BindingCommand(new BindingAction() {
@Override
public void call() {
KLog.d("------------------");
reduceCookFromCart();
}
});
//加菜按钮
public BindingCommand onAddClickCommand=new BindingCommand(new BindingAction() {
@Override
public void call() {
KLog.d("+++++++++++++++++");
addCookToCart();
}
});
//添加菜品到购物车
private void addCookToCart(){
Map<String,String> params=new HashMap<>();
params.put("orderid",orderid);
params.put("openid",entity.getOpenid());
params.put("cookbookid",entity.getCookbookid());
params.put("identity","2");
if(!TextUtils.isEmpty(entity.getSpecid())){
params.put("specid",entity.getSpecid());
}
if(!TextUtils.isEmpty(entity.getPracticeid())){
params.put("practiceid",entity.getPracticeid());
}
if(!TextUtils.isEmpty(fromSource)){
params.put("fromSoucre",fromSource);
}
RetrofitClient.getInstance().create(CookbookApiService.class)
.addCookToCart(params)
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
})
.subscribe(new Consumer<BaseResponse<List<ResultEntity>>>() {
@Override
public void accept(BaseResponse<List<ResultEntity>> baseResponse) throws Exception {
if(baseResponse.getRet()==200){
count.set((Integer.parseInt(count.get())+1)+"");
int countTotal=baseResponse.getData().get(0).getCountTotal();
float countPrice=baseResponse.getData().get(0).getCountPirce();
String title="已点"+countTotal+"个菜,共计¥"+countPrice;
RxBus.getDefault().post(title);
}else{
ToastUtils.showShort(baseResponse.getMsg());
}
}
}, new Consumer<ResponseThrowable>() {
@Override
public void accept(ResponseThrowable throwable) throws Exception {
ToastUtils.showShort(throwable.msg);
throwable.printStackTrace();
}
});
}
//删减菜品从购物车
private void reduceCookFromCart(){
Map<String,String> params=new HashMap<>();
params.put("orderid",orderid);
params.put("openid",entity.getOpenid());
params.put("cookbookid",entity.getCookbookid());
params.put("identity","2");
if(!TextUtils.isEmpty(entity.getSpecid())){
params.put("specid",entity.getSpecid());
}
if(!TextUtils.isEmpty(entity.getPracticeid())){
params.put("practiceid",entity.getPracticeid());
}
if(!TextUtils.isEmpty(fromSource)){
params.put("fromSoucre",fromSource);
}
RetrofitClient.getInstance().create(CookbookApiService.class)
.reduceCookFromCart(params)
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
})
.subscribe(new Consumer<BaseResponse<List<ResultEntity>>>() {
@Override
public void accept(BaseResponse<List<ResultEntity>> baseResponse) throws Exception {
if(baseResponse.getRet()==200){
count.set((Integer.parseInt(count.get())-1)+"");
int countTotal=baseResponse.getData().get(0).getCountTotal();
float countPrice=baseResponse.getData().get(0).getCountPirce();
String title="已点"+countTotal+"个菜,共计¥"+countPrice;
RxBus.getDefault().post(title);
if(Integer.parseInt(count.get())==0){
Messenger.getDefault().send(CartItemViewModel.this,CartViewModel.TOKEN_DELETE_ITEM);
}
}else{
ToastUtils.showShort(baseResponse.getMsg());
}
}
}, new Consumer<ResponseThrowable>() {
@Override
public void accept(ResponseThrowable throwable) throws Exception {
ToastUtils.showShort(throwable.msg);
throwable.printStackTrace();
}
});
}
}
... ...
package com.naji.xiaotao.cart.vm;
import android.content.Context;
import android.content.Intent;
import android.databinding.ObservableArrayList;
import android.databinding.ObservableBoolean;
import android.databinding.ObservableField;
import android.databinding.ObservableInt;
import android.databinding.ObservableList;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.Toast;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.naji.xiaotao.BR;
import com.naji.xiaotao.R;
import com.naji.xiaotao.cart.entity.CartCookbook;
import com.naji.xiaotao.cart.entity.CartCookbookDetail;
import com.naji.xiaotao.cart.entity.CartEntity;
import com.naji.xiaotao.cart.entity.ClearOutter;
import com.naji.xiaotao.cart.entity.OrderEntity;
import com.naji.xiaotao.cart.entity.RemarkEntity;
import com.naji.xiaotao.cart.entity.RemarkItemEntity;
import com.naji.xiaotao.cart.service.CartApiService;
import com.naji.xiaotao.cart.ui.CartActivity;
import com.naji.xiaotao.cart.ui.ClearDialogFragment;
import com.naji.xiaotao.cart.ui.RemarkActivity;
import com.naji.xiaotao.common.dialog.RightDialog;
import com.naji.xiaotao.cookbook.bean.OuterEntity;
import com.naji.xiaotao.cookbook.ui.CookBookMainActivity;
import com.naji.xiaotao.http.RetrofitClient;
import com.naji.xiaotao.login.entity.SellerConfig;
import com.naji.xiaotao.login.service.LoginApiService;
import com.naji.xiaotao.order.ui.OrderActivity;
import com.naji.xiaotao.order.vm.OrderItemViewModel;
import com.naji.xiaotao.tangshi.ui.TangShiActivity;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import me.goldze.mvvmhabit.base.BaseViewModel;
import me.goldze.mvvmhabit.base.TitleViewModel;
import me.goldze.mvvmhabit.binding.command.BindingAction;
import me.goldze.mvvmhabit.binding.command.BindingCommand;
import me.goldze.mvvmhabit.binding.command.BindingConsumer;
import me.goldze.mvvmhabit.bus.Messenger;
import me.goldze.mvvmhabit.bus.RxBus;
import me.goldze.mvvmhabit.bus.RxSubscriptions;
import me.goldze.mvvmhabit.http.BaseResponse;
import me.goldze.mvvmhabit.http.ResponseThrowable;
import me.goldze.mvvmhabit.utils.KLog;
import me.goldze.mvvmhabit.utils.MaterialDialogUtils;
import me.goldze.mvvmhabit.utils.RxUtils;
import me.goldze.mvvmhabit.utils.SPUtils;
import me.goldze.mvvmhabit.utils.ToastUtils;
import me.tatarka.bindingcollectionadapter2.ItemBinding;
import me.tatarka.bindingcollectionadapter2.OnItemBind;
public class CartViewModel extends BaseViewModel{
public static final String TOKEN_DELETE_ITEM="token_delete_item";//删减一个菜品item
public ObservableField<String> no=new ObservableField<>();//单号
public ObservableField<String> pnum=new ObservableField<>();//当前用餐人数
public ObservableField<String> tableid=new ObservableField<>();//台号
public ObservableInt tableVisibility=new ObservableInt(View.GONE);//是否显示台号
public ObservableField<String> remark=new ObservableField<>();//备注
public ObservableField<String> title=new ObservableField<>();//list标题
private String orderid;//订单id
public OrderEntity orderEntity;
private ArrayList<CartCookbook> cLists=new ArrayList<>();
private OnRequestFocusListener onRequestFocusListener;
private Disposable mSubscription;//订阅者
public TitleViewModel titleViewModel;
private float countPrice;//订单金额
private int countTotal;//订单人数
public String isSetMealFee;//是否设置餐位费
private String meelFee;//餐位费
private float ortherMoney=0.00f;//餐位费
private String fromSource;//加菜
private boolean isFast;//是否快餐
private boolean isWaitingSure;//待确认
public CartViewModel(Context context,String orderid,OnRequestFocusListener onRequestFocusListener,String fromSource,boolean isFast,boolean isWaitingSure){
super(context);
this.orderid=orderid;
this.onRequestFocusListener=onRequestFocusListener;
this.titleViewModel=new TitleViewModel(context,"购物车");
this.fromSource=fromSource;
this.isFast=isFast;
this.isWaitingSure=isWaitingSure;
}
public interface OnRequestFocusListener{
//人数输入框获取焦点
void onPnumRequestFocus();
//备注获取焦点
void onRemardRequestFocus();
}
@Override
public void onStart() {
super.onStart();
getOrderDetail();
}
@Override
public void registerRxBus() {
super.registerRxBus();
//监听总的菜品数量和价格变化
mSubscription=RxBus.getDefault().toObservable(String.class).subscribe(new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
if(s.contains("¥")){
countPrice=Float.parseFloat(s.substring(s.indexOf("¥")+1));
String all= new DecimalFormat("##0.00").format(countPrice+ortherMoney);
title.set(s.substring(0,s.indexOf("¥")+1)+all);
}
}
});
RxSubscriptions.add(mSubscription);
//监听删除掉一个菜品Item
Messenger.getDefault().register(context, TOKEN_DELETE_ITEM, CartItemViewModel.class, new BindingConsumer<CartItemViewModel>() {
@Override
public void call(CartItemViewModel cartItemViewModel) {
observableList.remove(cartItemViewModel);
int titleIndex=Integer.parseInt(cartItemViewModel.entity.getTag());
KLog.d("titleIndex",titleIndex);
KLog.d("size",observableList.size());
int size=observableList.get(titleIndex).entity.getSize();
observableList.get(titleIndex).title.set(cartItemViewModel.entity.getClass_name()+"("+(size-1)+")");
observableList.get(titleIndex).entity.setSize(--size);
KLog.d("titleIndex:"+titleIndex+"size:"+size);
if(size==0){//只剩标题,删除标题
observableList.remove(titleIndex);
}
}
});
}
@Override
public void removeRxBus() {
super.removeRxBus();
RxSubscriptions.remove(mSubscription);
Messenger.getDefault().unregister(context,TOKEN_DELETE_ITEM);
}
public ObservableList<CartItemViewModel> observableList=new ObservableArrayList<>();
public OnItemBind<CartItemViewModel> onItemBind=new OnItemBind<CartItemViewModel>() {
@Override
public void onItemBind(ItemBinding itemBinding, int position, CartItemViewModel item) {
itemBinding.set(BR.viewModel,item.entity.isTitle()? R.layout.cart_item_title:R.layout.cart_item_content);
}
};
//修改就餐人数
public BindingCommand onPnumClick=new BindingCommand(new BindingAction() {
@Override
public void call() {
if(onRequestFocusListener!=null){
onRequestFocusListener.onPnumRequestFocus();
}
}
});
//修改备注
public BindingCommand onRemarkClick=new BindingCommand(new BindingAction() {
@Override
public void call() {
Bundle bundle=new Bundle();
bundle.putString("orderid",orderid);
bundle.putString("remarkid",orderEntity.getRemarkid());
bundle.putString("remark",orderEntity.getRemark());
startActivity(RemarkActivity.class,bundle);
}
});
//获取订单详情
private void getOrderDetail(){
HashMap<String,String> params=new HashMap<>();
params.put("orderid",orderid);
if(isWaitingSure){
params.put("status","2");//2 待确认菜品
}else{
params.put("status","0");//0 购物车中菜品 1 已下单菜品
}
RetrofitClient.getInstance().create(CartApiService.class)
.getOrderById(params)
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
showDialog();
}
})
.subscribe(new Consumer<BaseResponse<List<CartEntity>>>() {
@Override
public void accept(BaseResponse<List<CartEntity>> listBaseResponse) throws Exception {
dismissDialog();
if(listBaseResponse.getRet()==200){
orderEntity=listBaseResponse.getData().get(0).getOrder().get(0);
no.set("单号:"+orderEntity.getRow_num());
pnum.set(orderEntity.getPnum());
tableid.set("台号:"+orderEntity.getTablename());
if(orderEntity.getTablename().equals("快餐")){
tableVisibility.set(View.GONE);
}else{
tableVisibility.set(View.VISIBLE);
}
StringBuilder builder=new StringBuilder();
if(orderEntity.getRemarkList()!=null&&orderEntity.getRemarkList().size()>0){
for(RemarkItemEntity itemEntity:orderEntity.getRemarkList()){
builder.append(itemEntity.getRemark()+",");
}
}
if(!TextUtils.isEmpty(orderEntity.getRemark())){
builder.append(orderEntity.getRemark()+",");
}
if(builder.length()>0){
remark.set(builder.toString().substring(0,builder.toString().length()-1));
}else{
remark.set("");
}
countTotal=listBaseResponse.getData().get(0).getCountTotal();
countPrice=listBaseResponse.getData().get(0).getCountPirce();
cLists.clear();
cLists.addAll(listBaseResponse.getData().get(0).getCookbooklist());
getSellerConfig();
}else{
ToastUtils.showShort(listBaseResponse.getMsg());
}
}
}, new Consumer<ResponseThrowable>() {
@Override
public void accept(ResponseThrowable throwable) throws Exception {
dismissDialog();
ToastUtils.showShort(throwable.msg);
throwable.printStackTrace();
}
});
}
//获取商家配置
private void getSellerConfig(){
Map<String,String> params=new HashMap<>();
params.put("sellerid",SPUtils.getInstance("user_info").getString("sellerid"));
params.put("type","1");//1堂食配置 2外卖配置
RetrofitClient.getInstance().create(LoginApiService.class)
.getSellerConfig(params)
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
})
.subscribe(new Consumer<BaseResponse<List<SellerConfig>>>() {
@Override
public void accept(BaseResponse<List<SellerConfig>> listBaseResponse) throws Exception {
if(listBaseResponse.getRet()==200){
KLog.d("sssssssssssss");
isSetMealFee=listBaseResponse.getData().get(0).getIs_set_meal_fee();
meelFee=listBaseResponse.getData().get(0).getMeal_fee();
if(isSetMealFee.equals("1")){
ortherMoney=Float.parseFloat(meelFee)*Integer.parseInt(orderEntity.getPnum());
}
String all= new DecimalFormat("##0.00").format(countPrice+ortherMoney);
title.set("已点"+countTotal+"个菜,共计¥"+all);
initCookbookList();
}
}
}, new Consumer<ResponseThrowable>() {
@Override
public void accept(ResponseThrowable responseThrowable) throws Exception {
}
});
}
private void initCookbookList(){
observableList.clear();
int tag=0;
for(int i=0;i<cLists.size();i++){
CartCookbookDetail head=new CartCookbookDetail();
head.setTitle(true);
head.setClass_name(cLists.get(i).getClass_name());
head.setTitleName(cLists.get(i).getClass_name()+"("+cLists.get(i).getList().size()+")");
head.setTag(String.valueOf(i));
head.setSize(cLists.get(i).getList().size());
observableList.add(new CartItemViewModel(context,head,orderid,fromSource));
int titleIndex=tag;
for(int j=0;j<cLists.get(i).getList().size();j++){
tag++;
CartCookbookDetail content=cLists.get(i).getList().get(j);
content.setTitleName(cLists.get(i).getClass_name()+"("+cLists.get(i).getList().size()+")");
content.setTag(String.valueOf(titleIndex));
observableList.add(new CartItemViewModel(context,content,orderid,fromSource));
}
tag++;
}
if(isSetMealFee.equals("1")){
CartCookbookDetail head=new CartCookbookDetail();
head.setTitle(true);
head.setClass_name("其它");
head.setTitleName("其它");
observableList.add(new CartItemViewModel(context,head,orderid,fromSource));
CartCookbookDetail content=new CartCookbookDetail();
content.setTitleName("其它");
content.setName("餐位费");
content.setPrice(meelFee);
content.setUnit("位");
content.setCount(orderEntity.getPnum());
observableList.add(new CartItemViewModel(context,content,orderid,fromSource));
}
}
//修改人数
public BindingCommand textChangeCommand=new BindingCommand(new BindingConsumer<String>() {
@Override
public void call(String s) {
if(!TextUtils.isEmpty(s)){
int pnum=Integer.parseInt(s);
if(isSetMealFee!=null&&isSetMealFee.equals("1")){
ortherMoney=Float.parseFloat(meelFee)* pnum;
String titleText=title.get().toString();
KLog.d("titleText:"+titleText);
String all= new DecimalFormat("##0.00").format(countPrice+ortherMoney);
title.set(titleText.substring(0,titleText.indexOf("¥")+1)+all);
KLog.d(countPrice);
KLog.d(ortherMoney);
KLog.d("title:"+(titleText.substring(0,titleText.indexOf("¥")+1)));
RxBus.getDefault().post(pnum);
}
setOrderById(pnum);
}
}
});
//继续点菜
public BindingCommand onContinueClickCommand=new BindingCommand(new BindingAction() {
@Override
public void call() {
Intent intent=new Intent(context,CookBookMainActivity.class);
intent.putExtra("orderid",orderid);
intent.putExtra("isFast",isFast);
intent.putExtra("fromSource",fromSource);
context.startActivity(intent);
}
});
//点击确认下单按钮
public BindingCommand onSureClickCommand=new BindingCommand(new BindingAction() {
@Override
public void call() {
setClearNum();
}
});
//修改订单人数备注
private void setOrderById(int pnum){
Map<String,String> params=new HashMap<>();
params.put("orderid",orderid);
params.put("pnum",pnum+"");
RetrofitClient.getInstance().create(CartApiService.class)
.setOrderById(params)
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
})
.subscribe(new Consumer<BaseResponse<List<String>>>() {
@Override
public void accept(BaseResponse<List<String>> listBaseResponse) throws Exception {
if(listBaseResponse.getRet()==200){
}else{
ToastUtils.showShort(listBaseResponse.getMsg());
}
}
}, new Consumer<ResponseThrowable>() {
@Override
public void accept(ResponseThrowable responseThrowable) throws Exception {
responseThrowable.printStackTrace();
ToastUtils.showShort(responseThrowable.msg);
}
});
}
//下单时检测菜品是否充足
private void setClearNum(){
if(TextUtils.isEmpty(pnum.get())){
ToastUtils.showShort("请输入用餐人数");
return;
}
Map<String,String> params=new HashMap<>();
params.put("orderid",orderEntity.getId());
if(TextUtils.isEmpty(fromSource)){
params.put("type","1");//下单1、加菜2
}else{
params.put("type","2");//下单1、加菜2
}
params.put("identity","2");//1 顾客 2 服务员
RetrofitClient.getInstance().create(CartApiService.class)
.setClearNum(params)
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
showDialog();
}
})
.subscribe(new Consumer<BaseResponse<List<ClearOutter>>>() {
@Override
public void accept(BaseResponse<List<ClearOutter>> listBaseResponse) throws Exception {
if(listBaseResponse.getRet()==200){
if(listBaseResponse.getData().size()==0){//没有仓储不足菜品直接下单
placeOrder();
}else{
dismissDialog();
ClearDialogFragment dialog=new ClearDialogFragment();
Bundle bundle=new Bundle();
bundle.putParcelable("clearOuter",listBaseResponse.getData().get(0));
bundle.putString("orderid",orderid);
bundle.putString("fromSource",fromSource);
bundle.putBoolean("isFast",isFast);
dialog.setArguments(bundle);
dialog.show(((CartActivity)context).getSupportFragmentManager(),"clearFragment");
}
}else{
dismissDialog();
ToastUtils.showShort(listBaseResponse.getMsg());
}
}
}, new Consumer<ResponseThrowable>() {
@Override
public void accept(ResponseThrowable responseThrowable) throws Exception {
dismissDialog();
responseThrowable.printStackTrace();
ToastUtils.showShort(responseThrowable.msg);
}
});
}
//下单接口
private void placeOrder(){
Map<String,String> params=new HashMap<>();
params.put("sellerid",orderEntity.getSellerid());
params.put("orderid",orderEntity.getId());
if(TextUtils.isEmpty(fromSource)){
params.put("type","1");//下单1、加菜2
}else{
params.put("type","2");//下单1、加菜2
}
params.put("identity","2");//1 顾客 2 服务员
RetrofitClient.getInstance().create(CartApiService.class)
.placeOrder(params)
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
})
.subscribe(new Consumer<BaseResponse<List<String>>>() {
@Override
public void accept(BaseResponse<List<String>> listBaseResponse) throws Exception {
dismissDialog();
if(listBaseResponse.getRet()==200){
final RightDialog dialog=new RightDialog();
Bundle bundle=new Bundle();
bundle.putString("msg","下单成功");
dialog.setArguments(bundle);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
dialog.dismiss();
if(isFast){//快速点餐直接跳到订单详情
Intent intent=new Intent(context, OrderActivity.class);
intent.putExtra("orderid",orderid);
context.startActivity(intent);
}else{
startActivity(TangShiActivity.class);
}
}
},1000);
dialog.show(((AppCompatActivity)context).getSupportFragmentManager(),"rightDialog");
}else{
ToastUtils.showShort(listBaseResponse.getMsg());
}
}
}, new Consumer<ResponseThrowable>() {
@Override
public void accept(ResponseThrowable responseThrowable) throws Exception {
dismissDialog();
responseThrowable.printStackTrace();
ToastUtils.showShort(responseThrowable.msg);
}
});
}
}
... ...
package com.naji.xiaotao.cart.vm;
import android.content.Context;
import android.databinding.ObservableBoolean;
import com.naji.xiaotao.cart.entity.RemarkEntity;
import com.naji.xiaotao.cart.entity.RemarkItemEntity;
import me.goldze.mvvmhabit.base.BaseViewModel;
import me.goldze.mvvmhabit.binding.command.BindingAction;
import me.goldze.mvvmhabit.binding.command.BindingCommand;
public class RemarkItemViewModel extends BaseViewModel{
public RemarkEntity entity;
public RemarkItemEntity one,two,three;
public ObservableBoolean oneSelected=new ObservableBoolean(false);
public ObservableBoolean twoSelected=new ObservableBoolean(false);
public ObservableBoolean threeSelected=new ObservableBoolean(false);
public RemarkItemViewModel(Context context, RemarkEntity entity){
super(context);
this.entity=entity;
one=entity.getList().get(0);
two=entity.getList().get(1);
if(entity.getList().size()>=3){
three=entity.getList().get(2);
}
if(entity.getList().get(0).isSelected()){
oneSelected.set(true);
}
if(entity.getList().get(1).isSelected()){
twoSelected.set(true);
}
if(entity.getList().size()>=3&&entity.getList().get(2).isSelected()){
threeSelected.set(true);
}
}
public BindingCommand OnOneClickCommand=new BindingCommand(new BindingAction() {
@Override
public void call() {
oneSelected.set(!oneSelected.get());
entity.getList().get(0).setSelected(!entity.getList().get(0).isSelected());
}
});
public BindingCommand OnTwoClickCommand=new BindingCommand(new BindingAction() {
@Override
public void call() {
twoSelected.set(!twoSelected.get());
entity.getList().get(1).setSelected(!entity.getList().get(1).isSelected());
}
});
public BindingCommand OnThreeClickCommand=new BindingCommand(new BindingAction() {
@Override
public void call() {
threeSelected.set(!threeSelected.get());
entity.getList().get(2).setSelected(!entity.getList().get(2).isSelected());
}
});
}
... ...
package com.naji.xiaotao.cart.vm;
import android.content.Context;
import android.databinding.ObservableArrayList;
import android.databinding.ObservableField;
import android.databinding.ObservableList;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import com.naji.xiaotao.R;
import com.naji.xiaotao.BR;
import com.naji.xiaotao.cart.entity.RemarkEntity;
import com.naji.xiaotao.cart.entity.RemarkItemEntity;
import com.naji.xiaotao.cart.service.CartApiService;
import com.naji.xiaotao.cart.ui.RemarkActivity;
import com.naji.xiaotao.common.dialog.RightDialog;
import com.naji.xiaotao.http.RetrofitClient;
import com.naji.xiaotao.tangshi.ui.TangShiActivity;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import me.goldze.mvvmhabit.base.BaseViewModel;
import me.goldze.mvvmhabit.base.TitleViewModel;
import me.goldze.mvvmhabit.binding.command.BindingAction;
import me.goldze.mvvmhabit.binding.command.BindingCommand;
import me.goldze.mvvmhabit.http.BaseResponse;
import me.goldze.mvvmhabit.http.ResponseThrowable;
import me.goldze.mvvmhabit.utils.KLog;
import me.goldze.mvvmhabit.utils.RxUtils;
import me.goldze.mvvmhabit.utils.SPUtils;
import me.goldze.mvvmhabit.utils.ToastUtils;
import me.tatarka.bindingcollectionadapter2.ItemBinding;
import me.tatarka.bindingcollectionadapter2.OnItemBind;
public class RemarkViewModel extends BaseViewModel{
public TitleViewModel titleViewModel;
private String orderid;
private String remarkid;
public ObservableField<String> remark=new ObservableField<>();
@Override
public void onCreate() {
super.onCreate();
getRemarkBySellerid();
}
public RemarkViewModel(Context context,String orderid,String remarkid,String remark){
super(context);
titleViewModel=new TitleViewModel(context,"整单备注");
this.orderid=orderid;
this.remarkid=remarkid;
if(!TextUtils.isEmpty(remark)){
this.remark.set(remark);
}
}
public ObservableList<RemarkItemViewModel> observableList=new ObservableArrayList<>();
public OnItemBind<RemarkItemViewModel> itemBinding=new OnItemBind<RemarkItemViewModel>() {
@Override
public void onItemBind(ItemBinding itemBinding, int position, RemarkItemViewModel item) {
if(item.entity.getList().size()>2){
itemBinding.set(BR.viewModel,R.layout.layout_remark_three_item);
}else{
itemBinding.set(BR.viewModel,R.layout.layout_remark_two_item);
}
}
};
private void getRemarkBySellerid(){
Map<String,String> params=new HashMap<>();
params.put("sellerid", SPUtils.getInstance("user_info").getString("sellerid"));
params.put("orderid",orderid);
RetrofitClient.getInstance().create(CartApiService.class)
.getRemarkBySellerid(params)
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
})
.subscribe(new Consumer<BaseResponse<List<List<RemarkEntity>>>>() {
@Override
public void accept(BaseResponse<List<List<RemarkEntity>>> listBaseResponse) throws Exception {
if(listBaseResponse.getRet()==200){
observableList.clear();
for(RemarkEntity entity:listBaseResponse.getData().get(0)){
if(!TextUtils.isEmpty(remarkid)){
String[] remarkids=remarkid.split(",");
KLog.d("remarkids",remarkids);
for(RemarkItemEntity itemEntity:entity.getList()){
for(int i=0;i<remarkids.length;i++){
if(remarkids[i].equals(itemEntity.getId())){
itemEntity.setSelected(true);
}
}
}
}
observableList.add(new RemarkItemViewModel(context,entity));
}
}else{
ToastUtils.showShort(listBaseResponse.getMsg());
}
}
}, new Consumer<ResponseThrowable>() {
@Override
public void accept(ResponseThrowable responseThrowable) throws Exception {
responseThrowable.printStackTrace();
ToastUtils.showShort(responseThrowable.msg);
}
});
}
//保存备注
public BindingCommand onRemarkSaveCommand=new BindingCommand(new BindingAction() {
@Override
public void call() {
StringBuilder builder=new StringBuilder();
for(RemarkItemViewModel itemViewModel:observableList){
for(RemarkItemEntity item:itemViewModel.entity.getList()){
if(item.isSelected()){
builder.append(item.getId()+",");
}
}
}
String remrkid="";
if(builder.length()>0){
remrkid=builder.toString().substring(0,builder.length()-1);
}
KLog.d("remarkid",remrkid);
setOrderById(remrkid);
}
});
//修改订单人数备注
private void setOrderById(String remarkid){
Map<String,String> params=new HashMap<>();
params.put("orderid",orderid);
params.put("remark",TextUtils.isEmpty(remark.get())?"":remark.get());
params.put("remarkid",remarkid);
RetrofitClient.getInstance().create(CartApiService.class)
.setOrderById(params)
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
showDialog();
}
})
.subscribe(new Consumer<BaseResponse<List<String>>>() {
@Override
public void accept(BaseResponse<List<String>> listBaseResponse) throws Exception {
dismissDialog();
if(listBaseResponse.getRet()==200){
final RightDialog dialog=new RightDialog();
Bundle bundle=new Bundle();
bundle.putString("msg","备注成功");
dialog.setArguments(bundle);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
dialog.dismiss();
((RemarkActivity)context).finish();
}
}, 1000);
dialog.show(((AppCompatActivity)context).getSupportFragmentManager(),"rightDialog");
}else{
dismissDialog();
ToastUtils.showShort(listBaseResponse.getMsg());
}
}
}, new Consumer<ResponseThrowable>() {
@Override
public void accept(ResponseThrowable responseThrowable) throws Exception {
dismissDialog();
responseThrowable.printStackTrace();
ToastUtils.showShort(responseThrowable.msg);
}
});
}
}
... ...
package com.naji.xiaotao.common.binding.xrecyclerview;
import android.databinding.BindingAdapter;
import android.support.design.widget.TabLayout;
import com.jcodecraeer.xrecyclerview.XRecyclerView;
import me.goldze.mvvmhabit.binding.command.BindingCommand;
public class ViewAdapter {
@BindingAdapter(value = {"onRefreshCommand","onLoadMoreCommand"},requireAll = false)
public static void onRefreshCommand(XRecyclerView xRecyclerView, final BindingCommand onRefreshCommand, final BindingCommand onLoadMoreCommand){
xRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
if(onRefreshCommand!=null){
onRefreshCommand.execute();
}
}
@Override
public void onLoadMore() {
if(onLoadMoreCommand!=null){
onLoadMoreCommand.execute();
}
}
});
}
@BindingAdapter(value = {"OnTabSelectCommand"},requireAll = false)
public static void onTabSelectCommand(TabLayout tabLayout,final BindingCommand<Integer> onTabSelectCommand){
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
onTabSelectCommand.execute(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
}
... ...
package com.naji.xiaotao.common.db;
import com.raizlabs.android.dbflow.annotation.Database;
@Database(version = AppDataBase.version)
public class AppDataBase {
public static final int version=1;
}
... ...
package com.naji.xiaotao.common.dialog;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.DialogFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.TextView;
import com.naji.xiaotao.R;
public class RightDialog extends DialogFragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
getDialog().setCanceledOnTouchOutside(false);
View view=inflater.inflate(R.layout.dialog_right,container);
((TextView)view.findViewById(R.id.message)).setText(getArguments().getString("msg"));
return view;
}
}
... ...
package com.naji.xiaotao.cookbook.adapter;
import android.content.Context;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.util.TypedValue;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.naji.xiaotao.R;
import com.naji.xiaotao.cookbook.bean.CookbookDetailEntity;
import com.naji.xiaotao.cookbook.bean.ReduceBean;
import com.naji.xiaotao.cookbook.bean.ResultEntity;
import com.naji.xiaotao.cookbook.dialog.ReduceFragmentDialog;
import com.naji.xiaotao.cookbook.dialog.SelectFragmentDialog;
import com.naji.xiaotao.cookbook.service.CookbookApiService;
import com.naji.xiaotao.cookbook.viewholder.RvHolder;
import com.naji.xiaotao.cookbook.listener.RvListener;
import com.naji.xiaotao.http.RetrofitClient;
import com.naji.xiaotao.tangshi.entity.OrderEntity;
import com.othershe.library.NiceImageView;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import me.goldze.mvvmhabit.bus.RxBus;
import me.goldze.mvvmhabit.http.BaseResponse;
import me.goldze.mvvmhabit.http.ResponseThrowable;
import me.goldze.mvvmhabit.utils.RxUtils;
import me.goldze.mvvmhabit.utils.SPUtils;
import me.goldze.mvvmhabit.utils.ToastUtils;
public class ClassifyDetailAdapter extends RvAdapter<CookbookDetailEntity> {
private Context context;
private String orderid;
private String fromSource;
public ClassifyDetailAdapter(Context context, List<CookbookDetailEntity> list, String orderid,String fromSource,RvListener listener) {
super(context, list, listener);
this.context=context;
this.orderid=orderid;
this.fromSource=fromSource;
}
@Override
protected int getLayoutId(int viewType) {
return viewType == 0 ? R.layout.cookbook_item_title : R.layout.cookbook_item__detail;
}
@Override
public int getItemViewType(int position) {
return list.get(position).isTitle() ? 0 : 1;
}
@Override
protected RvHolder getHolder(View view, int viewType) {
return new ClassifyHolder(view, viewType, listener);
}
public class ClassifyHolder extends RvHolder<CookbookDetailEntity> {
TextView tvTitle;//标题栏标题
TextView tvCook;//菜品名称
ImageView noMoreImg;//卖光了
TextView tvYidian;//点过标志
LinearLayout tagLayout;//标签容器
TextView tvPrice;//价格
TextView lastNum;//剩余菜品数量
ImageView jianImg;//减图标
TextView havingNum;//已点数量
ImageView addImg;//加图标
NiceImageView cookImg;//菜品图标
public ClassifyHolder(View itemView, int type, RvListener listener) {
super(itemView, type, listener);
switch (type) {
case 0:
tvTitle = (TextView) itemView.findViewById(R.id.tv_title);
break;
case 1:
tvCook= (TextView) itemView.findViewById(R.id.tv_cook);
noMoreImg=itemView.findViewById(R.id.nomore);
tvYidian=itemView.findViewById(R.id.yidian);
tagLayout=itemView.findViewById(R.id.tag_layout);
tvPrice=itemView.findViewById(R.id.price);
lastNum=itemView.findViewById(R.id.lastnum);
jianImg=itemView.findViewById(R.id.jianImg);
havingNum=itemView.findViewById(R.id.havingnum);
addImg=itemView.findViewById(R.id.addImg);
cookImg=itemView.findViewById(R.id.cook_img);
break;
}
}
@Override
public void bindHolder(final CookbookDetailEntity sortBean, final int position) {
int itemViewType = ClassifyDetailAdapter.this.getItemViewType(position);
switch (itemViewType) {
case 0:
tvTitle.setText(sortBean.getTitleName());
break;
case 1:
tvCook.setText(sortBean.getName());
tvPrice.setText(sortBean.getPrice()+"元/"+sortBean.getUnit());
havingNum.setText(sortBean.getNum()+"");
if(!TextUtils.isEmpty(sortBean.getClear_num())&&Integer.parseInt(sortBean.getClear_num())<=0){
lastNum.setVisibility(View.GONE);
noMoreImg.setVisibility(View.VISIBLE);
addImg.setVisibility(View.GONE);
}else{
if(!TextUtils.isEmpty(sortBean.getClear_num())&&Integer.parseInt(sortBean.getClear_num())<=10){
lastNum.setVisibility(View.VISIBLE);
lastNum.setText("剩余"+sortBean.getClear_num()+"份");
}else{
lastNum.setVisibility(View.GONE);
lastNum.setText("剩余"+sortBean.getClear_num()+"份");
}
noMoreImg.setVisibility(View.INVISIBLE);
addImg.setVisibility(View.VISIBLE);
}
if(sortBean.getNum()>0){
jianImg.setVisibility(View.VISIBLE);
havingNum.setVisibility(View.VISIBLE);
}else{
jianImg.setVisibility(View.INVISIBLE);
havingNum.setVisibility(View.INVISIBLE);
}
if(!TextUtils.isEmpty(sortBean.getImage())){
//使用Glide框架加载图片
Glide.with(cookImg.getContext())
.load(sortBean.getImage())
.apply(new RequestOptions().placeholder(null))
.into(cookImg);
cookImg.setVisibility(View.VISIBLE);
}else{
cookImg.setVisibility(View.GONE);
}
tagLayout.removeAllViews();
if(sortBean.getLabelList()!=null&&sortBean.getLabelList().size()>0){
LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.MATCH_PARENT);
params.rightMargin= (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,10,mContext.getResources().getDisplayMetrics());
for(int i=0;i<sortBean.getLabelList().size();i++){
ImageView imageView=new ImageView(mContext);
Glide.with(imageView.getContext())
.load(sortBean.getLabelList().get(i))
.apply(new RequestOptions().placeholder(null))
.into(imageView);
tagLayout.addView(imageView,params);
}
}
addImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(!TextUtils.isEmpty(list.get(position).getClear_num())&&list.get(position).getNum()==Integer.parseInt(list.get(position).getClear_num())){
ToastUtils.showShort("菜品沽清不足");
return;
}
if(sortBean.getPractice().size()>0||sortBean.getSpec().size()>0){//有菜品规格或者做法
SelectFragmentDialog dialog=new SelectFragmentDialog();
dialog.setOnSureClickListener(new SelectFragmentDialog.onSureClickListener() {
@Override
public void onSureClick(String specid, String practiceid,String spec,String practice) {
addCookToCart(position,specid,practiceid,spec,practice,jianImg,havingNum);
}
});
Bundle bundle=new Bundle();
bundle.putSerializable("cook",list.get(position));
dialog.setArguments(bundle);
dialog.show(((AppCompatActivity)context).getSupportFragmentManager(),"selectFragmentDialog");
return;
}
addCookToCart(position,"","","","",jianImg,havingNum);
}
});
jianImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(sortBean.getPractice().size()>0||sortBean.getSpec().size()>0){//有菜品规格或做法
//获取一点菜品规则做法列表
Map<String,String> params=new HashMap<>();
params.put("sellerid",SPUtils.getInstance("user_info").getString("sellerid"));
params.put("orderid",orderid);
params.put("cookbookid",sortBean.getId());
RetrofitClient.getInstance().create(CookbookApiService.class)
.getCookbookSelBySpecsId(params)
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
})
.subscribe(new Consumer<BaseResponse<List<List<ReduceBean>>>>() {
@Override
public void accept(BaseResponse<List<List<ReduceBean>>> listBaseResponse) throws Exception {
if(listBaseResponse.getRet()==200){
final ReduceFragmentDialog dialog=new ReduceFragmentDialog();
dialog.setListener(new ReduceFragmentDialog.ReduceListener() {
@Override
public void onAddSuccess(int position,ReduceBean bean) {
list.get(position).setNum(list.get(position).getNum()+1);
havingNum.setText(list.get(position).getNum()+"");
}
@Override
public void onReduceSuccess(int position,ReduceBean bean) {
list.get(position).setNum(list.get(position).getNum()-1);
havingNum.setText(list.get(position).getNum()+"");
if(list.get(position).getNum()==0){
jianImg.setVisibility(View.INVISIBLE);
havingNum.setVisibility(View.INVISIBLE);
dialog.dismiss();
}
}
});
Bundle bundle=new Bundle();
bundle.putInt("position",position);
bundle.putString("cookname",sortBean.getName());
bundle.putString("fromSource",fromSource);
bundle.putString("clear_num",sortBean.getClear_num());
bundle.putParcelableArrayList("list", (ArrayList<? extends Parcelable>) listBaseResponse.getData().get(0));
dialog.setArguments(bundle);
dialog.show(((AppCompatActivity)context).getSupportFragmentManager(),"selectFragmentDialog");
}else{
ToastUtils.showShort(listBaseResponse.getMsg());
}
}
}, new Consumer<ResponseThrowable>() {
@Override
public void accept(ResponseThrowable throwable) throws Exception {
throwable.printStackTrace();
ToastUtils.showShort(throwable.msg);
}
});
return;
}
reduceCookFromCart(position,"","",jianImg,havingNum);
}
});
break;
}
}
}
//添加菜品到购物车
private void addCookToCart(final int position, final String specid, final String practiceid, final String spec, final String practice, final ImageView reduceImg, final TextView havingNum){
Map<String,String> params=new HashMap<>();
params.put("orderid",orderid);
params.put("openid", SPUtils.getInstance("user_info").getString("openid"));
params.put("cookbookid",list.get(position).getId());
params.put("identity","2");
if(!TextUtils.isEmpty(specid)){
params.put("specid",specid);
}
if(!TextUtils.isEmpty(practiceid)){
params.put("practiceid",practiceid);
}
if(!TextUtils.isEmpty(fromSource)){
params.put("fromSoucre",fromSource);
}
RetrofitClient.getInstance().create(CookbookApiService.class)
.addCookToCart(params)
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
})
.subscribe(new Consumer<BaseResponse<List<ResultEntity>>>() {
@Override
public void accept(BaseResponse<List<ResultEntity>> baseResponse) throws Exception {
if(baseResponse.getRet()==200){
list.get(position).setNum(list.get(position).getNum()+1);
havingNum.setText(list.get(position).getNum()+"");
reduceImg.setVisibility(View.VISIBLE);
havingNum.setVisibility(View.VISIBLE);
//通知CookbookMainActivity改变购物车数量
RxBus.getDefault().post(1);
}else{
ToastUtils.showShort(baseResponse.getMsg());
}
}
}, new Consumer<ResponseThrowable>() {
@Override
public void accept(ResponseThrowable throwable) throws Exception {
ToastUtils.showShort(throwable.msg);
throwable.printStackTrace();
}
});
}
//删减菜品从购物车
private void reduceCookFromCart(final int position,final String specid,final String practiceid,final ImageView reduceImg, final TextView havingNum){
Map<String,String> params=new HashMap<>();
params.put("orderid",orderid);
params.put("cookbookid",list.get(position).getId());
params.put("identity","2");
if(!TextUtils.isEmpty(specid)){
params.put("specid",specid);
}
if(!TextUtils.isEmpty(practiceid)){
params.put("practiceid",practiceid);
}
if(!TextUtils.isEmpty(fromSource)){
params.put("fromSoucre",fromSource);
}
RetrofitClient.getInstance().create(CookbookApiService.class)
.reduceCookFromCart(params)
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
})
.subscribe(new Consumer<BaseResponse<List<ResultEntity>>>() {
@Override
public void accept(BaseResponse<List<ResultEntity>> baseResponse) throws Exception {
if(baseResponse.getRet()==200){
list.get(position).setNum(list.get(position).getNum()-1);
havingNum.setText(list.get(position).getNum()+"");
if(list.get(position).getNum()<=0){
reduceImg.setVisibility(View.INVISIBLE);
havingNum.setVisibility(View.INVISIBLE);
}
//通知CookbookMainActivity改变购物车数量
RxBus.getDefault().post(-1);
}else{
ToastUtils.showShort(baseResponse.getMsg());
}
}
}, new Consumer<ResponseThrowable>() {
@Override
public void accept(ResponseThrowable throwable) throws Exception {
ToastUtils.showShort(throwable.msg);
throwable.printStackTrace();
}
});
}
}
... ...
package com.naji.xiaotao.cookbook.adapter;
import android.annotation.SuppressLint;
import android.content.Context;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.naji.xiaotao.R;
import com.naji.xiaotao.cookbook.bean.ReduceBean;
import com.naji.xiaotao.cookbook.bean.ResultEntity;
import com.naji.xiaotao.cookbook.dialog.ReduceFragmentDialog;
import com.naji.xiaotao.cookbook.listener.RvListener;
import com.naji.xiaotao.cookbook.service.CookbookApiService;
import com.naji.xiaotao.cookbook.viewholder.RvHolder;
import com.naji.xiaotao.http.RetrofitClient;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import me.goldze.mvvmhabit.bus.RxBus;
import me.goldze.mvvmhabit.http.BaseResponse;
import me.goldze.mvvmhabit.http.ResponseThrowable;
import me.goldze.mvvmhabit.utils.RxUtils;
import me.goldze.mvvmhabit.utils.SPUtils;
import me.goldze.mvvmhabit.utils.ToastUtils;
public class ReduceAdapter extends RvAdapter<ReduceBean>{
private ReduceFragmentDialog.ReduceListener reduceListener;
private int position;
private String fromSource;
private String clear_num;//菜品沽清数量
public ReduceAdapter(Context context, List<ReduceBean> list, ReduceFragmentDialog.ReduceListener reduceListener,int position,String fromSource,String clear_num){
super(context,list,null);
this.reduceListener=reduceListener;
this.position=position;
this.fromSource=fromSource;
this.clear_num=clear_num;
}
@Override
protected int getLayoutId(int viewType) {
return R.layout.dialog_reduce_item;
}
@Override
protected RvHolder getHolder(View view, int viewType) {
return new ReduceHolder(view,viewType,null);
}
public class ReduceHolder extends RvHolder<ReduceBean>{
private TextView cookbookTv;
private ImageView addBn;
private TextView countTv;
private ImageView reduceBn;
public ReduceHolder(View itemView, int type, RvListener rvListener){
super(itemView,type,rvListener);
cookbookTv=itemView.findViewById(R.id.cookbook);
addBn=itemView.findViewById(R.id.add);
countTv=itemView.findViewById(R.id.count);
reduceBn=itemView.findViewById(R.id.reduce);
}
@Override
public void bindHolder(final ReduceBean reduceBean, final int position) {
if(!TextUtils.isEmpty(reduceBean.getPtitle())&&!TextUtils.isEmpty(reduceBean.getTitle())){
cookbookTv.setText(reduceBean.getTitle()+","+reduceBean.getPtitle());
}else if(!TextUtils.isEmpty(reduceBean.getTitle())){
cookbookTv.setText(reduceBean.getTitle());
}else if(!TextUtils.isEmpty(reduceBean.getPtitle())){
cookbookTv.setText(reduceBean.getPtitle());
}
countTv.setText(reduceBean.getPractNum());
addBn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(!TextUtils.isEmpty(clear_num)&&Integer.parseInt(list.get(position).getPractNum())==Integer.parseInt(clear_num)){
ToastUtils.showShort("菜品沽清不足");
return;
}
addCookToCart(countTv,position,reduceBean);
}
});
reduceBn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
reduceCookFromCart(position,reduceBean);
}
});
}
}
//添加菜品到购物车
private void addCookToCart(final TextView countTv, final int pos, final ReduceBean bean){
Map<String,String> params=new HashMap<>();
params.put("orderid",bean.getOrderid());
params.put("openid", SPUtils.getInstance("user_info").getString("openid"));
params.put("cookbookid",bean.getCookbookid());
params.put("identity","2");
if(!TextUtils.isEmpty(bean.getSpecid())){
params.put("specid",bean.getSpecid());
}
if(!TextUtils.isEmpty(bean.getPracticeid())){
params.put("practiceid",bean.getPracticeid());
}
if(!TextUtils.isEmpty(fromSource)){
params.put("fromSoucre",fromSource);
}
RetrofitClient.getInstance().create(CookbookApiService.class)
.addCookToCart(params)
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
})
.subscribe(new Consumer<BaseResponse<List<ResultEntity>>>() {
@Override
public void accept(BaseResponse<List<ResultEntity>> baseResponse) throws Exception {
if(baseResponse.getRet()==200){
list.get(pos).setPractNum((Integer.parseInt(list.get(pos).getPractNum())+1)+"");
countTv.setText(list.get(pos).getPractNum());
if(reduceListener!=null){
reduceListener.onAddSuccess(position,bean);
}
//通知CookbookMainActivity改变购物车数量
RxBus.getDefault().post(1);
}else{
ToastUtils.showShort(baseResponse.getMsg());
}
}
}, new Consumer<ResponseThrowable>() {
@Override
public void accept(ResponseThrowable throwable) throws Exception {
ToastUtils.showShort(throwable.msg);
throwable.printStackTrace();
}
});
}
//删减菜品从购物车esult")
private void reduceCookFromCart(final int pos, final ReduceBean bean){
Map<String,String> params=new HashMap<>();
params.put("orderid",bean.getOrderid());
params.put("cookbookid",bean.getCookbookid());
params.put("identity","2");
if(!TextUtils.isEmpty(bean.getSpecid())){
params.put("specid",bean.getSpecid());
}
if(!TextUtils.isEmpty(bean.getPracticeid())){
params.put("practiceid",bean.getPracticeid());
}
if(!TextUtils.isEmpty(fromSource)){
params.put("fromSoucre",fromSource);
}
RetrofitClient.getInstance().create(CookbookApiService.class)
.reduceCookFromCart(params)
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
}
})
.subscribe(new Consumer<BaseResponse<List<ResultEntity>>>() {
@Override
public void accept(BaseResponse<List<ResultEntity>> baseResponse) throws Exception {
if(baseResponse.getRet()==200){
list.get(pos).setPractNum((Integer.parseInt(list.get(pos).getPractNum())-1)+"");
if(Integer.parseInt(list.get(pos).getPractNum())==0){
list.remove(pos);
if(list.size()<=0){
}
}
notifyDataSetChanged();
if(reduceListener!=null){
reduceListener.onReduceSuccess(position,bean);
}
//通知CookbookMainActivity改变购物车数量
RxBus.getDefault().post(-1);
}else{
ToastUtils.showShort(baseResponse.getMsg());
}
}
}, new Consumer<ResponseThrowable>() {
@Override
public void accept(ResponseThrowable throwable) throws Exception {
ToastUtils.showShort(throwable.msg);
throwable.printStackTrace();
}
});
}
}
... ...
package com.naji.xiaotao.cookbook.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.naji.xiaotao.cookbook.viewholder.RvHolder;
import com.naji.xiaotao.cookbook.listener.RvListener;
import java.util.List;
@SuppressWarnings("unchecked")
public abstract class RvAdapter<T> extends RecyclerView.Adapter<RvHolder> {
protected List<T> list;
protected Context mContext;
protected RvListener listener;
protected LayoutInflater mInflater;
private RecyclerView mRecyclerView;
public RvAdapter(Context context, List<T> list, RvListener listener) {
mContext = context;
mInflater = LayoutInflater.from(context);
this.list = list;
this.listener = listener;
}
@Override
public RvHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = mInflater.inflate(getLayoutId(viewType), parent, false);
return getHolder(view, viewType);
}
protected abstract int getLayoutId(int viewType);
@Override
public void onBindViewHolder(RvHolder holder, int position) {
holder.bindHolder(list.get(position), position);
}
@Override
public int getItemCount() {
return list.size();
}
@Override
public int getItemViewType(int position) {
return 0;
}
protected abstract RvHolder getHolder(View view, int viewType);
}
... ...
package com.naji.xiaotao.cookbook.adapter;
import android.content.Context;
import android.graphics.Color;
import android.view.View;
import android.widget.TextView;
import com.naji.xiaotao.R;
import com.naji.xiaotao.cookbook.viewholder.RvHolder;
import com.naji.xiaotao.cookbook.listener.RvListener;
import java.util.List;
public class SortAdapter extends RvAdapter<String> {
private int checkedPosition;
public void setCheckedPosition(int checkedPosition) {
this.checkedPosition = checkedPosition;
notifyDataSetChanged();
}
public SortAdapter(Context context, List<String> list, RvListener listener) {
super(context, list, listener);
}
@Override
protected int getLayoutId(int viewType) {
return R.layout.cookbook_item_sort_list;
}
@Override
protected RvHolder getHolder(View view, int viewType) {
return new SortHolder(view, viewType, listener);
}
private class SortHolder extends RvHolder<String> {
private View line;
private TextView tvName;
private View mView;
SortHolder(View itemView, int type, RvListener listener) {
super(itemView, type, listener);
this.mView = itemView;
line=itemView.findViewById(R.id.line);
tvName = (TextView) itemView.findViewById(R.id.tv_sort);
}
@Override
public void bindHolder(String string, int position) {
tvName.setText(string);
if (position == checkedPosition) {
mView.setBackgroundColor(Color.parseColor("#ffffff"));
tvName.setTextColor(Color.parseColor("#61a5d1"));
line.setVisibility(View.VISIBLE);
} else {
mView.setBackgroundColor(Color.parseColor("#F5f5f5"));
tvName.setTextColor(Color.parseColor("#999999"));
line.setVisibility(View.INVISIBLE);
}
}
}
}
... ...
package com.naji.xiaotao.cookbook.bean;
import android.os.Parcel;
import android.os.Parcelable;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class CookbookDetailEntity implements Serializable, Parcelable {
private String id;
private String cid;
private String lid;
private String unit;
private String name;
private String price;
private String member_price;
private String first_name;
private String search_code;
private String give;
private String status;
private String order_o;
private String image;
private String clear_num;//0卖光了
private String cdate;
private int isSpec;//1 为有规格的菜品 为无规格菜品
private List<CookbookSize> spec;//菜品规格列表
private List<CookbookPractice> practice;//菜品做法列表
private List<String> labelList;//标签列表
private int num;//已点数量
private String titleName;
private boolean isTitle;//title标志位
private String tag;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCid() {
return cid;
}
public void setCid(String cid) {
this.cid = cid;
}
public String getLid() {
return lid;
}
public void setLid(String lid) {
this.lid = lid;
}
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getMember_price() {
return member_price;
}
public void setMember_price(String member_price) {
this.member_price = member_price;
}
public String getFirst_name() {
return first_name;
}
public void setFirst_name(String first_name) {
this.first_name = first_name;
}
public String getSearch_code() {
return search_code;
}
public void setSearch_code(String search_code) {
this.search_code = search_code;
}
public String getGive() {
return give;
}
public void setGive(String give) {
this.give = give;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getOrder_o() {
return order_o;
}
public void setOrder_o(String order_o) {
this.order_o = order_o;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getClear_num() {
return clear_num;
}
public void setClear_num(String clear_num) {
this.clear_num = clear_num;
}
public String getCdate() {
return cdate;
}
public void setCdate(String cdate) {
this.cdate = cdate;
}
public int getIsSpec() {
return isSpec;
}
public void setIsSpec(int isSpec) {
this.isSpec = isSpec;
}
public List<CookbookSize> getSpec() {
return spec;
}
public void setSpec(List<CookbookSize> spec) {
this.spec = spec;
}
public List<CookbookPractice> getPractice() {
return practice;
}
public void setPractice(List<CookbookPractice> practice) {
this.practice = practice;
}
public List<String> getLabelList() {
return labelList;
}
public void setLabelList(List<String> labelList) {
this.labelList = labelList;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getTitleName() {
return titleName;
}
public void setTitleName(String titleName) {
this.titleName = titleName;
}
public boolean isTitle() {
return isTitle;
}
public void setTitle(boolean title) {
isTitle = title;
}
public String getTag() {
return tag;
}
public void setTag(String tag) {
this.tag = tag;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.id);
dest.writeString(this.cid);
dest.writeString(this.lid);
dest.writeString(this.unit);
dest.writeString(this.name);
dest.writeString(this.price);
dest.writeString(this.member_price);
dest.writeString(this.first_name);
dest.writeString(this.search_code);
dest.writeString(this.give);
dest.writeString(this.status);
dest.writeString(this.order_o);
dest.writeString(this.image);
dest.writeString(this.clear_num);
dest.writeString(this.cdate);
dest.writeInt(this.isSpec);
dest.writeList(this.spec);
dest.writeList(this.practice);
dest.writeStringList(this.labelList);
dest.writeInt(this.num);
dest.writeString(this.titleName);
dest.writeByte(this.isTitle ? (byte) 1 : (byte) 0);
dest.writeString(this.tag);
}
public CookbookDetailEntity() {
}
protected CookbookDetailEntity(Parcel in) {
this.id = in.readString();
this.cid = in.readString();
this.lid = in.readString();
this.unit = in.readString();
this.name = in.readString();
this.price = in.readString();
this.member_price = in.readString();
this.first_name = in.readString();
this.search_code = in.readString();
this.give = in.readString();
this.status = in.readString();
this.order_o = in.readString();
this.image = in.readString();
this.clear_num = in.readString();
this.cdate = in.readString();
this.isSpec = in.readInt();
this.spec = new ArrayList<CookbookSize>();
in.readList(this.spec, CookbookSize.class.getClassLoader());
this.practice = new ArrayList<CookbookPractice>();
in.readList(this.practice, CookbookPractice.class.getClassLoader());
this.labelList = in.createStringArrayList();
this.num = in.readInt();
this.titleName = in.readString();
this.isTitle = in.readByte() != 0;
this.tag = in.readString();
}
public static final Creator<CookbookDetailEntity> CREATOR = new Creator<CookbookDetailEntity>() {
@Override
public CookbookDetailEntity createFromParcel(Parcel source) {
return new CookbookDetailEntity(source);
}
@Override
public CookbookDetailEntity[] newArray(int size) {
return new CookbookDetailEntity[size];
}
};
}
... ...
package com.naji.xiaotao.cookbook.bean;
import android.os.Parcel;
import android.os.Parcelable;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class CookbookEntity implements Serializable{
private String id;
private String sellerid;
private String class_label;
private String class_name;
private String order;
private String status;
private String class_type;
private List<List<CookbookDetailEntity>> cookbooklist;
public CookbookEntity(CookbookEntity entity){
this.id=entity.getId();
this.sellerid=entity.getSellerid();
this.class_label=entity.getClass_label();
this.class_name=entity.getClass_name();
this.order=entity.getOrder();
this.status=entity.getStatus();
this.class_type=entity.getClass_type();
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getSellerid() {
return sellerid;
}
public void setSellerid(String sellerid) {
this.sellerid = sellerid;
}
public String getClass_label() {
return class_label;
}
public void setClass_label(String class_label) {
this.class_label = class_label;
}
public String getClass_name() {
return class_name;
}
public void setClass_name(String class_name) {
this.class_name = class_name;
}
public String getOrder() {
return order;
}
public void setOrder(String order) {
this.order = order;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getClass_type() {
return class_type;
}
public void setClass_type(String class_type) {
this.class_type = class_type;
}
public List<List<CookbookDetailEntity>> getCookbooklist() {
return cookbooklist;
}
public void setCookbooklist(List<List<CookbookDetailEntity>> cookbooklist) {
this.cookbooklist = cookbooklist;
}
}
... ...
package com.naji.xiaotao.cookbook.bean;
import android.os.Parcel;
import android.os.Parcelable;
import java.io.Serializable;
public class CookbookPractice implements Serializable {
private String id;
private String cid;
private String practice;
private String name;
private String price;
private String member_price;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCid() {
return cid;
}
public void setCid(String cid) {
this.cid = cid;
}
public String getPractice() {
return practice;
}
public void setPractice(String practice) {
this.practice = practice;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getMember_price() {
return member_price;
}
public void setMember_price(String member_price) {
this.member_price = member_price;
}
}
... ...
package com.naji.xiaotao.cookbook.bean;
import java.io.Serializable;
public class CookbookSize implements Serializable{
private String id;
private String cid;
private String specid;
private String specs;
private String price;
private String member_price;
private String clear_num;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCid() {
return cid;
}
public void setCid(String cid) {
this.cid = cid;
}
public String getSpecid() {
return specid;
}
public void setSpecid(String specid) {
this.specid = specid;
}
public String getSpecs() {
return specs;
}
public void setSpecs(String specs) {
this.specs = specs;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getMember_price() {
return member_price;
}
public void setMember_price(String member_price) {
this.member_price = member_price;
}
public String getClear_num() {
return clear_num;
}
public void setClear_num(String clear_num) {
this.clear_num = clear_num;
}
}
... ...
package com.naji.xiaotao.cookbook.bean;
import android.os.Parcel;
import android.os.Parcelable;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class OuterEntity implements Serializable{
private ArrayList<CookbookEntity> list;
private int countTotal;//购物车菜品数量
private float countPirce;//购物车菜品价格
public ArrayList<CookbookEntity> getList() {
return list;
}
public void setList(ArrayList<CookbookEntity> list) {
this.list = list;
}
public int getCountTotal() {
return countTotal;
}
public void setCountTotal(int countTotal) {
this.countTotal = countTotal;
}
public float getCountPirce() {
return countPirce;
}
public void setCountPirce(float countPirce) {
this.countPirce = countPirce;
}
}
... ...
package com.naji.xiaotao.cookbook.bean;
import android.os.Parcel;
import android.os.Parcelable;
public class ReduceBean implements Parcelable {
private String orderid;//订单id
private String cookbookid;//菜品id
private String specid;//规则id
private String practiceid;//做法id
private String title;//规格名称
private String ptitle;//做法名称
private String foodNum;//数量
private String practNum;//菜品数量
public String getOrderid() {
return orderid;
}
public void setOrderid(String orderid) {
this.orderid = orderid;
}
public String getCookbookid() {
return cookbookid;
}
public void setCookbookid(String cookbookid) {
this.cookbookid = cookbookid;
}
public String getSpecid() {
return specid;
}
public void setSpecid(String specid) {
this.specid = specid;
}
public String getPracticeid() {
return practiceid;
}
public void setPracticeid(String practiceid) {
this.practiceid = practiceid;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getPtitle() {
return ptitle;
}
public void setPtitle(String ptitle) {
this.ptitle = ptitle;
}
public String getFoodNum() {
return foodNum;
}
public void setFoodNum(String foodNum) {
this.foodNum = foodNum;
}
public String getPractNum() {
return practNum;
}
public void setPractNum(String practNum) {
this.practNum = practNum;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.orderid);
dest.writeString(this.cookbookid);
dest.writeString(this.specid);
dest.writeString(this.practiceid);
dest.writeString(this.title);
dest.writeString(this.ptitle);
dest.writeString(this.foodNum);
dest.writeString(this.practNum);
}
public ReduceBean() {
}
protected ReduceBean(Parcel in) {
this.orderid = in.readString();
this.cookbookid = in.readString();
this.specid = in.readString();
this.practiceid = in.readString();
this.title = in.readString();
this.ptitle = in.readString();
this.foodNum = in.readString();
this.practNum = in.readString();
}
public static final Creator<ReduceBean> CREATOR = new Creator<ReduceBean>() {
@Override
public ReduceBean createFromParcel(Parcel source) {
return new ReduceBean(source);
}
@Override
public ReduceBean[] newArray(int size) {
return new ReduceBean[size];
}
};
}
... ...