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
117ee100
Commit
117ee100
authored
Nov 24, 2020
by
宁斌
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1、新增功能管理相關類 2、Logan相關類調整
parent
c4e6855d
Hide whitespace changes
Inline
Side-by-side
Showing
34 changed files
with
719 additions
and
235 deletions
+719
-235
arms/src/main/AndroidManifest.xml
+1
-3
arms/src/main/java/com/jess/arms/utils/DeviceUtils.java
+161
-5
base-module/build.gradle
+5
-1
base-module/src/main/java/com/gingersoft/gsa/cloud/account/restaurant/ResturantInfoManager.java
+26
-10
base-module/src/main/java/com/gingersoft/gsa/cloud/account/user/UserConstans.java
+4
-1
base-module/src/main/java/com/gingersoft/gsa/cloud/account/user/UserContext.java
+100
-0
base-module/src/main/java/com/gingersoft/gsa/cloud/account/user/UserContextManger.java
+0
-44
base-module/src/main/java/com/gingersoft/gsa/cloud/account/user/info/UserInfoManger.java
+0
-48
base-module/src/main/java/com/gingersoft/gsa/cloud/account/user/state/LoginedState.java
+15
-6
base-module/src/main/java/com/gingersoft/gsa/cloud/account/user/state/LogoutState.java
+19
-16
base-module/src/main/java/com/gingersoft/gsa/cloud/account/user/state/UserState.java
+7
-5
base-module/src/main/java/com/gingersoft/gsa/cloud/app/GsaCloudApplication.java
+21
-6
base-module/src/main/java/com/gingersoft/gsa/cloud/base/utils/crash/AppCrashHandler.java
+2
-2
base-module/src/main/java/com/gingersoft/gsa/cloud/base/utils/log/LogUtil.java
+1
-0
base-module/src/main/java/com/gingersoft/gsa/cloud/config/LoganConfig.java
+1
-1
base-module/src/main/java/com/gingersoft/gsa/cloud/config/OkHttpConfig.java
+2
-0
base-module/src/main/java/com/gingersoft/gsa/cloud/config/globalconfig/applyOptions/MyResponseErrorListener.java
+2
-2
base-module/src/main/java/com/gingersoft/gsa/cloud/config/globalconfig/applyOptions/intercept/LoggingInterceptor.java
+4
-4
base-module/src/main/java/com/gingersoft/gsa/cloud/config/globalconfig/lifecyclesOptioins/MyActivityLifecycle.java
+10
-8
base-module/src/main/java/com/gingersoft/gsa/cloud/config/globalconfig/lifecyclesOptioins/MyAppLifecycles.java
+0
-2
base-module/src/main/java/com/gingersoft/gsa/cloud/config/globalconfig/lifecyclesOptioins/MyFragmentLifecycle.java
+15
-27
base-module/src/main/java/com/gingersoft/gsa/cloud/constans/PrintConstans.java
+0
-1
base-module/src/main/java/com/gingersoft/gsa/cloud/function/XFunctionAction.java
+20
-0
base-module/src/main/java/com/gingersoft/gsa/cloud/function/XFunctionItem.java
+23
-0
base-module/src/main/java/com/gingersoft/gsa/cloud/function/XFunctionItems.java
+20
-0
base-module/src/main/java/com/gingersoft/gsa/cloud/function/XFunctionManager.java
+99
-0
base-module/src/main/java/com/gingersoft/gsa/cloud/function/XFunctionProcessor.java
+86
-0
base-module/src/main/java/com/gingersoft/gsa/cloud/logan/LoganManager.java
+42
-38
config.gradle
+1
-0
login-module/src/main/java/com/gingersoft/gsa/cloud/login/mvp/presenter/BaseLoginPresenter.java
+2
-1
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/MealStandModel.java
+0
-1
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/function/TableFunctionFactory.java
+27
-0
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/MealStandActivity.java
+1
-1
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/TableActivity.java
+2
-2
No files found.
arms/src/main/AndroidManifest.xml
View file @
117ee100
<?xml version="1.0" encoding="utf-8"?>
<manifest
package=
"com.jess.arms"
>
<manifest
package=
"com.jess.arms"
>
</manifest>
arms/src/main/java/com/jess/arms/utils/DeviceUtils.java
View file @
117ee100
...
...
@@ -48,8 +48,11 @@ import com.jess.arms.mvp.IView;
import
java.io.File
;
import
java.lang.reflect.Field
;
import
java.security.MessageDigest
;
import
java.text.NumberFormat
;
import
java.util.List
;
import
java.util.Locale
;
import
java.util.UUID
;
/**
* ================================================
...
...
@@ -648,11 +651,6 @@ public class DeviceUtils {
context
.
startActivity
(
intent
);
}
public
static
String
getIMEI
(
Context
context
)
{
TelephonyManager
tel
=
(
TelephonyManager
)
context
.
getSystemService
(
Context
.
TELEPHONY_SERVICE
);
return
tel
.
getDeviceId
();
}
public
static
String
getPhoneType
()
{
return
Build
.
MODEL
;
}
...
...
@@ -873,6 +871,164 @@ public class DeviceUtils {
}
/**
* 获得设备硬件标识
*
* @param context 上下文
* @return 设备硬件标识
*/
public
static
String
getDeviceId
(
Context
context
)
{
StringBuilder
sbDeviceId
=
new
StringBuilder
();
//获得设备默认IMEI(>=6.0 需要ReadPhoneState权限)
String
imei
=
getIMEI
(
context
);
//获得AndroidId(无需权限)
String
androidid
=
getAndroidId
(
context
);
//获得设备序列号(无需权限)
String
serial
=
getSERIAL
();
//获得硬件uuid(根据硬件相关属性,生成uuid)(无需权限)
String
uuid
=
getDeviceUUID
().
replace
(
"-"
,
""
);
//追加imei
if
(
imei
!=
null
&&
imei
.
length
()
>
0
)
{
sbDeviceId
.
append
(
imei
);
sbDeviceId
.
append
(
"|"
);
}
//追加androidid
if
(
androidid
!=
null
&&
androidid
.
length
()
>
0
)
{
sbDeviceId
.
append
(
androidid
);
sbDeviceId
.
append
(
"|"
);
}
//追加serial
if
(
serial
!=
null
&&
serial
.
length
()
>
0
)
{
sbDeviceId
.
append
(
serial
);
sbDeviceId
.
append
(
"|"
);
}
//追加硬件uuid
if
(
uuid
!=
null
&&
uuid
.
length
()
>
0
)
{
sbDeviceId
.
append
(
uuid
);
}
//生成SHA1,统一DeviceId长度
if
(
sbDeviceId
.
length
()
>
0
)
{
try
{
byte
[]
hash
=
getHashByString
(
sbDeviceId
.
toString
());
String
sha1
=
bytesToHex
(
hash
);
if
(
sha1
!=
null
&&
sha1
.
length
()
>
0
)
{
//返回最终的DeviceId
return
sha1
;
}
}
catch
(
Exception
ex
)
{
ex
.
printStackTrace
();
}
}
//如果以上硬件标识数据均无法获得,
//则DeviceId默认使用系统随机数,这样保证DeviceId不为空
return
UUID
.
randomUUID
().
toString
().
replace
(
"-"
,
""
);
}
//需要获得READ_PHONE_STATE权限,>=6.0,默认返回null
private
static
String
getIMEI
(
Context
context
)
{
try
{
TelephonyManager
tm
=
(
TelephonyManager
)
context
.
getSystemService
(
Context
.
TELEPHONY_SERVICE
);
return
tm
.
getDeviceId
();
}
catch
(
Exception
ex
)
{
ex
.
printStackTrace
();
}
return
""
;
}
/**
* 获得设备的AndroidId
*
* @param context 上下文
* @return 设备的AndroidId
*/
private
static
String
getAndroidId
(
Context
context
)
{
try
{
return
Settings
.
Secure
.
getString
(
context
.
getContentResolver
(),
Settings
.
Secure
.
ANDROID_ID
);
}
catch
(
Exception
ex
)
{
ex
.
printStackTrace
();
}
return
""
;
}
/**
* 获得设备序列号(如:WTK7N16923005607), 个别设备无法获取
*
* @return 设备序列号
*/
private
static
String
getSERIAL
()
{
try
{
return
Build
.
SERIAL
;
}
catch
(
Exception
ex
)
{
ex
.
printStackTrace
();
}
return
""
;
}
/**
* 获得设备硬件uuid
* 使用硬件信息,计算出一个随机数
*
* @return 设备硬件uuid
*/
private
static
String
getDeviceUUID
()
{
try
{
String
dev
=
"3883756"
+
Build
.
BOARD
.
length
()
%
10
+
Build
.
BRAND
.
length
()
%
10
+
Build
.
DEVICE
.
length
()
%
10
+
Build
.
HARDWARE
.
length
()
%
10
+
Build
.
ID
.
length
()
%
10
+
Build
.
MODEL
.
length
()
%
10
+
Build
.
PRODUCT
.
length
()
%
10
+
Build
.
SERIAL
.
length
()
%
10
;
return
new
UUID
(
dev
.
hashCode
(),
Build
.
SERIAL
.
hashCode
()).
toString
();
}
catch
(
Exception
ex
)
{
ex
.
printStackTrace
();
return
""
;
}
}
/**
* 取SHA1
* @param data 数据
* @return 对应的hash值
*/
private
static
byte
[]
getHashByString
(
String
data
)
{
try
{
MessageDigest
messageDigest
=
MessageDigest
.
getInstance
(
"SHA1"
);
messageDigest
.
reset
();
messageDigest
.
update
(
data
.
getBytes
(
"UTF-8"
));
return
messageDigest
.
digest
();
}
catch
(
Exception
e
){
return
""
.
getBytes
();
}
}
/**
* 转16进制字符串
* @param data 数据
* @return 16进制字符串
*/
private
static
String
bytesToHex
(
byte
[]
data
){
StringBuilder
sb
=
new
StringBuilder
();
String
stmp
;
for
(
int
n
=
0
;
n
<
data
.
length
;
n
++){
stmp
=
(
Integer
.
toHexString
(
data
[
n
]
&
0xFF
));
if
(
stmp
.
length
()
==
1
)
sb
.
append
(
"0"
);
sb
.
append
(
stmp
);
}
return
sb
.
toString
().
toUpperCase
(
Locale
.
CHINA
);
}
}
base-module/build.gradle
View file @
117ee100
...
...
@@ -155,9 +155,13 @@ dependencies {
debugImplementation
'com.didichuxing.doraemonkit:dokitx:3.3.3'
releaseImplementation
'com.didichuxing.doraemonkit:dokitx-no-op:3.3.3'
//美團金剛狼日誌框架
api
rootProject
.
ext
.
dependencies
[
'logan'
]
implementation
rootProject
.
ext
.
dependencies
[
'logan'
]
//RecyclerView 流式佈局layoutManager
api
'com.google.android:flexbox:1.0.0'
// 用于生成Java文件的库
// implementation 'com.squareup:javapoet:1.13.0'
// implementation 'com.google.auto.service:auto-service:1.0-rc6'
// annotationProcessor 'com.google.auto.service:auto-service:1.0-rc6'
api
rootProject
.
ext
.
dependencies
[
"permissionx"
]
api
rootProject
.
ext
.
dependencies
[
"design"
]
...
...
base-module/src/main/java/com/gingersoft/gsa/cloud/account/restaurant/ResturantInfoManager.java
View file @
117ee100
...
...
@@ -16,7 +16,7 @@ import lombok.Data;
@Data
public
class
ResturantInfoManager
{
private
static
ResturantInfoManager
r
esturantInfoManager
=
null
;
private
static
ResturantInfoManager
sR
esturantInfoManager
=
null
;
/**
* 品牌信息
...
...
@@ -30,22 +30,38 @@ public class ResturantInfoManager {
private
ResturantInfoManager
()
{
}
public
static
ResturantInfoManager
get
Instance
()
{
if
(
r
esturantInfoManager
==
null
)
{
public
static
ResturantInfoManager
new
Instance
()
{
if
(
sR
esturantInfoManager
==
null
)
{
synchronized
(
ResturantInfoManager
.
class
)
{
if
(
r
esturantInfoManager
==
null
)
{
r
esturantInfoManager
=
new
ResturantInfoManager
();
if
(
sR
esturantInfoManager
==
null
)
{
sR
esturantInfoManager
=
new
ResturantInfoManager
();
}
}
}
return
r
esturantInfoManager
;
return
sR
esturantInfoManager
;
}
public
void
putResturantInfo
(
RestaurantInfo
info
)
{
SPUtils
.
put
(
UserConstans
.
gsPosShopId
,
info
.
getGsPosShopId
());
SPUtils
.
put
(
UserConstans
.
restaurantId
,
info
.
getRestaurantId
());
SPUtils
.
put
(
UserConstans
.
restaurantName
,
info
.
getRestaurantName
());
}
public
void
putBrandInfo
(
BrandInfo
info
)
{
SPUtils
.
put
(
UserConstans
.
brandId
,
info
.
getBrandId
());
SPUtils
.
put
(
UserConstans
.
brandName
,
info
.
getBrandName
());
}
public
void
removeResturantInfo
()
{
SPUtils
.
remove
(
UserConstans
.
gsPosShopId
);
SPUtils
.
remove
(
UserConstans
.
restaurantId
);
SPUtils
.
remove
(
UserConstans
.
restaurantName
);
}
public
void
setResturantInfoToLocation
(
RestaurantInfo
info
)
{
// SPUtils.put(UserConstans.restaurantId, info
);
// SPUtils.put(UserConstans.restaurantId, info.ge
);
// SPUtils.put(UserConstans.restaurantId, restaurantId
);
public
void
removeBrandInfo
(
)
{
SPUtils
.
remove
(
UserConstans
.
gsPosShopId
);
SPUtils
.
remove
(
UserConstans
.
restaurantId
);
SPUtils
.
remove
(
UserConstans
.
restaurantName
);
}
}
base-module/src/main/java/com/gingersoft/gsa/cloud/account/user/UserConstans.java
View file @
117ee100
...
...
@@ -3,7 +3,10 @@ package com.gingersoft.gsa.cloud.account.user;
/**
* Created by Wyh on 2019/12/21.
*/
public
interface
UserConstans
{
public
class
UserConstans
{
public
final
static
String
IS_LOGIN
=
"is_login"
;
public
final
static
String
LOGIN_USERNAME
=
"login_account"
;
public
final
static
String
LOGIN_PASSWORD
=
"login_password"
;
...
...
base-module/src/main/java/com/gingersoft/gsa/cloud/account/user/UserContext.java
0 → 100644
View file @
117ee100
package
com
.
gingersoft
.
gsa
.
cloud
.
account
.
user
;
import
com.gingersoft.gsa.cloud.account.restaurant.ResturantInfoManager
;
import
com.gingersoft.gsa.cloud.account.user.info.UserInfo
;
import
com.gingersoft.gsa.cloud.account.user.state.LoginedState
;
import
com.gingersoft.gsa.cloud.account.user.state.LogoutState
;
import
com.gingersoft.gsa.cloud.account.user.state.UserState
;
import
com.gingersoft.gsa.cloud.base.utils.other.SPUtils
;
import
lombok.Getter
;
import
lombok.Setter
;
/**
* @author : bin
* @create date: 2020-11-21
* @update date: 2020-11-21
* @description:用戶接口和狀態管理類
*/
@Getter
@Setter
public
class
UserContext
{
private
static
UserContext
sUserContextManger
=
null
;
/**
* 用戶狀態
*/
private
UserState
state
=
new
LogoutState
();
/**
* 用戶信息
*/
private
UserInfo
info
;
private
UserContext
()
{
}
public
static
UserContext
newInstance
()
{
if
(
sUserContextManger
==
null
)
{
synchronized
(
UserContext
.
class
)
{
if
(
sUserContextManger
==
null
)
{
sUserContextManger
=
new
UserContext
();
}
}
}
return
sUserContextManger
;
}
public
void
logined
(){
state
.
logined
();
}
public
void
logOut
(){
state
.
logOut
();
}
public
void
toTargetPage
(
String
componentName
,
String
actionName
){
state
.
toTargetPage
(
componentName
,
actionName
);
}
/**
* 用戶是否登錄
* @return
*/
public
boolean
isLogin
(){
if
(
state
instanceof
LoginedState
){
return
true
;
}
return
false
;
}
public
void
putUserInfo
(
UserInfo
info
)
{
SPUtils
.
put
(
UserConstans
.
token
,
info
.
getUserName
());
SPUtils
.
put
(
UserConstans
.
memberId
,
info
.
getUserName
());
SPUtils
.
put
(
UserConstans
.
memberName
,
info
.
getUserName
());
}
public
void
removeUserInfo
(){
SPUtils
.
remove
(
UserConstans
.
token
);
SPUtils
.
remove
(
UserConstans
.
memberId
);
SPUtils
.
remove
(
UserConstans
.
memberName
);
//刪除用戶信息的同時 將品牌,餐廳信息一起刪除
ResturantInfoManager
.
newInstance
().
removeBrandInfo
();
ResturantInfoManager
.
newInstance
().
removeResturantInfo
();
}
public
static
String
getLoginToken
()
{
return
(
String
)
SPUtils
.
get
(
UserConstans
.
token
,
""
);
}
public
static
int
getMemberId
()
{
return
(
int
)
SPUtils
.
get
(
UserConstans
.
memberId
,
0
);
}
public
static
String
getMemberName
()
{
return
(
String
)
SPUtils
.
get
(
UserConstans
.
memberName
,
""
);
}
}
base-module/src/main/java/com/gingersoft/gsa/cloud/account/user/UserContextManger.java
deleted
100644 → 0
View file @
c4e6855d
package
com
.
gingersoft
.
gsa
.
cloud
.
account
.
user
;
import
com.gingersoft.gsa.cloud.account.user.info.UserInfo
;
import
com.gingersoft.gsa.cloud.account.user.state.UserState
;
import
lombok.Getter
;
import
lombok.Setter
;
/**
* @author : bin
* @create date: 2020-11-21
* @update date: 2020-11-21
* @description:用戶信息管理:如用戶登錄狀態,用戶信息等。。
*/
@Getter
@Setter
public
class
UserContextManger
{
private
static
UserContextManger
userContextManger
=
null
;
/**
* 用戶狀態
*/
private
UserState
state
;
/**
* 用戶信息
*/
private
UserInfo
info
;
private
UserContextManger
()
{
}
public
static
UserContextManger
getInstance
()
{
if
(
userContextManger
==
null
)
{
synchronized
(
UserContextManger
.
class
)
{
if
(
userContextManger
==
null
)
{
userContextManger
=
new
UserContextManger
();
}
}
}
return
userContextManger
;
}
}
base-module/src/main/java/com/gingersoft/gsa/cloud/account/user/info/UserInfoManger.java
deleted
100644 → 0
View file @
c4e6855d
package
com
.
gingersoft
.
gsa
.
cloud
.
account
.
user
.
info
;
import
com.gingersoft.gsa.cloud.base.utils.other.SPUtils
;
import
com.gingersoft.gsa.cloud.account.user.UserConstans
;
/**
* @author : bin
* @create date: 2020-11-21
* @update date: 2020-11-21
* @description:
*/
public
class
UserInfoManger
{
private
static
UserInfoManger
userInfoManger
=
null
;
private
UserInfoManger
()
{
}
public
static
UserInfoManger
getInstance
()
{
if
(
userInfoManger
==
null
)
{
synchronized
(
UserInfoManger
.
class
)
{
if
(
userInfoManger
==
null
)
{
userInfoManger
=
new
UserInfoManger
();
}
}
}
return
userInfoManger
;
}
public
void
setUserInfoToLocation
(
UserInfo
info
)
{
SPUtils
.
put
(
UserConstans
.
token
,
info
.
getUserName
());
SPUtils
.
put
(
UserConstans
.
memberId
,
info
.
getUserName
());
SPUtils
.
put
(
UserConstans
.
memberName
,
info
.
getUserName
());
}
public
static
String
getLoginToken
()
{
return
(
String
)
SPUtils
.
get
(
UserConstans
.
token
,
""
);
}
public
static
int
getMemberId
()
{
return
(
int
)
SPUtils
.
get
(
UserConstans
.
memberId
,
0
);
}
public
static
String
getMemberName
()
{
return
(
String
)
SPUtils
.
get
(
UserConstans
.
memberName
,
""
);
}
}
base-module/src/main/java/com/gingersoft/gsa/cloud/account/user/state/
NotLogin
State.java
→
base-module/src/main/java/com/gingersoft/gsa/cloud/account/user/state/
Logined
State.java
View file @
117ee100
package
com
.
gingersoft
.
gsa
.
cloud
.
account
.
user
.
state
;
import
com.billy.cc.core.component.CC
;
import
com.gingersoft.gsa.cloud.account.user.UserContext
;
import
com.gingersoft.gsa.cloud.base.utils.other.SPUtils
;
import
com.gingersoft.gsa.cloud.constans.PrintConstans
;
import
com.gingersoft.gsa.cloud.account.user.UserConstans
;
/**
* @author : bin
* @create date: 2020-11-21
* @update date: 2020-11-21
* @description:
用戶未登錄
* @description:
已登錄狀態
*/
public
class
NotLogin
State
implements
UserState
{
public
class
Logined
State
implements
UserState
{
@Override
public
void
toLoginPage
()
{
public
void
logined
()
{
//跳轉登錄頁面
CC
.
obtainBuilder
(
"User.Component.Login"
)
.
setActionName
(
"showActivityA"
)
...
...
@@ -22,12 +26,17 @@ public class NotLoginState implements UserState{
@Override
public
void
logOut
()
{
//設置用戶狀態為登出狀態
UserContext
.
newInstance
().
setState
(
new
LogoutState
());
UserContext
.
newInstance
().
logOut
();
}
@Override
public
void
toTargetPage
()
{
public
void
toTargetPage
(
String
componentName
,
String
actionName
)
{
CC
.
obtainBuilder
(
componentName
)
.
setActionName
(
actionName
)
.
build
()
.
call
();
}
}
base-module/src/main/java/com/gingersoft/gsa/cloud/account/user/state/
HasLogin
State.java
→
base-module/src/main/java/com/gingersoft/gsa/cloud/account/user/state/
Logout
State.java
View file @
117ee100
package
com
.
gingersoft
.
gsa
.
cloud
.
account
.
user
.
state
;
import
com.billy.cc.core.component.CC
;
import
com.gingersoft.gsa.cloud.account.restaurant.ResturantInfoManager
;
import
com.gingersoft.gsa.cloud.account.user.UserConstans
;
import
com.gingersoft.gsa.cloud.account.user.UserContext
;
import
com.gingersoft.gsa.cloud.base.utils.other.SPUtils
;
import
com.gingersoft.gsa.cloud.constans.PrintConstans
;
import
com.gingersoft.gsa.cloud.account.user.UserConstans
;
/**
* @author : bin
* @create date: 2020-11-21
* @update date: 2020-11-21
* @description:
用戶已登錄
* @description:
未登錄狀態
*/
public
class
HasLogin
State
implements
UserState
{
public
class
Logout
State
implements
UserState
{
@Override
public
void
toLoginPage
()
{
public
void
logined
()
{
//設置用戶狀態為登錄狀態
UserContext
.
newInstance
().
setState
(
new
LoginedState
());
UserContext
.
newInstance
().
logined
();
}
@Override
public
void
logOut
()
{
SPUtils
.
remove
(
UserConstans
.
token
);
SPUtils
.
remove
(
UserConstans
.
memberId
);
SPUtils
.
remove
(
UserConstans
.
brandId
);
SPUtils
.
remove
(
UserConstans
.
brandName
);
SPUtils
.
remove
(
UserConstans
.
restaurantId
);
SPUtils
.
remove
(
UserConstans
.
restaurantName
);
SPUtils
.
remove
(
UserConstans
.
memberName
);
SPUtils
.
remove
(
UserConstans
.
brandRestaurantInfos
);
SPUtils
.
remove
(
UserConstans
.
gsPosShopId
);
SPUtils
.
put
(
PrintConstans
.
IS_LOGIN
,
false
);
SPUtils
.
put
(
UserConstans
.
IS_LOGIN
,
false
);
UserContext
.
newInstance
().
removeUserInfo
();
//关闭Prj打印服務
CC
.
obtainBuilder
(
"Component.Print"
)
.
setActionName
(
"stopPrintService"
)
...
...
@@ -43,8 +43,11 @@ public class HasLoginState implements UserState{
}
@Override
public
void
toTargetPage
()
{
public
void
toTargetPage
(
String
componentName
,
String
actionName
)
{
CC
.
obtainBuilder
(
componentName
)
.
setActionName
(
actionName
)
.
build
()
.
call
();
}
}
base-module/src/main/java/com/gingersoft/gsa/cloud/account/user/state/UserState.java
View file @
117ee100
...
...
@@ -4,14 +4,14 @@ package com.gingersoft.gsa.cloud.account.user.state;
* @author : bin
* @create date: 2020-11-21
* @update date: 2020-11-21
* @description:
已登錄 未登錄
* @description:
用戶狀態接口
* */
public
interface
UserState
{
/**
*
跳轉到登錄頁面
*
登入
*/
void
toLoginPage
();
void
logined
();
/**
* 登出
...
...
@@ -19,7 +19,9 @@ public interface UserState {
void
logOut
();
/**
* 跳轉到目標也
* 跳轉到目標頁
* @param componentName 目標組件名
* @param actionName 目標activity名
*/
void
toTargetPage
();
void
toTargetPage
(
String
componentName
,
String
actionName
);
}
base-module/src/main/java/com/gingersoft/gsa/cloud/app/GsaCloudApplication.java
View file @
117ee100
...
...
@@ -10,6 +10,7 @@ import android.os.RemoteException;
import
androidx.annotation.NonNull
;
import
com.billy.cc.core.component.CC
;
import
com.dianping.logan.Logan
;
import
com.dianping.logan.OnLoganProtocolStatus
;
import
com.didichuxing.doraemonkit.DoraemonKit
;
import
com.elvishew.xlog.LogConfiguration
;
import
com.elvishew.xlog.LogLevel
;
...
...
@@ -35,6 +36,7 @@ import com.gingersoft.gsa.cloud.constans.PrintConstans;
import
com.gingersoft.gsa.cloud.account.user.UserConstans
;
import
com.gingersoft.gsa.cloud.database.DaoManager
;
import
com.gingersoft.gsa.cloud.config.LoganConfig
;
import
com.gingersoft.gsa.cloud.logan.LoganManager
;
import
com.gingersoft.gsa.cloud.ui.loadsir.CustomCallback
;
import
com.gingersoft.gsa.cloud.ui.loadsir.EmptyCallback
;
import
com.gingersoft.gsa.cloud.ui.loadsir.ErrorCallback
;
...
...
@@ -50,6 +52,8 @@ import com.scwang.smartrefresh.layout.header.ClassicsHeader;
import
java.io.File
;
import
java.util.Locale
;
import
java.util.logging.LogManager
;
import
me.jessyan.autosize.AutoSize
;
import
me.jessyan.autosize.AutoSizeConfig
;
import
me.jessyan.autosize.onAdaptListener
;
...
...
@@ -63,6 +67,7 @@ import com.gingersoft.gsa.cloud.config.expandconfig.ExpandInfoSetting;
*/
public
class
GsaCloudApplication
extends
BaseApplication
{
private
static
final
String
TAG
=
GsaCloudApplication
.
class
.
getSimpleName
();
/**
* 系统上下文
*/
...
...
@@ -98,16 +103,20 @@ public class GsaCloudApplication extends BaseApplication {
@Override
public
void
onCreate
()
{
super
.
onCreate
();
mAppContext
=
this
;
isLogin
=
(
boolean
)
SPUtils
.
get
(
Print
Constans
.
IS_LOGIN
,
false
);
isLogin
=
(
boolean
)
SPUtils
.
get
(
User
Constans
.
IS_LOGIN
,
false
);
CC
.
enableVerboseLog
(
true
);
CC
.
enableDebug
(
true
);
CC
.
enableRemoteCC
(
true
);
//初始化美團日誌框架
initLogan
();
LoganManager
.
w_action
(
TAG
,
TAG
+
": onCreate start....."
);
//初始化服務器地址
initDomainUrl
();
//初始化側滑回退
// QMUISwipeBackActivityManager.init(this);
//初始化主題管理器
...
...
@@ -126,7 +135,6 @@ public class GsaCloudApplication extends BaseApplication {
initPrint
();
//初始化日誌管理庫
initXLog
();
initLogan
();
//初始化crash記錄
AppCrashHandler
.
getInstance
().
init
(
this
);
...
...
@@ -135,6 +143,7 @@ public class GsaCloudApplication extends BaseApplication {
//上傳餐廳擴展信息
ExpandInfoSetting
.
initUpdateExtendedConfiguration
(
uiStyleConfiguration
,
functionConfiguration
);
LoganManager
.
w_action
(
TAG
,
TAG
+
": onCreate end....."
);
}
/**
...
...
@@ -142,13 +151,19 @@ public class GsaCloudApplication extends BaseApplication {
*/
private
void
initLogan
()
{
com
.
dianping
.
logan
.
LoganConfig
config
=
new
com
.
dianping
.
logan
.
LoganConfig
.
Builder
()
.
setCachePath
(
get
ApplicationContext
().
get
FilesDir
().
getAbsolutePath
())
.
setPath
(
get
ApplicationContext
().
get
ExternalFilesDir
(
null
).
getAbsolutePath
()
.
setCachePath
(
getFilesDir
().
getAbsolutePath
())
.
setPath
(
getExternalFilesDir
(
null
).
getAbsolutePath
()
+
File
.
separator
+
LoganConfig
.
FILE_NAME
)
.
setEncryptKey16
(
LoganConfig
.
EncryptKey16
.
getBytes
())
.
setEncryptIV16
(
LoganConfig
.
EncryptIV16
.
getBytes
())
.
build
();
Logan
.
init
(
config
);
Logan
.
setOnLoganProtocolStatus
(
new
OnLoganProtocolStatus
()
{
@Override
public
void
loganProtocolStatus
(
String
cmd
,
int
code
)
{
LoganManager
.
w_code
(
TAG
,
"loganProtocolStatus: "
+
cmd
);
}
});
}
/**
...
...
@@ -455,7 +470,7 @@ public class GsaCloudApplication extends BaseApplication {
SPUtils
.
remove
(
UserConstans
.
memberName
);
SPUtils
.
remove
(
UserConstans
.
brandRestaurantInfos
);
SPUtils
.
remove
(
UserConstans
.
gsPosShopId
);
SPUtils
.
put
(
Print
Constans
.
IS_LOGIN
,
false
);
SPUtils
.
put
(
User
Constans
.
IS_LOGIN
,
false
);
//关闭Prj打印服務
CC
.
obtainBuilder
(
"Component.Print"
)
.
setActionName
(
"stopPrintService"
)
...
...
base-module/src/main/java/com/gingersoft/gsa/cloud/base/utils/crash/AppCrashHandler.java
View file @
117ee100
...
...
@@ -19,7 +19,7 @@ import com.gingersoft.gsa.cloud.base.utils.JsonUtils;
import
com.gingersoft.gsa.cloud.base.utils.log.LogUtil
;
import
com.gingersoft.gsa.cloud.base.utils.okhttpUtils.OkHttp3Utils
;
import
com.gingersoft.gsa.cloud.constans.HttpsConstans
;
import
com.gingersoft.gsa.cloud.logan.Logan
Utils
;
import
com.gingersoft.gsa.cloud.logan.Logan
Manager
;
import
com.jess.arms.di.component.AppComponent
;
import
com.jess.arms.utils.ArmsUtils
;
import
com.jess.arms.utils.DeviceUtils
;
...
...
@@ -214,7 +214,7 @@ public class AppCrashHandler implements UncaughtExceptionHandler {
String
stacktrace
=
result
.
toString
();
printWriter
.
close
();
Logan
Utils
.
w_crash
(
"AppCrashHandler: "
+
stacktrace
);
Logan
Manager
.
w_crash
(
stacktrace
);
//保存错误报告到文件
saveCrashInfo2File
(
ex
);
...
...
base-module/src/main/java/com/gingersoft/gsa/cloud/base/utils/log/LogUtil.java
View file @
117ee100
...
...
@@ -50,6 +50,7 @@ public class LogUtil {
//剩余部分
d
(
TAG
,
msg
);
}
public
static
void
d
(
String
tagName
,
String
msg
)
{
if
(
isPrintLog
&&
msg
!=
null
)
{
int
strLength
=
msg
.
length
();
...
...
base-module/src/main/java/com/gingersoft/gsa/cloud/config/LoganConfig.java
View file @
117ee100
...
...
@@ -12,7 +12,7 @@ public class LoganConfig {
public
static
final
String
EncryptKey16
=
"0123456789012345"
;
public
static
final
String
EncryptIV16
=
"0123456789012345"
;
public
static
final
String
APP_ID
=
"gingersoft1008611"
;
public
static
final
String
UPLOAD_LOG_URL
=
"http://192.168.1.113:808
0/logan-web
/logan/upload.json"
;
public
static
final
String
UPLOAD_LOG_URL
=
"http://192.168.1.113:808
2
/logan/upload.json"
;
/**
* 代码日志
...
...
base-module/src/main/java/com/gingersoft/gsa/cloud/config/OkHttpConfig.java
View file @
117ee100
...
...
@@ -16,4 +16,6 @@ public class OkHttpConfig {
* okhttp读写超时20秒
*/
public
static
final
byte
REQUEST_TIMEOUT
=
20
;
}
base-module/src/main/java/com/gingersoft/gsa/cloud/config/globalconfig/applyOptions/MyResponseErrorListener.java
View file @
117ee100
...
...
@@ -9,7 +9,7 @@ import com.billy.cc.core.component.CC;
import
com.gingersoft.gsa.cloud.base.R
;
import
com.gingersoft.gsa.cloud.app.GsaCloudApplication
;
import
com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils
;
import
com.gingersoft.gsa.cloud.logan.Logan
Utils
;
import
com.gingersoft.gsa.cloud.logan.Logan
Manager
;
import
com.google.gson.JsonIOException
;
import
com.google.gson.JsonParseException
;
import
com.jess.arms.utils.ArmsUtils
;
...
...
@@ -51,7 +51,7 @@ public class MyResponseErrorListener implements ResponseErrorListener {
// ArmsUtils.snackbarText(msg);
// LogUtil.d("handleResponseError: " + t.getMessage());
Logan
Utils
.
w_network
(
"請求錯誤: "
+
t
.
getMessage
());
Logan
Manager
.
w_network
(
"請求錯誤: "
+
t
.
getMessage
());
if
(!
TextUtils
.
isEmpty
(
msg
))
{
ToastUtils
.
show
(
context
,
msg
);
...
...
base-module/src/main/java/com/gingersoft/gsa/cloud/config/globalconfig/applyOptions/intercept/LoggingInterceptor.java
View file @
117ee100
package
com
.
gingersoft
.
gsa
.
cloud
.
config
.
globalconfig
.
applyOptions
.
intercept
;
import
com.gingersoft.gsa.cloud.logan.Logan
Utils
;
import
com.gingersoft.gsa.cloud.logan.Logan
Manager
;
import
java.io.IOException
;
...
...
@@ -27,11 +27,11 @@ public class LoggingInterceptor implements Interceptor {
sb
.
append
(
body
.
encodedName
(
i
)
+
"="
+
body
.
encodedValue
(
i
)
+
","
);
}
sb
.
delete
(
sb
.
length
()
-
1
,
sb
.
length
());
Logan
Utils
.
w_network
(
String
.
format
(
"發送請求 %s on %s %n%s %nRequestParams:{%s}"
,
Logan
Manager
.
w_network
(
String
.
format
(
"發送請求 %s on %s %n%s %nRequestParams:{%s}"
,
request
.
url
(),
chain
.
connection
(),
request
.
headers
(),
sb
.
toString
()));
}
}
else
{
Logan
Utils
.
w_network
(
String
.
format
(
"發送請求 %s on %s%n%s"
,
Logan
Manager
.
w_network
(
String
.
format
(
"發送請求 %s on %s%n%s"
,
request
.
url
(),
chain
.
connection
(),
request
.
headers
()));
}
Response
response
=
chain
.
proceed
(
request
);
...
...
@@ -40,7 +40,7 @@ public class LoggingInterceptor implements Interceptor {
//因为response.body().string()之后,response中的流会被关闭,程序会报错,我们需要创建出一
//个新的response给应用层处理
ResponseBody
responseBody
=
response
.
peekBody
(
1024
*
1024
);
Logan
Utils
.
w_network
(
String
.
format
(
"接收響應: [%s] %n返回json:【%s】 %.1fms %n%s"
,
Logan
Manager
.
w_network
(
String
.
format
(
"接收響應: [%s] %n返回json:【%s】 %.1fms %n%s"
,
response
.
request
().
url
(),
responseBody
.
string
(),
(
t2
-
t1
)
/
1
e6d
,
...
...
base-module/src/main/java/com/gingersoft/gsa/cloud/config/globalconfig/lifecyclesOptioins/MyActivityLifecycle.java
View file @
117ee100
...
...
@@ -10,7 +10,7 @@ import com.gingersoft.gsa.cloud.app.GsaCloudApplication;
import
com.gingersoft.gsa.cloud.base.utils.CommonConfiguration
;
import
com.gingersoft.gsa.cloud.database.utils.FoodComboDaoUtils
;
import
com.gingersoft.gsa.cloud.database.utils.ModifierDaoUtils
;
import
com.gingersoft.gsa.cloud.logan.Logan
Utils
;
import
com.gingersoft.gsa.cloud.logan.Logan
Manager
;
import
io.reactivex.Observable
;
import
io.reactivex.ObservableEmitter
;
...
...
@@ -21,9 +21,11 @@ import io.reactivex.schedulers.Schedulers;
@SuppressLint
(
"NewApi"
)
public
class
MyActivityLifecycle
implements
Application
.
ActivityLifecycleCallbacks
{
private
static
final
String
TAG
=
MyActivityLifecycle
.
class
.
getSimpleName
();
@Override
public
void
onActivityCreated
(
Activity
activity
,
Bundle
bundle
)
{
Logan
Utils
.
w_action
(
activity
.
getClass
().
getSimpleName
()
+
": onActivityCreated"
);
Logan
Manager
.
w_action
(
TAG
,
TAG
+
": onActivityCreated"
);
// EventBus.getDefault().register(activity);
if
(!
activity
.
getIntent
().
getBooleanExtra
(
"isInitToolbar"
,
false
))
{
//由于加强框架的兼容性,故将 setContentView 放到 onActivityCreated 之后,onActivityStarted 之前执行
...
...
@@ -36,13 +38,13 @@ public class MyActivityLifecycle implements Application.ActivityLifecycleCallbac
@Override
public
void
onActivityStarted
(
Activity
activity
)
{
Logan
Utils
.
w_action
(
activity
.
getClass
().
getSimpleName
()
+
": onActivityStarted"
);
Logan
Manager
.
w_action
(
TAG
,
TAG
+
": onActivityStarted"
);
}
@Override
public
void
onActivityResumed
(
Activity
activity
)
{
String
name
=
activity
.
getClass
().
getSimpleName
();
Logan
Utils
.
w_action
(
name
+
": onActivityResumed"
);
Logan
Manager
.
w_action
(
TAG
,
TAG
+
": onActivityResumed"
);
if
(
name
.
equals
(
"NewMainActivity"
))
{
Observable
.
create
(
new
ObservableOnSubscribe
<
Void
>()
{
...
...
@@ -75,22 +77,22 @@ public class MyActivityLifecycle implements Application.ActivityLifecycleCallbac
@Override
public
void
onActivityPaused
(
Activity
activity
)
{
Logan
Utils
.
w_action
(
activity
.
getClass
().
getSimpleName
()
+
": onActivityPaused"
);
Logan
Manager
.
w_action
(
TAG
,
TAG
+
": onActivityPaused"
);
}
@Override
public
void
onActivityStopped
(
Activity
activity
)
{
Logan
Utils
.
w_action
(
activity
.
getClass
().
getSimpleName
()
+
": onActivityStopped"
);
Logan
Manager
.
w_action
(
TAG
,
TAG
+
": onActivityStopped"
);
}
@Override
public
void
onActivitySaveInstanceState
(
Activity
activity
,
Bundle
bundle
)
{
Logan
Utils
.
w_action
(
activity
.
getClass
().
getSimpleName
()
+
": onActivitySaveInstanceState"
);
Logan
Manager
.
w_action
(
TAG
,
TAG
+
": onActivitySaveInstanceState"
);
}
@Override
public
void
onActivityDestroyed
(
Activity
activity
)
{
Logan
Utils
.
w_action
(
activity
.
getClass
().
getSimpleName
()
+
": onActivityDestroyed"
);
Logan
Manager
.
w_action
(
TAG
,
TAG
+
": onActivityDestroyed"
);
// EventBus.getDefault().unregister(activity);
//横竖屏切换或配置改变时, Activity 会被重新创建实例, 但 Bundle 中的基础数据会被保存下来,移除该数据是为了保证重新创建的实例可以正常工作
activity
.
getIntent
().
removeExtra
(
"isInitToolbar"
);
...
...
base-module/src/main/java/com/gingersoft/gsa/cloud/config/globalconfig/lifecyclesOptioins/MyAppLifecycles.java
View file @
117ee100
...
...
@@ -4,7 +4,6 @@ import android.app.Application;
import
android.content.Context
;
import
com.gingersoft.gsa.cloud.base.BuildConfig
;
import
com.gingersoft.gsa.cloud.logan.LoganUtils
;
import
com.jess.arms.base.delegate.AppLifecycles
;
import
com.squareup.leakcanary.LeakCanary
;
import
com.squareup.leakcanary.RefWatcher
;
...
...
@@ -20,7 +19,6 @@ public class MyAppLifecycles implements AppLifecycles {
@Override
public
void
onCreate
(
Application
application
)
{
LoganUtils
.
w_action
(
application
.
getClass
().
getSimpleName
()
+
": onCreate....."
);
initLeakCanary
(
application
);
initFragmentation
();
// initARouter(application);
...
...
base-module/src/main/java/com/gingersoft/gsa/cloud/config/globalconfig/lifecyclesOptioins/MyFragmentLifecycle.java
View file @
117ee100
package
com
.
gingersoft
.
gsa
.
cloud
.
config
.
globalconfig
.
lifecyclesOptioins
;
import
android.annotation.SuppressLint
;
import
android.app.Activity
;
import
android.app.Application
;
import
android.content.Context
;
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.fragment.app.Fragment
;
import
androidx.fragment.app.FragmentManager
;
import
com.billy.cc.core.component.CC
;
import
com.gingersoft.gsa.cloud.app.GsaCloudApplication
;
import
com.gingersoft.gsa.cloud.base.utils.CommonConfiguration
;
import
com.gingersoft.gsa.cloud.database.utils.FoodComboDaoUtils
;
import
com.gingersoft.gsa.cloud.database.utils.ModifierDaoUtils
;
import
com.gingersoft.gsa.cloud.logan.LoganUtils
;
import
io.reactivex.Observable
;
import
io.reactivex.ObservableEmitter
;
import
io.reactivex.ObservableOnSubscribe
;
import
io.reactivex.schedulers.Schedulers
;
import
com.gingersoft.gsa.cloud.logan.LoganManager
;
@SuppressLint
(
"NewApi"
)
public
class
MyFragmentLifecycle
extends
FragmentManager
.
FragmentLifecycleCallbacks
{
private
static
final
String
TAG
=
MyFragmentLifecycle
.
class
.
getSimpleName
();
@Override
public
void
onFragmentAttached
(
@NonNull
FragmentManager
fm
,
@NonNull
Fragment
f
,
@NonNull
Context
context
)
{
Logan
Utils
.
w_action
(
f
.
getClass
().
getSimpleName
()
+
": onFragmentAttached"
);
Logan
Manager
.
w_action
(
TAG
,
TAG
+
": onFragmentAttached"
);
}
@Override
public
void
onFragmentCreated
(
@NonNull
FragmentManager
fm
,
@NonNull
Fragment
f
,
@Nullable
Bundle
savedInstanceState
)
{
Logan
Utils
.
w_action
(
f
.
getClass
().
getSimpleName
()
+
": onFragmentCreated"
);
Logan
Manager
.
w_action
(
TAG
,
TAG
+
": onFragmentCreated"
);
}
@Override
public
void
onFragmentActivityCreated
(
@NonNull
FragmentManager
fm
,
@NonNull
Fragment
f
,
@Nullable
Bundle
savedInstanceState
)
{
Logan
Utils
.
w_action
(
f
.
getClass
().
getSimpleName
()
+
": onFragmentActivityCreated"
);
Logan
Manager
.
w_action
(
TAG
,
TAG
+
": onFragmentActivityCreated"
);
}
@Override
public
void
onFragmentViewCreated
(
@NonNull
FragmentManager
fm
,
@NonNull
Fragment
f
,
@NonNull
View
v
,
@Nullable
Bundle
savedInstanceState
)
{
Logan
Utils
.
w_action
(
f
.
getClass
().
getSimpleName
()
+
": onFragmentViewCreated"
);
Logan
Manager
.
w_action
(
TAG
,
TAG
+
": onFragmentViewCreated"
);
}
@Override
public
void
onFragmentStarted
(
@NonNull
FragmentManager
fm
,
@NonNull
Fragment
f
)
{
Logan
Utils
.
w_action
(
f
.
getClass
().
getSimpleName
()
+
": onFragmentStarted"
);
Logan
Manager
.
w_action
(
TAG
,
TAG
+
": onFragmentStarted"
);
}
@Override
public
void
onFragmentResumed
(
@NonNull
FragmentManager
fm
,
@NonNull
Fragment
f
)
{
Logan
Utils
.
w_action
(
f
.
getClass
().
getSimpleName
()
+
": onFragmentResumed"
);
Logan
Manager
.
w_action
(
TAG
,
TAG
+
": onFragmentResumed"
);
}
@Override
public
void
onFragmentPaused
(
@NonNull
FragmentManager
fm
,
@NonNull
Fragment
f
)
{
Logan
Utils
.
w_action
(
f
.
getClass
().
getSimpleName
()
+
": onFragmentPaused"
);
Logan
Manager
.
w_action
(
TAG
,
TAG
+
": onFragmentPaused"
);
}
@Override
public
void
onFragmentStopped
(
@NonNull
FragmentManager
fm
,
@NonNull
Fragment
f
)
{
Logan
Utils
.
w_action
(
f
.
getClass
().
getSimpleName
()
+
": onFragmentStopped"
);
Logan
Manager
.
w_action
(
TAG
,
TAG
+
": onFragmentStopped"
);
}
@Override
public
void
onFragmentSaveInstanceState
(
@NonNull
FragmentManager
fm
,
@NonNull
Fragment
f
,
@NonNull
Bundle
outState
)
{
Logan
Utils
.
w_action
(
f
.
getClass
().
getSimpleName
()
+
": onFragmentSaveInstanceState"
);
Logan
Manager
.
w_action
(
TAG
,
TAG
+
": onFragmentSaveInstanceState"
);
}
@Override
public
void
onFragmentViewDestroyed
(
@NonNull
FragmentManager
fm
,
@NonNull
Fragment
f
)
{
Logan
Utils
.
w_action
(
f
.
getClass
().
getSimpleName
()
+
": onFragmentViewDestroyed"
);
Logan
Manager
.
w_action
(
TAG
,
TAG
+
": onFragmentViewDestroyed"
);
}
@Override
public
void
onFragmentDestroyed
(
@NonNull
FragmentManager
fm
,
@NonNull
Fragment
f
)
{
Logan
Utils
.
w_action
(
f
.
getClass
().
getSimpleName
()
+
": onFragmentDestroyed"
);
Logan
Manager
.
w_action
(
TAG
,
TAG
+
": onFragmentDestroyed"
);
}
@Override
public
void
onFragmentDetached
(
@NonNull
FragmentManager
fm
,
@NonNull
Fragment
f
)
{
Logan
Utils
.
w_action
(
f
.
getClass
().
getSimpleName
()
+
": onFragmentDetached"
);
Logan
Manager
.
w_action
(
TAG
,
TAG
+
": onFragmentDetached"
);
}
}
base-module/src/main/java/com/gingersoft/gsa/cloud/constans/PrintConstans.java
View file @
117ee100
...
...
@@ -5,7 +5,6 @@ public class PrintConstans {
public
static
final
int
PRINT_TIMEOUT
=
5
*
1000
;
//打印機連接超時時間
//默認打印方式
public
final
static
String
DEFAULT_PRINT_METHOD
=
"default_print"
;
public
final
static
String
IS_LOGIN
=
"is_login"
;
public
final
static
String
LOCAL_PRINT
=
"local_print"
;
public
final
static
String
IP_PRINT
=
"ip_print"
;
public
final
static
String
SETTLEMENT_REPORT
=
"settlement_report"
;
...
...
base-module/src/main/java/com/gingersoft/gsa/cloud/function/XFunctionAction.java
0 → 100644
View file @
117ee100
package
com
.
gingersoft
.
gsa
.
cloud
.
function
;
import
com.gingersoft.gsa.cloud.database.bean.Function
;
import
java.util.List
;
/**
* @author : bin
* @create date: 2020-11-23
* @update date: 2020-11-23
* @description:定義所有功能列表的操作
*/
public
interface
XFunctionAction
{
List
<
Function
>
getFunctionItems
(
String
targetResKey
);
Function
getFunctionItem
(
String
targetResKey
);
void
updateFunctions
(
List
<
Function
>
functions
);
}
base-module/src/main/java/com/gingersoft/gsa/cloud/function/XFunctionItem.java
0 → 100644
View file @
117ee100
package
com
.
gingersoft
.
gsa
.
cloud
.
function
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
/**
* @author : bin
* @create date: 2020-11-21
* @update date: 2020-11-21
* @description:標識單個功能是否顯示,如:
*
* @BindView(R2.id.btn_send_order)
* Button btn_send_order;
*
*/
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Target
(
ElementType
.
FIELD
)
public
@interface
XFunctionItem
{
String
[]
value
();
}
base-module/src/main/java/com/gingersoft/gsa/cloud/function/XFunctionItems.java
0 → 100644
View file @
117ee100
package
com
.
gingersoft
.
gsa
.
cloud
.
function
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
/**
* @author : bin
* @create date: 2020-11-21
* @update date: 2020-11-21
* @description: 標識所在的頁面RecycleView,GridView等功能組數據源,如NewMainActivity頁面下有多個RecycleView
* * 每個RecycleView就是一個{@link XFunctionItems}}
*/
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Target
(
ElementType
.
FIELD
)
public
@interface
XFunctionItems
{
String
[]
value
();
}
base-module/src/main/java/com/gingersoft/gsa/cloud/function/XFunctionManager.java
0 → 100644
View file @
117ee100
package
com
.
gingersoft
.
gsa
.
cloud
.
function
;
import
com.gingersoft.gsa.cloud.account.user.info.UserInfo
;
import
com.gingersoft.gsa.cloud.account.user.state.LogoutState
;
import
com.gingersoft.gsa.cloud.account.user.state.UserState
;
import
com.gingersoft.gsa.cloud.database.bean.Function
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
/**
* @author : bin
* @create date: 2020-11-23
* @update date: 2020-11-23
* @description:
*/
public
class
XFunctionManager
implements
XFunctionAction
{
private
static
XFunctionManager
sXFunctionManager
=
null
;
/**
* 所有功能數據
*/
private
HashMap
<
String
,
Function
>
mFunctionMap
=
new
HashMap
<>();
private
XFunctionManager
()
{
}
public
static
XFunctionManager
newInstance
()
{
if
(
sXFunctionManager
==
null
)
{
sXFunctionManager
=
new
XFunctionManager
();
}
return
sXFunctionManager
;
}
@Override
public
List
<
Function
>
getFunctionItems
(
String
targetResKey
)
{
List
<
Function
>
functions
=
new
ArrayList
<>();
if
(
mFunctionMap
.
size
()
==
0
)
{
return
functions
;
}
Iterator
entries
=
mFunctionMap
.
entrySet
().
iterator
();
while
(
entries
.
hasNext
())
{
Map
.
Entry
entry
=
(
Map
.
Entry
)
entries
.
next
();
String
resUrl
=
(
String
)
entry
.
getKey
();
//獲取具體的功能組,如table/bottom/init下的table/bottom組
String
[]
keyRes
=
resUrl
.
split
(
"/"
);
if
(
keyRes
.
length
>
1
)
{
resUrl
=
resUrl
.
substring
(
0
,
keyRes
[
keyRes
.
length
-
1
].
length
());
if
(
resUrl
.
equals
(
targetResKey
)){
/**
* 匹配功能組成功{@link XFunctionItems}
*/
Function
item
=
(
Function
)
entry
.
getValue
();
functions
.
add
(
item
)
;
}
}
}
return
functions
;
}
@Override
public
Function
getFunctionItem
(
String
targetResKey
)
{
if
(
mFunctionMap
.
size
()
==
0
)
{
return
null
;
}
Iterator
entries
=
mFunctionMap
.
entrySet
().
iterator
();
while
(
entries
.
hasNext
())
{
Map
.
Entry
entry
=
(
Map
.
Entry
)
entries
.
next
();
String
resUrl
=
(
String
)
entry
.
getKey
();
if
(
targetResKey
.
equals
(
resUrl
))
{
/**
* 匹配單個功能成功{@link XFunctionItem}
*/
Function
item
=
(
Function
)
entry
.
getValue
();
return
item
;
}
}
return
null
;
}
@Override
public
void
updateFunctions
(
List
<
Function
>
functions
)
{
if
(
functions
==
null
)
{
return
;
}
if
(
mFunctionMap
.
size
()
>
0
)
{
mFunctionMap
.
clear
();
}
for
(
Function
function
:
functions
)
{
mFunctionMap
.
put
(
function
.
getResUrl
(),
function
);
}
}
}
base-module/src/main/java/com/gingersoft/gsa/cloud/function/XFunctionProcessor.java
0 → 100644
View file @
117ee100
package
com
.
gingersoft
.
gsa
.
cloud
.
function
;
import
com.squareup.javapoet.JavaFile
;
import
com.squareup.javapoet.MethodSpec
;
import
com.squareup.javapoet.TypeSpec
;
import
org.openjdk.javax.annotation.processing.AbstractProcessor
;
import
org.openjdk.javax.annotation.processing.ProcessingEnvironment
;
import
org.openjdk.javax.annotation.processing.Processor
;
import
org.openjdk.javax.annotation.processing.RoundEnvironment
;
import
org.openjdk.javax.lang.model.SourceVersion
;
import
org.openjdk.javax.lang.model.element.Element
;
import
org.openjdk.javax.lang.model.element.ElementKind
;
import
org.openjdk.javax.lang.model.element.Modifier
;
import
org.openjdk.javax.lang.model.element.TypeElement
;
import
java.util.Set
;
/**
* @author : bin
* @create date: 2020-11-22
* @update date: 2020-11-22
* @description:
*/
//@AutoService(Processor.class)
public
class
XFunctionProcessor
extends
AbstractProcessor
{
// 2
@Override
public
synchronized
void
init
(
ProcessingEnvironment
env
)
{
}
// 3
@Override
public
boolean
process
(
Set
<?
extends
TypeElement
>
annoations
,
RoundEnvironment
roundEnv
)
{
// for (Element element : roundEnv.getElementsAnnotatedWith(XFunctionComponent.class)) {
// if (element.getKind() != ElementKind.CLASS) {
// continue;
//// }
/**
* 遍歷所有組件註解
*/
// for (Element element2 : roundEnv.getElementsAnnotatedWith(XFunctionPage.class)) {
// if (element2.getKind() != ElementKind.CLASS) {
// continue;
// }
/**
* 遍歷所有Activity、Fragment、Dialog等頁面註解
*/
// for (Element element3 : roundEnv.getElementsAnnotatedWith(XFunctionItems.class)) {
// if (element3.getKind() != ElementKind.METHOD) {
// continue;
// }
// /**
// * 遍歷所有RecycleView,GridView等功能組註解
// */
//
// }
// for (Element element4 : roundEnv.getElementsAnnotatedWith(XFunctionItem.class)) {
// if (element4.getKind() != ElementKind.METHOD) {
// continue;
// }
// /**
// * 遍歷所有button,textview等單個功能註解
// */
//
// }
// }
// }
return
true
;
}
// 4
@Override
public
Set
<
String
>
getSupportedAnnotationTypes
()
{
return
null
;
}
// 5
@Override
public
SourceVersion
getSupportedSourceVersion
()
{
return
null
;
}
}
base-module/src/main/java/com/gingersoft/gsa/cloud/logan/Logan
Utils
.java
→
base-module/src/main/java/com/gingersoft/gsa/cloud/logan/Logan
Manager
.java
View file @
117ee100
...
...
@@ -6,6 +6,7 @@ import android.os.Looper;
import
android.util.Log
;
import
com.dianping.logan.Logan
;
import
com.dianping.logan.OnLoganProtocolStatus
;
import
com.dianping.logan.SendLogCallback
;
import
com.gingersoft.gsa.cloud.app.GsaCloudApplication
;
import
com.gingersoft.gsa.cloud.base.BuildConfig
;
...
...
@@ -14,6 +15,7 @@ import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils;
import
com.gingersoft.gsa.cloud.config.LoganConfig
;
import
com.jess.arms.utils.ArmsUtils
;
import
com.jess.arms.utils.DeviceUtils
;
import
com.qmuiteam.qmui.util.QMUIDeviceHelper
;
/**
* @author : bin
...
...
@@ -21,61 +23,33 @@ import com.jess.arms.utils.DeviceUtils;
* @update date: 2020-11-21
* @description:
*/
public
class
Logan
Utils
{
public
class
Logan
Manager
{
private
static
final
String
TAG
=
Logan
Utils
.
class
.
getSimpleName
();
private
static
final
String
TAG
=
Logan
Manager
.
class
.
getSimpleName
();
/**
* 上傳日誌到服務器
*/
public
static
void
uploadLog
(
Context
context
,
boolean
showToast
)
{
String
memberId
=
GsaCloudApplication
.
getMemberName
()
+
"_"
+
GsaCloudApplication
.
getMemberId
();
String
deviceId
=
DeviceUtils
.
getIMEI
(
GsaCloudApplication
.
getAppContext
())
!=
null
?
DeviceUtils
.
getIMEI
(
GsaCloudApplication
.
getAppContext
())
:
"redmi"
;
String
AppVersion
=
DeviceUtils
.
getVersionName
(
GsaCloudApplication
.
getAppContext
())
+
"_"
+
DeviceUtils
.
getVersionCode
(
GsaCloudApplication
.
getAppContext
());
String
BuildVersion
=
android
.
os
.
Build
.
VERSION
.
RELEASE
+
""
;
Logan
.
s
(
LoganConfig
.
UPLOAD_LOG_URL
,
TimeUtils
.
getCurrentDate
(
TimeUtils
.
DATE_FORMAT_DATE
),
LoganConfig
.
APP_ID
,
memberId
,
deviceId
,
BuildVersion
,
AppVersion
,
new
SendLogCallback
()
{
@Override
public
void
onLogSendCompleted
(
int
statusCode
,
byte
[]
data
)
{
final
String
resultData
=
data
!=
null
?
new
String
(
data
)
:
""
;
new
Handler
(
Looper
.
getMainLooper
()).
post
(
new
Runnable
()
{
@Override
public
void
run
()
{
if
(
BuildConfig
.
DEBUG
&&
showToast
)
{
if
(
statusCode
==
200
)
{
ArmsUtils
.
makeText
(
context
,
"日誌上傳成功"
);
}
else
{
ArmsUtils
.
makeText
(
context
,
"日誌上傳失敗"
);
}
}
}
});
Log
.
d
(
TAG
,
"upload result, httpCode: "
+
statusCode
+
", details: "
+
resultData
);
}
});
}
public
static
void
w_code
(
String
log
)
{
public
static
void
w_code
(
String
TAG
,
String
log
)
{
Logan
.
w
(
log
,
LoganConfig
.
CODE_LEVLE
);
printLog
(
log
);
printLog
(
TAG
,
log
);
}
public
static
void
w_action
(
String
log
)
{
public
static
void
w_action
(
String
TAG
,
String
log
)
{
Logan
.
w
(
log
,
LoganConfig
.
ACTION_LEVLE
);
printLog
(
TAG
,
log
);
}
public
static
void
w_network
(
String
log
)
{
Logan
.
w
(
log
,
LoganConfig
.
NETWORK_LEVLE
);
//網絡日誌比較重要立即寫入本地
// Logan.f();
printLog
(
log
);
// printLog("Network",
log);
}
public
static
void
w_crash
(
String
log
)
{
Logan
.
w
(
log
,
LoganConfig
.
CRASH_LEVLE
);
//cash日誌比較重要立即寫入本地
Logan
.
f
();
printLog
(
log
);
printLog
(
"AppCrashHandler"
,
log
);
}
public
static
void
w_H5
(
String
log
)
{
...
...
@@ -86,9 +60,39 @@ public class LoganUtils {
Logan
.
w
(
log
,
LoganConfig
.
native_LEVLE
);
}
private
static
void
printLog
(
String
log
)
{
private
static
void
printLog
(
String
TAG
,
String
log
)
{
if
(
BuildConfig
.
DEBUG
)
{
// LogUtil.d(
log);
LogUtil
.
d
(
TAG
,
log
);
}
}
/**
* 上傳日誌到服務器
*/
public
static
void
uploadLog
(
Context
context
,
boolean
showToast
)
{
String
memberId
=
GsaCloudApplication
.
getMemberName
()
+
"_"
+
GsaCloudApplication
.
getMemberId
();
String
deviceId
=
DeviceUtils
.
getDeviceId
(
GsaCloudApplication
.
getAppContext
());
String
AppVersion
=
DeviceUtils
.
getVersionName
(
GsaCloudApplication
.
getAppContext
())
+
"_"
+
DeviceUtils
.
getVersionCode
(
GsaCloudApplication
.
getAppContext
());
String
BuildVersion
=
android
.
os
.
Build
.
VERSION
.
RELEASE
+
""
;
Logan
.
s
(
LoganConfig
.
UPLOAD_LOG_URL
,
TimeUtils
.
getCurrentDate
(
TimeUtils
.
DATE_FORMAT_DATE
),
LoganConfig
.
APP_ID
,
memberId
,
deviceId
,
BuildVersion
,
AppVersion
,
new
SendLogCallback
()
{
@Override
public
void
onLogSendCompleted
(
int
statusCode
,
byte
[]
data
)
{
final
String
resultData
=
data
!=
null
?
new
String
(
data
)
:
""
;
new
Handler
(
Looper
.
getMainLooper
()).
post
(
new
Runnable
()
{
@Override
public
void
run
()
{
if
(
BuildConfig
.
DEBUG
&&
showToast
)
{
if
(
statusCode
==
200
)
{
ArmsUtils
.
makeText
(
context
,
"日誌上傳成功"
);
}
else
{
ArmsUtils
.
makeText
(
context
,
"日誌上傳失敗"
);
}
}
}
});
Log
.
d
(
TAG
,
"upload result, httpCode: "
+
statusCode
+
", details: "
+
resultData
);
}
});
}
}
config.gradle
View file @
117ee100
...
...
@@ -103,6 +103,7 @@ ext {
// "fragmentation-core" : "me.yokeyword:fragmentation-core:${version["fragmentationVersion"]}",
// "fragmentation-swipeback" : "me.yokeyword:fragmentation-swipeback:${version["fragmentationVersion"]}",
"constraintlayout"
:
"androidx.constraintlayout:constraintlayout:1.1.3"
,
//constraintlayout約束佈局
"javapoet"
:
"com.squareup:javapoet:1.11.1"
,
//test
"junit"
:
"junit:junit:4.12"
,
...
...
login-module/src/main/java/com/gingersoft/gsa/cloud/login/mvp/presenter/BaseLoginPresenter.java
View file @
117ee100
...
...
@@ -4,6 +4,7 @@ import android.app.Activity;
import
android.app.Application
;
import
android.content.Intent
;
import
com.gingersoft.gsa.cloud.account.user.UserConstans
;
import
com.gingersoft.gsa.cloud.app.GsaCloudApplication
;
import
com.gingersoft.gsa.cloud.base.utils.gson.GsonUtils
;
import
com.gingersoft.gsa.cloud.base.utils.okhttpUtils.OkHttp3Utils
;
...
...
@@ -97,7 +98,7 @@ public class BaseLoginPresenter<M extends BaseLoginContract.Model, V extends Bas
public
void
onNext
(
@NonNull
LoginBean
info
)
{
if
(
info
.
isSuccess
())
{
GsaCloudApplication
.
isLogin
=
true
;
SPUtils
.
put
(
Print
Constans
.
IS_LOGIN
,
true
);
SPUtils
.
put
(
User
Constans
.
IS_LOGIN
,
true
);
GsaCloudApplication
.
userName
=
info
.
getData
().
getUser
().
getUserName
();
mRootView
.
showMessage
(
"登陸成功"
);
mRootView
.
loginSuccess
(
info
);
...
...
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/MealStandModel.java
View file @
117ee100
...
...
@@ -17,7 +17,6 @@ import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.BaseOrderResponse;
import
com.gingersoft.gsa.cloud.database.bean.Food
;
import
com.gingersoft.gsa.cloud.database.utils.FoodDaoUtils
;
import
com.gingersoft.gsa.cloud.table.mvp.contract.MealStandContract
;
import
com.gingersoft.gsa.cloud.table.mvp.model.bean.FoodReason
;
import
com.gingersoft.gsa.cloud.table.mvp.model.service.MealService
;
import
com.gingersoft.gsa.cloud.table.mvp.model.service.MemberService
;
import
com.gingersoft.gsa.cloud.table.mvp.model.service.OrderPayService
;
...
...
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/function/TableFunctionFactory.java
0 → 100644
View file @
117ee100
package
com
.
gingersoft
.
gsa
.
cloud
.
table
.
mvp
.
model
.
function
;
import
com.gingersoft.gsa.cloud.function.FModule
;
import
com.gingersoft.gsa.cloud.table.R
;
/**
* @author : bin
* @create date: 2020-11-21
* @update date: 2020-11-21
* @description:
*/
public
class
TableFunctionFactory
{
/**
* 餐檯頁
*/
public
static
final
FModule
[]
bottom
=
{
new
FModule
(
"table/bottom/init"
,
R
.
mipmap
.
table_init
,
0
),
new
FModule
(
"table/bottom/initSkyorder"
,
R
.
mipmap
.
table_paper
,
0
),
new
FModule
(
"table/bottom/move"
,
R
.
mipmap
.
table_move
,
0
),
new
FModule
(
"table/bottom/skyorder"
,
0
,
0
),
new
FModule
(
"table/bottom/splite"
,
R
.
mipmap
.
table_splite
,
0
),
new
FModule
(
"table/bottom/parper"
,
R
.
mipmap
.
table_paper
,
0
),
};
}
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/MealStandActivity.java
View file @
117ee100
...
...
@@ -28,7 +28,6 @@ import androidx.annotation.Nullable;
import
androidx.fragment.app.Fragment
;
import
androidx.fragment.app.FragmentManager
;
import
androidx.recyclerview.widget.DefaultItemAnimator
;
import
androidx.recyclerview.widget.DividerItemDecoration
;
import
androidx.recyclerview.widget.GridLayoutManager
;
import
androidx.recyclerview.widget.LinearLayoutManager
;
import
androidx.recyclerview.widget.RecyclerView
;
...
...
@@ -167,6 +166,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
@BindView
(
R2
.
id
.
fl_send_order
)
FrameLayout
fl_send_order
;
@BindView
(
R2
.
id
.
btn_send_order
)
Button
btn_send_order
;
// @BindView(R2.id.btn_send_order_machine_name)
...
...
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/TableActivity.java
View file @
117ee100
...
...
@@ -15,7 +15,7 @@ import android.widget.TextView;
import
com.billy.cc.core.component.CC
;
import
com.gingersoft.gsa.cloud.base.table.bean.TableBean
;
import
com.gingersoft.gsa.cloud.base.utils.log.LogUtil
;
import
com.gingersoft.gsa.cloud.logan.Logan
Utils
;
import
com.gingersoft.gsa.cloud.logan.Logan
Manager
;
import
com.gingersoft.gsa.cloud.table.R
;
import
com.gingersoft.gsa.cloud.table.R2
;
import
com.gingersoft.gsa.cloud.table.di.component.DaggerTableComponent
;
...
...
@@ -224,7 +224,7 @@ public class TableActivity extends BaseFragmentActivity<TablePresenter> implemen
.
addParam
(
"fromPage"
,
2
)
.
build
()
.
call
();
Logan
Utils
.
uploadLog
(
mContext
,
true
);
Logan
Manager
.
uploadLog
(
mContext
,
true
);
}
});
mTopBar
.
setTitle
(
"餐檯模式"
);
...
...
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