Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
supplier
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
王宇航
supplier
Commits
d2a34349
Commit
d2a34349
authored
Apr 08, 2021
by
宁斌
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1、新增會員優惠券頁面 2、處理報表圖表控件滑動衝突問題
parent
84221077
Hide whitespace changes
Inline
Side-by-side
Showing
69 changed files
with
2792 additions
and
848 deletions
+2792
-848
component-login/src/main/res/layout/activity_choose_restaurant.xml
+3
-2
component-main/src/main/java/com/gingersoft/gsa/cloud/main/ComponentMain.java
+1
-1
component-main/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/activity/MainActivity.java
+0
-1
component-main/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/activity/ReportActivity.java
+10
-1
component-main/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/fragment/BusinessReportFragment.java
+27
-37
component-main/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/fragment/HomeFragment.java
+3
-19
component-main/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/fragment/MyFragment.java
+0
-1
component-main/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/fragment/PaymentMethodReportFragment.java
+24
-0
component-main/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/fragment/SalesFragment.java
+25
-36
component-manager/src/main/java/com/gingersoft/gsa/cloud/manager/mvp/presenter/TableManagePresenter.java
+0
-3
component-table/src/main/java/com/gingersoft/gsa/cloud/table/di/component/BillDiscountComponent.java
+42
-0
component-table/src/main/java/com/gingersoft/gsa/cloud/table/di/component/CouponComponent.java
+43
-0
component-table/src/main/java/com/gingersoft/gsa/cloud/table/di/module/BillDiscountModule.java
+50
-0
component-table/src/main/java/com/gingersoft/gsa/cloud/table/di/module/CouponModule.java
+54
-0
component-table/src/main/java/com/gingersoft/gsa/cloud/table/di/module/MealStandModule.java
+90
-0
component-table/src/main/java/com/gingersoft/gsa/cloud/table/di/module/TableModule.java
+0
-12
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/contract/BillDiscountContract.java
+35
-0
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/contract/CouponContract.java
+51
-0
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/contract/MealStandContract.java
+5
-1
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/contract/OrderContentContract.java
+1
-1
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/BillDiscountModel.java
+59
-0
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/CouponModel.java
+77
-0
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/OrderContentModel.java
+6
-6
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/service/MemberService.java
+4
-0
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/BaseOrderPresenter.java
+2
-6
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/BillDiscountPresenter.java
+70
-0
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/CouponPresenter.java
+145
-0
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/MealStandPresenter.java
+37
-50
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/OrderContentPresenter.java
+54
-16
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/OrderPayPresenter.java
+1
-0
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/MealStandActivity.java
+23
-3
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/OrderContentActivity.java
+5
-3
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/adapter/meal/FoodAdapter.java
+2
-0
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/adapter/meal/FoodGroupAdapter.java
+6
-0
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/fragment/AllOrderFragment.java
+0
-2
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/fragment/discount/BillDiscountFragment.java
+187
-0
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/fragment/discount/CouponFragment.java
+228
-0
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/fragment/discount/DiscountDialogFragment.java
+248
-0
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/widget/DiscountDialog.java
+157
-37
component-table/src/main/res/layout/fragment_bill_discount.xml
+13
-0
component-table/src/main/res/layout/fragment_container.xml
+9
-0
component-table/src/main/res/layout/fragment_coupon.xml
+21
-0
component-table/src/main/res/layout/table_activity_order_content.xml
+6
-0
component-table/src/main/res/layout/table_dialog_discout.xml
+14
-20
component-table/src/main/res/layout/table_stub_transfer_food.xml
+0
-2
component-webview/src/main/java/com/gingersoft/gsa/cloud/webview/mvp/ui/activity/WebActivity.java
+2
-530
component-webview/src/main/java/com/gingersoft/gsa/cloud/webview/mvp/ui/view/WebViewProgressBar.java
+1
-1
config.gradle
+1
-1
library-base/src/main/java/com/jess/arms/base/BaseDialogFragment.java
+476
-0
library-base/src/main/java/com/jess/arms/base/BaseFragment.java
+17
-17
library-base/src/main/java/com/jess/arms/base/delegate/ActivityDelegateImpl.java
+2
-9
library-base/src/main/java/com/jess/arms/base/delegate/FragmentDelegateImpl.java
+13
-1
library-base/src/main/java/com/jess/arms/base/delegate/IFragment.java
+7
-0
library-common/src/main/debug/AndroidManifest.xml
+39
-0
library-common/src/main/debug/res/values/styles.xml
+11
-0
library-common/src/main/java/com/gingersoft/gsa/cloud/common/bean/LayoutInfoBean.java
+23
-0
library-common/src/main/java/com/gingersoft/gsa/cloud/common/core/discount/AbstractDiscount.java
+12
-0
library-common/src/main/java/com/gingersoft/gsa/cloud/common/core/discount/BillDiscount.java
+13
-0
library-common/src/main/java/com/gingersoft/gsa/cloud/common/core/discount/MemberCoupon.java
+41
-0
library-common/src/main/java/com/gingersoft/gsa/cloud/common/loadsir/LoadsirUtil.java
+93
-0
library-common/src/main/java/com/gingersoft/gsa/cloud/common/loadsir/LoadsirUtils.java
+0
-18
library-common/src/main/java/com/gingersoft/gsa/cloud/common/loadsir/TimeoutCallback.java
+1
-1
library-common/src/main/java/com/gingersoft/gsa/cloud/common/rxjava/ErrorHandleSingleSubscriber.java
+50
-0
library-order/src/main/java/com/gingersoft/gsa/cloud/order/bean/request/MealOrderPayRequest.java
+22
-1
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/bean/PayMethod.java
+9
-9
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/AAChartCoreLib/AAChartConfiger/AAChartView.java
+6
-0
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/adapter/TagViewAdapter.java
+39
-0
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/bean/TagViewItem.java
+56
-0
library-ui/src/main/res/layout/item_tag_view.xml
+20
-0
No files found.
component-login/src/main/res/layout/activity_choose_restaurant.xml
View file @
d2a34349
...
@@ -3,7 +3,6 @@
...
@@ -3,7 +3,6 @@
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/theme_background_color"
android:orientation=
"vertical"
>
android:orientation=
"vertical"
>
<com.qmuiteam.qmui.widget.QMUITopBar
<com.qmuiteam.qmui.widget.QMUITopBar
...
@@ -16,5 +15,6 @@
...
@@ -16,5 +15,6 @@
android:id=
"@+id/section_layout"
android:id=
"@+id/section_layout"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
android:descendantFocusability=
"blocksDescendants"
/>
android:descendantFocusability=
"blocksDescendants"
android:background=
"@color/theme_background_color"
/>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
component-main/src/main/java/com/gingersoft/gsa/cloud/main/ComponentMain.java
View file @
d2a34349
...
@@ -132,7 +132,7 @@ public class ComponentMain implements IComponent {
...
@@ -132,7 +132,7 @@ public class ComponentMain implements IComponent {
}
}
private
void
openActivity
(
CC
cc
)
{
private
void
openActivity
(
CC
cc
)
{
Intent
intent
=
new
Intent
(
cc
.
getContext
(),
New
MainActivity
.
class
);
Intent
intent
=
new
Intent
(
cc
.
getContext
(),
MainActivity
.
class
);
intent
.
addFlags
(
Intent
.
FLAG_ACTIVITY_NEW_TASK
);
intent
.
addFlags
(
Intent
.
FLAG_ACTIVITY_NEW_TASK
);
cc
.
getContext
().
startActivity
(
intent
);
cc
.
getContext
().
startActivity
(
intent
);
// CCUtil.createNavigateIntent(cc, NewMainActivity.class);
// CCUtil.createNavigateIntent(cc, NewMainActivity.class);
...
...
component-main/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/activity/MainActivity.java
View file @
d2a34349
...
@@ -87,7 +87,6 @@ public class MainActivity extends BaseFragmentActivity<MainPresenter> implements
...
@@ -87,7 +87,6 @@ public class MainActivity extends BaseFragmentActivity<MainPresenter> implements
return
HomeFragment
.
newInstance
();
return
HomeFragment
.
newInstance
();
case
1
:
case
1
:
return
ReportListFragment
.
newInstance
();
return
ReportListFragment
.
newInstance
();
case
2
:
default
:
default
:
return
MyFragment
.
newInstance
();
return
MyFragment
.
newInstance
();
}
}
...
...
component-main/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/activity/ReportActivity.java
View file @
d2a34349
...
@@ -4,11 +4,13 @@ import android.content.Intent;
...
@@ -4,11 +4,13 @@ import android.content.Intent;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.util.TypedValue
;
import
android.util.TypedValue
;
import
android.widget.TextView
;
import
android.widget.TextView
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
androidx.annotation.Nullable
;
import
androidx.core.content.ContextCompat
;
import
androidx.core.content.ContextCompat
;
import
androidx.fragment.app.Fragment
;
import
androidx.fragment.app.Fragment
;
import
androidx.viewpager.widget.ViewPager
;
import
androidx.viewpager.widget.ViewPager
;
import
com.gingersoft.gsa.cloud.main.R
;
import
com.gingersoft.gsa.cloud.main.R
;
import
com.gingersoft.gsa.cloud.main.R2
;
import
com.gingersoft.gsa.cloud.main.R2
;
import
com.gingersoft.gsa.cloud.main.di.component.DaggerReportComponent
;
import
com.gingersoft.gsa.cloud.main.di.component.DaggerReportComponent
;
...
@@ -24,9 +26,12 @@ import com.jess.arms.base.BaseFragmentActivity;
...
@@ -24,9 +26,12 @@ import com.jess.arms.base.BaseFragmentActivity;
import
com.jess.arms.di.component.AppComponent
;
import
com.jess.arms.di.component.AppComponent
;
import
com.jess.arms.utils.ArmsUtils
;
import
com.jess.arms.utils.ArmsUtils
;
import
com.qmuiteam.qmui.widget.QMUITopBar
;
import
com.qmuiteam.qmui.widget.QMUITopBar
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
butterknife.BindView
;
import
butterknife.BindView
;
import
static
com
.
jess
.
arms
.
utils
.
Preconditions
.
checkNotNull
;
import
static
com
.
jess
.
arms
.
utils
.
Preconditions
.
checkNotNull
;
...
@@ -54,6 +59,8 @@ public class ReportActivity extends BaseFragmentActivity<ReportPresenter> implem
...
@@ -54,6 +59,8 @@ public class ReportActivity extends BaseFragmentActivity<ReportPresenter> implem
private
TabFragmentAdapter
mTabFragmentAdapter
;
private
TabFragmentAdapter
mTabFragmentAdapter
;
private
List
<
String
>
titles
;
private
List
<
String
>
titles
;
private
BusinessReportFragment
businessReportFragment
;
@Override
@Override
public
void
setupActivityComponent
(
@NonNull
AppComponent
appComponent
)
{
public
void
setupActivityComponent
(
@NonNull
AppComponent
appComponent
)
{
DaggerReportComponent
//如找不到该类,请编译一下项目
DaggerReportComponent
//如找不到该类,请编译一下项目
...
@@ -84,8 +91,10 @@ public class ReportActivity extends BaseFragmentActivity<ReportPresenter> implem
...
@@ -84,8 +91,10 @@ public class ReportActivity extends BaseFragmentActivity<ReportPresenter> implem
titles
.
add
(
"銷售分析"
);
titles
.
add
(
"銷售分析"
);
titles
.
add
(
"支付分析"
);
titles
.
add
(
"支付分析"
);
businessReportFragment
=
BusinessReportFragment
.
newInstance
();
List
<
Fragment
>
mFragments
=
new
ArrayList
<>();
List
<
Fragment
>
mFragments
=
new
ArrayList
<>();
mFragments
.
add
(
BusinessReportFragment
.
newInstance
()
);
mFragments
.
add
(
businessReportFragment
);
mFragments
.
add
(
SalesFragment
.
newInstance
());
mFragments
.
add
(
SalesFragment
.
newInstance
());
mFragments
.
add
(
PaymentMethodReportFragment
.
newInstance
());
mFragments
.
add
(
PaymentMethodReportFragment
.
newInstance
());
//实例化适配器
//实例化适配器
...
...
component-main/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/fragment/BusinessReportFragment.java
View file @
d2a34349
...
@@ -4,6 +4,7 @@ import android.content.Intent;
...
@@ -4,6 +4,7 @@ import android.content.Intent;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.os.Message
;
import
android.os.Message
;
import
android.view.LayoutInflater
;
import
android.view.LayoutInflater
;
import
android.view.MotionEvent
;
import
android.view.View
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.ViewGroup
;
import
android.widget.LinearLayout
;
import
android.widget.LinearLayout
;
...
@@ -109,6 +110,9 @@ public class BusinessReportFragment extends BaseFragment<BusinessReportPresenter
...
@@ -109,6 +110,9 @@ public class BusinessReportFragment extends BaseFragment<BusinessReportPresenter
private
int
manyDay
=
7
;
private
int
manyDay
=
7
;
private
String
restaurantId
;
private
String
restaurantId
;
private
boolean
mChartFocus
;
public
static
BusinessReportFragment
newInstance
()
{
public
static
BusinessReportFragment
newInstance
()
{
BusinessReportFragment
fragment
=
new
BusinessReportFragment
();
BusinessReportFragment
fragment
=
new
BusinessReportFragment
();
return
fragment
;
return
fragment
;
...
@@ -138,51 +142,37 @@ public class BusinessReportFragment extends BaseFragment<BusinessReportPresenter
...
@@ -138,51 +142,37 @@ public class BusinessReportFragment extends BaseFragment<BusinessReportPresenter
mTvStartTime
.
setText
(
TimeUtils
.
getOldDate
(-
manyDay
+
1
));
mTvStartTime
.
setText
(
TimeUtils
.
getOldDate
(-
manyDay
+
1
));
mTvEndTime
.
setText
(
TimeUtils
.
getOldDate
(
0
));
mTvEndTime
.
setText
(
TimeUtils
.
getOldDate
(
0
));
//处理报表滑动过程中和页面滑动出现冲突
mLineChart
.
setOnTouchListener
(
new
View
.
OnTouchListener
()
{
@Override
public
boolean
onTouch
(
View
v
,
MotionEvent
event
)
{
switch
(
event
.
getAction
())
{
case
MotionEvent
.
ACTION_DOWN
:
mLineChart
.
requestDisallowInterceptTouchEvent
(
true
);
break
;
case
MotionEvent
.
ACTION_POINTER_UP
:
mLineChart
.
requestDisallowInterceptTouchEvent
(
false
);
break
;
case
MotionEvent
.
ACTION_CANCEL
:
mLineChart
.
requestDisallowInterceptTouchEvent
(
false
);
break
;
}
return
false
;
}
});
}
@Override
public
void
onLazyInitView
(
@Nullable
Bundle
savedInstanceState
)
{
super
.
onLazyInitView
(
savedInstanceState
);
getInfo
();
getInfo
();
}
}
/**
* 通过此方法可以使 Fragment 能够与外界做一些交互和通信, 比如说外部的 Activity 想让自己持有的某个 Fragment 对象执行一些方法,
* 建议在有多个需要与外界交互的方法时, 统一传 {@link Message}, 通过 what 字段来区分不同的方法, 在 {@link #setData(Object)}
* 方法中就可以 {@code switch} 做不同的操作, 这样就可以用统一的入口方法做多个不同的操作, 可以起到分发的作用
* <p>
* 调用此方法时请注意调用时 Fragment 的生命周期, 如果调用 {@link #setData(Object)} 方法时 {@link Fragment#onCreate(Bundle)} 还没执行
* 但在 {@link #setData(Object)} 里却调用了 Presenter 的方法, 是会报空的, 因为 Dagger 注入是在 {@link Fragment#onCreate(Bundle)} 方法中执行的
* 然后才创建的 Presenter, 如果要做一些初始化操作,可以不必让外部调用 {@link #setData(Object)}, 在 {@link #initData(Bundle)} 中初始化就可以了
* <p>
* Example usage:
* <pre>
* public void setData(@Nullable Object data) {
* if (data != null && data instanceof Message) {
* switch (((Message) data).what) {
* case 0:
* loadData(((Message) data).arg1);
* break;
* case 1:
* refreshUI();
* break;
* default:
* //do something
* break;
* }
* }
* }
*
* // call setData(Object):
* Message data = new Message();
* data.what = 0;
* data.arg1 = 1;
* fragment.setData(data);
* </pre>
*
* @param data 当不需要参数时 {@code data} 可以为 {@code null}
*/
@Override
@Override
public
void
setData
(
@Nullable
Object
data
)
{
public
void
setData
(
@Nullable
Object
data
)
{
}
}
@Override
@Override
public
void
showLoading
(
String
message
)
{
public
void
showLoading
(
String
message
)
{
if
(
message
!=
null
)
if
(
message
!=
null
)
...
...
component-main/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/fragment/HomeFragment.java
View file @
d2a34349
...
@@ -40,6 +40,7 @@ import com.gingersoft.gsa.cloud.common.function.jump.ActivityJumpStrategy;
...
@@ -40,6 +40,7 @@ import com.gingersoft.gsa.cloud.common.function.jump.ActivityJumpStrategy;
import
com.gingersoft.gsa.cloud.common.leaks.WeakHandler
;
import
com.gingersoft.gsa.cloud.common.leaks.WeakHandler
;
import
com.gingersoft.gsa.cloud.common.logan.LoganManager
;
import
com.gingersoft.gsa.cloud.common.logan.LoganManager
;
import
com.gingersoft.gsa.cloud.common.service.ICommandService
;
import
com.gingersoft.gsa.cloud.common.service.ICommandService
;
import
com.gingersoft.gsa.cloud.common.service.IServiceManager
;
import
com.gingersoft.gsa.cloud.common.utils.AppDevices
;
import
com.gingersoft.gsa.cloud.common.utils.AppDevices
;
import
com.gingersoft.gsa.cloud.common.utils.JsonUtils
;
import
com.gingersoft.gsa.cloud.common.utils.JsonUtils
;
import
com.gingersoft.gsa.cloud.common.utils.StytemUtils
;
import
com.gingersoft.gsa.cloud.common.utils.StytemUtils
;
...
@@ -251,25 +252,8 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements HomeCon
...
@@ -251,25 +252,8 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements HomeCon
}
}
private
void
initService
()
{
private
void
initService
()
{
boolean
deliveryOrderServiceRunning
=
StytemUtils
.
isServiceRunning
(
"com.gingersoft.gsa.cloud.common.service.ICommandService"
,
_mActivity
);
IServiceManager
.
startICommandService
(
GsaCloudApplication
.
getAppContext
());
if
(!
deliveryOrderServiceRunning
)
{
IServiceManager
.
startPrjService
(
GsaCloudApplication
.
getAppContext
());
Intent
service
=
new
Intent
(
GsaCloudApplication
.
getAppContext
(),
ICommandService
.
class
);
service
.
putExtra
(
ICommandService
.
CONNECTION_TYPE
,
ICommandService
.
mCurrConnectionType
);
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
O
)
{
mContext
.
startForegroundService
(
service
);
}
else
{
mContext
.
startService
(
service
);
}
}
boolean
prjServiceRunning
=
StytemUtils
.
isServiceRunning
(
"com.joe.print.mvp.print.service.PrjService"
,
_mActivity
);
if
(!
prjServiceRunning
)
{
//開啟Prj打印服務
CC
.
obtainBuilder
(
ComponentName
.
COMPONENT_PRINT
)
.
setActionName
(
"openPrintService"
)
.
build
()
.
call
();
}
}
}
/**
/**
...
...
component-main/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/fragment/MyFragment.java
View file @
d2a34349
...
@@ -41,7 +41,6 @@ public class MyFragment extends BaseFragment<MyPresenter> implements MyContract.
...
@@ -41,7 +41,6 @@ public class MyFragment extends BaseFragment<MyPresenter> implements MyContract.
@BindView
(
R2
.
id
.
main_personal_center_rv
)
@BindView
(
R2
.
id
.
main_personal_center_rv
)
RecyclerView
rvMyList
;
RecyclerView
rvMyList
;
public
static
MyFragment
newInstance
()
{
public
static
MyFragment
newInstance
()
{
MyFragment
fragment
=
new
MyFragment
();
MyFragment
fragment
=
new
MyFragment
();
return
fragment
;
return
fragment
;
...
...
component-main/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/fragment/PaymentMethodReportFragment.java
View file @
d2a34349
...
@@ -5,6 +5,7 @@ import android.graphics.Color;
...
@@ -5,6 +5,7 @@ import android.graphics.Color;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.os.Message
;
import
android.os.Message
;
import
android.view.LayoutInflater
;
import
android.view.LayoutInflater
;
import
android.view.MotionEvent
;
import
android.view.View
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.ViewGroup
;
import
android.widget.TextView
;
import
android.widget.TextView
;
...
@@ -108,6 +109,29 @@ public class PaymentMethodReportFragment extends BaseFragment<PaymentMethodRepor
...
@@ -108,6 +109,29 @@ public class PaymentMethodReportFragment extends BaseFragment<PaymentMethodRepor
mTvStartTime
.
setText
(
TimeUtils
.
getOldDate
(-
7
));
mTvStartTime
.
setText
(
TimeUtils
.
getOldDate
(-
7
));
mTvEndTime
.
setText
(
TimeUtils
.
getOldDate
(
0
));
mTvEndTime
.
setText
(
TimeUtils
.
getOldDate
(
0
));
//处理报表滑动过程中和页面滑动出现冲突
chart
.
setOnTouchListener
(
new
View
.
OnTouchListener
()
{
@Override
public
boolean
onTouch
(
View
v
,
MotionEvent
event
)
{
switch
(
event
.
getAction
())
{
case
MotionEvent
.
ACTION_DOWN
:
chart
.
requestDisallowInterceptTouchEvent
(
true
);
break
;
case
MotionEvent
.
ACTION_POINTER_UP
:
chart
.
requestDisallowInterceptTouchEvent
(
false
);
break
;
case
MotionEvent
.
ACTION_CANCEL
:
chart
.
requestDisallowInterceptTouchEvent
(
false
);
break
;
}
return
false
;
}
});
}
@Override
public
void
onLazyInitView
(
@Nullable
Bundle
savedInstanceState
)
{
super
.
onLazyInitView
(
savedInstanceState
);
getPayMenthInfo
();
getPayMenthInfo
();
}
}
...
...
component-main/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/fragment/SalesFragment.java
View file @
d2a34349
...
@@ -5,6 +5,7 @@ import android.graphics.Color;
...
@@ -5,6 +5,7 @@ import android.graphics.Color;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.os.Message
;
import
android.os.Message
;
import
android.view.LayoutInflater
;
import
android.view.LayoutInflater
;
import
android.view.MotionEvent
;
import
android.view.View
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.ViewGroup
;
import
android.widget.LinearLayout
;
import
android.widget.LinearLayout
;
...
@@ -134,46 +135,34 @@ public class SalesFragment extends BaseFragment<SalesPresenter> implements Sales
...
@@ -134,46 +135,34 @@ public class SalesFragment extends BaseFragment<SalesPresenter> implements Sales
mTvEndTime
.
setText
(
TimeUtils
.
getOldDate
(
0
));
mTvEndTime
.
setText
(
TimeUtils
.
getOldDate
(
0
));
startEndTimePickerView
.
setOnUpdateTimePicker
(
onUpdateTimePicker
);
startEndTimePickerView
.
setOnUpdateTimePicker
(
onUpdateTimePicker
);
//处理报表滑动过程中和页面滑动出现冲突
salesChart
.
setOnTouchListener
(
new
View
.
OnTouchListener
()
{
@Override
public
boolean
onTouch
(
View
v
,
MotionEvent
event
)
{
switch
(
event
.
getAction
())
{
case
MotionEvent
.
ACTION_DOWN
:
salesChart
.
requestDisallowInterceptTouchEvent
(
true
);
break
;
case
MotionEvent
.
ACTION_POINTER_UP
:
salesChart
.
requestDisallowInterceptTouchEvent
(
false
);
break
;
case
MotionEvent
.
ACTION_CANCEL
:
salesChart
.
requestDisallowInterceptTouchEvent
(
false
);
break
;
}
return
false
;
}
});
}
@Override
public
void
onLazyInitView
(
@Nullable
Bundle
savedInstanceState
)
{
super
.
onLazyInitView
(
savedInstanceState
);
getSaleReport
();
getSaleReport
();
getDeliveryReport
();
getDeliveryReport
();
}
}
/**
* 通过此方法可以使 Fragment 能够与外界做一些交互和通信, 比如说外部的 Activity 想让自己持有的某个 Fragment 对象执行一些方法,
* 建议在有多个需要与外界交互的方法时, 统一传 {@link Message}, 通过 what 字段来区分不同的方法, 在 {@link #setData(Object)}
* 方法中就可以 {@code switch} 做不同的操作, 这样就可以用统一的入口方法做多个不同的操作, 可以起到分发的作用
* <p>
* 调用此方法时请注意调用时 Fragment 的生命周期, 如果调用 {@link #setData(Object)} 方法时 {@link Fragment#onCreate(Bundle)} 还没执行
* 但在 {@link #setData(Object)} 里却调用了 Presenter 的方法, 是会报空的, 因为 Dagger 注入是在 {@link Fragment#onCreate(Bundle)} 方法中执行的
* 然后才创建的 Presenter, 如果要做一些初始化操作,可以不必让外部调用 {@link #setData(Object)}, 在 {@link #initData(Bundle)} 中初始化就可以了
* <p>
* Example usage:
* <pre>
* public void setData(@Nullable Object data) {
* if (data != null && data instanceof Message) {
* switch (((Message) data).what) {
* case 0:
* loadData(((Message) data).arg1);
* break;
* case 1:
* refreshUI();
* break;
* default:
* //do something
* break;
* }
* }
* }
*
* // call setData(Object):
* Message data = new Message();
* data.what = 0;
* data.arg1 = 1;
* fragment.setData(data);
* </pre>
*
* @param data 当不需要参数时 {@code data} 可以为 {@code null}
*/
@Override
@Override
public
void
setData
(
@Nullable
Object
data
)
{
public
void
setData
(
@Nullable
Object
data
)
{
...
...
component-manager/src/main/java/com/gingersoft/gsa/cloud/manager/mvp/presenter/TableManagePresenter.java
View file @
d2a34349
...
@@ -64,12 +64,9 @@ public class TableManagePresenter extends BasePresenter<TableManageContract.Mode
...
@@ -64,12 +64,9 @@ public class TableManagePresenter extends BasePresenter<TableManageContract.Mode
private
GetTableTimer
tableTimer
;
private
GetTableTimer
tableTimer
;
private
Disposable
mGetTablesDataDisposable
;
private
Disposable
mGetTablesDataDisposable
;
private
TableManageActivity
IActivity
;
@Inject
@Inject
public
TableManagePresenter
(
TableManageContract
.
Model
model
,
TableManageContract
.
View
rootView
)
{
public
TableManagePresenter
(
TableManageContract
.
Model
model
,
TableManageContract
.
View
rootView
)
{
super
(
model
,
rootView
);
super
(
model
,
rootView
);
this
.
IActivity
=
(
TableManageActivity
)
rootView
;
}
}
@Override
@Override
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/di/component/BillDiscountComponent.java
0 → 100644
View file @
d2a34349
package
com
.
gingersoft
.
gsa
.
cloud
.
table
.
di
.
component
;
import
dagger.BindsInstance
;
import
dagger.Component
;
import
com.jess.arms.di.component.AppComponent
;
import
com.gingersoft.gsa.cloud.table.di.module.BillDiscountModule
;
import
com.gingersoft.gsa.cloud.table.mvp.contract.BillDiscountContract
;
import
com.jess.arms.di.scope.FragmentScope
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.fragment.discount.BillDiscountFragment
;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/02/2021 17:26
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@FragmentScope
@Component
(
modules
=
BillDiscountModule
.
class
,
dependencies
=
AppComponent
.
class
)
public
interface
BillDiscountComponent
{
void
inject
(
BillDiscountFragment
fragment
);
@Component
.
Builder
interface
Builder
{
@BindsInstance
BillDiscountComponent
.
Builder
view
(
BillDiscountContract
.
View
view
);
BillDiscountComponent
.
Builder
appComponent
(
AppComponent
appComponent
);
BillDiscountComponent
build
();
}
}
\ No newline at end of file
component-table/src/main/java/com/gingersoft/gsa/cloud/table/di/component/CouponComponent.java
0 → 100644
View file @
d2a34349
package
com
.
gingersoft
.
gsa
.
cloud
.
table
.
di
.
component
;
import
dagger.BindsInstance
;
import
dagger.Component
;
import
dagger.Subcomponent
;
import
com.jess.arms.di.component.AppComponent
;
import
com.gingersoft.gsa.cloud.table.di.module.CouponModule
;
import
com.gingersoft.gsa.cloud.table.mvp.contract.CouponContract
;
import
com.jess.arms.di.scope.FragmentScope
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.fragment.discount.CouponFragment
;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/02/2021 17:28
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@FragmentScope
@Component
(
modules
=
CouponModule
.
class
,
dependencies
=
AppComponent
.
class
)
public
interface
CouponComponent
{
void
inject
(
CouponFragment
fragment
);
@Component
.
Builder
interface
Builder
{
@BindsInstance
CouponComponent
.
Builder
view
(
CouponContract
.
View
view
);
CouponComponent
.
Builder
appComponent
(
AppComponent
appComponent
);
CouponComponent
build
();
}
}
\ No newline at end of file
component-table/src/main/java/com/gingersoft/gsa/cloud/table/di/module/BillDiscountModule.java
0 → 100644
View file @
d2a34349
package
com
.
gingersoft
.
gsa
.
cloud
.
table
.
di
.
module
;
import
com.gingersoft.gsa.cloud.ui.adapter.TagViewAdapter
;
import
com.gingersoft.gsa.cloud.ui.bean.TagViewItem
;
import
com.jess.arms.di.scope.ActivityScope
;
import
com.jess.arms.di.scope.FragmentScope
;
import
dagger.Binds
;
import
dagger.Module
;
import
dagger.Provides
;
import
com.gingersoft.gsa.cloud.table.mvp.contract.BillDiscountContract
;
import
com.gingersoft.gsa.cloud.table.mvp.model.BillDiscountModel
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/02/2021 17:26
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@Module
public
abstract
class
BillDiscountModule
{
@Binds
abstract
BillDiscountContract
.
Model
bindBillDiscountModel
(
BillDiscountModel
model
);
@FragmentScope
@Provides
static
List
<
TagViewItem
>
provideBillDiscountList
(){
return
new
ArrayList
<>();
}
@FragmentScope
@Provides
static
TagViewAdapter
provideBillDiscountAdapter
(
List
<
TagViewItem
>
billDiscountList
){
return
new
TagViewAdapter
(
billDiscountList
);
}
}
\ No newline at end of file
component-table/src/main/java/com/gingersoft/gsa/cloud/table/di/module/CouponModule.java
0 → 100644
View file @
d2a34349
package
com
.
gingersoft
.
gsa
.
cloud
.
table
.
di
.
module
;
import
com.gingersoft.gsa.cloud.common.core.discount.MemberCoupon
;
import
com.gingersoft.gsa.cloud.ui.adapter.TagViewAdapter
;
import
com.gingersoft.gsa.cloud.ui.bean.TagViewItem
;
import
com.jess.arms.di.scope.ActivityScope
;
import
com.jess.arms.di.scope.FragmentScope
;
import
dagger.Binds
;
import
dagger.Module
;
import
dagger.Provides
;
import
com.gingersoft.gsa.cloud.table.mvp.contract.CouponContract
;
import
com.gingersoft.gsa.cloud.table.mvp.model.CouponModel
;
import
java.util.ArrayList
;
import
java.util.List
;
import
javax.inject.Inject
;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/02/2021 17:28
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@Module
public
abstract
class
CouponModule
{
@Binds
abstract
CouponContract
.
Model
bindCouponModel
(
CouponModel
model
);
@FragmentScope
@Provides
static
List
<
TagViewItem
>
provideMemberCouponList
(){
return
new
ArrayList
<>();
}
@FragmentScope
@Provides
static
TagViewAdapter
provideMemberCouponAdapter
(
List
<
TagViewItem
>
memberCouponList
){
return
new
TagViewAdapter
(
memberCouponList
);
}
}
\ No newline at end of file
component-table/src/main/java/com/gingersoft/gsa/cloud/table/di/module/MealStandModule.java
View file @
d2a34349
package
com
.
gingersoft
.
gsa
.
cloud
.
table
.
di
.
module
;
package
com
.
gingersoft
.
gsa
.
cloud
.
table
.
di
.
module
;
import
android.content.Context
;
import
com.gingersoft.gsa.cloud.database.bean.ComboItem
;
import
com.gingersoft.gsa.cloud.database.bean.Discount
;
import
com.gingersoft.gsa.cloud.database.bean.Food
;
import
com.gingersoft.gsa.cloud.database.bean.Modifier
;
import
com.gingersoft.gsa.cloud.table.mvp.contract.MealStandContract
;
import
com.gingersoft.gsa.cloud.table.mvp.contract.MealStandContract
;
import
com.gingersoft.gsa.cloud.table.mvp.model.MealStandModel
;
import
com.gingersoft.gsa.cloud.table.mvp.model.MealStandModel
;
import
com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ComboAdapter
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.DiscountAdapter
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.FoodAdapter
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.FoodGroupAdapter
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ModifierAdapter
;
import
com.jess.arms.di.scope.ActivityScope
;
import
java.util.ArrayList
;
import
java.util.List
;
import
javax.inject.Inject
;
import
javax.inject.Named
;
import
dagger.Binds
;
import
dagger.Binds
;
import
dagger.Module
;
import
dagger.Module
;
import
dagger.Provides
;
/**
/**
...
@@ -25,4 +45,73 @@ public abstract class MealStandModule {
...
@@ -25,4 +45,73 @@ public abstract class MealStandModule {
@Binds
@Binds
abstract
MealStandContract
.
Model
bindMealStandModel
(
MealStandModel
model
);
abstract
MealStandContract
.
Model
bindMealStandModel
(
MealStandModel
model
);
@ActivityScope
@Provides
@Named
(
"foodGroupList"
)
static
List
<
Food
>
provideFoodGroupList
()
{
return
new
ArrayList
<>();
}
@ActivityScope
@Provides
@Named
(
"foodList"
)
static
List
<
Food
>
provideFoodList
()
{
return
new
ArrayList
<>();
}
@ActivityScope
@Provides
static
List
<
ComboItem
>
provideFoodCombo
()
{
return
new
ArrayList
<>();
}
@ActivityScope
@Provides
static
List
<
Modifier
>
provideModifierList
()
{
return
new
ArrayList
<>();
}
@ActivityScope
@Provides
static
List
<
Discount
>
provideDiscountList
()
{
return
new
ArrayList
<>();
}
@ActivityScope
@Provides
static
List
<
SoldoutCtrFood
>
provideSoldoutCtrList
()
{
return
new
ArrayList
<>();
}
@ActivityScope
@Provides
static
FoodGroupAdapter
provideFoodGroupAdapter
(
MealStandContract
.
View
IView
,
@Named
(
"foodGroupList"
)
List
<
Food
>
foodGroupList
)
{
return
new
FoodGroupAdapter
(
IView
.
getActivity
(),
foodGroupList
,
IView
.
getFromType
());
}
@ActivityScope
@Provides
static
FoodAdapter
provideFoodAdapter
(
MealStandContract
.
View
IView
,
@Named
(
"foodList"
)
List
<
Food
>
foodList
)
{
return
new
FoodAdapter
(
IView
.
getActivity
(),
foodList
,
IView
.
getFromType
());
}
@ActivityScope
@Provides
static
ComboAdapter
provideComboAdapter
(
MealStandContract
.
View
IView
,
List
<
ComboItem
>
comboItemList
)
{
return
new
ComboAdapter
(
IView
.
getActivity
(),
comboItemList
);
}
@ActivityScope
@Provides
static
ModifierAdapter
provideModifierAdapter
(
MealStandContract
.
View
IView
,
List
<
Modifier
>
modifierList
)
{
return
new
ModifierAdapter
(
IView
.
getActivity
(),
modifierList
);
}
@ActivityScope
@Provides
static
DiscountAdapter
provideDiscountAdapter
(
MealStandContract
.
View
IView
,
List
<
Discount
>
discountList
)
{
return
new
DiscountAdapter
(
IView
.
getActivity
(),
discountList
);
}
}
}
\ No newline at end of file
component-table/src/main/java/com/gingersoft/gsa/cloud/table/di/module/TableModule.java
View file @
d2a34349
...
@@ -35,15 +35,4 @@ public abstract class TableModule {
...
@@ -35,15 +35,4 @@ public abstract class TableModule {
@Binds
@Binds
abstract
TableContract
.
Model
bindTableModel
(
TableModel
model
);
abstract
TableContract
.
Model
bindTableModel
(
TableModel
model
);
@ActivityScope
@Provides
static
List
<
Food
>
provideFoodList
()
{
return
new
ArrayList
<>();
}
@ActivityScope
@Provides
static
FoodAdapter
provideFoodAdapter
(
Context
context
,
List
<
Food
>
foodList
,
int
fromType
)
{
return
new
FoodAdapter
(
context
,
foodList
,
fromType
);
}
}
}
\ No newline at end of file
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/contract/BillDiscountContract.java
0 → 100644
View file @
d2a34349
package
com
.
gingersoft
.
gsa
.
cloud
.
table
.
mvp
.
contract
;
import
androidx.recyclerview.widget.RecyclerView
;
import
com.gingersoft.gsa.cloud.database.bean.Discount
;
import
com.jess.arms.mvp.IView
;
import
com.jess.arms.mvp.IModel
;
import
com.kingja.loadsir.callback.Callback
;
import
java.util.List
;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/02/2021 17:26
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public
interface
BillDiscountContract
{
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface
View
extends
IView
{
void
returnBillCoupon
(
List
<
Discount
>
discounts
);
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface
Model
extends
IModel
{
List
<
Discount
>
queryDB_DiscountList
(
byte
discountScope
,
byte
discountType
);
}
}
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/contract/CouponContract.java
0 → 100644
View file @
d2a34349
package
com
.
gingersoft
.
gsa
.
cloud
.
table
.
mvp
.
contract
;
import
androidx.recyclerview.widget.RecyclerView
;
import
com.gingersoft.gsa.cloud.common.bean.BaseResult
;
import
com.gingersoft.gsa.cloud.common.core.discount.MemberCoupon
;
import
com.jess.arms.mvp.IView
;
import
com.jess.arms.mvp.IModel
;
import
com.kingja.loadsir.callback.Callback
;
import
com.kingja.loadsir.core.LoadService
;
import
com.kingja.loadsir.core.LoadSir
;
import
java.util.List
;
import
io.reactivex.Observable
;
import
io.reactivex.Single
;
import
retrofit2.http.Query
;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/02/2021 17:28
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public
interface
CouponContract
{
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface
View
extends
IView
{
void
returnMemberCouponList
(
List
<
MemberCoupon
>
memberCoupons
);
void
showLoadSirSuccess
();
void
showLoadSirCall
(
Class
<?
extends
Callback
>
call
);
LoadService
getLoadService
();
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface
Model
extends
IModel
{
Single
<
List
<
MemberCoupon
>>
getMemberWalletList
(
int
brandId
,
long
memberId
,
long
limitType
,
long
pageIndex
,
long
pageSize
);
}
}
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/contract/MealStandContract.java
View file @
d2a34349
...
@@ -5,6 +5,7 @@ import android.widget.BaseAdapter;
...
@@ -5,6 +5,7 @@ import android.widget.BaseAdapter;
import
com.gingersoft.gsa.cloud.common.bean.BaseResult
;
import
com.gingersoft.gsa.cloud.common.bean.BaseResult
;
import
com.gingersoft.gsa.cloud.common.core.member.MemberInfo
;
import
com.gingersoft.gsa.cloud.common.core.member.MemberInfo
;
import
com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager
;
import
com.gingersoft.gsa.cloud.database.bean.ComboItem
;
import
com.gingersoft.gsa.cloud.database.bean.ComboItem
;
import
com.gingersoft.gsa.cloud.database.bean.Discount
;
import
com.gingersoft.gsa.cloud.database.bean.Discount
;
import
com.gingersoft.gsa.cloud.database.bean.Food
;
import
com.gingersoft.gsa.cloud.database.bean.Food
;
...
@@ -104,10 +105,13 @@ public interface MealStandContract {
...
@@ -104,10 +105,13 @@ public interface MealStandContract {
void
setMealRvScrollToPosition
(
int
position
);
void
setMealRvScrollToPosition
(
int
position
);
List
<
Food
>
getFoodGroupList
();
Activity
getActivity
();
Activity
getActivity
();
void
setModifierTop
(
int
Margins
);
int
getFromType
(
);
void
setModifierTop
(
int
Margins
);
void
setCustomFoodDialog
(
int
customType
,
OrderDetail
foodItem
);
void
setCustomFoodDialog
(
int
customType
,
OrderDetail
foodItem
);
}
}
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/contract/OrderContentContract.java
View file @
d2a34349
...
@@ -72,7 +72,7 @@ public interface OrderContentContract {
...
@@ -72,7 +72,7 @@ public interface OrderContentContract {
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface
Model
extends
BaseOrderContract
.
Model
{
interface
Model
extends
BaseOrderContract
.
Model
{
List
<
Discount
>
queryDB_DiscountList
(
byte
discountScope
,
byte
discountType
);
//
List<Discount> queryDB_DiscountList(byte discountScope, byte discountType);
Observable
<
BaseOrderResponse
>
createOrder
(
RequestBody
requestBody
);
Observable
<
BaseOrderResponse
>
createOrder
(
RequestBody
requestBody
);
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/BillDiscountModel.java
0 → 100644
View file @
d2a34349
package
com
.
gingersoft
.
gsa
.
cloud
.
table
.
mvp
.
model
;
import
android.app.Application
;
import
com.gingersoft.gsa.cloud.database.bean.Discount
;
import
com.gingersoft.gsa.cloud.database.utils.DiscountDaoUtils
;
import
com.gingersoft.gsa.cloud.table.mvp.model.utils.MealConditionFilterUtils
;
import
com.google.gson.Gson
;
import
com.jess.arms.integration.IRepositoryManager
;
import
com.jess.arms.mvp.BaseModel
;
import
com.jess.arms.di.scope.FragmentScope
;
import
javax.inject.Inject
;
import
com.gingersoft.gsa.cloud.table.mvp.contract.BillDiscountContract
;
import
java.util.List
;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/02/2021 17:26
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@FragmentScope
public
class
BillDiscountModel
extends
BaseModel
implements
BillDiscountContract
.
Model
{
@Inject
Gson
mGson
;
@Inject
Application
mApplication
;
@Inject
public
BillDiscountModel
(
IRepositoryManager
repositoryManager
)
{
super
(
repositoryManager
);
}
@Override
public
void
onDestroy
()
{
super
.
onDestroy
();
this
.
mGson
=
null
;
this
.
mApplication
=
null
;
}
@Override
public
List
<
Discount
>
queryDB_DiscountList
(
byte
discountScope
,
byte
discountType
)
{
DiscountDaoUtils
discountDaoUtils
=
new
DiscountDaoUtils
(
mApplication
);
List
<
Discount
>
discountList
=
discountDaoUtils
.
queryDiscountByQueryBuilder
();
return
MealConditionFilterUtils
.
discountConditionFilter
(
discountList
,
discountScope
,
discountType
);
}
}
\ No newline at end of file
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/CouponModel.java
0 → 100644
View file @
d2a34349
package
com
.
gingersoft
.
gsa
.
cloud
.
table
.
mvp
.
model
;
import
android.app.Application
;
import
com.gingersoft.gsa.cloud.common.bean.BaseResult
;
import
com.gingersoft.gsa.cloud.common.core.discount.MemberCoupon
;
import
com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils
;
import
com.gingersoft.gsa.cloud.table.mvp.model.service.MealService
;
import
com.gingersoft.gsa.cloud.table.mvp.model.service.MemberService
;
import
com.google.gson.Gson
;
import
com.jess.arms.integration.IRepositoryManager
;
import
com.jess.arms.mvp.BaseModel
;
import
com.jess.arms.di.scope.FragmentScope
;
import
javax.inject.Inject
;
import
com.gingersoft.gsa.cloud.table.mvp.contract.CouponContract
;
import
java.util.ArrayList
;
import
java.util.List
;
import
io.reactivex.Single
;
import
io.reactivex.functions.Function
;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/02/2021 17:28
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@FragmentScope
public
class
CouponModel
extends
BaseModel
implements
CouponContract
.
Model
{
@Inject
Gson
mGson
;
@Inject
Application
mApplication
;
@Inject
public
CouponModel
(
IRepositoryManager
repositoryManager
)
{
super
(
repositoryManager
);
}
@Override
public
void
onDestroy
()
{
super
.
onDestroy
();
this
.
mGson
=
null
;
this
.
mApplication
=
null
;
}
@Override
public
Single
<
List
<
MemberCoupon
>>
getMemberWalletList
(
int
brandId
,
long
memberId
,
long
limitType
,
long
pageIndex
,
long
pageSize
)
{
return
mRepositoryManager
.
obtainRetrofitService
(
MemberService
.
class
)
.
getMemberWalletList
(
brandId
,
memberId
,
limitType
,
pageIndex
,
pageSize
)
.
map
(
new
Function
<
BaseResult
,
List
<
MemberCoupon
>>()
{
@Override
public
List
<
MemberCoupon
>
apply
(
BaseResult
result
)
throws
Exception
{
if
(
result
.
isSuccess
())
{
return
GsonUtils
.
jsonToList
(
result
.
getData
(),
MemberCoupon
.
class
);
}
else
{
return
new
ArrayList
<>();
}
}
});
}
}
\ No newline at end of file
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/OrderContentModel.java
View file @
d2a34349
...
@@ -76,12 +76,12 @@ public class OrderContentModel extends BaseModel implements OrderContentContract
...
@@ -76,12 +76,12 @@ public class OrderContentModel extends BaseModel implements OrderContentContract
.
loadOrder
(
orderId
);
.
loadOrder
(
orderId
);
}
}
@Override
//
@Override
public
List
<
Discount
>
queryDB_DiscountList
(
byte
discountScope
,
byte
discountType
)
{
//
public List<Discount> queryDB_DiscountList(byte discountScope, byte discountType) {
DiscountDaoUtils
discountDaoUtils
=
new
DiscountDaoUtils
(
mApplication
);
//
DiscountDaoUtils discountDaoUtils = new DiscountDaoUtils(mApplication);
List
<
Discount
>
discountList
=
discountDaoUtils
.
queryDiscountByQueryBuilder
();
//
List<Discount> discountList = discountDaoUtils.queryDiscountByQueryBuilder();
return
MealConditionFilterUtils
.
discountConditionFilter
(
discountList
,
discountScope
,
discountType
);
//
return MealConditionFilterUtils.discountConditionFilter(discountList,discountScope,discountType);
}
//
}
@Override
@Override
public
Observable
<
BaseOrderResponse
>
createOrder
(
RequestBody
requestBody
)
{
public
Observable
<
BaseOrderResponse
>
createOrder
(
RequestBody
requestBody
)
{
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/service/MemberService.java
View file @
d2a34349
...
@@ -3,6 +3,7 @@ package com.gingersoft.gsa.cloud.table.mvp.model.service;
...
@@ -3,6 +3,7 @@ package com.gingersoft.gsa.cloud.table.mvp.model.service;
import
com.gingersoft.gsa.cloud.common.bean.BaseResult
;
import
com.gingersoft.gsa.cloud.common.bean.BaseResult
;
import
io.reactivex.Observable
;
import
io.reactivex.Observable
;
import
io.reactivex.Single
;
import
me.jessyan.retrofiturlmanager.RetrofitUrlManager
;
import
me.jessyan.retrofiturlmanager.RetrofitUrlManager
;
import
retrofit2.http.GET
;
import
retrofit2.http.GET
;
import
retrofit2.http.Headers
;
import
retrofit2.http.Headers
;
...
@@ -27,4 +28,7 @@ public interface MemberService {
...
@@ -27,4 +28,7 @@ public interface MemberService {
@GET
(
"coupon/queryCoupon"
+
RetrofitUrlManager
.
IDENTIFICATION_PATH_SIZE
+
2
)
@GET
(
"coupon/queryCoupon"
+
RetrofitUrlManager
.
IDENTIFICATION_PATH_SIZE
+
2
)
Observable
<
BaseResult
>
queryCoupon
(
@Query
(
"tableId"
)
int
tableId
,
@Query
(
"memberId"
)
Long
memberId
,
@Query
(
"couponMemberId"
)
long
couponMemberId
,
@Query
(
"couponNo"
)
String
couponNo
,
@Query
(
"restaurantId"
)
int
restaurantId
);
Observable
<
BaseResult
>
queryCoupon
(
@Query
(
"tableId"
)
int
tableId
,
@Query
(
"memberId"
)
Long
memberId
,
@Query
(
"couponMemberId"
)
long
couponMemberId
,
@Query
(
"couponNo"
)
String
couponNo
,
@Query
(
"restaurantId"
)
int
restaurantId
);
@Headers
({
"Domain-Name: ricepon_member"
})
@GET
(
"member/getMemberWalletList"
+
RetrofitUrlManager
.
IDENTIFICATION_PATH_SIZE
+
2
)
Single
<
BaseResult
>
getMemberWalletList
(
@Query
(
"brandId"
)
int
brandId
,
@Query
(
"memberId"
)
long
memberId
,
@Query
(
"limitType"
)
long
limitType
,
@Query
(
"pageIndex"
)
long
pageIndex
,
@Query
(
"pageSize"
)
long
pageSize
);
}
}
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/BaseOrderPresenter.java
View file @
d2a34349
...
@@ -145,8 +145,6 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
...
@@ -145,8 +145,6 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
protected
String
roundingStr
=
"賬單小數"
;
protected
String
roundingStr
=
"賬單小數"
;
private
final
String
noFoodDeliveryTip
=
"賬單沒有食品,是否開台?"
;
private
final
String
noFoodDeliveryTip
=
"賬單沒有食品,是否開台?"
;
private
Disposable
disposable
;
public
abstract
void
createOrder
(
boolean
isPrint
,
Class
<?>
afterToActivity
);
public
abstract
void
createOrder
(
boolean
isPrint
,
Class
<?>
afterToActivity
);
...
@@ -203,9 +201,6 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
...
@@ -203,9 +201,6 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
this
.
mErrorHandler
=
null
;
this
.
mErrorHandler
=
null
;
this
.
mAppManager
=
null
;
this
.
mAppManager
=
null
;
this
.
mApplication
=
null
;
this
.
mApplication
=
null
;
if
(
disposable
!=
null
&&
!
disposable
.
isDisposed
())
{
disposable
.
dispose
();
}
}
}
private
void
initOrderAdapter
()
{
private
void
initOrderAdapter
()
{
...
@@ -276,7 +271,7 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
...
@@ -276,7 +271,7 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
LoganManager
.
w_tableMode
(
TAG
,
"合計金額="
+
wholeAmount
);
LoganManager
.
w_tableMode
(
TAG
,
"合計金額="
+
wholeAmount
);
disposable
=
Observable
.
just
(
wholeAmount
)
Disposable
disposable
=
Observable
.
just
(
wholeAmount
)
.
subscribeOn
(
Schedulers
.
computation
())
.
subscribeOn
(
Schedulers
.
computation
())
/**
/**
* 計算服務費(堂食)
* 計算服務費(堂食)
...
@@ -404,6 +399,7 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
...
@@ -404,6 +399,7 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
}
}
}
}
});
});
addDispose
(
disposable
);
}
}
/**
/**
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/BillDiscountPresenter.java
0 → 100644
View file @
d2a34349
package
com
.
gingersoft
.
gsa
.
cloud
.
table
.
mvp
.
presenter
;
import
android.app.Application
;
import
com.gingersoft.gsa.cloud.common.constans.FoodSummaryConstans
;
import
com.gingersoft.gsa.cloud.common.loadsir.EmptyCallback
;
import
com.gingersoft.gsa.cloud.database.bean.Discount
;
import
com.gingersoft.gsa.cloud.order.order.BaseOrder
;
import
com.jess.arms.integration.AppManager
;
import
com.jess.arms.di.scope.FragmentScope
;
import
com.jess.arms.mvp.BasePresenter
;
import
com.jess.arms.http.imageloader.ImageLoader
;
import
me.jessyan.rxerrorhandler.core.RxErrorHandler
;
import
javax.inject.Inject
;
import
com.gingersoft.gsa.cloud.table.mvp.contract.BillDiscountContract
;
import
java.util.List
;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/02/2021 17:26
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@FragmentScope
public
class
BillDiscountPresenter
extends
BasePresenter
<
BillDiscountContract
.
Model
,
BillDiscountContract
.
View
>
{
@Inject
RxErrorHandler
mErrorHandler
;
@Inject
Application
mApplication
;
@Inject
ImageLoader
mImageLoader
;
@Inject
AppManager
mAppManager
;
@Inject
public
BillDiscountPresenter
(
BillDiscountContract
.
Model
model
,
BillDiscountContract
.
View
rootView
)
{
super
(
model
,
rootView
);
}
@Override
public
void
onDestroy
()
{
super
.
onDestroy
();
this
.
mErrorHandler
=
null
;
this
.
mAppManager
=
null
;
this
.
mImageLoader
=
null
;
this
.
mApplication
=
null
;
}
public
void
queryBillDiscountList
()
{
List
<
Discount
>
discountList
;
if
(
BaseOrder
.
isCurrentOrderType
(
FoodSummaryConstans
.
TAKEAWAY_TYPE
))
{
discountList
=
mModel
.
queryDB_DiscountList
(
Discount
.
discount_scope_bill
,
Discount
.
ORDER_TYPE_TAKEAWAY
);
}
else
{
discountList
=
mModel
.
queryDB_DiscountList
(
Discount
.
discount_scope_bill
,
Discount
.
ORDER_TYPE_MEAL_STAND
);
}
mRootView
.
returnBillCoupon
(
discountList
);
}
}
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/CouponPresenter.java
0 → 100644
View file @
d2a34349
package
com
.
gingersoft
.
gsa
.
cloud
.
table
.
mvp
.
presenter
;
import
android.app.Application
;
import
com.gingersoft.gsa.cloud.common.core.discount.MemberCoupon
;
import
com.gingersoft.gsa.cloud.common.core.member.MemberInfo
;
import
com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager
;
import
com.gingersoft.gsa.cloud.common.loadsir.EmptyCallback
;
import
com.gingersoft.gsa.cloud.common.utils.JsonUtils
;
import
com.gingersoft.gsa.cloud.order.order.DoshokuOrder
;
import
com.gingersoft.gsa.cloud.common.rxjava.ErrorHandleSingleSubscriber
;
import
com.gingersoft.gsa.cloud.table.mvp.model.bean.response.OrderManagerResponse
;
import
com.jess.arms.integration.AppManager
;
import
com.jess.arms.di.scope.FragmentScope
;
import
com.jess.arms.mvp.BasePresenter
;
import
com.jess.arms.http.imageloader.ImageLoader
;
import
io.reactivex.android.schedulers.AndroidSchedulers
;
import
io.reactivex.schedulers.Schedulers
;
import
me.jessyan.rxerrorhandler.core.RxErrorHandler
;
import
javax.inject.Inject
;
import
com.gingersoft.gsa.cloud.table.mvp.contract.CouponContract
;
import
com.jess.arms.utils.RxLifecycleUtils
;
import
com.scwang.smartrefresh.layout.api.RefreshLayout
;
import
java.util.List
;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/02/2021 17:28
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@FragmentScope
public
class
CouponPresenter
extends
BasePresenter
<
CouponContract
.
Model
,
CouponContract
.
View
>
{
@Inject
RxErrorHandler
mErrorHandler
;
@Inject
Application
mApplication
;
@Inject
ImageLoader
mImageLoader
;
@Inject
AppManager
mAppManager
;
//是否可以繼續上拉刷新
private
boolean
noMoreData
=
false
;
private
int
limitType
=
1
;
private
int
pageIndex
=
1
;
private
int
pageSize
=
20
;
@Inject
public
CouponPresenter
(
CouponContract
.
Model
model
,
CouponContract
.
View
rootView
)
{
super
(
model
,
rootView
);
}
@Override
public
void
onDestroy
()
{
super
.
onDestroy
();
this
.
mErrorHandler
=
null
;
this
.
mAppManager
=
null
;
this
.
mImageLoader
=
null
;
this
.
mApplication
=
null
;
}
public
void
getMemberWalletList
(
RefreshLayout
refreshLayout
,
boolean
isLoadMore
)
{
int
brandId
=
RestaurantInfoManager
.
newInstance
().
getBrandId
();
MemberInfo
memberInfo
=
DoshokuOrder
.
getInstance
().
getMemberInfo
();
long
memberId
=
0
;
if
(
memberInfo
!=
null
)
{
memberId
=
memberInfo
.
getId
();
}
mModel
.
getMemberWalletList
(
brandId
,
memberId
,
limitType
,
pageIndex
,
pageSize
)
.
subscribeOn
(
Schedulers
.
io
())
.
doOnSubscribe
(
disposable
->
{
if
(
refreshLayout
==
null
)
{
mRootView
.
showLoading
(
null
);
}
}
)
.
subscribeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
doAfterTerminate
(()
->
mRootView
.
hideLoading
())
.
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
mRootView
))
.
subscribe
(
new
ErrorHandleSingleSubscriber
<
List
<
MemberCoupon
>>(
mErrorHandler
,
mRootView
.
getLoadService
())
{
@Override
public
void
onSuccess
(
List
<
MemberCoupon
>
result
)
{
if
(
pageIndex
!=
0
)
{
//根據數據庫下標分頁
pageIndex
=
pageIndex
*
pageSize
;
}
if
(
result
.
size
()
>
0
)
{
if
(!
noMoreData
)
{
mRootView
.
returnMemberCouponList
(
result
);
mRootView
.
showLoadSirSuccess
();
}
if
(
result
.
size
()
<
pageSize
)
{
//沒有更多數據不能上拉刷新
noMoreData
=
true
;
}
else
{
noMoreData
=
false
;
}
}
else
{
if
(!
noMoreData
)
{
mRootView
.
showLoadSirCall
(
EmptyCallback
.
class
);
}
}
resetRefreshLayout
(
noMoreData
);
}
@Override
public
void
onError
(
Throwable
t
)
{
if
(
pageIndex
!=
0
)
{
//根據數據庫下標分頁
pageIndex
=
pageIndex
*
pageSize
;
}
resetRefreshLayout
(
false
);
}
private
void
resetRefreshLayout
(
boolean
noMoreData
)
{
if
(
refreshLayout
!=
null
)
{
if
(
isLoadMore
)
{
if
(
noMoreData
)
{
refreshLayout
.
setNoMoreData
(
true
);
}
refreshLayout
.
finishLoadMore
();
}
else
{
refreshLayout
.
finishRefresh
();
refreshLayout
.
resetNoMoreData
();
}
}
}
});
}
}
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/MealStandPresenter.java
View file @
d2a34349
...
@@ -66,6 +66,7 @@ import java.util.ArrayList;
...
@@ -66,6 +66,7 @@ import java.util.ArrayList;
import
java.util.List
;
import
java.util.List
;
import
javax.inject.Inject
;
import
javax.inject.Inject
;
import
javax.inject.Named
;
import
io.reactivex.Observable
;
import
io.reactivex.Observable
;
import
io.reactivex.ObservableEmitter
;
import
io.reactivex.ObservableEmitter
;
...
@@ -108,49 +109,37 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
...
@@ -108,49 +109,37 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
ImageLoader
mImageLoader
;
ImageLoader
mImageLoader
;
@Inject
@Inject
AppManager
mAppManager
;
AppManager
mAppManager
;
// @Inject
FoodAdapter
mFoodAdapter
;
@Inject
// @Inject
@Named
(
"foodList"
)
List
<
Food
>
mFoodList
;
List
<
Food
>
mFoodList
;
@Inject
List
<
ComboItem
>
mFoodComboList
;
//套餐细项数据
@Inject
List
<
Modifier
>
mModifierList
;
//细项数据
@Inject
List
<
Discount
>
mDiscountList
;
//折扣数据
@Inject
List
<
SoldoutCtrFood
>
mSoldoutCtrList
;
//沽清食品數據
@Inject
FoodAdapter
mFoodAdapter
;
@Inject
ComboAdapter
mComboAdapter
;
@Inject
ModifierAdapter
mModifierAdapter
;
@Inject
DiscountAdapter
mDiscountAdapter
;
private
MealStandActivity
IActivity
;
private
MealStandActivity
IActivity
;
private
CancelFoodDialog
mCancelFoodDialog
;
private
CancelFoodDialog
mCancelFoodDialog
;
private
ComboAdapter
mComboAdapter
;
private
ModifierAdapter
mModifierAdapter
;
private
DiscountAdapter
mDiscountAdapter
;
/**
* 食品数据
*/
private
List
<
Food
>
mFoodGroupList
=
new
ArrayList
<>();
/**
* 當前食品組下食品
*/
// private List<Food> mFoodList = new ArrayList<>();
/**
* 套餐细项数据
*/
private
List
<
ComboItem
>
mFoodComboList
=
new
ArrayList
<>();
private
List
<
Modifier
>
mModifierList
=
new
ArrayList
<>();
/**
* 折扣数据
*/
private
List
<
Discount
>
mDiscountList
=
new
ArrayList
<>();
/**
* 沽清食品數據
*/
private
List
<
SoldoutCtrFood
>
mSoldoutCtrList
=
new
ArrayList
<>();
private
MealDiscountAction
mMealDiscountAction
;
private
MealDiscountAction
mMealDiscountAction
;
private
OrderDetail
mCurrentOrderDetailBean
;
private
OrderDetail
mCurrentOrderDetailBean
;
private
boolean
RvMealClicked
;
private
boolean
RvMealClicked
;
@Inject
@Inject
public
MealStandPresenter
(
MealStandContract
.
Model
model
,
MealStandContract
.
View
rootView
)
{
public
MealStandPresenter
(
MealStandContract
.
Model
model
,
MealStandContract
.
View
rootView
)
{
super
(
model
,
rootView
);
super
(
model
,
rootView
);
...
@@ -226,16 +215,15 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
...
@@ -226,16 +215,15 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
if
(
foodGroupList
!=
null
&&
foodGroupList
.
size
()
>
0
)
{
if
(
foodGroupList
!=
null
&&
foodGroupList
.
size
()
>
0
)
{
m
FoodGroupList
.
addAll
(
foodGroupList
);
m
RootView
.
getFoodGroupList
()
.
addAll
(
foodGroupList
);
Food
defalutFoodGroup
=
getDefalutFoodGroup
(
m
FoodGroupList
);
Food
defalutFoodGroup
=
getDefalutFoodGroup
(
m
RootView
.
getFoodGroupList
()
);
if
(
defalutFoodGroup
!=
null
)
{
if
(
defalutFoodGroup
!=
null
)
{
//默認選中第一組
//默認選中第一組
defalutFoodGroup
.
setSelected
(
true
);
defalutFoodGroup
.
setSelected
(
true
);
}
}
IActivity
.
initFoodGroupView
(
m
FoodGroupList
);
IActivity
.
initFoodGroupView
(
m
RootView
.
getFoodGroupList
()
);
updateFoodSoldoutCtrData
();
updateFoodSoldoutCtrData
();
...
@@ -246,14 +234,12 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
...
@@ -246,14 +234,12 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
}
}
private
Food
getDefalutFoodGroup
(
List
<
Food
>
foodGroupList
)
{
private
Food
getDefalutFoodGroup
(
List
<
Food
>
foodGroupList
)
{
Food
defalutFoodGroup
=
null
;
for
(
Food
food
:
foodGroupList
)
{
for
(
Food
food
:
foodGroupList
)
{
if
(
food
.
getInvisible
()
==
0
)
{
if
(
food
.
getInvisible
()
==
0
)
{
defalutFoodGroup
=
food
;
return
food
;
break
;
}
}
}
}
return
defalutFoodGroup
;
return
null
;
}
}
...
@@ -262,19 +248,18 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
...
@@ -262,19 +248,18 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
mRootView
.
setSelectFoodAdapter
(
mSelectMealAdapter
);
mRootView
.
setSelectFoodAdapter
(
mSelectMealAdapter
);
}
}
if
(
mFoodAdapter
==
null
)
{
if
(
mFoodAdapter
==
null
)
{
mFoodAdapter
=
new
FoodAdapter
(
IActivity
,
mFoodList
,
1
);
mRootView
.
setFoodAdapter
(
mFoodAdapter
);
mRootView
.
setFoodAdapter
(
mFoodAdapter
);
}
}
if
(
mComboAdapter
==
null
)
{
if
(
mComboAdapter
==
null
)
{
mComboAdapter
=
new
ComboAdapter
(
IActivity
,
mFoodComboList
);
//
mComboAdapter = new ComboAdapter(IActivity, mFoodComboList);
mRootView
.
setComboAdapter
(
mComboAdapter
);
mRootView
.
setComboAdapter
(
mComboAdapter
);
}
}
if
(
mModifierAdapter
==
null
)
{
if
(
mModifierAdapter
==
null
)
{
mModifierAdapter
=
new
ModifierAdapter
(
IActivity
,
mModifierList
);
//
mModifierAdapter = new ModifierAdapter(IActivity, mModifierList);
mRootView
.
setModifierAdapter
(
mModifierAdapter
);
mRootView
.
setModifierAdapter
(
mModifierAdapter
);
}
}
if
(
mDiscountAdapter
==
null
)
{
if
(
mDiscountAdapter
==
null
)
{
mDiscountAdapter
=
new
DiscountAdapter
(
IActivity
,
mDiscountList
);
//
mDiscountAdapter = new DiscountAdapter(IActivity, mDiscountList);
mRootView
.
setDiscountAdapter
(
mDiscountAdapter
);
mRootView
.
setDiscountAdapter
(
mDiscountAdapter
);
}
}
}
}
...
@@ -524,7 +509,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
...
@@ -524,7 +509,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
}
}
private
void
loadComboData
(
OrderDetail
food
,
boolean
isSelectedMeal
)
{
private
void
loadComboData
(
OrderDetail
food
,
boolean
isSelectedMeal
)
{
Observable
.
create
(
new
ObservableOnSubscribe
<
List
>()
{
Observable
.
create
(
new
ObservableOnSubscribe
<
List
>()
{
@Override
@Override
public
void
subscribe
(
ObservableEmitter
<
List
>
emitter
)
throws
Exception
{
public
void
subscribe
(
ObservableEmitter
<
List
>
emitter
)
throws
Exception
{
long
fid
=
food
.
getProductId
();
long
fid
=
food
.
getProductId
();
...
@@ -544,6 +529,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
...
@@ -544,6 +529,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
}
}
}).
subscribeOn
(
Schedulers
.
io
())
//在IO线程执行数据库处理操作
}).
subscribeOn
(
Schedulers
.
io
())
//在IO线程执行数据库处理操作
.
observeOn
(
AndroidSchedulers
.
mainThread
())
//在UI线程
.
observeOn
(
AndroidSchedulers
.
mainThread
())
//在UI线程
.
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
mRootView
))
.
subscribe
(
new
Observer
<
List
>()
{
.
subscribe
(
new
Observer
<
List
>()
{
private
int
nextCount
=
0
;
private
int
nextCount
=
0
;
...
@@ -552,6 +538,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
...
@@ -552,6 +538,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
@Override
@Override
public
void
onSubscribe
(
Disposable
d
)
{
public
void
onSubscribe
(
Disposable
d
)
{
addDispose
(
d
);
nextCount
=
0
;
nextCount
=
0
;
}
}
...
@@ -1322,7 +1309,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
...
@@ -1322,7 +1309,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
public
void
setFoodSoldoutCtrData
(
List
<
SoldoutCtrFood
>
soldoutCtrFoods
)
{
public
void
setFoodSoldoutCtrData
(
List
<
SoldoutCtrFood
>
soldoutCtrFoods
)
{
for
(
SoldoutCtrFood
scc
:
soldoutCtrFoods
)
{
for
(
SoldoutCtrFood
scc
:
soldoutCtrFoods
)
{
for
(
Food
foodGroupBean
:
m
FoodGroupList
)
{
for
(
Food
foodGroupBean
:
m
RootView
.
getFoodGroupList
()
)
{
if
(
scc
.
getType
()
==
FOOD_TYPE
&&
scc
.
getFoodId
()
!=
null
&&
foodGroupBean
.
getId
()
!=
null
&&
foodGroupBean
.
getId
().
equals
(
scc
.
getFoodId
()))
{
if
(
scc
.
getType
()
==
FOOD_TYPE
&&
scc
.
getFoodId
()
!=
null
&&
foodGroupBean
.
getId
()
!=
null
&&
foodGroupBean
.
getId
().
equals
(
scc
.
getFoodId
()))
{
String
qtyName
=
scc
.
getQtyName
();
String
qtyName
=
scc
.
getQtyName
();
foodGroupBean
.
setMaxNumber
(
qtyName
);
foodGroupBean
.
setMaxNumber
(
qtyName
);
...
@@ -1339,7 +1326,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
...
@@ -1339,7 +1326,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
}
}
}
}
}
}
for
(
Food
foodGroupBean
:
m
FoodGroupList
)
{
for
(
Food
foodGroupBean
:
m
RootView
.
getFoodGroupList
()
)
{
if
(
foodGroupBean
.
getInvisible
()
==
2
)
{
if
(
foodGroupBean
.
getInvisible
()
==
2
)
{
String
qtyName
=
"暫停"
;
String
qtyName
=
"暫停"
;
foodGroupBean
.
setMaxNumber
(
qtyName
);
foodGroupBean
.
setMaxNumber
(
qtyName
);
...
@@ -1400,7 +1387,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
...
@@ -1400,7 +1387,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
}
}
private
void
addFoodSoldoutCtrItem
(
List
<
SoldoutCtrFood
>
soldoutCtrFoods
)
{
private
void
addFoodSoldoutCtrItem
(
List
<
SoldoutCtrFood
>
soldoutCtrFoods
)
{
for
(
Food
foodGroupBean
:
m
FoodGroupList
)
{
for
(
Food
foodGroupBean
:
m
RootView
.
getFoodGroupList
()
)
{
if
(
foodGroupBean
.
getInvisible
()
==
2
)
{
if
(
foodGroupBean
.
getInvisible
()
==
2
)
{
SoldoutCtrFood
soldoutCtrFood
=
new
SoldoutCtrFood
();
SoldoutCtrFood
soldoutCtrFood
=
new
SoldoutCtrFood
();
soldoutCtrFood
.
setType
((
byte
)
FOOD_GROUP_TYPE
);
soldoutCtrFood
.
setType
((
byte
)
FOOD_GROUP_TYPE
);
...
@@ -1432,7 +1419,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
...
@@ -1432,7 +1419,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
}
}
private
void
clearFoodSoldoutCtrData
()
{
private
void
clearFoodSoldoutCtrData
()
{
for
(
Food
foodGroupBean
:
m
FoodGroupList
)
{
for
(
Food
foodGroupBean
:
m
RootView
.
getFoodGroupList
()
)
{
foodGroupBean
.
setMaxNumber
(
""
);
foodGroupBean
.
setMaxNumber
(
""
);
foodGroupBean
.
setCurrentMaxNumber
(
""
);
foodGroupBean
.
setCurrentMaxNumber
(
""
);
}
}
...
@@ -1677,7 +1664,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
...
@@ -1677,7 +1664,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
public
void
updateOrderFoodNumber
()
{
public
void
updateOrderFoodNumber
()
{
setFoodBtnNumber
();
setFoodBtnNumber
();
setFoodGroupBtnNumber
(
IActivity
.
getFoodGroupGridViewAdapter
(),
m
FoodGroupList
);
setFoodGroupBtnNumber
(
IActivity
.
getFoodGroupGridViewAdapter
(),
m
RootView
.
getFoodGroupList
()
);
mRootView
.
setOrderFoodCount
(
getOrderFoodNumber
());
mRootView
.
setOrderFoodCount
(
getOrderFoodNumber
());
}
}
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/OrderContentPresenter.java
View file @
d2a34349
...
@@ -5,6 +5,9 @@ import android.graphics.Color;
...
@@ -5,6 +5,9 @@ import android.graphics.Color;
import
android.text.TextUtils
;
import
android.text.TextUtils
;
import
android.util.Log
;
import
android.util.Log
;
import
android.view.View
;
import
android.view.View
;
import
android.view.Window
;
import
androidx.fragment.app.FragmentManager
;
import
com.billy.cc.core.component.CC
;
import
com.billy.cc.core.component.CC
;
import
com.gingersoft.gsa.cloud.common.bean.BaseResult
;
import
com.gingersoft.gsa.cloud.common.bean.BaseResult
;
...
@@ -12,6 +15,7 @@ import com.gingersoft.gsa.cloud.common.constans.ExpandConstant;
...
@@ -12,6 +15,7 @@ import com.gingersoft.gsa.cloud.common.constans.ExpandConstant;
import
com.gingersoft.gsa.cloud.common.constans.FoodSummaryConstans
;
import
com.gingersoft.gsa.cloud.common.constans.FoodSummaryConstans
;
import
com.gingersoft.gsa.cloud.common.constans.GoldConstants
;
import
com.gingersoft.gsa.cloud.common.constans.GoldConstants
;
import
com.gingersoft.gsa.cloud.common.constans.PrintConstans
;
import
com.gingersoft.gsa.cloud.common.constans.PrintConstans
;
import
com.gingersoft.gsa.cloud.common.core.discount.MemberCoupon
;
import
com.gingersoft.gsa.cloud.common.core.member.MemberInfo
;
import
com.gingersoft.gsa.cloud.common.core.member.MemberInfo
;
import
com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager
;
import
com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager
;
import
com.gingersoft.gsa.cloud.common.core.restaurant.utils.RestaurantExpandInfoUtils
;
import
com.gingersoft.gsa.cloud.common.core.restaurant.utils.RestaurantExpandInfoUtils
;
...
@@ -51,6 +55,7 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity;
...
@@ -51,6 +55,7 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity;
import
com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BillItemAdapter
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BillItemAdapter
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.adapter.OrderTopFunctionAdapter
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.adapter.OrderTopFunctionAdapter
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.SelectMealAdapter
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.SelectMealAdapter
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.fragment.discount.DiscountDialogFragment
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.widget.DiscountDialog
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.widget.DiscountDialog
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.widget.SplitTableDialog
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.widget.SplitTableDialog
;
import
com.gingersoft.gsa.cloud.ui.widget.dialog.BaseRetryDialog
;
import
com.gingersoft.gsa.cloud.ui.widget.dialog.BaseRetryDialog
;
...
@@ -61,6 +66,7 @@ import com.jess.arms.integration.AppManager;
...
@@ -61,6 +66,7 @@ import com.jess.arms.integration.AppManager;
import
com.jess.arms.utils.ArmsUtils
;
import
com.jess.arms.utils.ArmsUtils
;
import
com.jess.arms.utils.RxLifecycleUtils
;
import
com.jess.arms.utils.RxLifecycleUtils
;
import
com.scwang.smartrefresh.layout.api.RefreshLayout
;
import
com.scwang.smartrefresh.layout.api.RefreshLayout
;
import
com.xuexiang.rxutil2.RxBindingUtils
;
import
com.xuexiang.rxutil2.rxjava.RxJavaUtils
;
import
com.xuexiang.rxutil2.rxjava.RxJavaUtils
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
...
@@ -75,8 +81,10 @@ import io.reactivex.annotations.NonNull;
...
@@ -75,8 +81,10 @@ import io.reactivex.annotations.NonNull;
import
io.reactivex.disposables.Disposable
;
import
io.reactivex.disposables.Disposable
;
import
io.reactivex.functions.Consumer
;
import
io.reactivex.functions.Consumer
;
import
io.reactivex.schedulers.Schedulers
;
import
io.reactivex.schedulers.Schedulers
;
import
leakcanary.internal.ForegroundService
;
import
me.jessyan.rxerrorhandler.core.RxErrorHandler
;
import
me.jessyan.rxerrorhandler.core.RxErrorHandler
;
import
me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber
;
import
me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber
;
import
me.yokeyword.fragmentation.anim.FragmentAnimator
;
import
okhttp3.FormBody
;
import
okhttp3.FormBody
;
import
okhttp3.MediaType
;
import
okhttp3.MediaType
;
import
okhttp3.RequestBody
;
import
okhttp3.RequestBody
;
...
@@ -806,12 +814,12 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
...
@@ -806,12 +814,12 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
}
}
private
void
showDiscountDialog
()
{
private
void
showDiscountDialog
()
{
if
(
mDiscountDialog
==
null
)
{
if
(
IActivity
.
findFragment
(
DiscountDialogFragment
.
class
)
==
null
)
{
mDiscountDialog
=
new
DiscountDialog
.
Builder
(
IActivity
);
DiscountDialogFragment
dialogFragment
=
DiscountDialogFragment
.
newInstance
(
);
mDiscountDialog
.
setCanScan
(
true
);
dialogFragment
.
setOnDiscountItemClickListener
(
new
DiscountDialogFragment
.
OnDiscountItemClickListener
()
{
mDiscountDialog
.
setOnClickListener
(
new
DiscountDialog
.
Builder
.
OnClickListener
()
{
@Override
@Override
public
void
on
Item
Click
(
Discount
item
,
int
position
)
{
public
void
on
BillDiscount
Click
(
Discount
item
,
int
position
)
{
if
(
item
.
getMinBillAmount
()
>
mShoppingCart
.
getWholeAmount
())
{
if
(
item
.
getMinBillAmount
()
>
mShoppingCart
.
getWholeAmount
())
{
//小於最小賬單金額
//小於最小賬單金額
mRootView
.
showMessage
(
"小於最小賬單金額"
+
cashStr
+
item
.
getMinBillAmount
()
+
" 無法使用此折扣"
);
mRootView
.
showMessage
(
"小於最小賬單金額"
+
cashStr
+
item
.
getMinBillAmount
()
+
" 無法使用此折扣"
);
...
@@ -819,23 +827,53 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
...
@@ -819,23 +827,53 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
}
}
mNomalDiscountAction
.
setNomalDiscountList
(
mShoppingCart
.
getNomalDiscoutByMultyDiscountList
());
mNomalDiscountAction
.
setNomalDiscountList
(
mShoppingCart
.
getNomalDiscoutByMultyDiscountList
());
mNomalDiscountAction
.
action
(
item
);
mNomalDiscountAction
.
action
(
item
);
dialogFragment
.
dismiss
();
}
}
@Override
@Override
public
void
onScan
()
{
public
void
onCouponClick
(
MemberCoupon
item
,
int
position
)
{
toScanActivity
();
if
(
item
.
getBillMinAmount
()
>
mShoppingCart
.
getWholeAmount
())
{
//小於最小賬單金額
mRootView
.
showMessage
(
"小於最小賬單金額"
+
cashStr
+
item
.
getBillMinAmount
()
+
" 無法使用此優惠券"
);
return
;
}
mNomalDiscountAction
.
setNomalDiscountList
(
mShoppingCart
.
getNomalDiscoutByMultyDiscountList
());
mNomalDiscountAction
.
action
(
item
.
castDiscount
());
dialogFragment
.
dismiss
();
}
}
});
});
dialogFragment
.
show
(
IActivity
.
getSupportFragmentManager
(),
"DiscountDialogFragment"
);
}
}
List
<
Discount
>
discountList
;
// if (mDiscountDialog == null) {
if
(
BaseOrder
.
isCurrentOrderType
(
FoodSummaryConstans
.
TAKEAWAY_TYPE
))
{
// mDiscountDialog = new DiscountDialog.Builder(IActivity);
discountList
=
mModel
.
queryDB_DiscountList
(
Discount
.
discount_scope_bill
,
Discount
.
ORDER_TYPE_TAKEAWAY
);
// mDiscountDialog.setCanScan(true);
}
else
{
// mDiscountDialog.setOnClickListener(new DiscountDialog.Builder.OnClickListener() {
discountList
=
mModel
.
queryDB_DiscountList
(
Discount
.
discount_scope_bill
,
Discount
.
ORDER_TYPE_MEAL_STAND
);
// @Override
}
// public void onItemClick(Discount item, int position) {
// if (item.getMinBillAmount() > mShoppingCart.getWholeAmount()) {
mDiscountDialog
.
addItems
(
discountList
);
// //小於最小賬單金額
mDiscountDialog
.
build
().
show
();
// mRootView.showMessage("小於最小賬單金額" + cashStr + item.getMinBillAmount() + " 無法使用此折扣");
// return;
// }
// mNomalDiscountAction.setNomalDiscountList(mShoppingCart.getNomalDiscoutByMultyDiscountList());
// mNomalDiscountAction.action(item);
// }
//
// @Override
// public void onScan() {
// toScanActivity();
// }
// });
// }
// List<Discount> discountList;
// if (BaseOrder.isCurrentOrderType(FoodSummaryConstans.TAKEAWAY_TYPE)) {
// discountList = mModel.queryDB_DiscountList(Discount.discount_scope_bill, Discount.ORDER_TYPE_TAKEAWAY);
// } else {
// discountList = mModel.queryDB_DiscountList(Discount.discount_scope_bill, Discount.ORDER_TYPE_MEAL_STAND);
// }
//
// mDiscountDialog.addItems(discountList);
// mDiscountDialog.build().show();
}
}
/**
/**
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/OrderPayPresenter.java
View file @
d2a34349
...
@@ -240,6 +240,7 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
...
@@ -240,6 +240,7 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
whetherFreeService
=
payMethod
.
getWhetherFreeService
();
whetherFreeService
=
payMethod
.
getWhetherFreeService
();
orderPay
.
setAmount
(
payMethod
.
getPayMoney
());
orderPay
.
setAmount
(
payMethod
.
getPayMoney
());
orderPay
.
setWhetherReportCount
(
payMethod
.
getWhetherReportCount
());
orderPay
.
setWhetherReportCount
(
payMethod
.
getWhetherReportCount
());
orderPay
.
setIntegralMultiple
(
payMethod
.
getIntegralMultiple
());
orderPay
.
setPayName
(
payMethod
.
getPayName
());
orderPay
.
setPayName
(
payMethod
.
getPayName
());
payRequest
.
getOrderPays
().
add
(
orderPay
);
payRequest
.
getOrderPays
().
add
(
orderPay
);
}
}
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/MealStandActivity.java
View file @
d2a34349
...
@@ -107,6 +107,9 @@ import java.util.ArrayList;
...
@@ -107,6 +107,9 @@ import java.util.ArrayList;
import
java.util.Arrays
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.List
;
import
javax.inject.Inject
;
import
javax.inject.Named
;
import
butterknife.BindView
;
import
butterknife.BindView
;
import
butterknife.OnClick
;
import
butterknife.OnClick
;
import
butterknife.OnLongClick
;
import
butterknife.OnLongClick
;
...
@@ -281,7 +284,12 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
...
@@ -281,7 +284,12 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
private
ImageView
[]
ivPoints
;
private
ImageView
[]
ivPoints
;
private
int
mPageIndex
;
private
int
mPageIndex
;
private
int
totalPage
;
private
int
totalPage
;
private
FoodGroupAdapter
mFoodGroupAdapter
;
@Inject
@Named
(
"foodGroupList"
)
List
<
Food
>
mFoodGroupList
;
@Inject
FoodGroupAdapter
mFoodGroupAdapter
;
private
PagerGridLayoutManager
mLayoutManager
;
private
PagerGridLayoutManager
mLayoutManager
;
private
static
final
int
FINISH
=
101
;
private
static
final
int
FINISH
=
101
;
...
@@ -419,7 +427,9 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
...
@@ -419,7 +427,9 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
PagerConfig
.
setShowLog
(
true
);
PagerConfig
.
setShowLog
(
true
);
// 使用原生的 Adapter 即可
// 使用原生的 Adapter 即可
mFoodGroupAdapter
=
new
FoodGroupAdapter
(
this
,
foodGroupList
,
1
);
// mFoodGroupAdapter = new FoodGroupAdapter(this, foodGroupList, 1);
mFoodGroupAdapter
.
setFoodGroupList
(
mFoodGroupList
);
rv_food_group
.
setAdapter
(
mFoodGroupAdapter
);
rv_food_group
.
setAdapter
(
mFoodGroupAdapter
);
mFoodGroupAdapter
.
setOnItemClickListener
(
new
FoodGroupAdapter
.
OnItemClickListener
()
{
mFoodGroupAdapter
.
setOnItemClickListener
(
new
FoodGroupAdapter
.
OnItemClickListener
()
{
@Override
@Override
...
@@ -1212,6 +1222,11 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
...
@@ -1212,6 +1222,11 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
}
}
@Override
@Override
public
List
<
Food
>
getFoodGroupList
()
{
return
mFoodGroupList
;
}
@Override
public
void
initIntent
()
{
public
void
initIntent
()
{
}
}
...
@@ -1274,6 +1289,11 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
...
@@ -1274,6 +1289,11 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
return
this
;
return
this
;
}
}
@Override
public
int
getFromType
()
{
return
1
;
}
public
void
clearInput
()
{
public
void
clearInput
()
{
keyView
.
clearInput
();
keyView
.
clearInput
();
}
}
...
@@ -1414,7 +1434,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
...
@@ -1414,7 +1434,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
if
(
customType
==
Food
.
CUSTOM_TYPE_101
)
{
if
(
customType
==
Food
.
CUSTOM_TYPE_101
)
{
foodItem
.
setProductName
(
name
);
foodItem
.
setProductName
(
name
);
}
}
if
(!
TextUtils
.
isEmpty
(
money
))
{
if
(!
TextUtils
.
isEmpty
(
money
))
{
foodItem
.
setUnit_price
(
Double
.
parseDouble
(
money
));
foodItem
.
setUnit_price
(
Double
.
parseDouble
(
money
));
foodItem
.
setPrice
(
foodItem
.
getUnit_price
());
foodItem
.
setPrice
(
foodItem
.
getUnit_price
());
mPresenter
.
toAddFoodItem
(
foodItem
);
mPresenter
.
toAddFoodItem
(
foodItem
);
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/OrderContentActivity.java
View file @
d2a34349
...
@@ -171,7 +171,6 @@ public class OrderContentActivity extends BaseFragmentActivity<OrderContentPrese
...
@@ -171,7 +171,6 @@ public class OrderContentActivity extends BaseFragmentActivity<OrderContentPrese
private
List
<
TableBean
.
DataBean
>
mTableList
;
private
List
<
TableBean
.
DataBean
>
mTableList
;
private
DoshokuOrder
mDoshokuOrder
;
private
DoshokuOrder
mDoshokuOrder
;
private
ShoppingCart
mShoppingCart
;
@Override
@Override
public
void
setupActivityComponent
(
@NonNull
AppComponent
appComponent
)
{
public
void
setupActivityComponent
(
@NonNull
AppComponent
appComponent
)
{
...
@@ -186,7 +185,6 @@ public class OrderContentActivity extends BaseFragmentActivity<OrderContentPrese
...
@@ -186,7 +185,6 @@ public class OrderContentActivity extends BaseFragmentActivity<OrderContentPrese
@Override
@Override
protected
void
onCreate
(
@Nullable
Bundle
savedInstanceState
)
{
protected
void
onCreate
(
@Nullable
Bundle
savedInstanceState
)
{
mDoshokuOrder
=
DoshokuOrder
.
getInstance
();
mDoshokuOrder
=
DoshokuOrder
.
getInstance
();
mShoppingCart
=
mDoshokuOrder
.
getShoppingCart
();
super
.
onCreate
(
savedInstanceState
);
super
.
onCreate
(
savedInstanceState
);
//设置根布局颜色,当layout根布局是FrameLayout时直接使用merge标签,应用DecorView默认就是FrameLayout无需再套一层
//设置根布局颜色,当layout根布局是FrameLayout时直接使用merge标签,应用DecorView默认就是FrameLayout无需再套一层
getWindow
().
getDecorView
().
setBackgroundColor
(
ArmsUtils
.
getColor
(
mContext
,
R
.
color
.
theme_white_color
));
getWindow
().
getDecorView
().
setBackgroundColor
(
ArmsUtils
.
getColor
(
mContext
,
R
.
color
.
theme_white_color
));
...
@@ -294,7 +292,11 @@ public class OrderContentActivity extends BaseFragmentActivity<OrderContentPrese
...
@@ -294,7 +292,11 @@ public class OrderContentActivity extends BaseFragmentActivity<OrderContentPrese
@Override
@Override
public
void
onBackPressedSupport
()
{
public
void
onBackPressedSupport
()
{
super
.
onBackPressedSupport
();
super
.
onBackPressedSupport
();
backPressed
();
if
(
mCurrentOperatType
==
OrderConentActionConstant
.
transfer_food_2
)
{
hideTransferFoodLayout
();
mCurrentOperatType
=
OrderConentActionConstant
.
order_conetnt_1
;
tv_action_name
.
setVisibility
(
View
.
GONE
);
}
}
}
@Override
@Override
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/adapter/meal/FoodAdapter.java
View file @
d2a34349
...
@@ -25,6 +25,8 @@ import com.jess.arms.utils.DeviceUtils;
...
@@ -25,6 +25,8 @@ import com.jess.arms.utils.DeviceUtils;
import
java.util.List
;
import
java.util.List
;
import
javax.inject.Inject
;
import
butterknife.BindView
;
import
butterknife.BindView
;
/**
/**
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/adapter/meal/FoodGroupAdapter.java
View file @
d2a34349
...
@@ -61,7 +61,13 @@ public class FoodGroupAdapter extends DefaultAdapter<Food> {
...
@@ -61,7 +61,13 @@ public class FoodGroupAdapter extends DefaultAdapter<Food> {
this
.
mParentColWidth
=
(
int
)
(
DeviceUtils
.
getScreenWidth
(
context
)
/
foodGroupColumn
);
this
.
mParentColWidth
=
(
int
)
(
DeviceUtils
.
getScreenWidth
(
context
)
/
foodGroupColumn
);
this
.
mParentColHeight
=
GsaCloudApplication
.
uiStyleConfiguration
.
getFoodGroupBtnHeightValue
();
this
.
mParentColHeight
=
GsaCloudApplication
.
uiStyleConfiguration
.
getFoodGroupBtnHeightValue
();
this
.
mLayoutQtyHeight
=
GsaCloudApplication
.
uiStyleConfiguration
.
getLayoutQtyHeightValue
();
this
.
mLayoutQtyHeight
=
GsaCloudApplication
.
uiStyleConfiguration
.
getLayoutQtyHeightValue
();
}
public
void
setFoodGroupList
(
List
<
Food
>
foodGroupList
)
{
if
(
foodGroupList
!=
null
)
{
mInfos
.
addAll
(
foodGroupList
);
notifyDataSetChanged
();
}
}
}
@Override
@Override
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/fragment/AllOrderFragment.java
View file @
d2a34349
...
@@ -8,11 +8,9 @@ import android.os.Message;
...
@@ -8,11 +8,9 @@ import android.os.Message;
import
android.view.LayoutInflater
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.ViewGroup
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
androidx.annotation.Nullable
;
import
androidx.recyclerview.widget.RecyclerView
;
import
androidx.recyclerview.widget.RecyclerView
;
import
com.gingersoft.gsa.cloud.order.contract.OrderStatusContract
;
import
com.gingersoft.gsa.cloud.order.contract.OrderStatusContract
;
import
com.gingersoft.gsa.cloud.table.R
;
import
com.gingersoft.gsa.cloud.table.R
;
import
com.gingersoft.gsa.cloud.table.R2
;
import
com.gingersoft.gsa.cloud.table.R2
;
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/fragment/discount/BillDiscountFragment.java
0 → 100644
View file @
d2a34349
package
com
.
gingersoft
.
gsa
.
cloud
.
table
.
mvp
.
ui
.
fragment
.
discount
;
import
android.content.Intent
;
import
android.os.Bundle
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
androidx.recyclerview.widget.GridLayoutManager
;
import
androidx.recyclerview.widget.LinearLayoutManager
;
import
androidx.recyclerview.widget.RecyclerView
;
import
com.chad.library.adapter.base.BaseQuickAdapter
;
import
com.chad.library.adapter.base.listener.OnItemClickListener
;
import
com.gingersoft.gsa.cloud.common.loadsir.EmptyCallback
;
import
com.gingersoft.gsa.cloud.database.bean.Discount
;
import
com.gingersoft.gsa.cloud.table.R
;
import
com.gingersoft.gsa.cloud.table.R2
;
import
com.gingersoft.gsa.cloud.table.di.component.DaggerBillDiscountComponent
;
import
com.gingersoft.gsa.cloud.table.mvp.contract.BillDiscountContract
;
import
com.gingersoft.gsa.cloud.table.mvp.presenter.BillDiscountPresenter
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity
;
import
com.gingersoft.gsa.cloud.ui.adapter.TagViewAdapter
;
import
com.gingersoft.gsa.cloud.ui.bean.TagViewItem
;
import
com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog
;
import
com.jess.arms.base.BaseFragment
;
import
com.jess.arms.di.component.AppComponent
;
import
com.jess.arms.utils.ArmsUtils
;
import
com.kingja.loadsir.callback.Callback
;
import
com.kingja.loadsir.core.LoadService
;
import
com.kingja.loadsir.core.LoadSir
;
import
java.util.ArrayList
;
import
java.util.List
;
import
javax.inject.Inject
;
import
butterknife.BindView
;
import
static
com
.
jess
.
arms
.
utils
.
Preconditions
.
checkNotNull
;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/02/2021 17:26
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public
class
BillDiscountFragment
extends
BaseFragment
<
BillDiscountPresenter
>
implements
BillDiscountContract
.
View
{
@BindView
(
R2
.
id
.
rv_bill_discount
)
RecyclerView
rvBillDiscount
;
@Inject
List
<
TagViewItem
>
mBillDiscountList
;
@Inject
TagViewAdapter
mBillDiscountAdapter
;
private
LoadService
loadService
;
public
static
BillDiscountFragment
newInstance
()
{
BillDiscountFragment
fragment
=
new
BillDiscountFragment
();
return
fragment
;
}
@Override
public
void
setupFragmentComponent
(
@NonNull
AppComponent
appComponent
)
{
DaggerBillDiscountComponent
//如找不到该类,请编译一下项目
.
builder
()
.
appComponent
(
appComponent
)
.
view
(
this
)
.
build
()
.
inject
(
this
);
}
@Override
public
View
initView
(
@NonNull
LayoutInflater
inflater
,
@Nullable
ViewGroup
container
,
@Nullable
Bundle
savedInstanceState
)
{
return
inflater
.
inflate
(
R
.
layout
.
fragment_bill_discount
,
container
,
false
);
}
@Override
public
void
initData
(
@Nullable
Bundle
savedInstanceState
)
{
loadService
=
LoadSir
.
getDefault
().
register
(
rvBillDiscount
);
initAdapter
();
mPresenter
.
queryBillDiscountList
();
}
private
void
initAdapter
()
{
rvBillDiscount
.
setLayoutManager
(
createLayoutManager
());
rvBillDiscount
.
setAdapter
(
mBillDiscountAdapter
);
mBillDiscountAdapter
.
setOnItemClickListener
((
adapter
,
view
,
position
)
->
{
if
(
onDiscountItemClickListener
!=
null
)
{
onDiscountItemClickListener
.
onItemClick
((
Discount
)
mBillDiscountList
.
get
(
position
).
getTargetObj
(),
position
);
}
});
}
private
RecyclerView
.
LayoutManager
createLayoutManager
()
{
return
new
GridLayoutManager
(
mContext
,
3
,
LinearLayoutManager
.
VERTICAL
,
false
)
{
@Override
public
RecyclerView
.
LayoutParams
generateDefaultLayoutParams
()
{
return
new
RecyclerView
.
LayoutParams
(
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
);
}
};
}
@Override
public
void
setData
(
@Nullable
Object
data
)
{
}
@Override
public
void
showLoading
(
String
message
)
{
if
(
message
!=
null
)
LoadingDialog
.
showDialogForLoading
(
_mActivity
,
message
,
true
);
else
LoadingDialog
.
showDialogForLoading
(
_mActivity
);
}
@Override
public
void
hideLoading
()
{
LoadingDialog
.
cancelDialogForLoading
();
}
@Override
public
void
showMessage
(
@NonNull
String
message
)
{
checkNotNull
(
message
);
ArmsUtils
.
makeText
(
_mActivity
,
message
);
}
@Override
public
void
launchActivity
(
@NonNull
Intent
intent
)
{
if
(
intent
!=
null
)
{
ArmsUtils
.
startActivity
(
intent
);
}
}
@Override
public
void
killMyself
()
{
_mActivity
.
onBackPressedSupport
();
}
@Override
public
void
returnBillCoupon
(
List
<
Discount
>
discounts
)
{
List
<
TagViewItem
>
tagViewItems
=
castTagItem
(
discounts
);
if
(
tagViewItems
.
size
()
>
0
)
{
loadService
.
showSuccess
();
}
else
{
loadService
.
showCallback
(
EmptyCallback
.
class
);
}
if
(
mBillDiscountList
.
size
()
>
0
)
{
mBillDiscountList
.
clear
();
}
mBillDiscountList
.
addAll
(
tagViewItems
);
mBillDiscountAdapter
.
notifyDataSetChanged
();
}
private
List
<
TagViewItem
>
castTagItem
(
List
<
Discount
>
discountList
)
{
List
<
TagViewItem
>
tagViewItems
=
new
ArrayList
<>();
for
(
Discount
discount
:
discountList
)
{
TagViewItem
<
Discount
>
tagViewItem
=
new
TagViewItem
();
tagViewItem
.
setId
(
discount
.
getId
());
tagViewItem
.
setText
(
discount
.
getRemark
());
tagViewItem
.
setTargetObj
(
discount
);
tagViewItems
.
add
(
tagViewItem
);
}
return
tagViewItems
;
}
private
OnBillDiscountItemClickListener
onDiscountItemClickListener
;
public
void
setOnDiscountItemClickListener
(
OnBillDiscountItemClickListener
onDiscountItemClickListener
)
{
this
.
onDiscountItemClickListener
=
onDiscountItemClickListener
;
}
public
interface
OnBillDiscountItemClickListener
{
void
onItemClick
(
Discount
item
,
int
position
);
}
}
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/fragment/discount/CouponFragment.java
0 → 100644
View file @
d2a34349
package
com
.
gingersoft
.
gsa
.
cloud
.
table
.
mvp
.
ui
.
fragment
.
discount
;
import
android.content.Intent
;
import
android.os.Bundle
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
androidx.recyclerview.widget.GridLayoutManager
;
import
androidx.recyclerview.widget.LinearLayoutManager
;
import
androidx.recyclerview.widget.RecyclerView
;
import
com.gingersoft.gsa.cloud.common.core.discount.MemberCoupon
;
import
com.gingersoft.gsa.cloud.common.loadsir.LoadsirUtil
;
import
com.gingersoft.gsa.cloud.table.R
;
import
com.gingersoft.gsa.cloud.table.R2
;
import
com.gingersoft.gsa.cloud.table.di.component.DaggerCouponComponent
;
import
com.gingersoft.gsa.cloud.table.mvp.contract.CouponContract
;
import
com.gingersoft.gsa.cloud.table.mvp.presenter.CouponPresenter
;
import
com.gingersoft.gsa.cloud.ui.adapter.TagViewAdapter
;
import
com.gingersoft.gsa.cloud.ui.bean.TagViewItem
;
import
com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog
;
import
com.jess.arms.base.BaseFragment
;
import
com.jess.arms.di.component.AppComponent
;
import
com.jess.arms.utils.ArmsUtils
;
import
com.kingja.loadsir.callback.Callback
;
import
com.kingja.loadsir.core.LoadService
;
import
com.kingja.loadsir.core.LoadSir
;
import
com.scwang.smartrefresh.layout.SmartRefreshLayout
;
import
com.scwang.smartrefresh.layout.api.RefreshLayout
;
import
com.scwang.smartrefresh.layout.listener.OnLoadMoreListener
;
import
com.scwang.smartrefresh.layout.listener.OnRefreshListener
;
import
java.util.ArrayList
;
import
java.util.List
;
import
javax.inject.Inject
;
import
butterknife.BindView
;
import
static
com
.
jess
.
arms
.
utils
.
Preconditions
.
checkNotNull
;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/02/2021 17:28
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public
class
CouponFragment
extends
BaseFragment
<
CouponPresenter
>
implements
CouponContract
.
View
{
@BindView
(
R2
.
id
.
refreshLayout
)
SmartRefreshLayout
refreshLayout
;
@BindView
(
R2
.
id
.
rv_coupon
)
RecyclerView
rvCoupon
;
@Inject
List
<
TagViewItem
>
mMemberCouponList
;
@Inject
TagViewAdapter
mMemberCouponAdapter
;
private
LoadService
loadService
;
public
static
CouponFragment
newInstance
()
{
CouponFragment
fragment
=
new
CouponFragment
();
return
fragment
;
}
@Override
public
void
setupFragmentComponent
(
@NonNull
AppComponent
appComponent
)
{
DaggerCouponComponent
//如找不到该类,请编译一下项目
.
builder
()
.
appComponent
(
appComponent
)
.
view
(
this
)
.
build
()
.
inject
(
this
);
}
@Override
public
View
initView
(
@NonNull
LayoutInflater
inflater
,
@Nullable
ViewGroup
container
,
@Nullable
Bundle
savedInstanceState
)
{
return
inflater
.
inflate
(
R
.
layout
.
fragment_coupon
,
container
,
false
);
}
@Override
public
void
initData
(
@Nullable
Bundle
savedInstanceState
)
{
loadService
=
LoadSir
.
getDefault
().
register
(
refreshLayout
,
new
Callback
.
OnReloadListener
()
{
@Override
public
void
onReload
(
View
v
)
{
mPresenter
.
getMemberWalletList
(
null
,
true
);
}
});
initAdapter
();
initRefreshLayout
();
}
@Override
public
void
onLazyInitView
(
@Nullable
Bundle
savedInstanceState
)
{
super
.
onLazyInitView
(
savedInstanceState
);
mPresenter
.
getMemberWalletList
(
null
,
true
);
}
private
void
initAdapter
()
{
rvCoupon
.
setLayoutManager
(
createLayoutManager
());
rvCoupon
.
setAdapter
(
mMemberCouponAdapter
);
mMemberCouponAdapter
.
setOnItemClickListener
((
adapter
,
view
,
position
)
->
{
if
(
onCouponItemClickListener
!=
null
)
{
onCouponItemClickListener
.
onItemClick
((
MemberCoupon
)
mMemberCouponList
.
get
(
position
).
getTargetObj
(),
position
);
}
});
}
private
RecyclerView
.
LayoutManager
createLayoutManager
()
{
return
new
GridLayoutManager
(
mContext
,
3
,
LinearLayoutManager
.
VERTICAL
,
false
)
{
@Override
public
RecyclerView
.
LayoutParams
generateDefaultLayoutParams
()
{
return
new
RecyclerView
.
LayoutParams
(
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
);
}
};
}
private
void
initRefreshLayout
()
{
refreshLayout
.
setOnRefreshListener
(
new
OnRefreshListener
()
{
@Override
public
void
onRefresh
(
@NonNull
final
RefreshLayout
refreshLayout
)
{
mPresenter
.
getMemberWalletList
(
refreshLayout
,
true
);
}
});
refreshLayout
.
setOnLoadMoreListener
(
new
OnLoadMoreListener
()
{
@Override
public
void
onLoadMore
(
@NonNull
final
RefreshLayout
refreshLayout
)
{
mPresenter
.
getMemberWalletList
(
refreshLayout
,
false
);
}
});
refreshLayout
.
setEnableLoadMore
(
false
);
}
@Override
public
void
setData
(
@Nullable
Object
data
)
{
}
@Override
public
void
showLoading
(
String
message
)
{
if
(
message
!=
null
)
LoadingDialog
.
showDialogForLoading
(
_mActivity
,
message
,
true
);
else
LoadingDialog
.
showDialogForLoading
(
_mActivity
);
}
@Override
public
void
hideLoading
()
{
LoadingDialog
.
cancelDialogForLoading
();
}
@Override
public
void
showMessage
(
@NonNull
String
message
)
{
checkNotNull
(
message
);
ArmsUtils
.
makeText
(
_mActivity
,
message
);
}
@Override
public
void
launchActivity
(
@NonNull
Intent
intent
)
{
if
(
intent
!=
null
)
{
ArmsUtils
.
startActivity
(
intent
);
}
}
@Override
public
void
killMyself
()
{
_mActivity
.
onBackPressedSupport
();
}
@Override
public
void
returnMemberCouponList
(
List
<
MemberCoupon
>
memberCoupons
)
{
List
<
TagViewItem
>
tagViewItems
=
castTagItem
(
memberCoupons
);
if
(
mMemberCouponList
.
size
()
>
0
)
{
mMemberCouponList
.
clear
();
}
mMemberCouponList
.
addAll
(
tagViewItems
);
mMemberCouponAdapter
.
notifyDataSetChanged
();
}
private
List
<
TagViewItem
>
castTagItem
(
List
<
MemberCoupon
>
memberCoupons
)
{
List
<
TagViewItem
>
tagViewItems
=
new
ArrayList
<>();
for
(
MemberCoupon
coupon
:
memberCoupons
)
{
TagViewItem
<
MemberCoupon
>
tagViewItem
=
new
TagViewItem
();
tagViewItem
.
setId
(
coupon
.
getId
());
tagViewItem
.
setText
(
coupon
.
getRemark
());
tagViewItem
.
setTargetObj
(
coupon
);
tagViewItems
.
add
(
tagViewItem
);
}
return
tagViewItems
;
}
@Override
public
void
showLoadSirSuccess
()
{
loadService
.
showSuccess
();
}
@Override
public
void
showLoadSirCall
(
Class
<?
extends
Callback
>
call
)
{
loadService
.
showCallback
(
call
);
}
@Override
public
LoadService
getLoadService
()
{
return
loadService
;
}
private
OnCouponItemClickListener
onCouponItemClickListener
;
public
void
setOnCouponItemClickListener
(
OnCouponItemClickListener
onCouponItemClickListener
)
{
this
.
onCouponItemClickListener
=
onCouponItemClickListener
;
}
public
interface
OnCouponItemClickListener
{
void
onItemClick
(
MemberCoupon
item
,
int
position
);
}
}
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/fragment/discount/DiscountDialogFragment.java
0 → 100644
View file @
d2a34349
package
com
.
gingersoft
.
gsa
.
cloud
.
table
.
mvp
.
ui
.
fragment
.
discount
;
import
android.app.Activity
;
import
android.app.Dialog
;
import
android.content.Context
;
import
android.graphics.Color
;
import
android.graphics.drawable.ColorDrawable
;
import
android.os.Bundle
;
import
android.view.Gravity
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.Window
;
import
android.view.WindowManager
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
androidx.appcompat.app.AppCompatDialogFragment
;
import
androidx.core.content.ContextCompat
;
import
androidx.fragment.app.Fragment
;
import
androidx.fragment.app.FragmentActivity
;
import
androidx.viewpager.widget.ViewPager
;
import
com.gingersoft.gsa.cloud.common.core.discount.MemberCoupon
;
import
com.gingersoft.gsa.cloud.common.core.member.MemberInfo
;
import
com.gingersoft.gsa.cloud.common.logan.LoganManager
;
import
com.gingersoft.gsa.cloud.database.bean.Discount
;
import
com.gingersoft.gsa.cloud.order.order.DoshokuOrder
;
import
com.gingersoft.gsa.cloud.table.R
;
import
com.gingersoft.gsa.cloud.table.R2
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.fragment.InputTableFragment
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.fragment.RegionFragment
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.widget.DiscountDialog
;
import
com.gingersoft.gsa.cloud.ui.view.TriangleView
;
import
com.jess.arms.base.BaseDialogFragment
;
import
com.jess.arms.base.BaseFragment
;
import
com.jess.arms.di.component.AppComponent
;
import
com.jess.arms.mvp.BasePresenter
;
import
com.jess.arms.utils.ThirdViewUtil
;
import
com.qmuiteam.qmui.arch.QMUIFragmentPagerAdapter
;
import
com.qmuiteam.qmui.layout.QMUILinearLayout
;
import
com.qmuiteam.qmui.util.QMUIDisplayHelper
;
import
com.qmuiteam.qmui.widget.QMUITopBar
;
import
com.qmuiteam.qmui.widget.dialog.QMUIDialog
;
import
com.qmuiteam.qmui.widget.tab.QMUITab
;
import
com.qmuiteam.qmui.widget.tab.QMUITabBuilder
;
import
com.qmuiteam.qmui.widget.tab.QMUITabIndicator
;
import
com.qmuiteam.qmui.widget.tab.QMUITabSegment
;
import
java.util.ArrayList
;
import
java.util.List
;
import
butterknife.BindView
;
import
butterknife.ButterKnife
;
/**
* @作者: bin
* @創建時間: 2021-04-02 17:14
* @更新時間: 2021-04-02 17:14
* @描述:
*/
public
class
DiscountDialogFragment
extends
BaseDialogFragment
<
BasePresenter
>
{
private
final
String
TAG
=
"DiscountFragment"
;
// @BindView(R2.id.topbar)
// QMUITopBar topbar;
@BindView
(
R2
.
id
.
tabSegment
)
QMUITabSegment
tabSegment
;
@BindView
(
R2
.
id
.
contentViewPager
)
ViewPager
contentViewPager
;
@BindView
(
R2
.
id
.
ll_container
)
QMUILinearLayout
llContainer
;
private
CouponFragment
couponFragment
;
private
BillDiscountFragment
billDiscountFragment
;
private
boolean
canScan
=
true
;
private
List
<
String
>
mTabTitles
=
new
ArrayList
<>();
private
int
mCurrentPageIndex
=
0
;
public
static
DiscountDialogFragment
newInstance
()
{
DiscountDialogFragment
fragment
=
new
DiscountDialogFragment
();
return
fragment
;
}
@Override
public
void
setupFragmentComponent
(
@NonNull
AppComponent
appComponent
)
{
}
@Override
public
View
initView
(
@NonNull
LayoutInflater
inflater
,
@Nullable
ViewGroup
container
,
@Nullable
Bundle
savedInstanceState
)
{
this
.
getDialog
().
requestWindowFeature
(
Window
.
FEATURE_NO_TITLE
);
return
inflater
.
inflate
(
R
.
layout
.
table_dialog_discout
,
container
,
false
);
}
@Override
public
void
onStart
()
{
super
.
onStart
();
Window
dialogWindow
=
getDialog
().
getWindow
();
if
(
dialogWindow
!=
null
)
{
dialogWindow
.
getDecorView
().
setPadding
(
0
,
0
,
0
,
0
);
dialogWindow
.
setBackgroundDrawable
(
new
ColorDrawable
(
Color
.
TRANSPARENT
));
WindowManager
.
LayoutParams
lp
=
dialogWindow
.
getAttributes
();
lp
.
width
=
WindowManager
.
LayoutParams
.
MATCH_PARENT
;
lp
.
height
=
(
int
)
(
QMUIDisplayHelper
.
getScreenHeight
(
mContext
)
*
0.6
);
lp
.
gravity
=
Gravity
.
BOTTOM
;
lp
.
windowAnimations
=
android
.
R
.
style
.
Animation_InputMethod
;
dialogWindow
.
setAttributes
(
lp
);
}
}
@Override
public
void
initData
(
@Nullable
Bundle
savedInstanceState
)
{
float
mShadowAlpha
=
0.25f
;
int
mShadowElevationDp
=
14
;
llContainer
.
setRadiusAndShadow
(
15
,
QMUIDisplayHelper
.
dp2px
(
mContext
,
mShadowElevationDp
),
mShadowAlpha
);
initTopbar
();
initTabAndPager
();
}
@Override
public
void
setData
(
@Nullable
Object
data
)
{
}
private
void
initTabAndPager
()
{
MemberInfo
memberInfo
=
DoshokuOrder
.
getInstance
().
getMemberInfo
();
QMUIFragmentPagerAdapter
pagerAdapter
=
new
QMUIFragmentPagerAdapter
(
getChildFragmentManager
())
{
@Override
public
Fragment
createFragment
(
int
position
)
{
switch
(
position
)
{
case
1
:
if
(
couponFragment
!=
null
)
{
return
couponFragment
;
}
couponFragment
=
CouponFragment
.
newInstance
();
couponFragment
.
setOnCouponItemClickListener
(
new
CouponFragment
.
OnCouponItemClickListener
()
{
@Override
public
void
onItemClick
(
MemberCoupon
item
,
int
position
)
{
if
(
onDiscountItemClickListener
!=
null
)
{
onDiscountItemClickListener
.
onCouponClick
(
item
,
position
);
}
}
});
return
couponFragment
;
default
:
if
(
billDiscountFragment
!=
null
)
{
return
billDiscountFragment
;
}
billDiscountFragment
=
BillDiscountFragment
.
newInstance
();
billDiscountFragment
.
setOnDiscountItemClickListener
(
new
BillDiscountFragment
.
OnBillDiscountItemClickListener
()
{
@Override
public
void
onItemClick
(
Discount
item
,
int
position
)
{
if
(
onDiscountItemClickListener
!=
null
)
{
onDiscountItemClickListener
.
onBillDiscountClick
(
item
,
position
);
}
}
});
return
billDiscountFragment
;
}
}
@Override
public
int
getCount
()
{
return
mTabTitles
.
size
();
}
@Override
public
CharSequence
getPageTitle
(
int
position
)
{
return
mTabTitles
.
get
(
position
);
}
};
QMUITabBuilder
builder
=
tabSegment
.
tabBuilder
();
mTabTitles
.
add
(
"折扣"
);
QMUITab
tab1
=
builder
.
setText
(
mTabTitles
.
get
(
0
))
.
build
(
_mActivity
);
tabSegment
.
addTab
(
tab1
);
if
(
memberInfo
!=
null
)
{
mTabTitles
.
add
(
"優惠券"
);
QMUITab
tab2
=
builder
.
setText
(
mTabTitles
.
get
(
1
))
.
build
(
_mActivity
);
tabSegment
.
addTab
(
tab2
);
}
contentViewPager
.
setAdapter
(
pagerAdapter
);
contentViewPager
.
setCurrentItem
(
mCurrentPageIndex
);
int
space
=
QMUIDisplayHelper
.
dp2px
(
_mActivity
,
16
);
tabSegment
.
setIndicator
(
new
QMUITabIndicator
(
QMUIDisplayHelper
.
dp2px
(
_mActivity
,
2
),
false
,
true
));
tabSegment
.
setDefaultTextSize
(
QMUIDisplayHelper
.
dp2px
(
_mActivity
,
16
),
QMUIDisplayHelper
.
dp2px
(
_mActivity
,
16
));
tabSegment
.
setPadding
(
space
,
0
,
space
,
0
);
tabSegment
.
setupWithViewPager
(
contentViewPager
,
false
);
tabSegment
.
addOnTabSelectedListener
(
new
QMUITabSegment
.
OnTabSelectedListener
()
{
@Override
public
void
onTabSelected
(
int
index
)
{
LoganManager
.
w_tableMode
(
TAG
,
"當前頁面【"
+
mTabTitles
.
get
(
index
)
+
"】"
);
}
@Override
public
void
onTabUnselected
(
int
index
)
{
}
@Override
public
void
onTabReselected
(
int
index
)
{
}
@Override
public
void
onDoubleTap
(
int
index
)
{
}
});
}
private
void
initTopbar
()
{
// topbar.setBackgroundColor(ContextCompat.getColor(_mActivity, R.color.theme_color));
// if (canScan) {
// topbar.addRightImageButton(R.mipmap.table_white_scan, R.id.topbar_right_change_button)
// .setOnClickListener(v -> {
// _mActivity.onBackPressedSupport();
// });
// }
// topbar.setTitle("折扣");
}
@Override
public
boolean
onBackPressedSupport
()
{
return
super
.
onBackPressedSupport
();
}
private
OnDiscountItemClickListener
onDiscountItemClickListener
;
public
void
setOnDiscountItemClickListener
(
OnDiscountItemClickListener
onDiscountItemClickListener
)
{
this
.
onDiscountItemClickListener
=
onDiscountItemClickListener
;
}
public
interface
OnDiscountItemClickListener
{
void
onBillDiscountClick
(
Discount
item
,
int
position
);
void
onCouponClick
(
MemberCoupon
item
,
int
position
);
}
}
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/widget/DiscountDialog.java
View file @
d2a34349
package
com
.
gingersoft
.
gsa
.
cloud
.
table
.
mvp
.
ui
.
widget
;
package
com
.
gingersoft
.
gsa
.
cloud
.
table
.
mvp
.
ui
.
widget
;
import
android.app.Activity
;
import
android.app.Dialog
;
import
android.app.Dialog
;
import
android.content.Context
;
import
android.content.Context
;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.view.Gravity
;
import
android.view.View
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.ViewGroup
;
import
android.
widget.ImageView
;
import
android.
view.WindowManager
;
import
android.widget.LinearLayout
;
import
android.widget.LinearLayout
;
import
androidx.annotation.NonNull
;
import
androidx.core.content.ContextCompat
;
import
androidx.fragment.app.Fragment
;
import
androidx.fragment.app.FragmentActivity
;
import
androidx.recyclerview.widget.DefaultItemAnimator
;
import
androidx.recyclerview.widget.GridLayoutManager
;
import
androidx.recyclerview.widget.LinearLayoutManager
;
import
androidx.recyclerview.widget.RecyclerView
;
import
androidx.viewpager.widget.PagerTabStrip
;
import
androidx.viewpager.widget.ViewPager
;
import
com.gingersoft.gsa.cloud.common.logan.LoganManager
;
import
com.gingersoft.gsa.cloud.common.utils.log.LogUtil
;
import
com.gingersoft.gsa.cloud.database.bean.Discount
;
import
com.gingersoft.gsa.cloud.table.R
;
import
com.gingersoft.gsa.cloud.table.R
;
import
com.gingersoft.gsa.cloud.table.R2
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.DiscountAdapter
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.DiscountAdapter
;
import
com.gingersoft.gsa.cloud.database.bean.Discount
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.fragment.InputTableFragment
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.fragment.RegionFragment
;
import
com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration
;
import
com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration
;
import
com.jess.arms.utils.ThirdViewUtil
;
import
com.qmuiteam.qmui.arch.QMUIFragmentPagerAdapter
;
import
com.qmuiteam.qmui.layout.QMUILinearLayout
;
import
com.qmuiteam.qmui.layout.QMUILinearLayout
;
import
com.qmuiteam.qmui.util.QMUIDisplayHelper
;
import
com.qmuiteam.qmui.util.QMUIDisplayHelper
;
import
com.qmuiteam.qmui.widget.QMUITopBar
;
import
com.qmuiteam.qmui.widget.QMUITopBar
;
import
com.qmuiteam.qmui.widget.tab.QMUITab
;
import
com.qmuiteam.qmui.widget.tab.QMUITabBuilder
;
import
com.qmuiteam.qmui.widget.tab.QMUITabIndicator
;
import
com.qmuiteam.qmui.widget.tab.QMUITabSegment
;
import
com.qmuiteam.qmui.widget.tab.QMUITabView
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
androidx.annotation.NonNull
;
import
butterknife.BindView
;
import
androidx.core.content.ContextCompat
;
import
butterknife.Unbinder
;
import
androidx.recyclerview.widget.DefaultItemAnimator
;
import
androidx.recyclerview.widget.GridLayoutManager
;
import
androidx.recyclerview.widget.LinearLayoutManager
;
import
androidx.recyclerview.widget.RecyclerView
;
import
lombok.Builder
;
/**
/**
* 作者:ELEGANT_BIN
* 作者:ELEGANT_BIN
...
@@ -47,6 +66,18 @@ public class DiscountDialog extends Dialog {
...
@@ -47,6 +66,18 @@ public class DiscountDialog extends Dialog {
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
super
.
onCreate
(
savedInstanceState
);
//noinspection ConstantConditions
getWindow
().
getDecorView
().
setPadding
(
0
,
0
,
0
,
0
);
// 在底部,宽度撑满
WindowManager
.
LayoutParams
params
=
getWindow
().
getAttributes
();
params
.
height
=
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
;
params
.
gravity
=
Gravity
.
BOTTOM
|
Gravity
.
CENTER
;
int
screenWidth
=
QMUIDisplayHelper
.
getScreenWidth
(
getContext
());
int
screenHeight
=
QMUIDisplayHelper
.
getScreenHeight
(
getContext
());
params
.
width
=
screenWidth
<
screenHeight
?
screenWidth
:
screenHeight
;
getWindow
().
setAttributes
(
params
);
setCanceledOnTouchOutside
(
true
);
setCanceledOnTouchOutside
(
true
);
}
}
...
@@ -62,7 +93,25 @@ public class DiscountDialog extends Dialog {
...
@@ -62,7 +93,25 @@ public class DiscountDialog extends Dialog {
public
static
class
Builder
implements
View
.
OnClickListener
{
public
static
class
Builder
implements
View
.
OnClickListener
{
private
Context
mContext
;
// @BindView(R2.id.topbar)
// QMUITopBar topbar;
// @BindView(R2.id.recycler_discount)
// RecyclerView recyclerDiscount;
// @BindView(R2.id.tv_pager_indicator)
// PagerTabStrip tvPagerIndicator;
// @BindView(R2.id.ll_container)
// QMUILinearLayout llContainer;
@BindView
(
R2
.
id
.
topbar
)
QMUITopBar
topbar
;
@BindView
(
R2
.
id
.
tabSegment
)
QMUITabSegment
tabSegment
;
@BindView
(
R2
.
id
.
contentViewPager
)
ViewPager
contentViewPager
;
@BindView
(
R2
.
id
.
ll_container
)
QMUILinearLayout
llContainer
;
private
FragmentActivity
mContext
;
private
DiscountDialog
mDialog
;
private
DiscountDialog
mDialog
;
private
int
spanCount
=
3
;
private
int
spanCount
=
3
;
...
@@ -75,13 +124,17 @@ public class DiscountDialog extends Dialog {
...
@@ -75,13 +124,17 @@ public class DiscountDialog extends Dialog {
private
List
<
Discount
>
mItems
;
private
List
<
Discount
>
mItems
;
private
DiscountAdapter
mAdapter
;
private
DiscountAdapter
mAdapter
;
private
Unbinder
mUnbinder
;
private
String
[]
mTabTitles
=
{
"折扣"
,
"優惠券"
};
private
QMUITopBar
mTopBar
;
private
int
mCurrentPageIndex
=
0
;
private
QMUILinearLayout
ll_container
;
private
RecyclerView
recycler_discount
;
// private QMUITopBar topbar;
private
ImageView
btn_close
;
// private QMUILinearLayout llContainer;
// private RecyclerView recyclerDiscount;
public
Builder
(
Context
context
)
{
public
Builder
(
FragmentActivity
context
)
{
mContext
=
context
;
mContext
=
context
;
mItems
=
new
ArrayList
<>();
mItems
=
new
ArrayList
<>();
mRadius
=
QMUIDisplayHelper
.
dp2px
(
mContext
,
8
);
mRadius
=
QMUIDisplayHelper
.
dp2px
(
mContext
,
8
);
...
@@ -112,45 +165,112 @@ public class DiscountDialog extends Dialog {
...
@@ -112,45 +165,112 @@ public class DiscountDialog extends Dialog {
}
}
mDialog
=
new
DiscountDialog
(
mContext
);
mDialog
=
new
DiscountDialog
(
mContext
);
View
contentView
=
buildViews
();
View
contentView
=
buildViews
();
int
screenHeight
=
(
int
)
(
QMUIDisplayHelper
.
getScreenHeight
(
mContext
)
*
0.6
);
mDialog
.
setContentView
(
contentView
,
new
LinearLayout
.
LayoutParams
(
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,(
int
)
(
QMUIDisplayHelper
.
getScreenHeight
(
mContext
)
*
0.65
)));
mDialog
.
setContentView
(
contentView
,
new
LinearLayout
.
LayoutParams
(
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,
screenHeight
));
return
mDialog
;
return
mDialog
;
}
}
private
View
buildViews
()
{
private
View
buildViews
()
{
View
view
=
View
.
inflate
(
mContext
,
getContentViewLayoutId
(),
null
);
View
view
=
View
.
inflate
(
mContext
,
getContentViewLayoutId
(),
null
);
mTopBar
=
view
.
findViewById
(
R
.
id
.
topbar
);
ThirdViewUtil
.
bindTarget
(
this
,
view
);
recycler_discount
=
view
.
findViewById
(
R
.
id
.
recycler_discount
);
topbar
=
view
.
findViewById
(
R
.
id
.
topbar
);
ll_container
=
view
.
findViewById
(
R
.
id
.
ll_container
);
// recyclerDiscount = view.findViewById(R.id.recycler_discount);
// btn_close = view.findViewById(R.id.btn_close);
llContainer
=
view
.
findViewById
(
R
.
id
.
ll_container
);
// btn_close.setOnClickListener(new View.OnClickListener() {
// ll_container.setRadiusAndShadow(mRadius, QMUIDisplayHelper.dp2px(mContext, mShadowElevationDp), mShadowAlpha);
// @Override
// public void onClick(View v) {
// closeDialog() ;
// }
// });
ll_container
.
setRadiusAndShadow
(
mRadius
,
QMUIDisplayHelper
.
dp2px
(
mContext
,
mShadowElevationDp
),
mShadowAlpha
);
initTopbar
();
initTopbar
();
initTabAndPager
();
initDiscountRecycleView
();
initDiscountRecycleView
();
return
view
;
return
view
;
}
}
private
void
initTabAndPager
()
{
QMUIFragmentPagerAdapter
pagerAdapter
=
new
QMUIFragmentPagerAdapter
(
mContext
.
getSupportFragmentManager
())
{
@Override
public
Fragment
createFragment
(
int
position
)
{
Bundle
bundle
=
new
Bundle
();
// switch (position) {
// case 1:
// if (allTableFragment != null) {
// return allTableFragment;
// }
// allTableFragment = RegionFragment.newInstance();
// bundle.putInt("currentPageIndex", FUNCTION_ALL_TABLE);
// allTableFragment.setArguments(bundle);
// return allTableFragment;
// default:
// if (inputTableFragment != null) {
// return inputTableFragment;
// }
// inputTableFragment = InputTableFragment.newInstance();
// return inputTableFragment;
// }
return
null
;
}
@Override
public
int
getCount
()
{
return
mTabTitles
.
length
;
}
@Override
public
CharSequence
getPageTitle
(
int
position
)
{
return
""
;
}
};
QMUITabBuilder
builder
=
tabSegment
.
tabBuilder
();
QMUITab
tab1
=
builder
.
setText
(
mTabTitles
[
0
])
.
build
(
mContext
);
QMUITab
tab2
=
builder
.
setText
(
mTabTitles
[
1
])
.
build
(
mContext
);
tabSegment
.
addTab
(
tab1
)
.
addTab
(
tab2
);
contentViewPager
.
setAdapter
(
pagerAdapter
);
contentViewPager
.
setCurrentItem
(
mCurrentPageIndex
);
int
space
=
QMUIDisplayHelper
.
dp2px
(
mContext
,
16
);
tabSegment
.
setIndicator
(
new
QMUITabIndicator
(
QMUIDisplayHelper
.
dp2px
(
mContext
,
2
),
false
,
true
));
tabSegment
.
setDefaultTextSize
(
QMUIDisplayHelper
.
dp2px
(
mContext
,
16
),
QMUIDisplayHelper
.
dp2px
(
mContext
,
16
));
tabSegment
.
setPadding
(
space
,
0
,
space
,
0
);
tabSegment
.
setupWithViewPager
(
contentViewPager
,
false
);
tabSegment
.
addOnTabSelectedListener
(
new
QMUITabSegment
.
OnTabSelectedListener
()
{
@Override
public
void
onTabSelected
(
int
index
)
{
LoganManager
.
w_tableMode
(
TAG
,
"當前頁面【"
+
mTabTitles
[
index
]
+
"】"
);
}
@Override
public
void
onTabUnselected
(
int
index
)
{
}
@Override
public
void
onTabReselected
(
int
index
)
{
}
@Override
public
void
onDoubleTap
(
int
index
)
{
}
});
}
private
void
initTopbar
()
{
private
void
initTopbar
()
{
if
(
mBagcolor
!=
0
)
{
if
(
mBagcolor
!=
0
)
{
mTopB
ar
.
setBackgroundColor
(
mBagcolor
);
topb
ar
.
setBackgroundColor
(
mBagcolor
);
}
else
{
}
else
{
mTopB
ar
.
setBackgroundColor
(
ContextCompat
.
getColor
(
mContext
,
R
.
color
.
theme_color
));
topb
ar
.
setBackgroundColor
(
ContextCompat
.
getColor
(
mContext
,
R
.
color
.
theme_color
));
}
}
if
(
canScan
)
{
if
(
canScan
)
{
mTopB
ar
.
addRightImageButton
(
R
.
mipmap
.
table_white_scan
,
R
.
id
.
topbar_right_change_button
)
topb
ar
.
addRightImageButton
(
R
.
mipmap
.
table_white_scan
,
R
.
id
.
topbar_right_change_button
)
.
setOnClickListener
(
v
->
{
.
setOnClickListener
(
v
->
{
if
(
onClickListener
!=
null
)
{
if
(
onClickListener
!=
null
)
{
onClickListener
.
onScan
();
onClickListener
.
onScan
();
}
}
});
});
}
}
mTopB
ar
.
setTitle
(
"折扣"
);
topb
ar
.
setTitle
(
"折扣"
);
}
}
private
void
initDiscountRecycleView
()
{
private
void
initDiscountRecycleView
()
{
...
@@ -163,10 +283,10 @@ public class DiscountDialog extends Dialog {
...
@@ -163,10 +283,10 @@ public class DiscountDialog extends Dialog {
}
}
closeDialog
();
closeDialog
();
});
});
recycler_d
iscount
.
addItemDecoration
(
new
DividerItemDecoration
(
mContext
,
DividerItemDecoration
.
HORIZONTAL_LIST
));
// recyclerD
iscount.addItemDecoration(new DividerItemDecoration(mContext, DividerItemDecoration.HORIZONTAL_LIST));
recycler_d
iscount
.
setLayoutManager
(
createLayoutManager
());
// recyclerD
iscount.setLayoutManager(createLayoutManager());
recycler_d
iscount
.
setItemAnimator
(
new
DefaultItemAnimator
());
// recyclerD
iscount.setItemAnimator(new DefaultItemAnimator());
recycler_d
iscount
.
setAdapter
(
mAdapter
);
// recyclerD
iscount.setAdapter(mAdapter);
}
}
private
RecyclerView
.
LayoutManager
createLayoutManager
()
{
private
RecyclerView
.
LayoutManager
createLayoutManager
()
{
...
...
component-table/src/main/res/layout/fragment_bill_discount.xml
0 → 100644
View file @
d2a34349
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_bill_discount"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"horizontal"
/>
</FrameLayout>
\ No newline at end of file
component-table/src/main/res/layout/fragment_container.xml
0 → 100644
View file @
d2a34349
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:id=
"@+id/fl_container"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
</FrameLayout>
\ No newline at end of file
component-table/src/main/res/layout/fragment_coupon.xml
0 → 100644
View file @
d2a34349
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
<com.scwang.smartrefresh.layout.SmartRefreshLayout
android:id=
"@+id/refreshLayout"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"horizontal"
>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_coupon"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_alignParentBottom=
"true"
android:layout_gravity=
"bottom"
android:orientation=
"horizontal"
/>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
</FrameLayout>
\ No newline at end of file
component-table/src/main/res/layout/table_activity_order_content.xml
View file @
d2a34349
...
@@ -206,6 +206,12 @@
...
@@ -206,6 +206,12 @@
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<FrameLayout
android:id=
"@+id/fl_container"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/dp_320"
android:layout_gravity=
"bottom"
/>
<ViewStub
<ViewStub
android:id=
"@+id/vs_transfer_food"
android:id=
"@+id/vs_transfer_food"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
...
...
component-table/src/main/res/layout/table_dialog_discout.xml
View file @
d2a34349
...
@@ -4,30 +4,23 @@
...
@@ -4,30 +4,23 @@
android:id=
"@+id/ll_container"
android:id=
"@+id/ll_container"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"@color/theme_white_color"
android:orientation=
"vertical"
>
android:orientation=
"vertical"
>
<com.qmuiteam.qmui.widget.QMUITopBar
<!-- <com.qmuiteam.qmui.widget.QMUITopBar-->
android:id=
"@+id/topbar"
<!-- android:id="@+id/topbar"-->
android:layout_width=
"match_parent"
<!-- android:layout_width="match_parent"-->
android:layout_height=
"?attr/qmui_topbar_height"
<!-- android:layout_height="?attr/qmui_topbar_height"-->
app:qmui_topbar_title_color=
"@color/theme_white_color"
/
>
<!-- app:qmui_topbar_title_color="@color/theme_white_color" />--
>
<
androidx.recyclerview.widget.RecyclerView
<
com.qmuiteam.qmui.widget.tab.QMUITabSegment
android:id=
"@+id/
recycler_discou
nt"
android:id=
"@+id/
tabSegme
nt"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"@dimen/dp_45"
android:divider=
"@null"
android:background=
"@drawable/shape_tab_panel_bg"
/>
android:fadeScrollbars=
"false"
android:orientation=
"vertical"
app:layoutManager=
"androidx.recyclerview.widget.GridLayoutManager"
app:spanCount=
"3"
/>
<!-- <ImageView-->
<androidx.viewpager.widget.ViewPager
<!-- android:id="@+id/btn_close"-->
android:id=
"@+id/contentViewPager"
<!-- android:layout_width="wrap_content"-->
android:layout_width=
"match_parent"
<!-- android:layout_height="wrap_content"-->
android:layout_height=
"wrap_content"
/>
<!-- android:layout_margin="@dimen/dp_20"-->
<!-- android:src="@drawable/icon_dialog_close" />-->
</com.qmuiteam.qmui.layout.QMUILinearLayout>
</com.qmuiteam.qmui.layout.QMUILinearLayout>
\ No newline at end of file
component-table/src/main/res/layout/table_stub_transfer_food.xml
View file @
d2a34349
...
@@ -48,5 +48,4 @@
...
@@ -48,5 +48,4 @@
android:id=
"@+id/contentViewPager"
android:id=
"@+id/contentViewPager"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
android:layout_height=
"match_parent"
/>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
component-webview/src/main/java/com/gingersoft/gsa/cloud/webview/mvp/ui/activity/WebActivity.java
View file @
d2a34349
...
@@ -30,7 +30,7 @@ import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils;
...
@@ -30,7 +30,7 @@ import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils;
import
com.gingersoft.gsa.cloud.common.webview.WebviewHelper
;
import
com.gingersoft.gsa.cloud.common.webview.WebviewHelper
;
import
com.gingersoft.gsa.cloud.webview.R
;
import
com.gingersoft.gsa.cloud.webview.R
;
import
com.gingersoft.gsa.cloud.webview.R2
;
import
com.gingersoft.gsa.cloud.webview.R2
;
import
com.gingersoft.gsa.cloud.webview.
app
.WebViewProgressBar
;
import
com.gingersoft.gsa.cloud.webview.
mvp.ui.view
.WebViewProgressBar
;
import
com.gingersoft.gsa.cloud.webview.app.webviewUtils.WebImageListener
;
import
com.gingersoft.gsa.cloud.webview.app.webviewUtils.WebImageListener
;
import
com.gingersoft.gsa.cloud.webview.app.webviewUtils.WebViewUtils
;
import
com.gingersoft.gsa.cloud.webview.app.webviewUtils.WebViewUtils
;
import
com.jess.arms.base.BaseActivity
;
import
com.jess.arms.base.BaseActivity
;
...
@@ -60,10 +60,6 @@ public class WebActivity extends BaseActivity<BasePresenter> implements IView {
...
@@ -60,10 +60,6 @@ public class WebActivity extends BaseActivity<BasePresenter> implements IView {
@Inject
@Inject
RxErrorHandler
mErrorHandler
;
RxErrorHandler
mErrorHandler
;
// private CommonDialog msgDialog;
// @BindView(R.id.top_bar)
// TitleBar mTopBar;
@BindView
(
R2
.
id
.
topbar
)
@BindView
(
R2
.
id
.
topbar
)
QMUITopBar
mTopBar
;
QMUITopBar
mTopBar
;
@BindView
(
R2
.
id
.
web_view
)
@BindView
(
R2
.
id
.
web_view
)
...
@@ -75,29 +71,6 @@ public class WebActivity extends BaseActivity<BasePresenter> implements IView {
...
@@ -75,29 +71,6 @@ public class WebActivity extends BaseActivity<BasePresenter> implements IView {
@BindView
(
R2
.
id
.
tv_hint
)
@BindView
(
R2
.
id
.
tv_hint
)
TextView
mTvHint
;
TextView
mTvHint
;
public
static
final
int
URI
=
100
;
public
static
final
int
CONTENT
=
101
;
public
static
final
int
URI_CONTENT
=
102
;
public
static
final
int
ADVERTISEMENT
=
103
;
public
static
final
int
NEWSINFOCHILD
=
104
;
public
static
final
int
TITLE_URI
=
105
;
public
static
final
int
TITLE_CONTENT
=
106
;
public
static
final
int
TITLE_URI_CONTENT
=
107
;
private
boolean
isContinue
;
private
int
mType
;
private
String
mUrl
;
private
String
mContent
;
private
String
mTitle
;
// private AdvertisementInfo adInfo;
// private NewsInfoChild newsInfoChild;
private
boolean
isReceivedTitle
=
true
;
//是否使用网页title
private
Intent
intent
;
private
int
mRightType
;
//右边使用什么样的图片
private
boolean
isNormalSizeToLargest
;
@Override
@Override
public
void
setupActivityComponent
(
@NonNull
AppComponent
appComponent
)
{
public
void
setupActivityComponent
(
@NonNull
AppComponent
appComponent
)
{
...
@@ -152,14 +125,7 @@ public class WebActivity extends BaseActivity<BasePresenter> implements IView {
...
@@ -152,14 +125,7 @@ public class WebActivity extends BaseActivity<BasePresenter> implements IView {
@Override
@Override
public
void
initData
(
Bundle
savedInstanceState
)
{
public
void
initData
(
Bundle
savedInstanceState
)
{
intent
=
getIntent
();
isNormalSizeToLargest
=
intent
.
getBooleanExtra
(
"isNormalSizeToLargest"
,
false
);
initWebView
();
initWebView
();
//初始化类型(带标题、不带标题、加载url、加载html、传递对象)
initType
();
//加载webview
initLoad
();
}
}
@Override
@Override
...
@@ -167,285 +133,12 @@ public class WebActivity extends BaseActivity<BasePresenter> implements IView {
...
@@ -167,285 +133,12 @@ public class WebActivity extends BaseActivity<BasePresenter> implements IView {
}
}
@SuppressWarnings
(
"deprecation"
)
@SuppressLint
(
"JavascriptInterface"
)
@SuppressLint
(
"JavascriptInterface"
)
private
void
initWebView
()
{
private
void
initWebView
()
{
//使用硬件加速
//使用硬件加速
// mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
// mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
WebImageListener
listener
=
new
WebImageListener
(
this
);
WebViewUtils
.
initWebView
(
mWebView
);
mWebView
.
addJavascriptInterface
(
listener
,
"listener"
);
mWebView
.
addJavascriptInterface
(
this
,
"android"
);
WebSettings
settings
=
mWebView
.
getSettings
();
if
(
isNormalSizeToLargest
)
{
settings
.
setTextSize
(
WebSettings
.
TextSize
.
LARGEST
);
}
settings
.
setBlockNetworkImage
(
true
);
settings
.
setAppCacheEnabled
(
true
);
settings
.
setDomStorageEnabled
(
true
);
settings
.
setDatabaseEnabled
(
true
);
if
(
DeviceUtils
.
netIsConnected
(
this
))
{
settings
.
setCacheMode
(
WebSettings
.
LOAD_DEFAULT
);
}
else
{
settings
.
setCacheMode
(
WebSettings
.
LOAD_CACHE_ONLY
);
}
//防止https连接里面加载http图片
if
(
Build
.
VERSION
.
SDK_INT
>
Build
.
VERSION_CODES
.
LOLLIPOP
)
{
settings
.
setMixedContentMode
(
WebSettings
.
LOAD_NORMAL
);
}
settings
.
setBlockNetworkImage
(
false
);
settings
.
setJavaScriptEnabled
(
true
);
settings
.
setLoadWithOverviewMode
(
true
);
settings
.
setLayoutAlgorithm
(
WebSettings
.
LayoutAlgorithm
.
SINGLE_COLUMN
);
// 设置可以支持缩放
settings
.
setSupportZoom
(
true
);
// 设置出现缩放工具
settings
.
setBuiltInZoomControls
(
true
);
// 扩大比例的缩放
settings
.
setUseWideViewPort
(
true
);
mWebView
.
setWebChromeClient
(
new
MyWebChromeClient
());
mWebView
.
setWebViewClient
(
new
MyWebViewClient
());
//可以设置是否允许通过file url加载的Javascript可以访问其他任何的源,也就是说,它包括其他的文件和http,https等其他的源
settings
.
setAllowUniversalAccessFromFileURLs
(
true
);
}
private
class
MyWebChromeClient
extends
WebChromeClient
{
@Override
public
void
onProgressChanged
(
WebView
view
,
int
newProgress
)
{
//loadingOperation(newProgress);
if
(
newProgress
==
100
)
{
hideProgressWithAnim
(
mProgressBar1
);
}
else
{
mProgressBar1
.
setVisibility
(
View
.
VISIBLE
);
}
mProgressBar1
.
setProgress
(
newProgress
);
}
@Override
public
void
onReceivedTitle
(
WebView
view
,
String
title
)
{
if
(
isReceivedTitle
)
{
//如果为true才从显示html标题
if
(
title
.
startsWith
(
"http://"
)
||
title
.
startsWith
(
"https://"
))
{
mTopBar
.
setTitle
(
""
);
}
else
{
mTitle
=
title
;
mTopBar
.
setTitle
(
title
);
}
}
}
}
private
class
MyWebViewClient
extends
WebViewClient
{
@Override
public
void
onPageFinished
(
WebView
view
,
String
url
)
{
mRightType
=
intent
.
getIntExtra
(
WebviewHelper
.
RIGHT_IMG_TYPE
,
WebviewHelper
.
RIGHT_TYPE_NULL
);
// switch (mRightType) {
// case RIGHT_TYPE_SHARE:
// mTopBar.setRightTwoIvVisibility(View.VISIBLE);
// mTopBar.setRightTwoImg(R.drawable.icon_share);
// break;
// case RIGHT_TYPE_REFRESH:
// mTopBar.setRightTwoIvVisibility(View.VISIBLE);
// mTopBar.setRightTwoImg(R.drawable.ic_refresh);
// break;
// default:
// mTopBar.setRightTwoIvVisibility(View.GONE);
// break;
// }
WebViewUtils
.
addImageClickListener
(
mWebView
);
}
@Override
public
boolean
shouldOverrideUrlLoading
(
WebView
view
,
String
url
)
{
if
(
url
==
null
)
return
false
;
try
{
if
(
url
.
startsWith
(
"weixin://"
)
//微信
||
url
.
startsWith
(
"alipays://"
)
//支付宝
||
url
.
startsWith
(
"mailto://"
)
//邮件
)
{
Intent
intent
=
new
Intent
(
Intent
.
ACTION_VIEW
,
Uri
.
parse
(
url
));
startActivity
(
intent
);
return
true
;
}
//判断用户单击的是那个超连接
String
tag
=
"tel"
;
if
(
url
.
contains
(
tag
))
{
PermissionUtil
.
callPhone
(
new
PermissionUtil
.
RequestPermission
()
{
@SuppressLint
(
"MissingPermission"
)
@Override
public
void
onRequestPermissionSuccess
()
{
String
mobile
=
url
.
substring
(
url
.
lastIndexOf
(
"/"
)
+
1
);
Intent
mIntent
=
new
Intent
(
Intent
.
ACTION_CALL
);
Uri
data
=
Uri
.
parse
(
"tel:"
+
mobile
);
mIntent
.
setData
(
data
);
startActivity
(
mIntent
);
}
@Override
public
void
onRequestPermissionFailure
(
List
<
String
>
permissions
)
{
showMessage
(
ArmsUtils
.
getString
(
WebActivity
.
this
,
R
.
string
.
authorize_call_phone
));
}
@Override
public
void
onRequestPermissionFailureWithAskNeverAgain
(
List
<
String
>
permissions
)
{
// msgDialog = new CommonDialog(WebActivity.this, R.style.dialog_style, 0, 0, new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// switch (v.getId()) {
// case R.id.txt_yes:
// DeviceUtils.startSetting(WebActivity.this);
// break;
// case R.id.txt_no:
// break;
// }
// msgDialog.dismiss();
// }
// });
// msgDialog.show();
// msgDialog.setTitle(ArmsUtils.getString(WebActivity.this, R.string.prompt));
// msgDialog.setContext(ArmsUtils.getString(WebActivity.this, R.string.authorize_call_phone));
}
},
new
RxPermissions
(
WebActivity
.
this
),
mErrorHandler
);
return
true
;
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
true
;
}
view
.
loadUrl
(
url
);
return
true
;
}
// 错误页面的逻辑处理
@SuppressWarnings
(
"deprecation"
)
@Override
public
void
onReceivedError
(
WebView
view
,
int
errorCode
,
String
description
,
String
failingUrl
)
{
//errorOperation();
mWebView
.
setVisibility
(
View
.
INVISIBLE
);
mTvHint
.
setVisibility
(
View
.
VISIBLE
);
}
}
private
void
initType
()
{
mType
=
intent
.
getIntExtra
(
WebviewHelper
.
TYPE_KEY
,
0
);
if
(
mType
==
URI
||
mType
==
CONTENT
||
mType
==
URI_CONTENT
)
{
setReceivedTitleStatus
(
null
);
}
else
if
(
mType
==
TITLE_URI
||
mType
==
TITLE_CONTENT
||
mType
==
TITLE_URI_CONTENT
)
{
mTitle
=
intent
.
getStringExtra
(
WebviewHelper
.
TITLE_KEY
);
setReceivedTitleStatus
(
mTitle
);
}
// else if (mType == ADVERTISEMENT) {
// adInfo = (AdvertisementInfo) intent.getSerializableExtra("AdvertisementInfo");
// setReceivedTitleStatus(adInfo.getAdTitle());
// } else if (mType == NEWSINFOCHILD) {
// newsInfoChild = (NewsInfoChild) intent.getSerializableExtra("NewsInfoChild");
// setReceivedTitleStatus(newsInfoChild.getAdTitle());
// }
else
{
setReceivedTitleStatus
(
null
);
}
}
private
void
initLoad
()
{
switch
(
mType
)
{
case
URI:
mUrl
=
intent
.
getStringExtra
(
WebviewHelper
.
URL_KEY
);
if
(!
TextUtils
.
isEmpty
(
mUrl
)
&&
!
mUrl
.
toLowerCase
().
equals
(
"null"
))
{
mWebView
.
loadUrl
(
mUrl
);
}
break
;
case
CONTENT:
mContent
=
intent
.
getStringExtra
(
WebviewHelper
.
CONTENT_KEY
);
if
(!
TextUtils
.
isEmpty
(
mContent
)
&&
!
mContent
.
toLowerCase
().
equals
(
"null"
))
{
mWebView
.
loadDataWithBaseURL
(
null
,
mContent
,
"text/html"
,
"utf-8"
,
null
);
}
break
;
case
URI_CONTENT:
mUrl
=
intent
.
getStringExtra
(
WebviewHelper
.
URL_KEY
);
mContent
=
intent
.
getStringExtra
(
WebviewHelper
.
CONTENT_KEY
);
if
(!
TextUtils
.
isEmpty
(
mUrl
)
&&
!
mUrl
.
toLowerCase
().
equals
(
"null"
))
{
mWebView
.
loadUrl
(
mUrl
);
}
else
if
(!
TextUtils
.
isEmpty
(
mContent
)
&&
!
mContent
.
toLowerCase
().
equals
(
"null"
))
{
mWebView
.
loadDataWithBaseURL
(
null
,
mContent
,
"text/html"
,
"utf-8"
,
null
);
}
break
;
case
TITLE_URI:
mUrl
=
intent
.
getStringExtra
(
WebviewHelper
.
URL_KEY
);
mTitle
=
intent
.
getStringExtra
(
WebviewHelper
.
TITLE_KEY
);
mTopBar
.
setTitle
(
mTitle
);
if
(!
TextUtils
.
isEmpty
(
mUrl
))
{
mWebView
.
loadUrl
(
mUrl
);
}
break
;
case
TITLE_CONTENT:
mTitle
=
intent
.
getStringExtra
(
WebviewHelper
.
TITLE_KEY
);
mContent
=
intent
.
getStringExtra
(
WebviewHelper
.
CONTENT_KEY
);
mTopBar
.
setTitle
(
mTitle
);
if
(!
TextUtils
.
isEmpty
(
mContent
)
&&
!
mContent
.
toLowerCase
().
equals
(
"null"
))
{
mWebView
.
loadDataWithBaseURL
(
null
,
mContent
,
"text/html"
,
"utf-8"
,
null
);
}
break
;
case
TITLE_URI_CONTENT:
mTitle
=
intent
.
getStringExtra
(
WebviewHelper
.
TITLE_KEY
);
mUrl
=
intent
.
getStringExtra
(
WebviewHelper
.
URL_KEY
);
mContent
=
intent
.
getStringExtra
(
WebviewHelper
.
CONTENT_KEY
);
mTopBar
.
setTitle
(
mTitle
);
if
(!
TextUtils
.
isEmpty
(
mUrl
)
&&
!
mUrl
.
toLowerCase
().
equals
(
"null"
))
{
mWebView
.
loadUrl
(
mUrl
);
}
else
if
(!
TextUtils
.
isEmpty
(
mContent
)
&&
!
mContent
.
toLowerCase
().
equals
(
"null"
))
{
mWebView
.
loadDataWithBaseURL
(
null
,
mContent
,
"text/html"
,
"utf-8"
,
null
);
}
break
;
// case ADVERTISEMENT:
// if (adInfo != null) {
// mTitle = adInfo.getAdTitle();
// mTopBar.setTitle(mTitle);
//// if (adInfo.getAdType().equals("0")) {
//// mWebView.loadDataWithBaseURL(null, adInfo.getAdDesc(), "text/html", "utf-8", null);
//// } else if (adInfo.getAdType().equals("1")) {
// String url = (SApplication.adServerAddress() + adURL + adInfo.getId()).replace("member-web/", "");
// mWebView.loadUrl(url);
//// } else {
//// mWebView.loadDataWithBaseURL(null,adInfo.getAdUrl(), "text/html", "utf-8", null);
//// }
// }
// break;
// case NEWSINFOCHILD:
// if (newsInfoChild != null) {
// mTitle = newsInfoChild.getAdTitle();
// mTopBar.setCenterText(mTitle);
// String url = (SApplication.adServerAddress() + adURL + newsInfoChild.getId()).replace("member-web/", "");
// mWebView.loadUrl(url);
// }
// break;
case
0
:
break
;
}
}
/**
* 是否使用其他頁面传递过来的标题
*
* @param title
*/
private
void
setReceivedTitleStatus
(
String
title
)
{
if
(!
TextUtils
.
isEmpty
(
title
))
{
isReceivedTitle
=
false
;
}
else
{
isReceivedTitle
=
true
;
}
}
}
@Override
@Override
...
@@ -461,7 +154,6 @@ public class WebActivity extends BaseActivity<BasePresenter> implements IView {
...
@@ -461,7 +154,6 @@ public class WebActivity extends BaseActivity<BasePresenter> implements IView {
@Override
@Override
public
void
showMessage
(
@NonNull
String
message
)
{
public
void
showMessage
(
@NonNull
String
message
)
{
Preconditions
.
checkNotNull
(
message
);
Preconditions
.
checkNotNull
(
message
);
// ArmsUtils.snackbarText(message);
ToastUtils
.
show
(
mContext
,
message
);
ToastUtils
.
show
(
mContext
,
message
);
}
}
...
@@ -506,224 +198,4 @@ public class WebActivity extends BaseActivity<BasePresenter> implements IView {
...
@@ -506,224 +198,4 @@ public class WebActivity extends BaseActivity<BasePresenter> implements IView {
}
}
}
}
@Override
protected
void
onDestroy
()
{
clearWebViewResource
();
super
.
onDestroy
();
}
private
void
clearWebViewResource
()
{
if
(
mWebView
!=
null
)
{
mWebView
.
removeAllViews
();
// in android 5.1(sdk:21) we should invoke this to avoid memory leak
// see (https://coolpers.github.io/webview/memory/leak/2015/07/16/android-5.1-webview-memory-leak.html)
((
ViewGroup
)
mWebView
.
getParent
()).
removeView
(
mWebView
);
mWebView
.
setTag
(
null
);
mWebView
.
clearHistory
();
mWebView
.
destroy
();
mWebView
=
null
;
}
}
@OnClick
(
R2
.
id
.
tv_hint
)
void
clickHint
()
{
mTvHint
.
setVisibility
(
View
.
INVISIBLE
);
mWebView
.
setVisibility
(
View
.
VISIBLE
);
mWebView
.
reload
();
}
private
void
loadingOperation
(
int
newProgress
)
{
// 如果没有网络直接跳出方法
// if (!NetWorkUtils.isAvailableByPing()) {
if
(!
DeviceUtils
.
netIsConnected
(
this
))
{
return
;
}
// 如果进度条隐藏则让它显示
if
(
View
.
INVISIBLE
==
mProgressBar
.
getVisibility
())
{
mProgressBar
.
setVisibility
(
View
.
VISIBLE
);
}
// 大于80的进度的时候,放慢速度加载,否则交给自己加载
if
(
newProgress
>=
80
)
{
// 拦截webView自己的处理方式
if
(
isContinue
)
{
return
;
}
mProgressBar
.
setCurProgress
(
100
,
3000
,
()
->
{
finishOperation
(
true
);
isContinue
=
false
;
});
isContinue
=
true
;
}
else
{
mProgressBar
.
setNormalProgress
(
newProgress
);
}
}
private
void
errorOperation
()
{
// 隐藏webview
mWebView
.
setVisibility
(
View
.
INVISIBLE
);
if
(
View
.
INVISIBLE
==
mProgressBar
.
getVisibility
())
{
mProgressBar
.
setVisibility
(
View
.
VISIBLE
);
}
//3.5s 加载 0->80 进度的加载 为了实现,特意调节长了事件
mProgressBar
.
setCurProgress
(
80
,
3500
,
()
->
{
//3.5s 加载 80->100 进度的加载
mProgressBar
.
setCurProgress
(
100
,
3500
,
()
->
finishOperation
(
false
));
});
}
private
void
finishOperation
(
boolean
flag
)
{
// 最后加载设置100进度
mProgressBar
.
setNormalProgress
(
100
);
// 显示网络异常布局
mTvHint
.
setVisibility
(
flag
?
View
.
INVISIBLE
:
View
.
VISIBLE
);
hideProgressWithAnim
(
mProgressBar
);
}
private
void
hideProgressWithAnim
(
final
View
progressBar
)
{
AnimationSet
animation
=
new
AnimationSet
(
this
,
null
);
AlphaAnimation
alpha
=
new
AlphaAnimation
(
1.0f
,
0.0f
);
alpha
.
setDuration
(
1000
);
animation
.
addAnimation
(
alpha
);
animation
.
setAnimationListener
(
new
Animation
.
AnimationListener
()
{
@Override
public
void
onAnimationStart
(
Animation
animation
)
{
}
@Override
public
void
onAnimationEnd
(
Animation
animation
)
{
progressBar
.
setVisibility
(
View
.
INVISIBLE
);
}
@Override
public
void
onAnimationRepeat
(
Animation
animation
)
{
}
});
progressBar
.
startAnimation
(
animation
);
}
@JavascriptInterface
public
void
adResults
(
String
title
,
String
content
)
{
// OnekeyShare.showWebShare(this, title, content);
}
// /**
// * @param type 1 (餐牌模式)餐厅详情 2品牌介绍3餐厅外卖
// * @param jsonStr 入参json字符串
// */
// @JavascriptInterface
// public void startFunction(int type, String jsonStr) {
//
// boolean flatbedloginStatus = (int) SPUtils.get(this, SPConstant.FLATBED_LOGIN_STATUS, -1) != -1 ? true : false;
// if (flatbedloginStatus)
// return;
//
// if (TextUtils.isEmpty(jsonStr) || jsonStr.equals("null")) {
// showMessage("沒有傳入相關參數");
// return;
// }
// try {
// JSONObject jsonObj = new JSONObject(jsonStr);
// if (type == 1 || type == 3) {
// String restaurantId = jsonObj.optString("restaurantId");
// if (!TextUtils.isEmpty(restaurantId) || !restaurantId.equals("null")) {
// Intent intent = new Intent(this, RestaurantActivity.class);
// intent.putExtra("id", restaurantId);
// if (type == 1) {
// intent.putExtra("menuType", DefaultConfig.MENU_TYPE_DETAILS);
// } else {
// intent.putExtra("menuType", DefaultConfig.MENU_TYPE_TAKEAWAY);
// }
// startActivity(intent);
// }
// } else if (type == 2) {
// String brandId = jsonObj.optString("brandId");
// if (!TextUtils.isEmpty(brandId) || !brandId.equals("null")) {
// Intent intent = new Intent(this, JoinMemberCardActivity.class);
// intent.putExtra(DefaultConfig.BRAND_ID, Integer.valueOf(brandId));
// startActivity(intent);
// }
// }
// } catch (JSONException e) {
// e.printStackTrace();
// }
// }
public
static
void
startWebActivityForResult_url
(
Activity
context
,
String
url
,
int
rightType
,
int
reslutCode
)
{
Intent
intent
=
new
Intent
(
context
,
WebActivity
.
class
);
intent
.
putExtra
(
WebviewHelper
.
TYPE_KEY
,
URI
);
intent
.
putExtra
(
WebviewHelper
.
URL_KEY
,
url
);
intent
.
putExtra
(
WebviewHelper
.
RIGHT_IMG_TYPE
,
rightType
);
context
.
startActivityForResult
(
intent
,
reslutCode
);
}
public
static
void
startWebActivity_url
(
Context
context
,
String
url
,
int
rightType
)
{
Intent
intent
=
new
Intent
(
context
,
WebActivity
.
class
);
intent
.
putExtra
(
WebviewHelper
.
TYPE_KEY
,
URI
);
intent
.
putExtra
(
WebviewHelper
.
URL_KEY
,
url
);
intent
.
putExtra
(
WebviewHelper
.
RIGHT_IMG_TYPE
,
rightType
);
context
.
startActivity
(
intent
);
}
public
static
void
startWebActivity_content
(
Context
context
,
String
content
,
int
rightType
)
{
Intent
intent
=
new
Intent
(
context
,
WebActivity
.
class
);
intent
.
putExtra
(
WebviewHelper
.
TYPE_KEY
,
CONTENT
);
intent
.
putExtra
(
WebviewHelper
.
CONTENT_KEY
,
content
);
intent
.
putExtra
(
WebviewHelper
.
RIGHT_IMG_TYPE
,
rightType
);
context
.
startActivity
(
intent
);
}
public
static
void
startWebActivity_uri_content
(
Context
context
,
String
url
,
String
content
,
int
rightType
)
{
Intent
intent
=
new
Intent
(
context
,
WebActivity
.
class
);
intent
.
putExtra
(
WebviewHelper
.
TYPE_KEY
,
URI_CONTENT
);
intent
.
putExtra
(
WebviewHelper
.
URL_KEY
,
url
);
intent
.
putExtra
(
WebviewHelper
.
CONTENT_KEY
,
content
);
intent
.
putExtra
(
WebviewHelper
.
RIGHT_IMG_TYPE
,
rightType
);
context
.
startActivity
(
intent
);
}
public
static
void
startWebActivity_title_url
(
Context
context
,
String
title
,
String
url
,
int
rightType
)
{
Intent
intent
=
new
Intent
(
context
,
WebActivity
.
class
);
intent
.
putExtra
(
WebviewHelper
.
TYPE_KEY
,
TITLE_URI
);
intent
.
putExtra
(
WebviewHelper
.
TITLE_KEY
,
title
);
intent
.
putExtra
(
WebviewHelper
.
URL_KEY
,
url
);
intent
.
putExtra
(
WebviewHelper
.
RIGHT_IMG_TYPE
,
rightType
);
context
.
startActivity
(
intent
);
}
public
static
void
startWebActivity_title_content
(
Context
context
,
String
title
,
String
content
,
int
rightType
,
boolean
isNormalSizeToLargest
)
{
Intent
intent
=
new
Intent
(
context
,
WebActivity
.
class
);
intent
.
putExtra
(
WebviewHelper
.
TYPE_KEY
,
TITLE_CONTENT
);
intent
.
putExtra
(
WebviewHelper
.
TITLE_KEY
,
title
);
intent
.
putExtra
(
WebviewHelper
.
CONTENT_KEY
,
content
);
intent
.
putExtra
(
WebviewHelper
.
RIGHT_IMG_TYPE
,
rightType
);
intent
.
putExtra
(
"isNormalSizeToLargest"
,
isNormalSizeToLargest
);
context
.
startActivity
(
intent
);
}
public
static
void
startWebActivity_title_url_content
(
Context
context
,
String
title
,
String
url
,
String
content
,
int
rightType
)
{
Intent
intent
=
new
Intent
(
context
,
WebActivity
.
class
);
intent
.
putExtra
(
WebviewHelper
.
TYPE_KEY
,
TITLE_URI_CONTENT
);
intent
.
putExtra
(
WebviewHelper
.
TITLE_KEY
,
title
);
intent
.
putExtra
(
WebviewHelper
.
URL_KEY
,
url
);
intent
.
putExtra
(
WebviewHelper
.
CONTENT_KEY
,
content
);
intent
.
putExtra
(
WebviewHelper
.
RIGHT_IMG_TYPE
,
rightType
);
context
.
startActivity
(
intent
);
}
// public static void startWebActivity_Advertisement(Context context, AdvertisementInfo info, int rightType) {
// Intent intent = new Intent(context, WebActivity.class);
// intent.putExtra(WebviewHelper.TYPE_KEY, ADVERTISEMENT);
// intent.putExtra(RIGHT_IMG_TYPE, rightType);
// intent.putExtra("AdvertisementInfo", info);
// context.startActivity(intent);
// }
//
// public static void startWebActivity_NewsInfoChild(Context context, NewsInfoChild newsInfoChild, int rightType) {
// Intent intent = new Intent(context, WebActivity.class);
// intent.putExtra(WebviewHelper.TYPE_KEY, NEWSINFOCHILD);
// intent.putExtra(RIGHT_IMG_TYPE, rightType);
// intent.putExtra("NewsInfoChild", newsInfoChild);
// context.startActivity(intent);
// }
}
}
component-webview/src/main/java/com/gingersoft/gsa/cloud/webview/
app
/WebViewProgressBar.java
→
component-webview/src/main/java/com/gingersoft/gsa/cloud/webview/
mvp/ui/view
/WebViewProgressBar.java
View file @
d2a34349
package
com
.
gingersoft
.
gsa
.
cloud
.
webview
.
app
;
package
com
.
gingersoft
.
gsa
.
cloud
.
webview
.
mvp
.
ui
.
view
;
import
android.animation.Animator
;
import
android.animation.Animator
;
import
android.animation.ValueAnimator
;
import
android.animation.ValueAnimator
;
...
...
config.gradle
View file @
d2a34349
...
@@ -14,7 +14,7 @@ ext {
...
@@ -14,7 +14,7 @@ ext {
version
=
[
version
=
[
androidSupportSdkVersion:
"29+"
,
androidSupportSdkVersion:
"29+"
,
retrofitSdkVersion
:
'2.3.0'
,
retrofitSdkVersion
:
'2.3.0'
,
dagger2SdkVersion
:
"2.
19
"
,
dagger2SdkVersion
:
"2.
26
"
,
glideSdkVersion
:
"4.9.0"
,
glideSdkVersion
:
"4.9.0"
,
butterknifeSdkVersion
:
"10.2.1"
,
butterknifeSdkVersion
:
"10.2.1"
,
rxlifecycleSdkVersion
:
"1.0"
,
rxlifecycleSdkVersion
:
"1.0"
,
...
...
library-base/src/main/java/com/jess/arms/base/BaseDialogFragment.java
0 → 100644
View file @
d2a34349
/*
* Copyright 2017 JessYan
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com
.
jess
.
arms
.
base
;
import
android.app.Activity
;
import
android.app.Dialog
;
import
android.content.Context
;
import
android.graphics.Color
;
import
android.os.Bundle
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.animation.Animation
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
androidx.appcompat.app.AppCompatDialogFragment
;
import
androidx.core.content.ContextCompat
;
import
androidx.fragment.app.Fragment
;
import
androidx.fragment.app.FragmentTransaction
;
import
com.gyf.immersionbar.ImmersionBar
;
import
com.jess.arms.base.delegate.IFragment
;
import
com.jess.arms.integration.cache.Cache
;
import
com.jess.arms.integration.cache.CacheType
;
import
com.jess.arms.integration.lifecycle.FragmentLifecycleable
;
import
com.jess.arms.mvp.IPresenter
;
import
com.jess.arms.utils.ArmsUtils
;
import
com.trello.rxlifecycle2.android.FragmentEvent
;
import
javax.inject.Inject
;
import
io.reactivex.subjects.BehaviorSubject
;
import
io.reactivex.subjects.Subject
;
import
me.yokeyword.fragmentation.ExtraTransaction
;
import
me.yokeyword.fragmentation.ISupportFragment
;
import
me.yokeyword.fragmentation.SupportFragmentDelegate
;
import
me.yokeyword.fragmentation.SupportHelper
;
import
me.yokeyword.fragmentation.anim.FragmentAnimator
;
/**
* ================================================
* 因为 Java 只能单继承,所以如果要用到需要继承特定 @{@link Fragment} 的三方库,那你就需要自己自定义 @{@link Fragment}
* 继承于这个特定的 @{@link Fragment},然后再按照 {@link BaseDialogFragment} 的格式,将代码复制过去,记住一定要实现{@link IFragment}
* <p>
* Created by JessYan on 22/03/2016
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* ================================================
*/
public
abstract
class
BaseDialogFragment
<
P
extends
IPresenter
>
extends
AppCompatDialogFragment
implements
IFragment
,
ISupportFragment
,
FragmentLifecycleable
{
protected
final
String
TAG
=
this
.
getClass
().
getSimpleName
();
private
final
BehaviorSubject
<
FragmentEvent
>
mLifecycleSubject
=
BehaviorSubject
.
create
();
private
Cache
<
String
,
Object
>
mCache
;
protected
Context
mContext
;
@Inject
@Nullable
protected
P
mPresenter
;
//如果当前页面逻辑简单, Presenter 可以为 null
private
int
mBindId
=
-
1
;
final
SupportFragmentDelegate
mDelegate
=
new
SupportFragmentDelegate
(
this
);
protected
BaseFragmentActivity
_mActivity
;
@NonNull
@Override
public
synchronized
Cache
<
String
,
Object
>
provideCache
()
{
if
(
mCache
==
null
)
{
mCache
=
ArmsUtils
.
obtainAppComponentFromContext
(
mContext
).
cacheFactory
().
build
(
CacheType
.
FRAGMENT_CACHE
);
}
return
mCache
;
}
public
int
getColor
(
int
colorId
)
{
return
ContextCompat
.
getColor
(
requireContext
(),
colorId
);
}
@NonNull
@Override
public
final
Subject
<
FragmentEvent
>
provideLifecycleSubject
()
{
return
mLifecycleSubject
;
}
@Override
public
SupportFragmentDelegate
getSupportDelegate
()
{
return
mDelegate
;
}
/**
* Perform some extra transactions.
* 额外的事务:自定义Tag,添加SharedElement动画,操作非回退栈Fragment
*/
@Override
public
ExtraTransaction
extraTransaction
()
{
return
mDelegate
.
extraTransaction
();
}
@Override
public
void
onAttach
(
@NonNull
Context
context
)
{
super
.
onAttach
(
context
);
Activity
activity
=
(
Activity
)
context
;
mDelegate
.
onAttach
(
activity
);
_mActivity
=
(
BaseFragmentActivity
)
mDelegate
.
getActivity
();
mContext
=
mDelegate
.
getActivity
();
}
@Override
public
void
onCreate
(
@Nullable
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
mDelegate
.
onCreate
(
savedInstanceState
);
}
@Override
public
Animation
onCreateAnimation
(
int
transit
,
boolean
enter
,
int
nextAnim
)
{
return
mDelegate
.
onCreateAnimation
(
transit
,
enter
,
nextAnim
);
}
@Override
public
void
onActivityCreated
(
@Nullable
Bundle
savedInstanceState
)
{
super
.
onActivityCreated
(
savedInstanceState
);
mDelegate
.
onActivityCreated
(
savedInstanceState
);
}
private
View
view
;
@Nullable
@Override
public
View
onCreateView
(
@NonNull
LayoutInflater
inflater
,
@Nullable
ViewGroup
container
,
@Nullable
Bundle
savedInstanceState
)
{
if
(
view
!=
null
)
{
ViewGroup
viewGroup
=
(
ViewGroup
)
view
.
getRootView
();
if
(
viewGroup
!=
null
)
{
viewGroup
.
removeView
(
view
);
}
return
view
;
}
view
=
initView
(
inflater
,
container
,
savedInstanceState
);
return
view
;
}
@Nullable
@Override
public
View
getView
()
{
return
view
;
}
@Override
public
void
configImmersionBar
(
ImmersionBar
immersionBar
)
{
// immersionBar.statusBarColor("#398BED") //状态栏颜色,不写默认透明色
// .statusBarDarkFont(true) //原理:如果当前设备支持状态栏字体变色,会设置状态栏字体为黑色,如果当前设备不支持
// .fitsSystemWindows(true)
//// .fullScreen(true)
// .init();
}
/**
* 是否使用eventBus,默认为使用(true),
*
* @return
*/
@Override
public
boolean
useEventBus
()
{
return
true
;
}
@Override
public
void
onSaveInstanceState
(
Bundle
outState
)
{
super
.
onSaveInstanceState
(
outState
);
mDelegate
.
onSaveInstanceState
(
outState
);
}
@Override
public
void
onResume
()
{
super
.
onResume
();
mDelegate
.
onResume
();
}
@Override
public
void
onPause
()
{
super
.
onPause
();
mDelegate
.
onPause
();
}
@Override
public
void
onDestroyView
()
{
mDelegate
.
onDestroyView
();
super
.
onDestroyView
();
}
@Override
public
void
onDestroy
()
{
mDelegate
.
onDestroy
();
super
.
onDestroy
();
if
(
mPresenter
!=
null
)
mPresenter
.
onDestroy
();
//释放资源
this
.
mPresenter
=
null
;
}
@Override
public
void
onHiddenChanged
(
boolean
hidden
)
{
super
.
onHiddenChanged
(
hidden
);
mDelegate
.
onHiddenChanged
(
hidden
);
}
@Override
public
void
setUserVisibleHint
(
boolean
isVisibleToUser
)
{
super
.
setUserVisibleHint
(
isVisibleToUser
);
mDelegate
.
setUserVisibleHint
(
isVisibleToUser
);
}
/**
* Causes the Runnable r to be added to the action queue.
* <p>
* The runnable will be run after all the previous action has been run.
* <p>
* 前面的事务全部执行后 执行该Action
*
* @deprecated Use {@link #post(Runnable)} instead.
*/
@Deprecated
@Override
public
void
enqueueAction
(
Runnable
runnable
)
{
mDelegate
.
enqueueAction
(
runnable
);
}
/**
* Causes the Runnable r to be added to the action queue.
* <p>
* The runnable will be run after all the previous action has been run.
* <p>
* 前面的事务全部执行后 执行该Action
*/
@Override
public
void
post
(
Runnable
runnable
)
{
mDelegate
.
post
(
runnable
);
}
/**
* Called when the enter-animation end.
* 入栈动画 结束时,回调
*/
@Override
public
void
onEnterAnimationEnd
(
Bundle
savedInstanceState
)
{
mDelegate
.
onEnterAnimationEnd
(
savedInstanceState
);
}
/**
* Lazy initial,Called when fragment is first called.
* <p>
* 同级下的 懒加载 + ViewPager下的懒加载 的结合回调方法
*/
@Override
public
void
onLazyInitView
(
@Nullable
Bundle
savedInstanceState
)
{
mDelegate
.
onLazyInitView
(
savedInstanceState
);
}
/**
* Called when the fragment is visible.
* 当Fragment对用户可见时回调
* <p>
* Is the combination of [onHiddenChanged() + onResume()/onPause() + setUserVisibleHint()]
*/
@Override
public
void
onSupportVisible
()
{
mDelegate
.
onSupportVisible
();
}
/**
* Called when the fragment is invivible.
* <p>
* Is the combination of [onHiddenChanged() + onResume()/onPause() + setUserVisibleHint()]
*/
@Override
public
void
onSupportInvisible
()
{
mDelegate
.
onSupportInvisible
();
}
/**
* Return true if the fragment has been supportVisible.
*/
@Override
final
public
boolean
isSupportVisible
()
{
return
mDelegate
.
isSupportVisible
();
}
/**
* Set fragment animation with a higher priority than the ISupportActivity
* 设定当前Fragmemt动画,优先级比在SupportActivity里高
*/
@Override
public
FragmentAnimator
onCreateFragmentAnimator
()
{
return
mDelegate
.
onCreateFragmentAnimator
();
}
/**
* 获取设置的全局动画 copy
*
* @return FragmentAnimator
*/
@Override
public
FragmentAnimator
getFragmentAnimator
()
{
return
mDelegate
.
getFragmentAnimator
();
}
/**
* 设置Fragment内的全局动画
*/
@Override
public
void
setFragmentAnimator
(
FragmentAnimator
fragmentAnimator
)
{
mDelegate
.
setFragmentAnimator
(
fragmentAnimator
);
}
/**
* 按返回键触发,前提是SupportActivity的onBackPressed()方法能被调用
*
* @return false则继续向上传递, true则消费掉该事件
*/
@Override
public
boolean
onBackPressedSupport
()
{
return
mDelegate
.
onBackPressedSupport
();
}
/**
* 类似 {@link Activity#setResult(int, Intent)}
* <p>
* Similar to {@link Activity#setResult(int, Intent)}
*
* @see #startForResult(ISupportFragment, int)
*/
@Override
public
void
setFragmentResult
(
int
resultCode
,
Bundle
bundle
)
{
mDelegate
.
setFragmentResult
(
resultCode
,
bundle
);
}
/**
* 类似 {@link Activity#onActivityResult(int, int, Intent)}
* <p>
* Similar to {@link Activity#onActivityResult(int, int, Intent)}
*
* @see #startForResult(ISupportFragment, int)
*/
@Override
public
void
onFragmentResult
(
int
requestCode
,
int
resultCode
,
Bundle
data
)
{
mDelegate
.
onFragmentResult
(
requestCode
,
resultCode
,
data
);
}
/**
* 在start(TargetFragment,LaunchMode)时,启动模式为SingleTask/SingleTop, 回调TargetFragment的该方法
* 类似 {@link Activity#onNewIntent(Intent)}
* <p>
* Similar to {@link Activity#onNewIntent(Intent)}
*
* @param args putNewBundle(Bundle newBundle)
* @see #start(ISupportFragment, int)
*/
@Override
public
void
onNewBundle
(
Bundle
args
)
{
mDelegate
.
onNewBundle
(
args
);
}
/**
* 添加NewBundle,用于启动模式为SingleTask/SingleTop时
*
* @see #start(ISupportFragment, int)
*/
@Override
public
void
putNewBundle
(
Bundle
newBundle
)
{
mDelegate
.
putNewBundle
(
newBundle
);
}
/****************************************以下为可选方法(Optional methods)******************************************************/
// 自定制Support时,可移除不必要的方法
/**
* 隐藏软键盘
*/
protected
void
hideSoftInput
()
{
mDelegate
.
hideSoftInput
();
}
/**
* 显示软键盘,调用该方法后,会在onPause时自动隐藏软键盘
*/
protected
void
showSoftInput
(
final
View
view
)
{
mDelegate
.
showSoftInput
(
view
);
}
/**
* 加载根Fragment, 即Activity内的第一个Fragment 或 Fragment内的第一个子Fragment
*
* @param containerId 容器id
* @param toFragment 目标Fragment
*/
public
void
loadRootFragment
(
int
containerId
,
ISupportFragment
toFragment
)
{
mDelegate
.
loadRootFragment
(
containerId
,
toFragment
);
}
public
void
loadRootFragment
(
int
containerId
,
ISupportFragment
toFragment
,
boolean
addToBackStack
,
boolean
allowAnim
)
{
mDelegate
.
loadRootFragment
(
containerId
,
toFragment
,
addToBackStack
,
allowAnim
);
}
public
void
start
(
ISupportFragment
toFragment
)
{
mDelegate
.
start
(
toFragment
);
}
/**
* @param launchMode Similar to Activity's LaunchMode.
*/
public
void
start
(
final
ISupportFragment
toFragment
,
@LaunchMode
int
launchMode
)
{
mDelegate
.
start
(
toFragment
,
launchMode
);
}
/**
* Launch an fragment for which you would like a result when it poped.
*/
public
void
startForResult
(
ISupportFragment
toFragment
,
int
requestCode
)
{
mDelegate
.
startForResult
(
toFragment
,
requestCode
);
}
/**
* Start the target Fragment and pop itself
*/
public
void
startWithPop
(
ISupportFragment
toFragment
)
{
mDelegate
.
startWithPop
(
toFragment
);
}
/**
* @see #popTo(Class, boolean)
* +
* @see #start(ISupportFragment)
*/
public
void
startWithPopTo
(
ISupportFragment
toFragment
,
Class
<?>
targetFragmentClass
,
boolean
includeTargetFragment
)
{
mDelegate
.
startWithPopTo
(
toFragment
,
targetFragmentClass
,
includeTargetFragment
);
}
public
void
replaceFragment
(
ISupportFragment
toFragment
,
boolean
addToBackStack
)
{
mDelegate
.
replaceFragment
(
toFragment
,
addToBackStack
);
}
public
void
pop
()
{
mDelegate
.
pop
();
}
/**
* Pop the last fragment transition from the manager's fragment
* back stack.
* <p>
* 出栈到目标fragment
*
* @param targetFragmentClass 目标fragment
* @param includeTargetFragment 是否包含该fragment
*/
public
void
popTo
(
Class
<?>
targetFragmentClass
,
boolean
includeTargetFragment
)
{
mDelegate
.
popTo
(
targetFragmentClass
,
includeTargetFragment
);
}
/**
* 获取栈内的fragment对象
*/
public
<
T
extends
ISupportFragment
>
T
findChildFragment
(
Class
<
T
>
fragmentClass
)
{
return
SupportHelper
.
findFragment
(
getChildFragmentManager
(),
fragmentClass
);
}
}
library-base/src/main/java/com/jess/arms/base/BaseFragment.java
View file @
d2a34349
...
@@ -15,14 +15,17 @@
...
@@ -15,14 +15,17 @@
*/
*/
package
com
.
jess
.
arms
.
base
;
package
com
.
jess
.
arms
.
base
;
import
android.annotation.SuppressLint
;
import
android.app.Activity
;
import
android.app.Activity
;
import
android.content.Context
;
import
android.content.Context
;
import
android.graphics.Color
;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.view.LayoutInflater
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.ViewGroup
;
import
android.view.animation.Animation
;
import
android.view.animation.Animation
;
import
com.gyf.immersionbar.ImmersionBar
;
import
com.jess.arms.base.delegate.IFragment
;
import
com.jess.arms.base.delegate.IFragment
;
import
com.jess.arms.integration.cache.Cache
;
import
com.jess.arms.integration.cache.Cache
;
import
com.jess.arms.integration.cache.CacheType
;
import
com.jess.arms.integration.cache.CacheType
;
...
@@ -74,8 +77,6 @@ public abstract class BaseFragment<P extends IPresenter> extends Fragment implem
...
@@ -74,8 +77,6 @@ public abstract class BaseFragment<P extends IPresenter> extends Fragment implem
final
SupportFragmentDelegate
mDelegate
=
new
SupportFragmentDelegate
(
this
);
final
SupportFragmentDelegate
mDelegate
=
new
SupportFragmentDelegate
(
this
);
protected
BaseFragmentActivity
_mActivity
;
protected
BaseFragmentActivity
_mActivity
;
private
Observable
mObservable
;
@NonNull
@NonNull
@Override
@Override
public
synchronized
Cache
<
String
,
Object
>
provideCache
()
{
public
synchronized
Cache
<
String
,
Object
>
provideCache
()
{
...
@@ -85,7 +86,7 @@ public abstract class BaseFragment<P extends IPresenter> extends Fragment implem
...
@@ -85,7 +86,7 @@ public abstract class BaseFragment<P extends IPresenter> extends Fragment implem
return
mCache
;
return
mCache
;
}
}
public
int
getColor
(
int
colorId
){
public
int
getColor
(
int
colorId
)
{
return
ContextCompat
.
getColor
(
requireContext
(),
colorId
);
return
ContextCompat
.
getColor
(
requireContext
(),
colorId
);
}
}
...
@@ -109,14 +110,6 @@ public abstract class BaseFragment<P extends IPresenter> extends Fragment implem
...
@@ -109,14 +110,6 @@ public abstract class BaseFragment<P extends IPresenter> extends Fragment implem
return
mDelegate
.
extraTransaction
();
return
mDelegate
.
extraTransaction
();
}
}
// @Override
// public void onAttach(Activity activity) {
// super.onAttach(activity);
// mDelegate.onAttach(activity);
// _mActivity = (BaseFragmentActivity) mDelegate.getActivity();
// mContext = mDelegate.getActivity();
// }
@Override
@Override
public
void
onAttach
(
@NonNull
Context
context
)
{
public
void
onAttach
(
@NonNull
Context
context
)
{
super
.
onAttach
(
context
);
super
.
onAttach
(
context
);
...
@@ -143,12 +136,6 @@ public abstract class BaseFragment<P extends IPresenter> extends Fragment implem
...
@@ -143,12 +136,6 @@ public abstract class BaseFragment<P extends IPresenter> extends Fragment implem
mDelegate
.
onActivityCreated
(
savedInstanceState
);
mDelegate
.
onActivityCreated
(
savedInstanceState
);
}
}
// @Override
// protected View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container) {
// mCacheRootView = initView(inflater, container, null);
// return mCacheRootView;
// }
private
View
view
;
private
View
view
;
@Nullable
@Nullable
...
@@ -165,12 +152,25 @@ public abstract class BaseFragment<P extends IPresenter> extends Fragment implem
...
@@ -165,12 +152,25 @@ public abstract class BaseFragment<P extends IPresenter> extends Fragment implem
return
view
;
return
view
;
}
}
@Nullable
@Nullable
@Override
@Override
public
View
getView
()
{
public
View
getView
()
{
return
view
;
return
view
;
}
}
@SuppressLint
(
"ResourceType"
)
@Override
public
void
configImmersionBar
(
ImmersionBar
immersionBar
)
{
immersionBar
.
statusBarColor
(
"#398BED"
)
//状态栏颜色,不写默认透明色
.
statusBarDarkFont
(
true
)
//原理:如果当前设备支持状态栏字体变色,会设置状态栏字体为黑色,如果当前设备不支持
.
fitsSystemWindows
(
true
)
// .fullScreen(true)
.
init
();
}
/**
/**
* 是否使用eventBus,默认为使用(true),
* 是否使用eventBus,默认为使用(true),
*
*
...
...
library-base/src/main/java/com/jess/arms/base/delegate/ActivityDelegateImpl.java
View file @
d2a34349
...
@@ -53,15 +53,8 @@ public class ActivityDelegateImpl implements ActivityDelegate {
...
@@ -53,15 +53,8 @@ public class ActivityDelegateImpl implements ActivityDelegate {
//注册到事件主线
//注册到事件主线
EventBus
.
getDefault
().
register
(
mActivity
);
EventBus
.
getDefault
().
register
(
mActivity
);
}
}
// if (iActivity.useLightMode()) {
// //设置状态栏黑色字体
iActivity
.
configImmersionBar
(
ImmersionBar
.
with
(
mActivity
));
// QMUIStatusBarHelper.setStatusBarLightMode(mActivity);
// } else {
// //默认状态栏白色字体
// QMUIStatusBarHelper.setStatusBarDarkMode(mActivity);
// }
// //设置沉浸式状态栏颜色
// QMUIStatusBarHelper.translucent(mActivity, iActivity.getStatusBarColor());
//这里提供 AppComponent 对象给 BaseActivity 的子类, 用于 Dagger2 的依赖注入
//这里提供 AppComponent 对象给 BaseActivity 的子类, 用于 Dagger2 的依赖注入
iActivity
.
setupActivityComponent
(
ArmsUtils
.
obtainAppComponentFromContext
(
mActivity
));
iActivity
.
setupActivityComponent
(
ArmsUtils
.
obtainAppComponentFromContext
(
mActivity
));
}
}
...
...
library-base/src/main/java/com/jess/arms/base/delegate/FragmentDelegateImpl.java
View file @
d2a34349
...
@@ -19,14 +19,17 @@ import android.content.Context;
...
@@ -19,14 +19,17 @@ import android.content.Context;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.view.View
;
import
android.view.View
;
import
com.gyf.immersionbar.ImmersionBar
;
import
com.jess.arms.utils.ArmsUtils
;
import
com.jess.arms.utils.ArmsUtils
;
import
org.simple.eventbus.EventBus
;
import
org.simple.eventbus.EventBus
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
androidx.annotation.Nullable
;
import
androidx.fragment.app.DialogFragment
;
import
androidx.fragment.app.Fragment
;
import
androidx.fragment.app.Fragment
;
import
androidx.fragment.app.FragmentManager
;
import
androidx.fragment.app.FragmentManager
;
import
butterknife.ButterKnife
;
import
butterknife.ButterKnife
;
import
butterknife.Unbinder
;
import
butterknife.Unbinder
;
import
timber.log.Timber
;
import
timber.log.Timber
;
...
@@ -68,15 +71,24 @@ public class FragmentDelegateImpl implements FragmentDelegate {
...
@@ -68,15 +71,24 @@ public class FragmentDelegateImpl implements FragmentDelegate {
@Override
@Override
public
void
onCreateView
(
@Nullable
View
view
,
@Nullable
Bundle
savedInstanceState
)
{
public
void
onCreateView
(
@Nullable
View
view
,
@Nullable
Bundle
savedInstanceState
)
{
//绑定到butterknife
//绑定到butterknife
if
(
view
!=
null
)
if
(
view
!=
null
)
{
mUnbinder
=
ButterKnife
.
bind
(
mFragment
,
view
);
mUnbinder
=
ButterKnife
.
bind
(
mFragment
,
view
);
}
// if (mFragment instanceof DialogFragment) {
// } else {
// iFragment.configImmersionBar(ImmersionBar.with(mFragment));
// }
}
}
@Override
@Override
public
void
onActivityCreate
(
@Nullable
Bundle
savedInstanceState
)
{
public
void
onActivityCreate
(
@Nullable
Bundle
savedInstanceState
)
{
iFragment
.
initData
(
savedInstanceState
);
iFragment
.
initData
(
savedInstanceState
);
// if (mFragment instanceof DialogFragment) {
// iFragment.configImmersionBar(ImmersionBar.with((DialogFragment) mFragment));
// }
}
}
@Override
@Override
public
void
onStart
()
{
public
void
onStart
()
{
...
...
library-base/src/main/java/com/jess/arms/base/delegate/IFragment.java
View file @
d2a34349
...
@@ -22,6 +22,7 @@ import android.view.LayoutInflater;
...
@@ -22,6 +22,7 @@ import android.view.LayoutInflater;
import
android.view.View
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.ViewGroup
;
import
com.gyf.immersionbar.ImmersionBar
;
import
com.jess.arms.base.BaseFragment
;
import
com.jess.arms.base.BaseFragment
;
import
com.jess.arms.di.component.AppComponent
;
import
com.jess.arms.di.component.AppComponent
;
import
com.jess.arms.integration.cache.Cache
;
import
com.jess.arms.integration.cache.Cache
;
...
@@ -62,6 +63,12 @@ public interface IFragment {
...
@@ -62,6 +63,12 @@ public interface IFragment {
*/
*/
void
setupFragmentComponent
(
@NonNull
AppComponent
appComponent
);
void
setupFragmentComponent
(
@NonNull
AppComponent
appComponent
);
/**
* 重写此方法可配置当前页面的沉浸式主题
*/
void
configImmersionBar
(
ImmersionBar
immersionBar
);
/**
/**
* 是否使用 {@link EventBus}
* 是否使用 {@link EventBus}
*
*
...
...
library-common/src/main/debug/AndroidManifest.xml
0 → 100644
View file @
d2a34349
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
package=
"com.gingersoft.gsa.cloud.common"
>
<uses-permission
android:name=
"android.permission.BLUETOOTH"
/>
<uses-permission
android:name=
"android.permission.VIBRATE"
/>
<uses-permission
android:name=
"android.permission.CAMERA"
/>
<uses-permission
android:name=
"android.permission.RECEIVE_USER_PRESENT"
/>
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<uses-permission
android:name=
"android.permission.WAKE_LOCK"
/>
<uses-permission
android:name=
"android.permission.READ_PHONE_STATE"
/>
<uses-permission
android:name=
"android.permission.WRITE_EXTERNAL_STORAGE"
/>
<uses-permission
android:name=
"android.permission.READ_EXTERNAL_STORAGE"
/>
<uses-permission
android:name=
"com.asus.msa.SupplementaryDID.ACCESS"
/>
<application
android:name=
"com.gingersoft.gsa.cloud.app.GsaCloudApplication"
android:allowBackup=
"true"
android:icon=
"@mipmap/ic_launcher"
android:supportsRtl=
"true"
android:networkSecurityConfig=
"@xml/network_android"
android:theme=
"@style/AppTheme"
>
<meta-data
android:name=
"com.gingersoft.gsa.cloud.common.config.globalconfig.GlobalConfiguration"
android:value=
"ConfigModule"
/>
<meta-data
android:name=
"design_width_in_dp"
android:value=
"360"
/>
<meta-data
android:name=
"design_height_in_dp"
android:value=
"640"
/>
<service
android:name=
"com.gingersoft.gsa.cloud.common.service.ICommandService"
android:enabled=
"true"
/>
</application>
</manifest>
library-common/src/main/debug/res/values/styles.xml
0 → 100644
View file @
d2a34349
<resources>
<!-- <!– Base application theme. –>-->
<!-- <style name="table_AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">-->
<!-- <!– Customize your theme here. –>-->
<!-- <item name="colorPrimary">@color/table_colorPrimary</item>-->
<!-- <item name="colorPrimaryDark">@color/table_colorPrimaryDark</item>-->
<!-- <item name="colorAccent">@color/table_colorAccent</item>-->
<!-- </style>-->
</resources>
library-common/src/main/java/com/gingersoft/gsa/cloud/common/bean/LayoutInfoBean.java
0 → 100644
View file @
d2a34349
package
com
.
gingersoft
.
gsa
.
cloud
.
common
.
bean
;
import
androidx.annotation.LayoutRes
;
import
androidx.annotation.StringRes
;
import
lombok.Data
;
/**
* @作者: bin
* @創建時間: 2021-04-06 16:48
* @更新時間: 2021-04-06 16:48
* @描述:
*/
@Data
public
class
LayoutInfoBean
{
@StringRes
private
int
pageTitle
;
@LayoutRes
private
int
layoutId
;
}
library-common/src/main/java/com/gingersoft/gsa/cloud/common/core/discount/AbstractDiscount.java
0 → 100644
View file @
d2a34349
package
com
.
gingersoft
.
gsa
.
cloud
.
common
.
core
.
discount
;
/**
* @作者: bin
* @創建時間: 2021-04-07 15:44
* @更新時間: 2021-04-07 15:44
* @描述:
*/
public
abstract
class
AbstractDiscount
{
}
library-common/src/main/java/com/gingersoft/gsa/cloud/common/core/discount/BillDiscount.java
0 → 100644
View file @
d2a34349
package
com
.
gingersoft
.
gsa
.
cloud
.
common
.
core
.
discount
;
/**
* @作者: bin
* @創建時間: 2021-04-07 15:45
* @更新時間: 2021-04-07 15:45
* @描述:
*/
public
class
BillDiscount
extends
AbstractDiscount
{
}
library-common/src/main/java/com/gingersoft/gsa/cloud/common/core/discount/MemberCoupon.java
0 → 100644
View file @
d2a34349
package
com
.
gingersoft
.
gsa
.
cloud
.
common
.
core
.
discount
;
import
com.gingersoft.gsa.cloud.database.bean.Discount
;
import
lombok.Data
;
/**
* @作者: bin
* @創建時間: 2021-04-07 15:45
* @更新時間: 2021-04-07 15:45
* @描述:
*/
@Data
public
class
MemberCoupon
extends
AbstractDiscount
{
private
long
id
;
private
String
couponTypeName
;
private
String
beginDate
;
private
String
endDate
;
private
int
periodDays
;
private
int
upperLimitTimes
;
private
double
billMinAmount
;
private
double
amount
;
private
int
discount
;
private
String
remark
;
private
String
couponNo
;
private
int
useTimes
;
public
Discount
castDiscount
()
{
Discount
discount
=
new
Discount
();
discount
.
setId
(
getId
());
discount
.
setDiscountValue
(
getDiscount
());
discount
.
setMinBillAmount
(
getBillMinAmount
());
discount
.
setRemark
(
getRemark
());
discount
.
setBeginTime
(
getBeginDate
());
discount
.
setEndTime
(
getEndDate
());
return
discount
;
}
}
\ No newline at end of file
library-common/src/main/java/com/gingersoft/gsa/cloud/common/loadsir/LoadsirUtil.java
0 → 100644
View file @
d2a34349
package
com
.
gingersoft
.
gsa
.
cloud
.
common
.
loadsir
;
import
android.app.Activity
;
import
android.content.Context
;
import
android.net.ParseException
;
import
android.view.View
;
import
com.gingersoft.gsa.cloud.app.GsaCloudApplication
;
import
com.gingersoft.gsa.cloud.common.R
;
import
com.gingersoft.gsa.cloud.common.constans.AppConstans
;
import
com.google.gson.JsonIOException
;
import
com.google.gson.JsonParseException
;
import
com.jess.arms.utils.ArmsUtils
;
import
com.kingja.loadsir.core.LoadService
;
import
com.kingja.loadsir.core.Transport
;
import
org.json.JSONException
;
import
java.net.SocketTimeoutException
;
import
java.net.UnknownHostException
;
import
retrofit2.HttpException
;
/**
* @作者: bin
* @創建時間: 2021-04-07 16:27
* @更新時間: 2021-04-07 16:27
* @描述: 反馈页工具类,可根据对应的网络状况显示详细信息
*/
public
class
LoadsirUtil
{
public
static
void
showCallbackByError
(
Throwable
t
,
LoadService
loadService
)
{
if
(
t
instanceof
UnknownHostException
)
{
loadService
.
showCallback
(
ErrorCallback
.
class
);
}
else
if
(
t
instanceof
SocketTimeoutException
)
{
loadService
.
showCallback
(
TimeoutCallback
.
class
);
}
else
if
(
t
instanceof
HttpException
)
{
HttpException
httpException
=
(
HttpException
)
t
;
String
msg
=
convertStatusCode
(
GsaCloudApplication
.
getAppContext
(),
httpException
);
Class
<
ErrorCallback
>
errorCallback
=
ErrorCallback
.
class
;
loadService
.
setCallBack
(
errorCallback
.
getClass
(),
new
OnTransport
(
msg
));
loadService
.
showCallback
(
errorCallback
.
getClass
());
}
else
if
(
t
instanceof
JsonParseException
||
t
instanceof
ParseException
||
t
instanceof
JSONException
||
t
instanceof
JsonIOException
)
{
String
msg
=
ArmsUtils
.
getString
(
GsaCloudApplication
.
getAppContext
(),
R
.
string
.
response_error_data_parsing_error
);
Class
<
ErrorCallback
>
errorCallback
=
ErrorCallback
.
class
;
loadService
.
setCallBack
(
errorCallback
.
getClass
(),
new
OnTransport
(
msg
));
loadService
.
showCallback
(
errorCallback
.
getClass
());
}
}
private
final
static
String
convertStatusCode
(
Context
context
,
HttpException
httpException
)
{
String
msg
=
null
;
if
(
httpException
.
code
()
==
500
)
{
msg
=
ArmsUtils
.
getString
(
context
,
R
.
string
.
response_error_server_error
);
}
else
if
(
httpException
.
code
()
==
404
)
{
msg
=
ArmsUtils
.
getString
(
context
,
R
.
string
.
response_error_address_does_not_exist
);
}
else
if
(
httpException
.
code
()
==
403
)
{
msg
=
ArmsUtils
.
getString
(
context
,
R
.
string
.
response_error_request_rejected_by_server
);
}
else
if
(
httpException
.
code
()
==
307
)
{
msg
=
ArmsUtils
.
getString
(
context
,
R
.
string
.
response_error_request_was_redirected_to_another_page
);
}
else
if
(
httpException
.
code
()
==
401
)
{
msg
=
ArmsUtils
.
getString
(
context
,
R
.
string
.
response_error_request_logged
);
}
else
{
msg
=
httpException
.
message
();
}
return
msg
;
}
private
static
final
class
OnTransport
implements
Transport
{
private
Class
<?>
callbackClass
;
private
String
msg
;
public
OnTransport
(
Class
<?>
callbackClass
,
String
msg
)
{
this
.
callbackClass
=
callbackClass
;
this
.
msg
=
msg
;
}
public
OnTransport
(
String
msg
)
{
this
.
msg
=
msg
;
}
@Override
public
void
order
(
Context
context
,
View
rootView
)
{
View
tv_loadsir_error_img
=
rootView
.
findViewById
(
R
.
id
.
tv_loadsir_error_img
);
tv_loadsir_error_img
.
setTag
(
msg
);
}
}
}
library-common/src/main/java/com/gingersoft/gsa/cloud/common/loadsir/LoadsirUtils.java
deleted
100644 → 0
View file @
84221077
package
com
.
gingersoft
.
gsa
.
cloud
.
common
.
loadsir
;
import
com.kingja.loadsir.callback.Callback
;
import
com.kingja.loadsir.core.LoadService
;
/**
* @author : bin
* @create date: 2020-10-27
* @update date: 2020-10-27
* @description:
*/
public
class
LoadsirUtils
{
public
static
void
loadState
(
LoadService
loadService
,
Callback
callback
){
}
}
library-common/src/main/java/com/gingersoft/gsa/cloud/common/loadsir/TimeoutCallback.java
View file @
d2a34349
...
@@ -9,7 +9,7 @@ import com.kingja.loadsir.callback.Callback;
...
@@ -9,7 +9,7 @@ import com.kingja.loadsir.callback.Callback;
* @update date: 2020-10-27
* @update date: 2020-10-27
* @description:
* @description:
*/
*/
public
class
TimeoutCallback
extends
Callback
{
public
class
TimeoutCallback
extends
Callback
{
@Override
@Override
protected
int
onCreateView
()
{
protected
int
onCreateView
()
{
...
...
library-common/src/main/java/com/gingersoft/gsa/cloud/common/rxjava/ErrorHandleSingleSubscriber.java
0 → 100644
View file @
d2a34349
package
com
.
gingersoft
.
gsa
.
cloud
.
common
.
rxjava
;
import
com.gingersoft.gsa.cloud.common.loadsir.LoadsirUtil
;
import
com.kingja.loadsir.core.LoadService
;
import
io.reactivex.SingleObserver
;
import
io.reactivex.annotations.NonNull
;
import
io.reactivex.disposables.Disposable
;
import
me.jessyan.rxerrorhandler.core.RxErrorHandler
;
import
me.jessyan.rxerrorhandler.handler.ErrorHandlerFactory
;
/**
* @作者: bin
* @創建時間: 2021-04-07 14:03
* @更新時間: 2021-04-07 14:03
* @描述:
*/
public
abstract
class
ErrorHandleSingleSubscriber
<
T
>
implements
SingleObserver
<
T
>
{
private
ErrorHandlerFactory
mHandlerFactory
;
private
LoadService
mLoadService
;
public
ErrorHandleSingleSubscriber
(
RxErrorHandler
rxErrorHandler
,
LoadService
loadService
)
{
this
.
mHandlerFactory
=
rxErrorHandler
.
getHandlerFactory
();
this
.
mLoadService
=
loadService
;
}
@Override
public
void
onSubscribe
(
@NonNull
Disposable
d
)
{
}
@Override
public
void
onSuccess
(
T
t
)
{
}
@Override
public
void
onError
(
@NonNull
Throwable
t
)
{
t
.
printStackTrace
();
//如果你某个地方不想使用全局错误处理,则重写 onError(Throwable) 并将 super.onError(e); 删掉
//如果你不仅想使用全局错误处理,还想加入自己的逻辑,则重写 onError(Throwable) 并在 super.onError(e); 后面加入自己的逻辑
mHandlerFactory
.
handleError
(
t
);
if
(
mLoadService
!=
null
)
{
//统一处理反馈页error显示信息
LoadsirUtil
.
showCallbackByError
(
t
,
mLoadService
);
}
}
}
library-order/src/main/java/com/gingersoft/gsa/cloud/order/bean/request/MealOrderPayRequest.java
View file @
d2a34349
...
@@ -72,12 +72,23 @@ public class MealOrderPayRequest implements Parcelable{
...
@@ -72,12 +72,23 @@ public class MealOrderPayRequest implements Parcelable{
private
double
tipsPrice
;
private
double
tipsPrice
;
/**積分支付 所消費的積分*/
/**積分支付 所消費的積分*/
private
Double
consumptionPoints
;
private
Double
consumptionPoints
;
/**
* 獲取積分
*/
private
Double
getIntegral
;
/**
* 積分倍數
*/
private
Double
integralMultiple
;
/**
* 扣減積分
*/
private
Double
deductionIntegral
;
/**報表是否計算人數*/
/**報表是否計算人數*/
private
Integer
whetherReportCount
;
private
Integer
whetherReportCount
;
/**支付名稱*/
/**支付名稱*/
private
String
payName
;
private
String
payName
;
public
OrderPay
()
{
public
OrderPay
()
{
}
}
...
@@ -92,6 +103,11 @@ public class MealOrderPayRequest implements Parcelable{
...
@@ -92,6 +103,11 @@ public class MealOrderPayRequest implements Parcelable{
dest
.
writeDouble
(
this
.
amount
);
dest
.
writeDouble
(
this
.
amount
);
dest
.
writeDouble
(
this
.
tipsPrice
);
dest
.
writeDouble
(
this
.
tipsPrice
);
dest
.
writeValue
(
this
.
consumptionPoints
);
dest
.
writeValue
(
this
.
consumptionPoints
);
dest
.
writeValue
(
this
.
getIntegral
);
dest
.
writeValue
(
this
.
integralMultiple
);
dest
.
writeValue
(
this
.
deductionIntegral
);
dest
.
writeValue
(
this
.
whetherReportCount
);
dest
.
writeString
(
this
.
payName
);
}
}
protected
OrderPay
(
Parcel
in
)
{
protected
OrderPay
(
Parcel
in
)
{
...
@@ -99,6 +115,11 @@ public class MealOrderPayRequest implements Parcelable{
...
@@ -99,6 +115,11 @@ public class MealOrderPayRequest implements Parcelable{
this
.
amount
=
in
.
readDouble
();
this
.
amount
=
in
.
readDouble
();
this
.
tipsPrice
=
in
.
readDouble
();
this
.
tipsPrice
=
in
.
readDouble
();
this
.
consumptionPoints
=
(
Double
)
in
.
readValue
(
Double
.
class
.
getClassLoader
());
this
.
consumptionPoints
=
(
Double
)
in
.
readValue
(
Double
.
class
.
getClassLoader
());
this
.
getIntegral
=
(
Double
)
in
.
readValue
(
Double
.
class
.
getClassLoader
());
this
.
integralMultiple
=
(
Double
)
in
.
readValue
(
Double
.
class
.
getClassLoader
());
this
.
deductionIntegral
=
(
Double
)
in
.
readValue
(
Double
.
class
.
getClassLoader
());
this
.
whetherReportCount
=
(
Integer
)
in
.
readValue
(
Integer
.
class
.
getClassLoader
());
this
.
payName
=
in
.
readString
();
}
}
public
static
final
Creator
<
OrderPay
>
CREATOR
=
new
Creator
<
OrderPay
>()
{
public
static
final
Creator
<
OrderPay
>
CREATOR
=
new
Creator
<
OrderPay
>()
{
...
...
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/bean/PayMethod.java
View file @
d2a34349
...
@@ -128,15 +128,15 @@ public class PayMethod implements Parcelable {
...
@@ -128,15 +128,15 @@ public class PayMethod implements Parcelable {
/**
/**
* '獲取積分
* '獲取積分
*/
*/
private
int
getIntegral
;
private
double
getIntegral
;
/**
/**
* 積分倍數
* 積分倍數
*/
*/
private
int
integralMultiple
;
private
double
integralMultiple
;
/**
/**
* 扣減積分
* 扣減積分
*/
*/
private
float
deductionIntegral
;
private
double
deductionIntegral
;
/**
/**
* 對接類型 (0:否 1:yedpay 2:八達通 3:積分 )
* 對接類型 (0:否 1:yedpay 2:八達通 3:積分 )
*/
*/
...
@@ -277,9 +277,9 @@ public class PayMethod implements Parcelable {
...
@@ -277,9 +277,9 @@ public class PayMethod implements Parcelable {
dest
.
writeInt
(
this
.
whetherSignatureLine
);
dest
.
writeInt
(
this
.
whetherSignatureLine
);
dest
.
writeInt
(
this
.
paySeq
);
dest
.
writeInt
(
this
.
paySeq
);
dest
.
writeInt
(
this
.
whetherOpenBox
);
dest
.
writeInt
(
this
.
whetherOpenBox
);
dest
.
write
Int
(
this
.
getIntegral
);
dest
.
write
Double
(
this
.
getIntegral
);
dest
.
write
Int
(
this
.
integralMultiple
);
dest
.
write
Double
(
this
.
integralMultiple
);
dest
.
write
Float
(
this
.
deductionIntegral
);
dest
.
write
Double
(
this
.
deductionIntegral
);
dest
.
writeInt
(
this
.
dockingType
);
dest
.
writeInt
(
this
.
dockingType
);
dest
.
writeString
(
this
.
billType
);
dest
.
writeString
(
this
.
billType
);
dest
.
writeInt
(
this
.
tablePrintingAmount
);
dest
.
writeInt
(
this
.
tablePrintingAmount
);
...
@@ -320,9 +320,9 @@ public class PayMethod implements Parcelable {
...
@@ -320,9 +320,9 @@ public class PayMethod implements Parcelable {
this
.
whetherSignatureLine
=
in
.
readInt
();
this
.
whetherSignatureLine
=
in
.
readInt
();
this
.
paySeq
=
in
.
readInt
();
this
.
paySeq
=
in
.
readInt
();
this
.
whetherOpenBox
=
in
.
readInt
();
this
.
whetherOpenBox
=
in
.
readInt
();
this
.
getIntegral
=
in
.
read
Int
();
this
.
getIntegral
=
in
.
read
Double
();
this
.
integralMultiple
=
in
.
read
Int
();
this
.
integralMultiple
=
in
.
read
Double
();
this
.
deductionIntegral
=
in
.
read
Float
();
this
.
deductionIntegral
=
in
.
read
Double
();
this
.
dockingType
=
in
.
readInt
();
this
.
dockingType
=
in
.
readInt
();
this
.
billType
=
in
.
readString
();
this
.
billType
=
in
.
readString
();
this
.
tablePrintingAmount
=
in
.
readInt
();
this
.
tablePrintingAmount
=
in
.
readInt
();
...
...
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/AAChartCoreLib/AAChartConfiger/AAChartView.java
View file @
d2a34349
...
@@ -36,6 +36,8 @@ import android.content.Context;
...
@@ -36,6 +36,8 @@ import android.content.Context;
import
android.content.res.Configuration
;
import
android.content.res.Configuration
;
import
android.os.Build
;
import
android.os.Build
;
import
android.util.AttributeSet
;
import
android.util.AttributeSet
;
import
android.view.MotionEvent
;
import
android.view.View
;
import
android.webkit.JavascriptInterface
;
import
android.webkit.JavascriptInterface
;
import
android.webkit.JsResult
;
import
android.webkit.JsResult
;
import
android.webkit.WebChromeClient
;
import
android.webkit.WebChromeClient
;
...
@@ -53,6 +55,7 @@ import java.util.Map;
...
@@ -53,6 +55,7 @@ import java.util.Map;
public
class
AAChartView
extends
WebView
{
public
class
AAChartView
extends
WebView
{
public
interface
AAChartViewCallBack
{
public
interface
AAChartViewCallBack
{
void
chartViewDidFinishLoad
(
AAChartView
aaChartView
);
void
chartViewDidFinishLoad
(
AAChartView
aaChartView
);
...
@@ -68,6 +71,9 @@ public class AAChartView extends WebView {
...
@@ -68,6 +71,9 @@ public class AAChartView extends WebView {
public
Boolean
isClearBackgroundColor
;
public
Boolean
isClearBackgroundColor
;
public
AAChartViewCallBack
callBack
;
public
AAChartViewCallBack
callBack
;
public
void
setContentWidth
(
Float
contentWidth
)
{
public
void
setContentWidth
(
Float
contentWidth
)
{
this
.
contentWidth
=
contentWidth
;
this
.
contentWidth
=
contentWidth
;
String
jsStr
=
"setTheChartViewContentWidth('"
String
jsStr
=
"setTheChartViewContentWidth('"
...
...
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/adapter/TagViewAdapter.java
0 → 100644
View file @
d2a34349
package
com
.
gingersoft
.
gsa
.
cloud
.
ui
.
adapter
;
import
android.content.res.ColorStateList
;
import
androidx.annotation.Nullable
;
import
com.chad.library.adapter.base.BaseQuickAdapter
;
import
com.chad.library.adapter.base.viewholder.BaseViewHolder
;
import
com.gingersoft.gsa.cloud.ui.R
;
import
com.gingersoft.gsa.cloud.ui.bean.TagViewItem
;
import
com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem
;
import
com.jess.arms.utils.ArmsUtils
;
import
com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
;
import
java.util.List
;
public
class
TagViewAdapter
extends
BaseQuickAdapter
<
TagViewItem
,
BaseViewHolder
>
{
public
TagViewAdapter
(
@Nullable
List
<
TagViewItem
>
data
)
{
super
(
R
.
layout
.
item_tag_view
,
data
);
}
@Override
protected
void
convert
(
BaseViewHolder
helper
,
TagViewItem
item
)
{
QMUIRoundButton
roundButton
=
helper
.
getView
(
R
.
id
.
btn_tag
);
roundButton
.
setText
(
item
.
getText
());
roundButton
.
setTextSize
(
item
.
getTextSize
());
if
(
item
.
isChecked
())
{
roundButton
.
setBackgroundColor
(
item
.
getCheckedBgColor
());
roundButton
.
setStrokeColors
(
ColorStateList
.
valueOf
(
item
.
getCheckedBgColor
()));
roundButton
.
setTextColor
(
item
.
getCheckedTextColor
());
}
else
{
roundButton
.
setBackgroundColor
(
item
.
getUnCheckedBgColor
());
roundButton
.
setStrokeColors
(
ColorStateList
.
valueOf
(
item
.
getSidelineColor
()));
roundButton
.
setTextColor
(
item
.
getUnCheckedTextColor
());
}
}
}
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/bean/TagViewItem.java
0 → 100644
View file @
d2a34349
package
com
.
gingersoft
.
gsa
.
cloud
.
ui
.
bean
;
import
android.view.View
;
import
com.gingersoft.gsa.cloud.app.GsaCloudApplication
;
import
com.gingersoft.gsa.cloud.common.R2
;
import
com.gingersoft.gsa.cloud.ui.R
;
import
com.jess.arms.utils.ArmsUtils
;
import
butterknife.BindColor
;
import
butterknife.BindDimen
;
import
butterknife.ButterKnife
;
import
lombok.Data
;
/**
* @作者: bin
* @創建時間: 2021-04-06 15:14
* @更新時間: 2021-04-06 15:14
* @描述:
*/
@Data
public
class
TagViewItem
<
T
>
{
private
long
id
;
private
String
text
;
int
textSize
=
14
;
//选择字体颜色
int
checkedTextColor
;
//未选择字体颜色
int
unCheckedTextColor
;
//边线颜色
int
sidelineColor
;
//选择背景色
int
checkedBgColor
;
//未选择背景色
int
unCheckedBgColor
;
boolean
checked
=
false
;
//目标对象
private
T
targetObj
;
public
TagViewItem
()
{
checkedTextColor
=
ArmsUtils
.
getColor
(
GsaCloudApplication
.
getAppContext
(),
R
.
color
.
theme_grey_color
);
unCheckedTextColor
=
ArmsUtils
.
getColor
(
GsaCloudApplication
.
getAppContext
(),
R
.
color
.
theme_grey_color
);
sidelineColor
=
ArmsUtils
.
getColor
(
GsaCloudApplication
.
getAppContext
(),
R
.
color
.
theme_grey_color
);
checkedBgColor
=
ArmsUtils
.
getColor
(
GsaCloudApplication
.
getAppContext
(),
R
.
color
.
theme_color
);
unCheckedBgColor
=
ArmsUtils
.
getColor
(
GsaCloudApplication
.
getAppContext
(),
R
.
color
.
theme_white_color
);
}
}
library-ui/src/main/res/layout/item_tag_view.xml
0 → 100644
View file @
d2a34349
<?xml version="1.0" encoding="utf-8"?>
<com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:id=
"@+id/btn_tag"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_margin=
"@dimen/dp_8"
android:paddingLeft=
"@dimen/dp_15"
android:paddingRight=
"@dimen/dp_15"
android:paddingTop=
"@dimen/dp_12"
android:paddingBottom=
"@dimen/dp_12"
android:textSize=
"@dimen/dp_16"
android:textColor=
"@color/theme_grey_color"
android:text=
"草莓派"
app:qmui_radius=
"@dimen/dp_5"
app:qmui_borderColor=
"@color/theme_grey_color"
>
</com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment