Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
门心叼龙
android-mvp-mvvm-flytour
提交
57eb2978
A
android-mvp-mvvm-flytour
项目概览
门心叼龙
/
android-mvp-mvvm-flytour
通知
7
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
6
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
android-mvp-mvvm-flytour
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
6
Issue
6
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
57eb2978
编写于
6月 23, 2019
作者:
门心叼龙
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Network request implementation
上级
68973a79
变更
60
隐藏空白更改
内联
并排
Showing
60 changed file
with
1639 addition
and
197 deletion
+1639
-197
.idea/caches/gradle_models.ser
.idea/caches/gradle_models.ser
+0
-0
.idea/misc.xml
.idea/misc.xml
+1
-1
lib_common/build.gradle
lib_common/build.gradle
+1
-0
lib_fly_api/build.gradle
lib_fly_api/build.gradle
+0
-5
lib_fly_api/src/main/java/com/fly/tour/api/CommonService.java
...fly_api/src/main/java/com/fly/tour/api/CommonService.java
+13
-0
lib_fly_api/src/main/java/com/fly/tour/api/NewsDetailService.java
...api/src/main/java/com/fly/tour/api/NewsDetailService.java
+27
-0
lib_fly_api/src/main/java/com/fly/tour/api/NewsTypeService.java
...y_api/src/main/java/com/fly/tour/api/NewsTypeService.java
+27
-0
lib_fly_api/src/main/java/com/fly/tour/api/RetrofitManager.java
...y_api/src/main/java/com/fly/tour/api/RetrofitManager.java
+107
-0
lib_fly_api/src/main/java/com/fly/tour/api/config/API.java
lib_fly_api/src/main/java/com/fly/tour/api/config/API.java
+14
-0
lib_fly_api/src/main/java/com/fly/tour/api/dto/RespDTO.java
lib_fly_api/src/main/java/com/fly/tour/api/dto/RespDTO.java
+38
-0
lib_fly_api/src/main/java/com/fly/tour/api/http/ExceptionHandler.java
...src/main/java/com/fly/tour/api/http/ExceptionHandler.java
+167
-0
lib_fly_api/src/main/java/com/fly/tour/api/http/ResponseThrowable.java
...rc/main/java/com/fly/tour/api/http/ResponseThrowable.java
+18
-0
lib_fly_api/src/main/java/com/fly/tour/api/http/RxAdapter.java
...ly_api/src/main/java/com/fly/tour/api/http/RxAdapter.java
+114
-0
lib_fly_api/src/main/java/com/fly/tour/api/news/entity/NewsDetail.java
...rc/main/java/com/fly/tour/api/news/entity/NewsDetail.java
+55
-0
lib_fly_api/src/main/java/com/fly/tour/api/newstype/entity/NewsType.java
.../main/java/com/fly/tour/api/newstype/entity/NewsType.java
+76
-0
lib_fly_api/src/main/java/com/fly/tour/api/user/LoginDTO.java
...fly_api/src/main/java/com/fly/tour/api/user/LoginDTO.java
+30
-0
lib_fly_api/src/main/java/com/fly/tour/api/user/entity/User.java
..._api/src/main/java/com/fly/tour/api/user/entity/User.java
+40
-0
lib_fly_api/src/main/java/com/fly/tour/api/util/SSLContextUtil.java
...i/src/main/java/com/fly/tour/api/util/SSLContextUtil.java
+77
-0
module_app/src/main/AndroidManifest.xml
module_app/src/main/AndroidManifest.xml
+1
-1
module_app/src/main/java/com/fly/tour/MyApplication.java
module_app/src/main/java/com/fly/tour/MyApplication.java
+3
-1
module_app/src/main/res/layout/splash_activity.xml
module_app/src/main/res/layout/splash_activity.xml
+6
-0
module_main/src/main/AndroidManifest.xml
module_main/src/main/AndroidManifest.xml
+2
-3
module_main/src/main/java/com/fly/tour/main/SplashActivity.java
..._main/src/main/java/com/fly/tour/main/SplashActivity.java
+39
-7
module_main/src/main/java/com/fly/tour/main/contract/SplashContract.java
.../main/java/com/fly/tour/main/contract/SplashContract.java
+27
-0
module_main/src/main/java/com/fly/tour/main/inject/component/SplashComponent.java
...a/com/fly/tour/main/inject/component/SplashComponent.java
+18
-0
module_main/src/main/java/com/fly/tour/main/inject/module/SplashModule.java
...in/java/com/fly/tour/main/inject/module/SplashModule.java
+32
-0
module_main/src/main/java/com/fly/tour/main/model/SplashModel.java
...in/src/main/java/com/fly/tour/main/model/SplashModel.java
+42
-0
module_main/src/main/java/com/fly/tour/main/presenter/SplashPresenter.java
...ain/java/com/fly/tour/main/presenter/SplashPresenter.java
+63
-0
module_main/src/main/module/AndroidManifest.xml
module_main/src/main/module/AndroidManifest.xml
+4
-2
module_me/src/main/java/com/fly/tour/me/NewsDetailAddActivity.java
.../src/main/java/com/fly/tour/me/NewsDetailAddActivity.java
+16
-10
module_me/src/main/java/com/fly/tour/me/NewsTypeListActivity.java
...e/src/main/java/com/fly/tour/me/NewsTypeListActivity.java
+2
-2
module_me/src/main/java/com/fly/tour/me/adapter/NewsTypeSelectAdapter.java
...n/java/com/fly/tour/me/adapter/NewsTypeSelectAdapter.java
+1
-3
module_me/src/main/java/com/fly/tour/me/adapter/NewsTypeShowAdapter.java
...ain/java/com/fly/tour/me/adapter/NewsTypeShowAdapter.java
+1
-1
module_me/src/main/java/com/fly/tour/me/contract/NewsDetailAddContract.java
.../java/com/fly/tour/me/contract/NewsDetailAddContract.java
+13
-2
module_me/src/main/java/com/fly/tour/me/contract/NewsTypeAddContract.java
...in/java/com/fly/tour/me/contract/NewsTypeAddContract.java
+5
-1
module_me/src/main/java/com/fly/tour/me/contract/NewsTypeListContract.java
...n/java/com/fly/tour/me/contract/NewsTypeListContract.java
+6
-3
module_me/src/main/java/com/fly/tour/me/inject/module/NewsTypeListModule.java
...ava/com/fly/tour/me/inject/module/NewsTypeListModule.java
+1
-1
module_me/src/main/java/com/fly/tour/me/model/NewsDetailAddModel.java
...c/main/java/com/fly/tour/me/model/NewsDetailAddModel.java
+35
-4
module_me/src/main/java/com/fly/tour/me/model/NewsTypeAddModel.java
...src/main/java/com/fly/tour/me/model/NewsTypeAddModel.java
+16
-4
module_me/src/main/java/com/fly/tour/me/model/NewsTypeListModel.java
...rc/main/java/com/fly/tour/me/model/NewsTypeListModel.java
+22
-9
module_me/src/main/java/com/fly/tour/me/presenter/NewsDetailAddPresenter.java
...ava/com/fly/tour/me/presenter/NewsDetailAddPresenter.java
+61
-14
module_me/src/main/java/com/fly/tour/me/presenter/NewsTypeAddPresenter.java
.../java/com/fly/tour/me/presenter/NewsTypeAddPresenter.java
+39
-7
module_me/src/main/java/com/fly/tour/me/presenter/NewsTypeListPresenter.java
...java/com/fly/tour/me/presenter/NewsTypeListPresenter.java
+42
-18
module_me/src/main/java/com/fly/tour/me/view/NewsTypeBottomSelectDialog.java
...java/com/fly/tour/me/view/NewsTypeBottomSelectDialog.java
+14
-5
module_news/src/main/java/com/fly/tour/news/NewsDetailActivity.java
...s/src/main/java/com/fly/tour/news/NewsDetailActivity.java
+3
-3
module_news/src/main/java/com/fly/tour/news/adapter/NewsListAdatper.java
.../main/java/com/fly/tour/news/adapter/NewsListAdatper.java
+1
-2
module_news/src/main/java/com/fly/tour/news/contract/NewsDetailContract.java
...n/java/com/fly/tour/news/contract/NewsDetailContract.java
+5
-2
module_news/src/main/java/com/fly/tour/news/contract/NewsListContract.java
...ain/java/com/fly/tour/news/contract/NewsListContract.java
+5
-4
module_news/src/main/java/com/fly/tour/news/contract/NewsTypeContract.java
...ain/java/com/fly/tour/news/contract/NewsTypeContract.java
+22
-0
module_news/src/main/java/com/fly/tour/news/fragment/MainNewsFragment.java
...ain/java/com/fly/tour/news/fragment/MainNewsFragment.java
+32
-23
module_news/src/main/java/com/fly/tour/news/fragment/NewsListFragment.java
...ain/java/com/fly/tour/news/fragment/NewsListFragment.java
+3
-8
module_news/src/main/java/com/fly/tour/news/inject/component/NewsTypeComponent.java
...com/fly/tour/news/inject/component/NewsTypeComponent.java
+21
-0
module_news/src/main/java/com/fly/tour/news/inject/module/NewsListModule.java
.../java/com/fly/tour/news/inject/module/NewsListModule.java
+1
-2
module_news/src/main/java/com/fly/tour/news/inject/module/NewsTypeModule.java
.../java/com/fly/tour/news/inject/module/NewsTypeModule.java
+33
-0
module_news/src/main/java/com/fly/tour/news/model/NewsDetailModel.java
...rc/main/java/com/fly/tour/news/model/NewsDetailModel.java
+15
-9
module_news/src/main/java/com/fly/tour/news/model/NewsListModel.java
.../src/main/java/com/fly/tour/news/model/NewsListModel.java
+16
-11
module_news/src/main/java/com/fly/tour/news/model/NewsTypeModel.java
.../src/main/java/com/fly/tour/news/model/NewsTypeModel.java
+34
-0
module_news/src/main/java/com/fly/tour/news/presenter/NewsDetailPresenter.java
...java/com/fly/tour/news/presenter/NewsDetailPresenter.java
+27
-10
module_news/src/main/java/com/fly/tour/news/presenter/NewsListPresenter.java
...n/java/com/fly/tour/news/presenter/NewsListPresenter.java
+48
-19
module_news/src/main/java/com/fly/tour/news/presenter/NewsTypePresenter.java
...n/java/com/fly/tour/news/presenter/NewsTypePresenter.java
+57
-0
未找到文件。
.idea/caches/gradle_models.ser
浏览文件 @
57eb2978
无法预览此类型文件
.idea/misc.xml
浏览文件 @
57eb2978
...
...
@@ -35,7 +35,7 @@
</value>
</option>
</component>
<component
name=
"ProjectRootManager"
version=
"2"
languageLevel=
"JDK_1_
7
"
project-jdk-name=
"1.8"
project-jdk-type=
"JavaSDK"
>
<component
name=
"ProjectRootManager"
version=
"2"
languageLevel=
"JDK_1_
8
"
project-jdk-name=
"1.8"
project-jdk-type=
"JavaSDK"
>
<output
url=
"file://$PROJECT_DIR$/build/classes"
/>
</component>
<component
name=
"ProjectType"
>
...
...
lib_common/build.gradle
浏览文件 @
57eb2978
...
...
@@ -36,6 +36,7 @@ android {
dependencies
{
api
fileTree
(
include:
[
'*.jar'
],
dir:
'libs'
)
api
project
(
":lib_refresh_layout"
)
api
project
(
':lib_fly_api'
)
api
project
(
':lib_fly_db'
)
api
deps
.
junit
api
deps
.
testrunner
...
...
lib_fly_api/build.gradle
浏览文件 @
57eb2978
...
...
@@ -9,11 +9,6 @@ android {
testInstrumentationRunner
"android.support.test.runner.AndroidJUnitRunner"
buildConfigField
"String"
,
"FLYHEADER_API_KEY"
,
'"1da11d91-7ade-4da1-855d-24adfe39d173"'
buildConfigField
"String"
,
"FLYHEADER_CORPID"
,
'"1001"'
// 企业编号(corpid)
buildConfigField
"String"
,
"FLYHEADER_VERSION"
,
'"1.0"'
// API协议版本号
buildConfigField
"String"
,
"FLYHEADER_PRODOCT_ID"
,
'"1020"'
// 产品编号
buildConfigField
"String"
,
"URL_HOST"
,
'"https://192.168.31.105/"'
}
buildTypes
{
...
...
lib_fly_api/src/main/java/com/fly/tour/api/CommonService.java
0 → 100644
浏览文件 @
57eb2978
package
com.fly.tour.api
;
import
com.fly.tour.api.dto.RespDTO
;
import
com.fly.tour.api.user.LoginDTO
;
import
io.reactivex.Observable
;
import
retrofit2.http.POST
;
import
retrofit2.http.Query
;
public
interface
CommonService
{
@POST
(
"/user/login"
)
Observable
<
RespDTO
<
LoginDTO
>>
login
(
@Query
(
"username"
)
String
name
,
@Query
(
"password"
)
String
pwd
);
}
lib_fly_api/src/main/java/com/fly/tour/api/NewsDetailService.java
0 → 100644
浏览文件 @
57eb2978
package
com.fly.tour.api
;
import
com.fly.tour.api.config.API
;
import
com.fly.tour.api.dto.RespDTO
;
import
com.fly.tour.api.news.entity.NewsDetail
;
import
com.fly.tour.api.newstype.entity.NewsType
;
import
java.util.List
;
import
io.reactivex.Observable
;
import
retrofit2.http.Body
;
import
retrofit2.http.GET
;
import
retrofit2.http.Header
;
import
retrofit2.http.POST
;
import
retrofit2.http.Path
;
import
retrofit2.http.Query
;
public
interface
NewsDetailService
{
@POST
(
API
.
URL_HOST_NEWS
+
"/newsdetail/query/all"
)
Observable
<
RespDTO
<
List
<
NewsDetail
>>>
getListNewsDetailByType
(
@Header
(
"Authorization"
)
String
tolen
,
@Query
(
"typid"
)
int
typeid
);
@GET
(
API
.
URL_HOST_NEWS
+
"/newsdetail/{id}/detail"
)
Observable
<
RespDTO
<
NewsDetail
>>
getNewsDetailById
(
@Header
(
"Authorization"
)
String
tolen
,
@Path
(
"id"
)
int
id
);
@POST
(
API
.
URL_HOST_NEWS
+
"/newsdetail/save"
)
Observable
<
RespDTO
<
NewsDetail
>>
addNewsDetail
(
@Header
(
"Authorization"
)
String
tolen
,
@Body
NewsDetail
newsDetail
);
}
lib_fly_api/src/main/java/com/fly/tour/api/NewsTypeService.java
0 → 100644
浏览文件 @
57eb2978
package
com.fly.tour.api
;
import
com.fly.tour.api.config.API
;
import
com.fly.tour.api.dto.RespDTO
;
import
com.fly.tour.api.news.entity.NewsDetail
;
import
com.fly.tour.api.newstype.entity.NewsType
;
import
java.util.List
;
import
io.reactivex.Observable
;
import
retrofit2.http.Body
;
import
retrofit2.http.GET
;
import
retrofit2.http.Header
;
import
retrofit2.http.POST
;
import
retrofit2.http.Path
;
public
interface
NewsTypeService
{
@POST
(
API
.
URL_HOST_NEWS
+
"/newstype/query/all"
)
Observable
<
RespDTO
<
List
<
NewsType
>>>
getListNewsType
(
@Header
(
"Authorization"
)
String
tolen
);
@GET
(
API
.
URL_HOST_NEWS
+
"/newstype/{id}/delete"
)
Observable
<
RespDTO
>
deleteNewsTypeById
(
@Header
(
"Authorization"
)
String
tolen
,
@Path
(
"id"
)
int
id
);
@POST
(
API
.
URL_HOST_NEWS
+
"/newstype/save"
)
Observable
<
RespDTO
<
NewsType
>>
addNewsType
(
@Header
(
"Authorization"
)
String
tolen
,
@Body
NewsType
type
);
}
lib_fly_api/src/main/java/com/fly/tour/api/RetrofitManager.java
0 → 100644
浏览文件 @
57eb2978
package
com.fly.tour.api
;
import
android.app.Application
;
import
android.content.Context
;
import
com.fly.tour.api.config.API
;
import
com.fly.tour.api.util.SSLContextUtil
;
import
java.io.IOException
;
import
javax.net.ssl.SSLContext
;
import
javax.net.ssl.SSLSocketFactory
;
import
okhttp3.Interceptor
;
import
okhttp3.OkHttpClient
;
import
okhttp3.Request
;
import
okhttp3.Response
;
import
okhttp3.logging.HttpLoggingInterceptor
;
import
retrofit2.Retrofit
;
import
retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
;
import
retrofit2.converter.gson.GsonConverterFactory
;
/**
* Description: <RetrofitManager><br>
* Author: gxl<br>
* Date: 2019/6/22<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public
class
RetrofitManager
{
public
static
RetrofitManager
retrofitManager
;
public
static
Context
mContext
;
private
Retrofit
mRetrofit
;
public
String
TOKEN
;
OkHttpClient
.
Builder
okHttpBuilder
;
private
RetrofitManager
()
{
HttpLoggingInterceptor
logging
=
new
HttpLoggingInterceptor
();
logging
.
setLevel
(
HttpLoggingInterceptor
.
Level
.
BODY
);
okHttpBuilder
=
new
OkHttpClient
.
Builder
();
okHttpBuilder
.
interceptors
().
add
(
logging
);
SSLContext
sslContext
=
SSLContextUtil
.
getDefaultSLLContext
();
if
(
sslContext
!=
null
)
{
SSLSocketFactory
socketFactory
=
sslContext
.
getSocketFactory
();
okHttpBuilder
.
sslSocketFactory
(
socketFactory
);
}
okHttpBuilder
.
hostnameVerifier
(
SSLContextUtil
.
HOSTNAME_VERIFIER
);
mRetrofit
=
new
Retrofit
.
Builder
().
client
(
okHttpBuilder
.
build
()).
baseUrl
(
API
.
URL_HOST_USER
).
addCallAdapterFactory
(
RxJava2CallAdapterFactory
.
create
()).
addConverterFactory
(
GsonConverterFactory
.
create
()).
build
();
}
public
static
void
init
(
Application
application
)
{
mContext
=
application
;
}
public
static
RetrofitManager
getInstance
()
{
if
(
retrofitManager
==
null
)
{
synchronized
(
RetrofitManager
.
class
)
{
if
(
retrofitManager
==
null
)
{
retrofitManager
=
new
RetrofitManager
();
}
}
}
return
retrofitManager
;
}
/**
* 创建一个公共服务
*
* @return
*/
public
CommonService
getCommonService
()
{
return
mRetrofit
.
create
(
CommonService
.
class
);
}
/**
* 创建一个新闻类型服务
*
* @return
*/
public
NewsTypeService
getNewsTypeService
()
{
return
mRetrofit
.
create
(
NewsTypeService
.
class
);
}
/**
* 创建一个新闻详情服务
*
* @return
*/
public
NewsDetailService
getNewsDetailService
()
{
return
mRetrofit
.
create
(
NewsDetailService
.
class
);
}
public
void
addToken
(
final
String
token
)
{
if
(
okHttpBuilder
!=
null
)
okHttpBuilder
.
addInterceptor
(
new
Interceptor
()
{
@Override
public
Response
intercept
(
Chain
chain
)
throws
IOException
{
Request
original
=
chain
.
request
();
Request
.
Builder
requestBuilder
=
original
.
newBuilder
()
.
header
(
"Authorization"
,
"Bearer "
+
token
);
Request
request
=
requestBuilder
.
build
();
return
chain
.
proceed
(
request
);
}
});
}
}
\ No newline at end of file
lib_fly_api/src/main/java/com/fly/tour/api/config/API.java
0 → 100644
浏览文件 @
57eb2978
package
com.fly.tour.api.config
;
/**
* Description: <API><br>
* Author: gxl<br>
* Date: 2019/6/23<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public
class
API
{
public
static
final
String
URL_HOST_USER
=
"http://192.168.31.105:8762"
;
public
static
final
String
URL_HOST_NEWS
=
"http://192.168.31.105:8767"
;
}
lib_fly_api/src/main/java/com/fly/tour/api/dto/RespDTO.java
0 → 100644
浏览文件 @
57eb2978
package
com.fly.tour.api.dto
;
import
com.google.gson.Gson
;
import
com.google.gson.internal.
$Gson$Types
;
import
java.io.Serializable
;
import
java.lang.reflect.Type
;
/**
* Description: <RespDTO><br>
* Author: gxl<br>
* Date: 2019/2/19<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public
class
RespDTO
<
T
>
implements
Serializable
{
public
int
code
;
public
String
error
=
""
;
public
T
data
;
@Override
public
String
toString
()
{
return
"RespDTO{"
+
"code="
+
code
+
", error='"
+
error
+
'\''
+
", data="
+
data
+
'}'
;
}
public
void
setCode
(
int
code
)
{
this
.
code
=
code
;
}
public
void
setError
(
String
error
)
{
this
.
error
=
error
;
}
}
lib_fly_api/src/main/java/com/fly/tour/api/http/ExceptionHandler.java
0 → 100644
浏览文件 @
57eb2978
package
com.fly.tour.api.http
;
import
android.net.ParseException
;
import
android.widget.Toast
;
import
com.fly.tour.api.RetrofitManager
;
import
com.google.gson.JsonParseException
;
import
com.google.gson.stream.MalformedJsonException
;
import
org.apache.http.conn.ConnectTimeoutException
;
import
org.json.JSONException
;
import
java.net.ConnectException
;
import
retrofit2.HttpException
;
/**
* Description: <ExceptionHandler><br>
* Author: gxl<br>
* Date: 2019/3/18<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public
class
ExceptionHandler
{
public
static
ResponseThrowable
handleException
(
Throwable
e
)
{
ResponseThrowable
ex
;
if
(
e
instanceof
HttpException
)
{
HttpException
httpException
=
(
HttpException
)
e
;
ex
=
new
ResponseThrowable
(
e
,
SYSTEM_ERROR
.
HTTP_ERROR
);
switch
(
httpException
.
code
())
{
case
SYSTEM_ERROR
.
UNAUTHORIZED
:
ex
.
message
=
"操作未授权"
;
ex
.
code
=
SYSTEM_ERROR
.
UNAUTHORIZED
;
Toast
.
makeText
(
RetrofitManager
.
mContext
,
"您的登录已失效,请重新登录"
,
Toast
.
LENGTH_SHORT
).
show
();
break
;
case
SYSTEM_ERROR
.
FORBIDDEN
:
ex
.
message
=
"请求被拒绝"
;
break
;
case
SYSTEM_ERROR
.
NOT_FOUND
:
ex
.
message
=
"资源不存在"
;
break
;
case
SYSTEM_ERROR
.
REQUEST_TIMEOUT
:
ex
.
message
=
"服务器执行超时"
;
break
;
case
SYSTEM_ERROR
.
INTERNAL_SERVER_ERROR
:
ex
.
message
=
"服务器内部错误"
;
break
;
case
SYSTEM_ERROR
.
SERVICE_UNAVAILABLE
:
ex
.
message
=
"服务器不可用"
;
break
;
default
:
ex
.
message
=
"网络错误"
;
break
;
}
return
ex
;
}
else
if
(
e
instanceof
JsonParseException
||
e
instanceof
JSONException
||
e
instanceof
ParseException
||
e
instanceof
MalformedJsonException
)
{
ex
=
new
ResponseThrowable
(
e
,
SYSTEM_ERROR
.
PARSE_ERROR
);
ex
.
message
=
"解析错误"
;
return
ex
;
}
else
if
(
e
instanceof
ConnectException
)
{
ex
=
new
ResponseThrowable
(
e
,
SYSTEM_ERROR
.
NETWORD_ERROR
);
ex
.
message
=
"连接失败"
;
return
ex
;
}
else
if
(
e
instanceof
javax
.
net
.
ssl
.
SSLException
)
{
ex
=
new
ResponseThrowable
(
e
,
SYSTEM_ERROR
.
SSL_ERROR
);
ex
.
message
=
"证书验证失败"
;
return
ex
;
}
else
if
(
e
instanceof
ConnectTimeoutException
)
{
ex
=
new
ResponseThrowable
(
e
,
SYSTEM_ERROR
.
TIMEOUT_ERROR
);
ex
.
message
=
"连接超时"
;
return
ex
;
}
else
if
(
e
instanceof
java
.
net
.
SocketTimeoutException
)
{
ex
=
new
ResponseThrowable
(
e
,
SYSTEM_ERROR
.
TIMEOUT_ERROR
);
ex
.
message
=
"连接超时"
;
return
ex
;
}
else
if
(
e
instanceof
java
.
net
.
UnknownHostException
)
{
ex
=
new
ResponseThrowable
(
e
,
SYSTEM_ERROR
.
TIMEOUT_ERROR
);
ex
.
message
=
"主机地址未知"
;
return
ex
;
}
else
{
ex
=
new
ResponseThrowable
(
e
,
SYSTEM_ERROR
.
UNKNOWN
);
ex
.
message
=
"未知错误"
;
return
ex
;
}
}
public
class
SYSTEM_ERROR
{
public
static
final
int
UNAUTHORIZED
=
401
;
public
static
final
int
FORBIDDEN
=
403
;
public
static
final
int
NOT_FOUND
=
404
;
public
static
final
int
REQUEST_TIMEOUT
=
408
;
public
static
final
int
INTERNAL_SERVER_ERROR
=
500
;
public
static
final
int
SERVICE_UNAVAILABLE
=
503
;
/**
* 未知错误
*/
public
static
final
int
UNKNOWN
=
1000
;
/**
* 解析错误
*/
public
static
final
int
PARSE_ERROR
=
1001
;
/**
SSL_ERROR * 网络错误
*/
public
static
final
int
NETWORD_ERROR
=
1002
;
/**
* 协议出错
*/
public
static
final
int
HTTP_ERROR
=
1003
;
/**
* 证书出错
*/
public
static
final
int
SSL_ERROR
=
1005
;
/**
* 连接超时
*/
public
static
final
int
TIMEOUT_ERROR
=
1006
;
}
public
interface
APP_ERROR
{
public
static
final
int
SUCC
=
0
;
// 处理成功,无错误
public
static
final
int
INTERFACE_PROCESSING_TIMEOUT
=
1
;
// 接口处理超时
public
static
final
int
INTERFACE_INTERNAL_ERROR
=
2
;
// 接口内部错误
public
static
final
int
PARAMETERS_EMPTY
=
3
;
// 必需的参数为空
public
static
final
int
AUTHENTICATION_FAILED
=
4
;
// 鉴权失败,用户没有使用该项功能(服务)的权限。
public
static
final
int
PARAMETERS_ERROR
=
5
;
// 参数错误
/**
* 企业激活码无效
*/
int
CODE_ACTIVECODE_INVALIDATE
=
100201
;
/**
* 激活码已被激活
*/
int
CODE_ACTIVECODE_ACTIVED
=
100202
;
/**
* 用户不存在
*/
int
CODE_USER_NOT_EXIST
=
110401
;
/**
* 用户被禁用
*/
int
CODE_USER_DISABLE
=
110203
;
/**
* 盒子号无效
*/
int
INVALIDATE_BOX_CODE
=
110907
;
/**
* 盒子号已绑定在当前企业下的其他车辆上
*/
int
BOX_BINDED_VEHICLE
=
110908
;
/**
* 验证码无效
*/
int
AUTH_CODE_INVALIDATE
=
110801
;
/**
* 企业可绑定盒子已达上限,请联系客服,升级权限
*/
int
BIND_BOX_LIMIT
=
110802
;
/**
* 授权车辆不允许修改此信息。
*/
int
VHEICLE_NOT_EDIT_CODE
=
110904
;
}
}
lib_fly_api/src/main/java/com/fly/tour/api/http/ResponseThrowable.java
0 → 100644
浏览文件 @
57eb2978
package
com.fly.tour.api.http
;
/**
* Description: <ResponseThrowable><br>
* Author: gxl<br>
* Date: 2019/3/18<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public
class
ResponseThrowable
extends
Exception
{
public
int
code
;
public
String
message
;
public
ResponseThrowable
(
Throwable
throwable
,
int
code
)
{
super
(
throwable
);
this
.
code
=
code
;
}
}
lib_fly_api/src/main/java/com/fly/tour/api/http/RxAdapter.java
0 → 100644
浏览文件 @
57eb2978
package
com.fly.tour.api.http
;
import
android.widget.Toast
;
import
com.fly.tour.api.RetrofitManager
;
import
com.fly.tour.api.dto.RespDTO
;
import
com.trello.rxlifecycle2.LifecycleProvider
;
import
com.trello.rxlifecycle2.LifecycleTransformer
;
import
com.trello.rxlifecycle2.android.ActivityEvent
;
import
io.reactivex.Observable
;
import
io.reactivex.ObservableSource
;
import
io.reactivex.ObservableTransformer
;
import
io.reactivex.Single
;
import
io.reactivex.SingleSource
;
import
io.reactivex.SingleTransformer
;
import
io.reactivex.android.schedulers.AndroidSchedulers
;
import
io.reactivex.annotations.NonNull
;
import
io.reactivex.functions.Function
;
import
io.reactivex.schedulers.Schedulers
;
/**
* Description: <Rx适配器><br>
* Author: gxl<br>
* Date: 2019/3/18<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public
class
RxAdapter
{
/**
* 生命周期绑定
*
* @param lifecycle Activity
*/
public
static
<
T
>
LifecycleTransformer
<
T
>
bindUntilEvent
(
@NonNull
LifecycleProvider
lifecycle
)
{
if
(
lifecycle
!=
null
)
{
return
lifecycle
.
bindUntilEvent
(
ActivityEvent
.
DESTROY
);
}
else
{
throw
new
IllegalArgumentException
(
"context not the LifecycleProvider type"
);
}
}
/**
* 线程调度器
*/
public
static
SingleTransformer
singleSchedulersTransformer
()
{
return
new
SingleTransformer
()
{
@Override
public
SingleSource
apply
(
Single
upstream
)
{
return
upstream
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
());
}
};
}
public
static
SingleTransformer
singleExceptionTransformer
()
{
return
new
SingleTransformer
()
{
@Override
public
SingleSource
apply
(
Single
observable
)
{
return
observable
.
map
(
new
HandleFuc
())
//这里可以取出BaseResponse中的Result
.
onErrorResumeNext
(
new
HttpResponseFunc
());
}
};
}
/**
* 线程调度器
*/
public
static
ObservableTransformer
schedulersTransformer
()
{
return
new
ObservableTransformer
()
{
@Override
public
ObservableSource
apply
(
Observable
upstream
)
{
return
upstream
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
());
}
};
}
public
static
ObservableTransformer
exceptionTransformer
()
{
return
new
ObservableTransformer
()
{
@Override
public
ObservableSource
apply
(
Observable
observable
)
{
return
observable
.
map
(
new
HandleFuc
())
//这里可以取出BaseResponse中的Result
.
onErrorResumeNext
(
new
HttpResponseFunc
());
}
};
}
private
static
class
HttpResponseFunc
<
T
>
implements
Function
<
Throwable
,
Observable
<
T
>>
{
@Override
public
Observable
<
T
>
apply
(
Throwable
t
)
{
ResponseThrowable
exception
=
ExceptionHandler
.
handleException
(
t
);
if
(
exception
.
code
==
ExceptionHandler
.
SYSTEM_ERROR
.
TIMEOUT_ERROR
){
Toast
.
makeText
(
RetrofitManager
.
mContext
,
"网络不给力哦!"
,
Toast
.
LENGTH_SHORT
).
show
();
}
return
Observable
.
error
(
exception
);
}
}
private
static
class
HandleFuc
implements
Function
<
Object
,
Object
>
{
@Override
public
Object
apply
(
Object
o
)
throws
Exception
{
if
(
o
instanceof
RespDTO
){
RespDTO
respDTO
=
(
RespDTO
)
o
;
if
(
respDTO
.
code
!=
ExceptionHandler
.
APP_ERROR
.
SUCC
){
Toast
.
makeText
(
RetrofitManager
.
mContext
,
respDTO
.
error
,
Toast
.
LENGTH_SHORT
).
show
();
}
}
return
o
;
}
}
}
lib_fly_api/src/main/java/com/fly/tour/api/news/entity/NewsDetail.java
0 → 100644
浏览文件 @
57eb2978
package
com.fly.tour.api.news.entity
;
/**
* Description: <NewsDetail><br>
* Author: gxl<br>
* Date: 2019/5/27<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public
class
NewsDetail
{
public
int
id
;
public
int
typeid
;
public
String
title
;
public
String
content
;
public
String
addtime
;
public
int
getId
()
{
return
id
;
}
public
void
setId
(
int
id
)
{
this
.
id
=
id
;
}
public
int
getTypeid
()
{
return
typeid
;
}
public
void
setTypeid
(
int
typeid
)
{
this
.
typeid
=
typeid
;
}
public
String
getTitle
()
{
return
title
;
}
public
void
setTitle
(
String
title
)
{
this
.
title
=
title
;
}
public
String
getContent
()
{
return
content
;
}
public
void
setContent
(
String
content
)
{
this
.
content
=
content
;
}
public
String
getAddtime
()
{
return
addtime
;
}
public
void
setAddtime
(
String
addtime
)
{
this
.
addtime
=
addtime
;
}
}
lib_fly_api/src/main/java/com/fly/tour/api/newstype/entity/NewsType.java
0 → 100644
浏览文件 @
57eb2978
package
com.fly.tour.api.newstype.entity
;
import
android.os.Parcel
;
import
android.os.Parcelable
;
import
java.util.Date
;
/**
* Description: <NewsType><br>
* Author: gxl<br>
* Date: 2019/5/27<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public
class
NewsType
implements
Parcelable
{
public
Integer
id
;
public
String
typename
;
public
String
addtime
;
public
Integer
getId
()
{
return
id
;
}
public
void
setId
(
Integer
id
)
{
this
.
id
=
id
;
}
public
String
getTypename
()
{
return
typename
;
}
public
void
setTypename
(
String
typename
)
{
this
.
typename
=
typename
;
}
public
String
getAddtime
()
{
return
addtime
;
}
public
void
setAddtime
(
String
addtime
)
{
this
.
addtime
=
addtime
;
}
@Override
public
int
describeContents
()
{
return
0
;
}
@Override
public
void
writeToParcel
(
Parcel
dest
,
int
flags
)
{
dest
.
writeValue
(
this
.
id
);
dest
.
writeString
(
this
.
typename
);
dest
.
writeString
(
this
.
addtime
);
}
public
NewsType
()
{
}
protected
NewsType
(
Parcel
in
)
{
this
.
id
=
(
Integer
)
in
.
readValue
(
Integer
.
class
.
getClassLoader
());
this
.
typename
=
in
.
readString
();
this
.
addtime
=
in
.
readString
();
}
public
static
final
Creator
<
NewsType
>
CREATOR
=
new
Creator
<
NewsType
>()
{
@Override
public
NewsType
createFromParcel
(
Parcel
source
)
{
return
new
NewsType
(
source
);
}
@Override
public
NewsType
[]
newArray
(
int
size
)
{
return
new
NewsType
[
size
];
}
};
}
lib_fly_api/src/main/java/com/fly/tour/api/user/LoginDTO.java
0 → 100644
浏览文件 @
57eb2978
package
com.fly.tour.api.user
;
import
com.fly.tour.api.user.entity.User
;
/**
* Description: <LoginDTO><br>
* Author: 门心叼龙<br>
* Date: 2019/2/19<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public
class
LoginDTO
{
private
User
user
;
private
String
token
;
public
User
getUser
()
{
return
user
;
}
public
void
setUser
(
User
user
)
{
this
.
user
=
user
;
}
public
String
getToken
()
{
return
token
;
}
public
void
setToken
(
String
token
)
{
this
.
token
=
token
;
}
}
lib_fly_api/src/main/java/com/fly/tour/api/user/entity/User.java
0 → 100644
浏览文件 @
57eb2978
package
com.fly.tour.api.user.entity
;
import
java.io.Serializable
;
/**
* Description: <User><br>
* Author: 门心叼龙<br>
* Date: 2019/2/19<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public
class
User
implements
Serializable
{
private
Long
id
;
private
String
username
;
private
String
password
;
public
Long
getId
()
{
return
id
;
}
public
void
setId
(
Long
id
)
{
this
.
id
=
id
;
}
public
String
getUsername
()
{
return
username
;
}
public
void
setUsername
(
String
username
)
{
this
.
username
=
username
;
}
public
String
getPassword
()
{
return
password
;
}
public
void
setPassword
(
String
password
)
{
this
.
password
=
password
;
}
}
lib_fly_api/src/main/java/com/fly/tour/api/util/SSLContextUtil.java
0 → 100644
浏览文件 @
57eb2978
/*
* Copyright 2015 Yan Zhenjie
*
* 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.fly.tour.api.util
;
import
java.security.SecureRandom
;
import
java.security.cert.CertificateException
;
import
java.security.cert.X509Certificate
;
import
javax.net.ssl.HostnameVerifier
;
import
javax.net.ssl.SSLContext
;
import
javax.net.ssl.SSLSession
;
import
javax.net.ssl.TrustManager
;
import
javax.net.ssl.X509TrustManager
;
/**
* https 证书工具
*
* @author Yan Zhenjie.
*/
public
class
SSLContextUtil
{
/**
* 如果不需要https证书.(NoHttp已经修补了系统的SecureRandom的bug)。
*/
public
static
SSLContext
getDefaultSLLContext
()
{
SSLContext
sslContext
=
null
;
try
{
sslContext
=
SSLContext
.
getInstance
(
"TLS"
);
sslContext
.
init
(
null
,
new
TrustManager
[]
{
trustManagers
},
new
SecureRandom
());
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
sslContext
;
}
/**
* 信任管理器
*/
private
static
TrustManager
trustManagers
=
new
X509TrustManager
()
{
@Override
public
void
checkClientTrusted
(
X509Certificate
[]
chain
,
String
authType
)
throws
CertificateException
{}
@Override
public
void
checkServerTrusted
(
X509Certificate
[]
chain
,
String
authType
)
throws
CertificateException
{
}
@Override
public
X509Certificate
[]
getAcceptedIssuers
()
{
return
new
X509Certificate
[
0
];
}
};
/**
* 域名验证
*/
public
static
final
HostnameVerifier
HOSTNAME_VERIFIER
=
new
HostnameVerifier
()
{
public
boolean
verify
(
String
hostname
,
SSLSession
session
)
{
return
true
;
}
};
}
module_app/src/main/AndroidManifest.xml
浏览文件 @
57eb2978
...
...
@@ -10,7 +10,7 @@
android:supportsRtl=
"true"
android:theme=
"@style/AppTheme"
android:name=
".MyApplication"
>
android:usesCleartextTraffic=
"true"
>
</application>
...
...
module_app/src/main/java/com/fly/tour/MyApplication.java
浏览文件 @
57eb2978
package
com.fly.tour
;
import
com.fly.tour.api.RetrofitManager
;
import
com.fly.tour.common.BaseApplication
;
import
com.fly.tour.common.manager.NewsDBManager
;
...
...
@@ -14,6 +15,7 @@ public class MyApplication extends BaseApplication {
@Override
public
void
onCreate
()
{
super
.
onCreate
();
NewsDBManager
.
getInstance
(
this
).
initNewsDB
();
//NewsDBManager.getInstance(this).initNewsDB();
RetrofitManager
.
init
(
this
);
}
}
module_app/src/main/res/layout/splash_activity.xml
0 → 100644
浏览文件 @
57eb2978
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
</LinearLayout>
module_main/src/main/AndroidManifest.xml
浏览文件 @
57eb2978
...
...
@@ -10,14 +10,13 @@
android:supportsRtl=
"true"
android:theme=
"@style/AppTheme"
>
<activity
android:name=
".MainActivity"
>
</activity>
<activity
android:name=
".SplashActivity"
>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<activity
android:name=
".SplashActivity"
>
</activity>
</application>
</manifest>
\ No newline at end of file
module_main/src/main/java/com/fly/tour/main/SplashActivity.java
浏览文件 @
57eb2978
package
com.fly.tour.main
;
import
android.support.v7.app.AppCompatActivity
;
import
android.os.Bundle
;
import
android.content.Intent
;
public
class
SplashActivity
extends
AppCompatActivity
{
import
com.fly.tour.common.base.BaseMvpActivity
;
import
com.fly.tour.main.contract.SplashContract
;
import
com.fly.tour.main.inject.component.DaggerSplashComponent
;
import
com.fly.tour.main.inject.module.SplashModule
;
import
com.fly.tour.main.model.SplashModel
;
import
com.fly.tour.main.presenter.SplashPresenter
;
/**
* Description: <SplashActivity><br>
* Author: gxl<br>
* Date: 2019/6/22<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public
class
SplashActivity
extends
BaseMvpActivity
<
SplashModel
,
SplashContract
.
View
,
SplashPresenter
>
implements
SplashContract
.
View
{
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
activity_splash
);
public
void
injectPresenter
()
{
DaggerSplashComponent
.
builder
().
splashModule
(
new
SplashModule
(
this
)).
build
().
inject
(
this
);
}
}
@Override
public
int
onBindLayout
()
{
return
R
.
layout
.
activity_splash
;
}
@Override
public
void
initView
()
{
}
@Override
public
void
initData
()
{
mPresenter
.
login
();
}
@Override
public
void
startMainActivity
()
{
startActivity
(
new
Intent
(
this
,
MainActivity
.
class
));
finish
();
}
}
\ No newline at end of file
module_main/src/main/java/com/fly/tour/main/contract/SplashContract.java
0 → 100644
浏览文件 @
57eb2978
package
com.fly.tour.main.contract
;
import
com.fly.tour.api.dto.RespDTO
;
import
com.fly.tour.api.user.LoginDTO
;
import
com.fly.tour.common.mvp.BaseView
;
import
io.reactivex.Observable
;
/**
* Description: <SplashContract><br>
* Author: gxl<br>
* Date: 2019/6/22<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public
interface
SplashContract
{
interface
Presenter
{
void
login
();
}
interface
View
extends
BaseView
{
void
startMainActivity
();
}
interface
Model
{
Observable
<
RespDTO
<
LoginDTO
>>
login
(
String
username
,
String
password
);
}
}
\ No newline at end of file
module_main/src/main/java/com/fly/tour/main/inject/component/SplashComponent.java
0 → 100644
浏览文件 @
57eb2978
package
com.fly.tour.main.inject.component
;
import
com.fly.tour.main.SplashActivity
;
import
com.fly.tour.main.inject.module.SplashModule
;
import
dagger.Component
;
/**
* Description: <SplashComponent><br>
* Author: gxl<br>
* Date: 2019/5/31<br>
* Version: V1.0.0<br>
* Update: <br>
*/
@Component
(
modules
=
{
SplashModule
.
class
})
public
interface
SplashComponent
{
void
inject
(
SplashActivity
activity
);
}
module_main/src/main/java/com/fly/tour/main/inject/module/SplashModule.java
0 → 100644
浏览文件 @
57eb2978
package
com.fly.tour.main.inject.module
;
import
android.content.Context
;
import
com.fly.tour.main.contract.SplashContract
;
import
dagger.Module
;
import
dagger.Provides
;
/**
* Description: <NewsDetailModule><br>
* Author: gxl<br>
* Date: 2019/5/31<br>
* Version: V1.0.0<br>
* Update: <br>
*/
@Module
public
class
SplashModule
{
private
SplashContract
.
View
mView
;
public
SplashModule
(
SplashContract
.
View
view
)
{
this
.
mView
=
view
;
}
@Provides
public
Context
providerContext
(){
return
mView
.
getContext
();
}
@Provides
public
SplashContract
.
View
providerNewsDetailView
(){
return
mView
;
}
}
module_main/src/main/java/com/fly/tour/main/model/SplashModel.java
0 → 100644
浏览文件 @
57eb2978
package
com.fly.tour.main.model
;
import
android.content.Context
;
import
com.fly.tour.api.CommonService
;
import
com.fly.tour.api.RetrofitManager
;
import
com.fly.tour.api.dto.RespDTO
;
import
com.fly.tour.api.http.RxAdapter
;
import
com.fly.tour.api.user.LoginDTO
;
import
com.fly.tour.common.mvp.BaseModel
;
import
com.fly.tour.main.contract.SplashContract
;
import
javax.inject.Inject
;
import
io.reactivex.Observable
;
import
io.reactivex.functions.Function
;
import
okhttp3.ResponseBody
;
/**
* Description: <SplashModel><br>
* Author: gxl<br>
* Date: 2019/6/22<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public
class
SplashModel
extends
BaseModel
implements
SplashContract
.
Model
{
private
CommonService
mCommonService
;
@Inject
public
SplashModel
(
Context
context
)
{
super
(
context
);
mCommonService
=
RetrofitManager
.
getInstance
().
getCommonService
();
}
@Override
public
Observable
<
RespDTO
<
LoginDTO
>>
login
(
String
username
,
String
password
)
{
return
mCommonService
.
login
(
username
,
password
)
.
compose
(
RxAdapter
.
bindUntilEvent
(
getLifecycle
()))
.
compose
(
RxAdapter
.
schedulersTransformer
())
.
compose
(
RxAdapter
.
exceptionTransformer
());
}
}
\ No newline at end of file
module_main/src/main/java/com/fly/tour/main/presenter/SplashPresenter.java
0 → 100644
浏览文件 @
57eb2978
package
com.fly.tour.main.presenter
;
import
android.content.Context
;
import
android.util.Log
;
import
com.fly.tour.api.RetrofitManager
;
import
com.fly.tour.api.config.API
;
import
com.fly.tour.api.dto.RespDTO
;
import
com.fly.tour.api.http.ExceptionHandler
;
import
com.fly.tour.api.user.LoginDTO
;
import
com.fly.tour.common.mvp.BasePresenter
;
import
com.fly.tour.main.contract.SplashContract
;
import
com.fly.tour.main.model.SplashModel
;
import
javax.inject.Inject
;
import
io.reactivex.Observer
;
import
io.reactivex.disposables.Disposable
;
/**
* Description: <SplashPresenter><br>
* Author: gxl<br>
* Date: 2019/6/22<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public
class
SplashPresenter
extends
BasePresenter
<
SplashModel
,
SplashContract
.
View
>
implements
SplashContract
.
Presenter
{
public
static
String
TAG
=
SplashPresenter
.
class
.
getSimpleName
();
@Inject
public
SplashPresenter
(
Context
context
,
SplashContract
.
View
view
,
SplashModel
model
)
{
super
(
context
,
view
,
model
);
}
@Override
public
void
login
()
{
mModel
.
login
(
"gxl"
,
"123456"
).
subscribe
(
new
Observer
<
RespDTO
<
LoginDTO
>>()
{
@Override
public
void
onSubscribe
(
Disposable
d
)
{
}
@Override
public
void
onNext
(
RespDTO
<
LoginDTO
>
loginDTORespDTO
)
{
if
(
loginDTORespDTO
.
code
==
ExceptionHandler
.
APP_ERROR
.
SUCC
){
Log
.
v
(
TAG
,
"tolen:"
+
loginDTORespDTO
.
data
.
getToken
());
RetrofitManager
.
getInstance
().
TOKEN
=
"Bearer "
+
loginDTORespDTO
.
data
.
getToken
();
}
else
{
Log
.
v
(
TAG
,
"error:"
+
loginDTORespDTO
.
error
);
}
}
@Override
public
void
onError
(
Throwable
e
)
{
mView
.
startMainActivity
();
}
@Override
public
void
onComplete
()
{
mView
.
startMainActivity
();
}
});
}
}
\ No newline at end of file
module_main/src/main/module/AndroidManifest.xml
浏览文件 @
57eb2978
...
...
@@ -9,9 +9,11 @@
android:supportsRtl=
"true"
android:theme=
"@style/AppTheme"
>
<activity
android:name=
".MainActivity"
>
</activity>
<activity
android:name=
".SplashActivity"
>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
</application>
...
...
module_me/src/main/java/com/fly/tour/me/NewsDetailAddActivity.java
浏览文件 @
57eb2978
...
...
@@ -5,11 +5,11 @@ import android.view.View;
import
android.widget.Button
;
import
android.widget.EditText
;
import
com.fly.tour.api.newstype.entity.NewsType
;
import
com.fly.tour.common.base.BaseAdapter
;
import
com.fly.tour.common.base.BaseMvpActivity
;
import
com.fly.tour.common.util.ToastUtil
;
import
com.fly.tour.common.view.SettingBarView
;
import
com.fly.tour.db.entity.NewsType
;
import
com.fly.tour.me.contract.NewsDetailAddContract
;
import
com.fly.tour.me.inject.component.DaggerNewsDetailAddComponent
;
import
com.fly.tour.me.inject.module.NewsDetailAddModule
;
...
...
@@ -17,6 +17,8 @@ import com.fly.tour.me.model.NewsDetailAddModel;
import
com.fly.tour.me.presenter.NewsDetailAddPresenter
;
import
com.fly.tour.me.view.NewsTypeBottomSelectDialog
;
import
java.util.List
;
public
class
NewsDetailAddActivity
extends
BaseMvpActivity
<
NewsDetailAddModel
,
NewsDetailAddContract
.
View
,
NewsDetailAddPresenter
>
implements
NewsDetailAddContract
.
View
{
private
SettingBarView
mViewSetNewsType
;
...
...
@@ -47,15 +49,7 @@ public class NewsDetailAddActivity extends BaseMvpActivity<NewsDetailAddModel,Ne
mViewSetNewsType
.
setOnClickSettingBarViewListener
(
new
SettingBarView
.
OnClickSettingBarViewListener
()
{
@Override
public
void
onClick
()
{
NewsTypeBottomSelectDialog
newsTypeBottomSelectDialog
=
NewsTypeBottomSelectDialog
.
newInstance
();
newsTypeBottomSelectDialog
.
setItemClickListener
(
new
BaseAdapter
.
OnItemClickListener
<
NewsType
>()
{
@Override
public
void
onItemClick
(
NewsType
newsType
,
int
position
)
{
mNewsType
=
newsType
;
mViewSetNewsType
.
setContent
(
newsType
.
getTypename
());
}
});
newsTypeBottomSelectDialog
.
show
(
getSupportFragmentManager
(),
"dialog"
);
mPresenter
.
getListNewsType
();
}
});
mBtnSaveNewsConent
.
setOnClickListener
(
new
View
.
OnClickListener
(){
...
...
@@ -89,4 +83,16 @@ public class NewsDetailAddActivity extends BaseMvpActivity<NewsDetailAddModel,Ne
DaggerNewsDetailAddComponent
.
builder
().
newsDetailAddModule
(
new
NewsDetailAddModule
(
this
)).
build
().
inject
(
this
);
}
@Override
public
void
showNewsType
(
List
<
NewsType
>
typeList
)
{
NewsTypeBottomSelectDialog
newsTypeBottomSelectDialog
=
NewsTypeBottomSelectDialog
.
newInstance
(
typeList
);
newsTypeBottomSelectDialog
.
setItemClickListener
(
new
BaseAdapter
.
OnItemClickListener
<
NewsType
>()
{
@Override
public
void
onItemClick
(
NewsType
newsType
,
int
position
)
{
mNewsType
=
newsType
;
mViewSetNewsType
.
setContent
(
newsType
.
getTypename
());
}
});
newsTypeBottomSelectDialog
.
show
(
getSupportFragmentManager
(),
"dialog"
);
}
}
module_me/src/main/java/com/fly/tour/me/NewsTypeListActivity.java
浏览文件 @
57eb2978
...
...
@@ -9,11 +9,11 @@ import android.view.Menu;
import
android.view.MenuItem
;
import
android.view.View
;
import
com.fly.tour.api.newstype.entity.NewsType
;
import
com.fly.tour.common.base.BaseRefreshActivity
;
import
com.fly.tour.common.event.RequestCode
;
import
com.fly.tour.common.util.ToastUtil
;
import
com.fly.tour.common.view.CommonDialogFragment
;
import
com.fly.tour.db.entity.NewsType
;
import
com.fly.tour.me.adapter.NewsTypeShowAdapter
;
import
com.fly.tour.me.contract.NewsTypeListContract
;
import
com.fly.tour.me.inject.component.DaggerNewsTypeListComponent
;
...
...
@@ -105,7 +105,7 @@ public class NewsTypeListActivity extends BaseRefreshActivity<NewsTypeListModel,
@Override
public
void
onAutoLoadEvent
()
{
mPresenter
.
refreshData
();
}
@Override
...
...
module_me/src/main/java/com/fly/tour/me/adapter/NewsTypeSelectAdapter.java
浏览文件 @
57eb2978
...
...
@@ -4,12 +4,10 @@ import android.content.Context;
import
android.support.annotation.NonNull
;
import
android.support.v7.widget.RecyclerView
;
import
android.view.View
;
import
android.widget.Button
;
import
android.widget.TextView
;
import
com.fly.tour.api.newstype.entity.NewsType
;
import
com.fly.tour.common.base.BaseAdapter
;
import
com.fly.tour.common.util.DateUtil
;
import
com.fly.tour.db.entity.NewsType
;
import
com.fly.tour.me.R
;
/**
...
...
module_me/src/main/java/com/fly/tour/me/adapter/NewsTypeShowAdapter.java
浏览文件 @
57eb2978
...
...
@@ -7,9 +7,9 @@ import android.view.View;
import
android.widget.Button
;
import
android.widget.TextView
;
import
com.fly.tour.api.newstype.entity.NewsType
;
import
com.fly.tour.common.base.BaseAdapter
;
import
com.fly.tour.common.util.DateUtil
;
import
com.fly.tour.db.entity.NewsType
;
import
com.fly.tour.me.R
;
/**
...
...
module_me/src/main/java/com/fly/tour/me/contract/NewsDetailAddContract.java
浏览文件 @
57eb2978
package
com.fly.tour.me.contract
;
import
com.fly.tour.api.dto.RespDTO
;
import
com.fly.tour.api.news.entity.NewsDetail
;
import
com.fly.tour.api.newstype.entity.NewsType
;
import
com.fly.tour.common.mvp.BaseView
;
import
java.util.List
;
import
io.reactivex.Observable
;
/**
* Description: <NewsDetailAddContract><br>
* Author: gxl<br>
...
...
@@ -12,9 +19,13 @@ import com.fly.tour.common.mvp.BaseView;
public
interface
NewsDetailAddContract
{
interface
Presenter
{
void
addNewsDetail
(
int
type
,
String
title
,
String
content
);
void
getListNewsType
();
}
interface
View
extends
BaseView
{
void
showNewsType
(
List
<
NewsType
>
typeList
);
}
interface
View
extends
BaseView
{}
interface
Model
{
boolean
addNewsDetail
(
int
type
,
String
title
,
String
content
);
Observable
<
RespDTO
<
NewsDetail
>>
addNewsDetail
(
int
type
,
String
title
,
String
content
);
Observable
<
RespDTO
<
List
<
NewsType
>>>
getNewsType
();
}
}
module_me/src/main/java/com/fly/tour/me/contract/NewsTypeAddContract.java
浏览文件 @
57eb2978
package
com.fly.tour.me.contract
;
import
com.fly.tour.api.dto.RespDTO
;
import
com.fly.tour.api.newstype.entity.NewsType
;
import
com.fly.tour.common.mvp.BaseView
;
import
io.reactivex.Observable
;
/**
* Description: <NewsTypeAddContract><br>
* Author: gxl<br>
...
...
@@ -17,6 +21,6 @@ public interface NewsTypeAddContract {
}
interface
Model
{
boolean
addNewsType
(
String
type
);
Observable
<
RespDTO
<
NewsType
>>
addNewsType
(
NewsType
type
);
}
}
module_me/src/main/java/com/fly/tour/me/contract/NewsTypeListContract.java
浏览文件 @
57eb2978
package
com.fly.tour.me.contract
;
import
com.fly.tour.api.dto.RespDTO
;
import
com.fly.tour.api.newstype.entity.NewsType
;
import
com.fly.tour.common.mvp.BaseRefreshContract
;
import
com.fly.tour.common.mvp.BaseRefreshView
;
import
com.fly.tour.db.entity.NewsType
;
import
java.util.List
;
import
io.reactivex.Observable
;
/**
* Description: <NewsTypeListContract><br>
* Author: gxl<br>
...
...
@@ -21,7 +24,7 @@ public interface NewsTypeListContract {
}
interface
Model
{
List
<
NewsType
>
getListNewsType
();
boolean
deleteNewsTypeById
(
int
id
);
Observable
<
RespDTO
<
List
<
NewsType
>>
>
getListNewsType
();
Observable
<
RespDTO
>
deleteNewsTypeById
(
int
id
);
}
}
module_me/src/main/java/com/fly/tour/me/inject/module/NewsTypeListModule.java
浏览文件 @
57eb2978
...
...
@@ -2,7 +2,7 @@ package com.fly.tour.me.inject.module;
import
android.content.Context
;
import
com.fly.tour.
db
.entity.NewsType
;
import
com.fly.tour.
api.newstype
.entity.NewsType
;
import
com.fly.tour.me.contract.NewsTypeListContract
;
import
dagger.Module
;
...
...
module_me/src/main/java/com/fly/tour/me/model/NewsDetailAddModel.java
浏览文件 @
57eb2978
...
...
@@ -2,12 +2,25 @@ package com.fly.tour.me.model;
import
android.content.Context
;
import
com.fly.tour.api.NewsDetailService
;
import
com.fly.tour.api.NewsTypeService
;
import
com.fly.tour.api.RetrofitManager
;
import
com.fly.tour.api.dto.RespDTO
;
import
com.fly.tour.api.http.RxAdapter
;
import
com.fly.tour.api.news.entity.NewsDetail
;
import
com.fly.tour.api.newstype.entity.NewsType
;
import
com.fly.tour.common.mvp.BaseModel
;
import
com.fly.tour.common.util.DateUtil
;
import
com.fly.tour.db.dao.NewsDetailDao
;
import
com.fly.tour.me.contract.NewsDetailAddContract
;
import
java.util.Date
;
import
java.util.List
;
import
javax.inject.Inject
;
import
io.reactivex.Observable
;
/**
* Description: <NewsDetailAddModel><br>
* Author: gxl<br>
...
...
@@ -16,15 +29,33 @@ import javax.inject.Inject;
* Update: <br>
*/
public
class
NewsDetailAddModel
extends
BaseModel
implements
NewsDetailAddContract
.
Model
{
private
NewsDetailDao
mNewsDetailDao
;
private
NewsTypeService
mNewsTypeService
;
private
NewsDetailService
mNewsDetailService
;
@Inject
public
NewsDetailAddModel
(
Context
context
,
NewsDetailDao
newsDetailDao
)
{
super
(
context
);
mNewsDetailDao
=
newsDetailDao
;
mNewsTypeService
=
RetrofitManager
.
getInstance
().
getNewsTypeService
();
mNewsDetailService
=
RetrofitManager
.
getInstance
().
getNewsDetailService
();
}
@Override
public
Observable
<
RespDTO
<
NewsDetail
>>
addNewsDetail
(
int
type
,
String
title
,
String
content
)
{
NewsDetail
newsDetail
=
new
NewsDetail
();
newsDetail
.
setTypeid
(
type
);
newsDetail
.
setTitle
(
title
);
newsDetail
.
setContent
(
content
);
newsDetail
.
setAddtime
(
DateUtil
.
formatDate
(
new
Date
(),
DateUtil
.
FormatType
.
yyyyMMddHHmmss
));
return
mNewsDetailService
.
addNewsDetail
(
RetrofitManager
.
getInstance
().
TOKEN
,
newsDetail
)
.
compose
(
RxAdapter
.<
RespDTO
<
NewsDetail
>>
bindUntilEvent
(
getLifecycle
()))
.
compose
(
RxAdapter
.
schedulersTransformer
())
.
compose
(
RxAdapter
.
exceptionTransformer
());
}
@Override
public
boolean
addNewsDetail
(
int
type
,
String
title
,
String
content
)
{
return
mNewsDetailDao
.
addNewsDetail
(
type
,
title
,
content
);
public
Observable
<
RespDTO
<
List
<
NewsType
>>>
getNewsType
()
{
return
mNewsTypeService
.
getListNewsType
(
RetrofitManager
.
getInstance
().
TOKEN
)
.
compose
(
RxAdapter
.<
RespDTO
<
List
<
NewsType
>>>
bindUntilEvent
(
getLifecycle
()))
.
compose
(
RxAdapter
.
schedulersTransformer
())
.
compose
(
RxAdapter
.
exceptionTransformer
());
}
}
module_me/src/main/java/com/fly/tour/me/model/NewsTypeAddModel.java
浏览文件 @
57eb2978
package
com.fly.tour.me.model
;
import
android.content.Context
;
import
android.support.annotation.RestrictTo
;
import
com.fly.tour.api.NewsTypeService
;
import
com.fly.tour.api.RetrofitManager
;
import
com.fly.tour.api.dto.RespDTO
;
import
com.fly.tour.api.http.RxAdapter
;
import
com.fly.tour.api.newstype.entity.NewsType
;
import
com.fly.tour.common.mvp.BaseModel
;
import
com.fly.tour.db.dao.NewsTypeDao
;
import
com.fly.tour.me.contract.NewsTypeAddContract
;
import
javax.inject.Inject
;
import
io.reactivex.Observable
;
/**
* Description: <NewsTypeAddModel><br>
* Author: gxl<br>
...
...
@@ -16,15 +24,19 @@ import javax.inject.Inject;
* Update: <br>
*/
public
class
NewsTypeAddModel
extends
BaseModel
implements
NewsTypeAddContract
.
Model
{
private
NewsType
Dao
mNewsTypeDao
;
private
NewsType
Service
mNewsTypeService
;
@Inject
public
NewsTypeAddModel
(
Context
context
,
NewsTypeDao
newsTypeDao
)
{
super
(
context
);
mNewsType
Dao
=
newsTypeDao
;
mNewsType
Service
=
RetrofitManager
.
getInstance
().
getNewsTypeService
()
;
}
@Override
public
boolean
addNewsType
(
String
type
)
{
return
mNewsTypeDao
.
addNewsType
(
type
);
public
Observable
<
RespDTO
<
NewsType
>>
addNewsType
(
NewsType
type
)
{
return
mNewsTypeService
.
addNewsType
(
RetrofitManager
.
getInstance
().
TOKEN
,
type
)
.
compose
(
RxAdapter
.<
RespDTO
<
NewsType
>>
bindUntilEvent
(
getLifecycle
()))
.
compose
(
RxAdapter
.
schedulersTransformer
())
.
compose
(
RxAdapter
.
exceptionTransformer
());
}
}
module_me/src/main/java/com/fly/tour/me/model/NewsTypeListModel.java
浏览文件 @
57eb2978
...
...
@@ -2,15 +2,21 @@ package com.fly.tour.me.model;
import
android.content.Context
;
import
com.fly.tour.api.NewsTypeService
;
import
com.fly.tour.api.RetrofitManager
;
import
com.fly.tour.api.dto.RespDTO
;
import
com.fly.tour.api.http.RxAdapter
;
import
com.fly.tour.api.news.entity.NewsDetail
;
import
com.fly.tour.api.newstype.entity.NewsType
;
import
com.fly.tour.common.mvp.BaseModel
;
import
com.fly.tour.db.dao.NewsTypeDao
;
import
com.fly.tour.db.entity.NewsType
;
import
com.fly.tour.me.contract.NewsTypeListContract
;
import
java.util.List
;
import
javax.inject.Inject
;
import
io.reactivex.Observable
;
/**
* Description: <NewsTypeListModel><br>
* Author: gxl<br>
...
...
@@ -19,20 +25,27 @@ import javax.inject.Inject;
* Update: <br>
*/
public
class
NewsTypeListModel
extends
BaseModel
implements
NewsTypeListContract
.
Model
{
p
ublic
NewsTypeDao
mNewsTypeDao
;
p
rivate
NewsTypeService
mNewsTypeService
;
@Inject
public
NewsTypeListModel
(
Context
context
,
NewsTypeDao
newsTypeDao
)
{
public
NewsTypeListModel
(
Context
context
)
{
super
(
context
);
mNewsType
Dao
=
newsTypeDao
;
mNewsType
Service
=
RetrofitManager
.
getInstance
().
getNewsTypeService
()
;
}
@Override
public
List
<
NewsType
>
getListNewsType
()
{
return
mNewsTypeDao
.
getListNewsType
();
public
Observable
<
RespDTO
<
List
<
NewsType
>>>
getListNewsType
()
{
return
mNewsTypeService
.
getListNewsType
(
RetrofitManager
.
getInstance
().
TOKEN
)
.
compose
(
RxAdapter
.<
RespDTO
<
List
<
NewsType
>>>
bindUntilEvent
(
getLifecycle
()))
.
compose
(
RxAdapter
.
schedulersTransformer
())
.
compose
(
RxAdapter
.
exceptionTransformer
());
}
@Override
public
boolean
deleteNewsTypeById
(
int
id
)
{
return
mNewsTypeDao
.
deleteNewsType
(
id
);
public
Observable
<
RespDTO
>
deleteNewsTypeById
(
int
id
)
{
return
mNewsTypeService
.
deleteNewsTypeById
(
RetrofitManager
.
getInstance
().
TOKEN
,
id
)
.
compose
(
RxAdapter
.<
RespDTO
>
bindUntilEvent
(
getLifecycle
()))
.
compose
(
RxAdapter
.
schedulersTransformer
())
.
compose
(
RxAdapter
.
exceptionTransformer
());
}
}
module_me/src/main/java/com/fly/tour/me/presenter/NewsDetailAddPresenter.java
浏览文件 @
57eb2978
...
...
@@ -3,6 +3,10 @@ package com.fly.tour.me.presenter;
import
android.content.Context
;
import
android.os.Handler
;
import
com.fly.tour.api.dto.RespDTO
;
import
com.fly.tour.api.http.ExceptionHandler
;
import
com.fly.tour.api.news.entity.NewsDetail
;
import
com.fly.tour.api.newstype.entity.NewsType
;
import
com.fly.tour.common.event.me.NewsDetailCurdEvent
;
import
com.fly.tour.common.mvp.BasePresenter
;
import
com.fly.tour.common.util.ToastUtil
;
...
...
@@ -11,8 +15,13 @@ import com.fly.tour.me.model.NewsDetailAddModel;
import
org.greenrobot.eventbus.EventBus
;
import
java.util.List
;
import
javax.inject.Inject
;
import
io.reactivex.Observer
;
import
io.reactivex.disposables.Disposable
;
/**
* Description: <NewsDetailAddPresenter><br>
* Author: gxl<br>
...
...
@@ -29,22 +38,60 @@ public class NewsDetailAddPresenter extends BasePresenter<NewsDetailAddModel,New
@Override
public
void
addNewsDetail
(
final
int
type
,
final
String
title
,
final
String
content
)
{
mView
.
showTransLoadingView
();
new
Handler
().
postDelayed
(
new
Runnable
()
{
@Override
public
void
run
()
{
boolean
b
=
mModel
.
addNewsDetail
(
type
,
title
,
content
);
if
(
b
){
ToastUtil
.
showToast
(
"添加成功"
);
mView
.
hideTransLoadingView
();
mView
.
finishActivity
();
EventBus
.
getDefault
().
post
(
new
NewsDetailCurdEvent
(
type
));
}
else
{
ToastUtil
.
showToast
(
"添加失败"
);
mModel
.
addNewsDetail
(
type
,
title
,
content
)
.
subscribe
(
new
Observer
<
RespDTO
<
NewsDetail
>>()
{
@Override
public
void
onSubscribe
(
Disposable
d
)
{
mView
.
showTransLoadingView
();
}
@Override
public
void
onNext
(
RespDTO
<
NewsDetail
>
newsDetailRespDTO
)
{
if
(
newsDetailRespDTO
.
code
==
ExceptionHandler
.
APP_ERROR
.
SUCC
){
ToastUtil
.
showToast
(
"添加成功"
);
mView
.
hideTransLoadingView
();
mView
.
finishActivity
();
EventBus
.
getDefault
().
post
(
new
NewsDetailCurdEvent
(
type
));
}
else
{
ToastUtil
.
showToast
(
"添加失败"
);
}
}
@Override
public
void
onError
(
Throwable
e
)
{
mView
.
hideInitLoadView
();
}
@Override
public
void
onComplete
()
{
mView
.
hideInitLoadView
();
}
});
}
@Override
public
void
getListNewsType
()
{
mModel
.
getNewsType
().
subscribe
(
new
Observer
<
RespDTO
<
List
<
NewsType
>>>()
{
@Override
public
void
onSubscribe
(
Disposable
d
)
{
}
@Override
public
void
onNext
(
RespDTO
<
List
<
NewsType
>>
listRespDTO
)
{
mView
.
showNewsType
(
listRespDTO
.
data
);
}
}
},
1000
*
2
);
@Override
public
void
onError
(
Throwable
e
)
{
}
@Override
public
void
onComplete
()
{
}
});
}
}
module_me/src/main/java/com/fly/tour/me/presenter/NewsTypeAddPresenter.java
浏览文件 @
57eb2978
...
...
@@ -2,13 +2,22 @@ package com.fly.tour.me.presenter;
import
android.content.Context
;
import
com.fly.tour.api.dto.RespDTO
;
import
com.fly.tour.api.http.ExceptionHandler
;
import
com.fly.tour.api.newstype.entity.NewsType
;
import
com.fly.tour.common.mvp.BasePresenter
;
import
com.fly.tour.common.util.DateUtil
;
import
com.fly.tour.common.util.ToastUtil
;
import
com.fly.tour.me.contract.NewsTypeAddContract
;
import
com.fly.tour.me.model.NewsTypeAddModel
;
import
java.util.Date
;
import
javax.inject.Inject
;
import
io.reactivex.Observer
;
import
io.reactivex.disposables.Disposable
;
/**
* Description: <NewsTypeAddPresenter><br>
* Author: gxl<br>
...
...
@@ -25,12 +34,35 @@ public class NewsTypeAddPresenter extends BasePresenter<NewsTypeAddModel,NewsTyp
@Override
public
void
addNewsType
(
String
typename
)
{
boolean
b
=
mModel
.
addNewsType
(
typename
);
if
(
b
){
ToastUtil
.
showToast
(
"添加成功"
);
mView
.
finishActivity
();
}
else
{
ToastUtil
.
showToast
(
"添加失败"
);
}
NewsType
newsType
=
new
NewsType
();
newsType
.
setTypename
(
typename
);
newsType
.
setAddtime
(
DateUtil
.
formatDate
(
new
Date
(),
DateUtil
.
FormatType
.
yyyyMMddHHmmss
));
mModel
.
addNewsType
(
newsType
).
subscribe
(
new
Observer
<
RespDTO
<
NewsType
>>()
{
@Override
public
void
onSubscribe
(
Disposable
d
)
{
mView
.
showTransLoadingView
();
}
@Override
public
void
onNext
(
RespDTO
<
NewsType
>
newsTypeRespDTO
)
{
if
(
newsTypeRespDTO
.
code
==
ExceptionHandler
.
APP_ERROR
.
SUCC
){
ToastUtil
.
showToast
(
"添加成功"
);
mView
.
finishActivity
();
}
else
{
ToastUtil
.
showToast
(
"添加失败"
);
}
}
@Override
public
void
onError
(
Throwable
e
)
{
mView
.
hideTransLoadingView
();
}
@Override
public
void
onComplete
()
{
mView
.
hideTransLoadingView
();
}
});
}
}
module_me/src/main/java/com/fly/tour/me/presenter/NewsTypeListPresenter.java
浏览文件 @
57eb2978
...
...
@@ -2,22 +2,23 @@ package com.fly.tour.me.presenter;
import
android.content.Context
;
import
com.fly.tour.api.dto.RespDTO
;
import
com.fly.tour.api.http.ExceptionHandler
;
import
com.fly.tour.api.newstype.entity.NewsType
;
import
com.fly.tour.common.event.EventCode
;
import
com.fly.tour.common.event.me.NewsTypeCrudEvent
;
import
com.fly.tour.common.mvp.BaseRefreshPresenter
;
import
com.fly.tour.common.util.ToastUtil
;
import
com.fly.tour.common.util.log.KLog
;
import
com.fly.tour.db.entity.NewsType
;
import
com.fly.tour.me.contract.NewsTypeListContract
;
import
com.fly.tour.me.model.NewsTypeListModel
;
import
org.greenrobot.eventbus.EventBus
;
import
java.util.List
;
import
java.util.logging.Handler
;
import
javax.inject.Inject
;
import
io.reactivex.Observer
;
import
io.reactivex.disposables.Disposable
;
/**
* Description: <NewsTypeListPresenter><br>
* Author: gxl<br>
...
...
@@ -38,14 +39,16 @@ public class NewsTypeListPresenter extends BaseRefreshPresenter<NewsTypeListMode
mView
.
hideNoDataView
();
if
(
isfirst
)
{
mView
.
showInitLoadView
();
}
else
{
mView
.
autoLoadData
();
}
new
android
.
os
.
Handler
().
postDelayed
(
new
Runnable
()
{
mModel
.
getListNewsType
().
subscribe
(
new
Observer
<
RespDTO
<
List
<
NewsType
>>>
()
{
@Override
public
void
run
()
{
List
<
NewsType
>
listNewsType
=
mModel
.
getListNewsType
();
KLog
.
v
(
"MYTAG"
,
"listNewsType:"
+
listNewsType
.
toString
());
public
void
onSubscribe
(
Disposable
d
)
{
}
@Override
public
void
onNext
(
RespDTO
<
List
<
NewsType
>>
listRespDTO
)
{
List
<
NewsType
>
listNewsType
=
listRespDTO
.
data
;
if
(
listNewsType
!=
null
&&
listNewsType
.
size
()
>
0
)
{
mView
.
refreshData
(
listNewsType
);
}
else
{
...
...
@@ -58,8 +61,16 @@ public class NewsTypeListPresenter extends BaseRefreshPresenter<NewsTypeListMode
mView
.
stopRefresh
();
}
}
},
1000
*
2
);
@Override
public
void
onError
(
Throwable
e
)
{
mView
.
hideInitLoadView
();
}
@Override
public
void
onComplete
()
{
}
});
}
@Override
...
...
@@ -69,19 +80,32 @@ public class NewsTypeListPresenter extends BaseRefreshPresenter<NewsTypeListMode
@Override
public
void
deleteNewsTypeById
(
final
int
id
)
{
mView
.
showTransLoadingView
();
new
android
.
os
.
Handler
().
postDelayed
(
new
Runnable
()
{
mModel
.
deleteNewsTypeById
(
id
).
subscribe
(
new
Observer
<
RespDTO
>()
{
@Override
public
void
onSubscribe
(
Disposable
d
)
{
mView
.
showTransLoadingView
();
}
@Override
public
void
run
(
)
{
if
(
mModel
.
deleteNewsTypeById
(
id
)
){
public
void
onNext
(
RespDTO
respDTO
)
{
if
(
respDTO
.
code
==
ExceptionHandler
.
APP_ERROR
.
SUCC
){
ToastUtil
.
showToast
(
"删除成功"
);
refresh
Data
();
mView
.
autoLoad
Data
();
EventBus
.
getDefault
().
post
(
new
NewsTypeCrudEvent
(
EventCode
.
MeCode
.
NEWS_TYPE_DELETE
));
}
else
{
ToastUtil
.
showToast
(
"删除失败"
);
}
}
@Override
public
void
onError
(
Throwable
e
)
{
mView
.
hideTransLoadingView
();
}
@Override
public
void
onComplete
()
{
mView
.
hideTransLoadingView
();
}
}
,
1000
*
2
);
});
}
}
module_me/src/main/java/com/fly/tour/me/view/NewsTypeBottomSelectDialog.java
浏览文件 @
57eb2978
package
com.fly.tour.me.view
;
import
android.content.Context
;
import
android.graphics.Canvas
;
import
android.graphics.Color
;
import
android.graphics.Paint
;
import
android.graphics.Rect
;
import
android.os.Bundle
;
import
android.os.Parcelable
;
import
android.support.annotation.NonNull
;
import
android.support.annotation.Nullable
;
import
android.support.design.widget.BottomSheetDialogFragment
;
...
...
@@ -14,14 +16,16 @@ import android.view.LayoutInflater;
import
android.view.View
;
import
android.view.ViewGroup
;
import
com.fly.tour.api.newstype.entity.NewsType
;
import
com.fly.tour.common.base.BaseAdapter
;
import
com.fly.tour.common.util.DisplayUtil
;
import
com.fly.tour.db.dao.NewsTypeDao
;
import
com.fly.tour.db.entity.NewsType
;
import
com.fly.tour.me.R
;
import
com.fly.tour.me.adapter.NewsTypeSelectAdapter
;
import
com.fly.tour.me.model.NewsTypeListModel
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* Description: <PhotoSelectDialog><br>
* Author: gxl<br>
...
...
@@ -38,8 +42,12 @@ public class NewsTypeBottomSelectDialog extends BottomSheetDialogFragment {
mItemClickListener
=
itemClickListener
;
}
public
static
NewsTypeBottomSelectDialog
newInstance
()
{
return
new
NewsTypeBottomSelectDialog
();
public
static
NewsTypeBottomSelectDialog
newInstance
(
List
<
NewsType
>
list
)
{
NewsTypeBottomSelectDialog
newsTypeBottomSelectDialog
=
new
NewsTypeBottomSelectDialog
();
Bundle
args
=
new
Bundle
();
args
.
putParcelableArrayList
(
"newstype"
,
(
ArrayList
<?
extends
Parcelable
>)
list
);
newsTypeBottomSelectDialog
.
setArguments
(
args
);
return
newsTypeBottomSelectDialog
;
}
@Override
...
...
@@ -75,7 +83,8 @@ public class NewsTypeBottomSelectDialog extends BottomSheetDialogFragment {
c
.
drawLine
(
0
,
0
,
0
,
DisplayUtil
.
dip2px
(
1
),
paint
);
}
});
adapter
.
refresh
(
new
NewsTypeListModel
(
getContext
(),
new
NewsTypeDao
(
getContext
())).
getListNewsType
());
adapter
.
refresh
(
getArguments
().<
NewsType
>
getParcelableArrayList
(
"newstype"
));
adapter
.
setItemClickListener
(
new
BaseAdapter
.
OnItemClickListener
<
NewsType
>()
{
@Override
public
void
onItemClick
(
NewsType
newsType
,
int
position
)
{
...
...
module_news/src/main/java/com/fly/tour/news/NewsDetailActivity.java
浏览文件 @
57eb2978
...
...
@@ -4,9 +4,9 @@ import android.content.Context;
import
android.content.Intent
;
import
android.widget.TextView
;
import
com.fly.tour.api.news.entity.NewsDetail
;
import
com.fly.tour.common.base.BaseMvpActivity
;
import
com.fly.tour.common.event.KeyCode
;
import
com.fly.tour.db.entity.NewsDetail
;
import
com.fly.tour.news.contract.NewsDetailContract
;
import
com.fly.tour.news.inject.component.DaggerNewsDetailComponent
;
import
com.fly.tour.news.inject.module.NewsDetailModule
;
...
...
@@ -40,8 +40,6 @@ public class NewsDetailActivity extends BaseMvpActivity<NewsDetailModel,NewsDeta
mPresenter
.
getNewsDetailById
(
newsid
);
}
@Override
public
void
showNewsDetail
(
NewsDetail
newsDetail
)
{
mTxtNewsTitle
.
setText
(
newsDetail
.
getTitle
());
...
...
@@ -52,4 +50,6 @@ public class NewsDetailActivity extends BaseMvpActivity<NewsDetailModel,NewsDeta
public
void
injectPresenter
()
{
DaggerNewsDetailComponent
.
builder
().
newsDetailModule
(
new
NewsDetailModule
(
this
)).
build
().
inject
(
this
);
}
}
module_news/src/main/java/com/fly/tour/news/adapter/NewsListAdatper.java
浏览文件 @
57eb2978
...
...
@@ -6,9 +6,8 @@ import android.support.v7.widget.RecyclerView;
import
android.view.View
;
import
android.widget.TextView
;
import
com.fly.tour.api.news.entity.NewsDetail
;
import
com.fly.tour.common.base.BaseAdapter
;
import
com.fly.tour.db.NewsDBConfig
;
import
com.fly.tour.db.entity.NewsDetail
;
import
com.fly.tour.trip.R
;
/**
...
...
module_news/src/main/java/com/fly/tour/news/contract/NewsDetailContract.java
浏览文件 @
57eb2978
package
com.fly.tour.news.contract
;
import
com.fly.tour.api.dto.RespDTO
;
import
com.fly.tour.api.news.entity.NewsDetail
;
import
com.fly.tour.common.mvp.BaseView
;
import
com.fly.tour.db.entity.NewsDetail
;
import
io.reactivex.Observable
;
/**
* Description: <NewsDetailContract><br>
...
...
@@ -18,6 +21,6 @@ public interface NewsDetailContract {
void
showNewsDetail
(
NewsDetail
newsDetail
);
}
interface
Model
{
NewsDetail
getNewsDetailById
(
int
id
);
Observable
<
RespDTO
<
NewsDetail
>>
getNewsDetailById
(
int
id
);
}
}
module_news/src/main/java/com/fly/tour/news/contract/NewsListContract.java
浏览文件 @
57eb2978
package
com.fly.tour.news.contract
;
import
com.fly.tour.api.dto.RespDTO
;
import
com.fly.tour.api.news.entity.NewsDetail
;
import
com.fly.tour.common.mvp.BaseRefreshView
;
import
com.fly.tour.common.mvp.BaseView
;
import
com.fly.tour.db.entity.NewsDetail
;
import
com.fly.tour.db.entity.NewsType
;
import
java.util.List
;
import
io.reactivex.Observable
;
/**
* Description: <NewsListContract><br>
* Author: gxl<br>
...
...
@@ -19,6 +20,6 @@ public interface NewsListContract {
}
interface
View
<
NewsDetail
>
extends
BaseRefreshView
<
NewsDetail
>
{}
interface
Model
{
List
<
NewsDetail
>
getNews
Type
(
int
type
);
Observable
<
RespDTO
<
List
<
NewsDetail
>>>
getListNewsBy
Type
(
int
type
);
}
}
module_news/src/main/java/com/fly/tour/news/contract/NewsTypeContract.java
0 → 100644
浏览文件 @
57eb2978
package
com.fly.tour.news.contract
;
import
com.fly.tour.api.dto.RespDTO
;
import
com.fly.tour.api.newstype.entity.NewsType
;
import
com.fly.tour.common.mvp.BaseView
;
import
java.util.List
;
import
io.reactivex.Observable
;
public
interface
NewsTypeContract
{
interface
Presenter
{
void
getListNewsType
();
}
interface
View
extends
BaseView
{
void
showListNewsType
(
List
<
NewsType
>
list
);
void
initTabLayout
();
}
interface
Model
{
Observable
<
RespDTO
<
List
<
NewsType
>>>
getListNewsType
();
}
}
module_news/src/main/java/com/fly/tour/news/fragment/MainNewsFragment.java
浏览文件 @
57eb2978
...
...
@@ -11,11 +11,17 @@ import android.support.v4.view.ViewPager;
import
android.view.View
;
import
android.view.ViewGroup
;
import
com.fly.tour.api.newstype.entity.NewsType
;
import
com.fly.tour.common.base.BaseFragment
;
import
com.fly.tour.common.base.BaseMvpFragment
;
import
com.fly.tour.common.event.me.NewsTypeCrudEvent
;
import
com.fly.tour.common.manager.NewsDBManager
;
import
com.fly.tour.common.util.log.KLog
;
import
com.fly.tour.db.entity.NewsType
;
import
com.fly.tour.news.contract.NewsTypeContract
;
import
com.fly.tour.news.inject.component.DaggerNewsTypeComponent
;
import
com.fly.tour.news.inject.module.NewsTypeModule
;
import
com.fly.tour.news.model.NewsTypeModel
;
import
com.fly.tour.news.presenter.NewsTypePresenter
;
import
com.fly.tour.trip.R
;
import
org.greenrobot.eventbus.Subscribe
;
...
...
@@ -32,7 +38,7 @@ import java.util.logging.Handler;
* Version: V1.0.0<br>
* Update: <br>
*/
public
class
MainNewsFragment
extends
Base
Fragment
{
public
class
MainNewsFragment
extends
Base
MvpFragment
<
NewsTypeModel
,
NewsTypeContract
.
View
,
NewsTypePresenter
>
implements
NewsTypeContract
.
View
{
private
List
<
String
>
titles
=
new
ArrayList
<>();
private
List
<
NewsListFragment
>
mListFragments
=
new
ArrayList
<>();
private
TabLayout
mTabLayout
;
...
...
@@ -52,21 +58,20 @@ public class MainNewsFragment extends BaseFragment {
@Override
public
void
initView
(
View
view
)
{
mViewPager
=
view
.
findViewById
(
R
.
id
.
pager_tour
);
mTabLayout
=
view
.
findViewById
(
R
.
id
.
layout_tour
);
}
@Override
public
void
initData
()
{
mPresenter
.
getListNewsType
();
}
@Override
public
void
initListener
()
{
initNewsListFragment
();
//mViewPager.setOffscreenPageLimit(mListFragments.size());
}
public
void
initTabLayout
()
{
mNewsFragmentAdapter
=
new
NewsFragmentAdapter
(
getChildFragmentManager
());
mViewPager
.
setAdapter
(
mNewsFragmentAdapter
);
mNewsFragmentAdapter
.
refreshViewPager
(
mListFragments
);
...
...
@@ -90,6 +95,25 @@ public class MainNewsFragment extends BaseFragment {
mTabLayout
.
setupWithViewPager
(
mViewPager
);
}
@Override
public
void
injectPresenter
()
{
DaggerNewsTypeComponent
.
builder
().
newsTypeModule
(
new
NewsTypeModule
(
this
)).
build
().
inject
(
this
);
}
@Override
public
void
showListNewsType
(
List
<
com
.
fly
.
tour
.
api
.
newstype
.
entity
.
NewsType
>
listNewsType
)
{
KLog
.
v
(
"MYTAG"
,
"initNewsListFragment start..."
+
listNewsType
.
toString
());
mListFragments
.
clear
();
titles
.
clear
();
if
(
listNewsType
!=
null
&&
listNewsType
.
size
()
>
0
)
{
for
(
int
i
=
0
;
i
<
listNewsType
.
size
();
i
++)
{
NewsType
newsType
=
listNewsType
.
get
(
i
);
mListFragments
.
add
(
NewsListFragment
.
newInstance
(
newsType
));
titles
.
add
(
newsType
.
getTypename
());
}
}
}
class
NewsFragmentAdapter
extends
FragmentPagerAdapter
{
public
FragmentManager
mFragmentManager
;
List
<
NewsListFragment
>
pages
;
...
...
@@ -141,20 +165,6 @@ public class MainNewsFragment extends BaseFragment {
}
}
private
void
initNewsListFragment
()
{
List
<
NewsType
>
listNewsType
=
NewsDBManager
.
getInstance
(
getContext
()).
getListNewsType
();
KLog
.
v
(
"MYTAG"
,
"initNewsListFragment start..."
+
listNewsType
.
toString
());
mListFragments
.
clear
();
titles
.
clear
();
if
(
listNewsType
!=
null
&&
listNewsType
.
size
()
>
0
)
{
for
(
int
i
=
0
;
i
<
listNewsType
.
size
();
i
++)
{
NewsType
newsType
=
listNewsType
.
get
(
i
);
mListFragments
.
add
(
NewsListFragment
.
newInstance
(
newsType
));
titles
.
add
(
newsType
.
getTypename
());
}
}
}
@Override
public
String
getToolbarTitle
()
{
return
null
;
...
...
@@ -173,8 +183,7 @@ public class MainNewsFragment extends BaseFragment {
KLog
.
v
(
"MYTAG"
,
"ViewPager refresh start..."
);
mIsfresh
=
false
;
mViewPager
.
setCurrentItem
(
mListFragments
.
size
()
-
1
);
initNewsListFragment
();
//mViewPager.setOffscreenPageLimit(mListFragments.size());
initData
();
mNewsFragmentAdapter
.
refreshViewPager
(
mListFragments
);
}
}
...
...
module_news/src/main/java/com/fly/tour/news/fragment/NewsListFragment.java
浏览文件 @
57eb2978
...
...
@@ -7,15 +7,13 @@ import android.support.v7.widget.LinearLayoutManager;
import
android.support.v7.widget.RecyclerView
;
import
android.view.View
;
import
com.fly.tour.api.news.entity.NewsDetail
;
import
com.fly.tour.api.newstype.entity.NewsType
;
import
com.fly.tour.common.base.BaseAdapter
;
import
com.fly.tour.common.base.BaseFragment
;
import
com.fly.tour.common.base.BaseRefreshFragment
;
import
com.fly.tour.common.event.KeyCode
;
import
com.fly.tour.common.event.me.NewsDetailCurdEvent
;
import
com.fly.tour.common.mvp.BaseRefreshPresenter
;
import
com.fly.tour.common.util.log.KLog
;
import
com.fly.tour.db.entity.NewsDetail
;
import
com.fly.tour.db.entity.NewsType
;
import
com.fly.tour.news.NewsDetailActivity
;
import
com.fly.tour.news.adapter.NewsListAdatper
;
import
com.fly.tour.news.contract.NewsListContract
;
...
...
@@ -31,7 +29,7 @@ import org.greenrobot.eventbus.ThreadMode;
import
java.util.List
;
/**
* Description: <
人工智能
><br>
* Description: <
NewsListFragment
><br>
* Author: gxl<br>
* Date: 2018/12/11<br>
* Version: V1.0.0<br>
...
...
@@ -104,9 +102,6 @@ public class NewsListFragment extends BaseRefreshFragment<NewsListModel,NewsList
return
R
.
id
.
refview_news_list
;
}
@Override
public
void
onRefreshEvent
()
{
mPresenter
.
refreshData
();
...
...
module_news/src/main/java/com/fly/tour/news/inject/component/NewsTypeComponent.java
0 → 100644
浏览文件 @
57eb2978
package
com.fly.tour.news.inject.component
;
import
com.fly.tour.news.NewsDetailActivity
;
import
com.fly.tour.news.contract.NewsTypeContract
;
import
com.fly.tour.news.fragment.MainNewsFragment
;
import
com.fly.tour.news.inject.module.NewsDetailModule
;
import
com.fly.tour.news.inject.module.NewsTypeModule
;
import
dagger.Component
;
/**
* Description: <NewsDetailComponent><br>
* Author: gxl<br>
* Date: 2019/5/31<br>
* Version: V1.0.0<br>
* Update: <br>
*/
@Component
(
modules
=
{
NewsTypeModule
.
class
})
public
interface
NewsTypeComponent
{
void
inject
(
MainNewsFragment
mainNewsFragment
);
}
module_news/src/main/java/com/fly/tour/news/inject/module/NewsListModule.java
浏览文件 @
57eb2978
...
...
@@ -2,8 +2,7 @@ package com.fly.tour.news.inject.module;
import
android.content.Context
;
import
com.fly.tour.db.entity.NewsDetail
;
import
com.fly.tour.news.contract.NewsDetailContract
;
import
com.fly.tour.api.news.entity.NewsDetail
;
import
com.fly.tour.news.contract.NewsListContract
;
import
dagger.Module
;
...
...
module_news/src/main/java/com/fly/tour/news/inject/module/NewsTypeModule.java
0 → 100644
浏览文件 @
57eb2978
package
com.fly.tour.news.inject.module
;
import
android.content.Context
;
import
com.fly.tour.news.contract.NewsDetailContract
;
import
com.fly.tour.news.contract.NewsTypeContract
;
import
dagger.Module
;
import
dagger.Provides
;
/**
* Description: <NewsDetailModule><br>
* Author: gxl<br>
* Date: 2019/5/31<br>
* Version: V1.0.0<br>
* Update: <br>
*/
@Module
public
class
NewsTypeModule
{
private
NewsTypeContract
.
View
mView
;
public
NewsTypeModule
(
NewsTypeContract
.
View
view
)
{
this
.
mView
=
view
;
}
@Provides
public
Context
providerContext
(){
return
mView
.
getContext
();
}
@Provides
public
NewsTypeContract
.
View
providerNewsTypeView
(){
return
mView
;
}
}
module_news/src/main/java/com/fly/tour/news/model/NewsDetailModel.java
浏览文件 @
57eb2978
...
...
@@ -2,14 +2,18 @@ package com.fly.tour.news.model;
import
android.content.Context
;
import
com.fly.tour.api.NewsDetailService
;
import
com.fly.tour.api.RetrofitManager
;
import
com.fly.tour.api.dto.RespDTO
;
import
com.fly.tour.api.http.RxAdapter
;
import
com.fly.tour.api.news.entity.NewsDetail
;
import
com.fly.tour.common.mvp.BaseModel
;
import
com.fly.tour.db.NewsDBConfig
;
import
com.fly.tour.db.dao.NewsDetailDao
;
import
com.fly.tour.db.entity.NewsDetail
;
import
com.fly.tour.news.contract.NewsDetailContract
;
import
javax.inject.Inject
;
import
io.reactivex.Observable
;
/**
* Description: <NewsDetailModel><br>
* Author: gxl<br>
...
...
@@ -18,16 +22,18 @@ import javax.inject.Inject;
* Update: <br>
*/
public
class
NewsDetailModel
extends
BaseModel
implements
NewsDetailContract
.
Model
{
private
NewsDetailDao
mNewsDetailDao
;
private
NewsDetailService
mNewsDetailService
;
@Inject
public
NewsDetailModel
(
Context
context
,
NewsDetailDao
newsDetailDao
)
{
public
NewsDetailModel
(
Context
context
)
{
super
(
context
);
mNewsDetail
Dao
=
newsDetailDao
;
mNewsDetail
Service
=
RetrofitManager
.
getInstance
().
getNewsDetailService
()
;
}
@Override
public
NewsDetail
getNewsDetailById
(
int
id
)
{
return
mNewsDetailDao
.
getNewsDetailById
(
id
);
public
Observable
<
RespDTO
<
NewsDetail
>>
getNewsDetailById
(
int
id
)
{
return
mNewsDetailService
.
getNewsDetailById
(
RetrofitManager
.
getInstance
().
TOKEN
,
id
)
.
compose
(
RxAdapter
.
bindUntilEvent
(
getLifecycle
()))
.
compose
(
RxAdapter
.
schedulersTransformer
())
.
compose
(
RxAdapter
.
exceptionTransformer
());
}
}
module_news/src/main/java/com/fly/tour/news/model/NewsListModel.java
浏览文件 @
57eb2978
...
...
@@ -2,17 +2,19 @@ package com.fly.tour.news.model;
import
android.content.Context
;
import
com.fly.tour.api.NewsDetailService
;
import
com.fly.tour.api.RetrofitManager
;
import
com.fly.tour.api.dto.RespDTO
;
import
com.fly.tour.api.http.RxAdapter
;
import
com.fly.tour.api.news.entity.NewsDetail
;
import
com.fly.tour.api.newstype.entity.NewsType
;
import
com.fly.tour.common.mvp.BaseModel
;
import
com.fly.tour.db.NewsDBConfig
;
import
com.fly.tour.db.dao.NewsDetailDao
;
import
com.fly.tour.db.entity.NewsDetail
;
import
com.fly.tour.db.entity.NewsType
;
import
com.fly.tour.news.contract.NewsListContract
;
import
java.util.List
;
import
javax.inject.Inject
;
import
io.reactivex.Observable
;
/**
* Description: <NewsListModel><br>
* Author: gxl<br>
...
...
@@ -21,15 +23,18 @@ import javax.inject.Inject;
* Update: <br>
*/
public
class
NewsListModel
extends
BaseModel
implements
NewsListContract
.
Model
{
private
NewsDetail
Dao
mDetailDao
;
private
NewsDetail
Service
mNewsDetailService
;
@Inject
public
NewsListModel
(
Context
context
,
NewsDetailDao
detailDao
)
{
public
NewsListModel
(
Context
context
)
{
super
(
context
);
m
DetailDao
=
detailDao
;
m
NewsDetailService
=
RetrofitManager
.
getInstance
().
getNewsDetailService
()
;
}
@Override
public
List
<
NewsDetail
>
getNewsType
(
int
type
)
{
return
mDetailDao
.
getListNewsByType
(
type
);
public
Observable
<
RespDTO
<
List
<
NewsDetail
>>>
getListNewsByType
(
int
typeid
)
{
return
mNewsDetailService
.
getListNewsDetailByType
(
RetrofitManager
.
getInstance
().
TOKEN
,
typeid
)
.
compose
(
RxAdapter
.<
RespDTO
<
List
<
NewsDetail
>>>
bindUntilEvent
(
getLifecycle
()))
.
compose
(
RxAdapter
.
exceptionTransformer
())
.
compose
(
RxAdapter
.
schedulersTransformer
());
}
}
module_news/src/main/java/com/fly/tour/news/model/NewsTypeModel.java
0 → 100644
浏览文件 @
57eb2978
package
com.fly.tour.news.model
;
import
android.content.Context
;
import
com.fly.tour.api.NewsTypeService
;
import
com.fly.tour.api.RetrofitManager
;
import
com.fly.tour.api.dto.RespDTO
;
import
com.fly.tour.api.http.RxAdapter
;
import
com.fly.tour.api.newstype.entity.NewsType
;
import
com.fly.tour.common.mvp.BaseModel
;
import
com.fly.tour.news.contract.NewsTypeContract
;
import
java.util.List
;
import
javax.inject.Inject
;
import
io.reactivex.Observable
;
public
class
NewsTypeModel
extends
BaseModel
implements
NewsTypeContract
.
Model
{
private
NewsTypeService
mNewsTypeService
;
@Inject
public
NewsTypeModel
(
Context
context
)
{
super
(
context
);
mNewsTypeService
=
RetrofitManager
.
getInstance
().
getNewsTypeService
();
}
@Override
public
Observable
<
RespDTO
<
List
<
NewsType
>>>
getListNewsType
()
{
return
mNewsTypeService
.
getListNewsType
(
RetrofitManager
.
getInstance
().
TOKEN
)
.
compose
(
RxAdapter
.
bindUntilEvent
(
getLifecycle
()))
.
compose
(
RxAdapter
.
schedulersTransformer
())
.
compose
(
RxAdapter
.
exceptionTransformer
());
}
}
module_news/src/main/java/com/fly/tour/news/presenter/NewsDetailPresenter.java
浏览文件 @
57eb2978
...
...
@@ -2,9 +2,10 @@ package com.fly.tour.news.presenter;
import
android.content.Context
;
import
com.fly.tour.api.dto.RespDTO
;
import
com.fly.tour.api.news.entity.NewsDetail
;
import
com.fly.tour.common.mvp.BasePresenter
;
import
com.fly.tour.common.util.NetUtil
;
import
com.fly.tour.db.entity.NewsDetail
;
import
com.fly.tour.news.contract.NewsDetailContract
;
import
com.fly.tour.news.model.NewsDetailModel
;
...
...
@@ -12,6 +13,9 @@ import java.util.logging.Handler;
import
javax.inject.Inject
;
import
io.reactivex.Observer
;
import
io.reactivex.disposables.Disposable
;
/**
* Description: <NewsDetailPresenter><br>
* Author: gxl<br>
...
...
@@ -28,22 +32,35 @@ public class NewsDetailPresenter extends BasePresenter<NewsDetailModel,NewsDetai
@Override
public
void
getNewsDetailById
(
final
int
id
)
{
mView
.
showInitLoadView
();
new
android
.
os
.
Handler
().
postDelayed
(
new
Runnable
()
{
if
(!
NetUtil
.
checkNetToast
()){
mView
.
showNetWorkErrView
();
return
;
}
mModel
.
getNewsDetailById
(
id
).
subscribe
(
new
Observer
<
RespDTO
<
NewsDetail
>>()
{
@Override
public
void
run
()
{
if
(!
NetUtil
.
checkNetToast
()){
mView
.
showNetWorkErrView
();
return
;
}
NewsDetail
newsDetail
=
mModel
.
getNewsDetailById
(
id
);
public
void
onSubscribe
(
Disposable
d
)
{
mView
.
showInitLoadView
();
}
@Override
public
void
onNext
(
RespDTO
<
NewsDetail
>
newsDetailRespDTO
)
{
NewsDetail
newsDetail
=
newsDetailRespDTO
.
data
;
if
(
newsDetail
!=
null
){
mView
.
showNewsDetail
(
newsDetail
);
}
else
{
mView
.
showNoDataView
();
}
}
@Override
public
void
onError
(
Throwable
e
)
{
mView
.
hideInitLoadView
();
}
@Override
public
void
onComplete
()
{
mView
.
hideInitLoadView
();
}
}
,
1000
*
2
);
});
}
}
module_news/src/main/java/com/fly/tour/news/presenter/NewsListPresenter.java
浏览文件 @
57eb2978
package
com.fly.tour.news.presenter
;
import
android.content.Context
;
import
android.os.Handler
;
import
com.fly.tour.common.mvp.BaseModel
;
import
com.fly.tour.api.dto.RespDTO
;
import
com.fly.tour.api.news.entity.NewsDetail
;
import
com.fly.tour.common.mvp.BaseRefreshPresenter
;
import
com.fly.tour.common.util.NetUtil
;
import
com.fly.tour.db.NewsDBConfig
;
import
com.fly.tour.db.entity.NewsDetail
;
import
com.fly.tour.news.contract.NewsListContract
;
import
com.fly.tour.news.model.NewsListModel
;
...
...
@@ -15,6 +13,9 @@ import java.util.List;
import
javax.inject.Inject
;
import
io.reactivex.Observer
;
import
io.reactivex.disposables.Disposable
;
/**
* Description: <NewsListPresenter><br>
* Author: gxl<br>
...
...
@@ -33,37 +34,65 @@ public class NewsListPresenter extends BaseRefreshPresenter<NewsListModel, NewsL
@Override
public
void
refreshData
()
{
mView
.
hideNoDataView
();
if
(!
NetUtil
.
checkNetToast
())
{
mView
.
showNetWorkErrView
();
return
;
}
mModel
.
getListNewsByType
(
newsType
).
subscribe
(
new
Observer
<
RespDTO
<
List
<
NewsDetail
>>>()
{
@Override
public
void
onSubscribe
(
Disposable
d
)
{
mView
.
showInitLoadView
();
}
new
Handler
().
postDelayed
(
new
Runnable
()
{
@Override
public
void
run
()
{
if
(!
NetUtil
.
checkNetToast
()){
mView
.
showNetWorkErrView
();
return
;
}
List
<
NewsDetail
>
datailList
=
mModel
.
getNewsType
(
newsType
);
if
(
datailList
!=
null
&&
datailList
.
size
()
>
0
){
public
void
onNext
(
RespDTO
<
List
<
NewsDetail
>>
listRespDTO
)
{
List
<
NewsDetail
>
datailList
=
listRespDTO
.
data
;
if
(
datailList
!=
null
&&
datailList
.
size
()
>
0
)
{
mView
.
refreshData
(
datailList
);
}
else
{
}
else
{
mView
.
showNoDataView
();
}
mView
.
stopRefresh
();
}
@Override
public
void
onError
(
Throwable
e
)
{
mView
.
hideInitLoadView
();
}
},
1000
*
2
);
@Override
public
void
onComplete
()
{
mView
.
hideInitLoadView
();
}
});
}
@Override
public
void
loadMoreData
()
{
new
Handler
().
postDelayed
(
new
Runnable
()
{
mModel
.
getListNewsByType
(
newsType
).
subscribe
(
new
Observer
<
RespDTO
<
List
<
NewsDetail
>>>()
{
@Override
public
void
onSubscribe
(
Disposable
d
)
{
}
@Override
public
void
onNext
(
RespDTO
<
List
<
NewsDetail
>>
listRespDTO
)
{
List
<
NewsDetail
>
datailList
=
listRespDTO
.
data
;
if
(
datailList
!=
null
&&
datailList
.
size
()
>
0
)
{
mView
.
loadMoreData
(
datailList
);
}
}
@Override
public
void
run
()
{
List
<
NewsDetail
>
datailList
=
mModel
.
getNewsType
(
newsType
);
mView
.
loadMoreData
(
datailList
);
public
void
onError
(
Throwable
e
)
{
mView
.
stopLoadMore
();
}
@Override
public
void
onComplete
()
{
mView
.
stopLoadMore
();
}
}
,
1000
*
2
);
});
}
public
void
setNewsType
(
int
newsType
)
{
...
...
module_news/src/main/java/com/fly/tour/news/presenter/NewsTypePresenter.java
0 → 100644
浏览文件 @
57eb2978
package
com.fly.tour.news.presenter
;
import
android.content.Context
;
import
com.facebook.stetho.json.annotation.JsonProperty
;
import
com.fly.tour.api.dto.RespDTO
;
import
com.fly.tour.api.newstype.entity.NewsType
;
import
com.fly.tour.common.mvp.BasePresenter
;
import
com.fly.tour.news.contract.NewsTypeContract
;
import
com.fly.tour.news.model.NewsTypeModel
;
import
java.util.List
;
import
javax.inject.Inject
;
import
io.reactivex.Observer
;
import
io.reactivex.disposables.Disposable
;
/**
* Description: <NewsTypePresenter><br>
* Author: gxl<br>
* Date: 2019/6/23<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public
class
NewsTypePresenter
extends
BasePresenter
<
NewsTypeModel
,
NewsTypeContract
.
View
>
implements
NewsTypeContract
.
Presenter
{
@Inject
public
NewsTypePresenter
(
Context
context
,
NewsTypeContract
.
View
view
,
NewsTypeModel
model
)
{
super
(
context
,
view
,
model
);
}
@Override
public
void
getListNewsType
()
{
mModel
.
getListNewsType
().
subscribe
(
new
Observer
<
RespDTO
<
List
<
NewsType
>>>()
{
@Override
public
void
onSubscribe
(
Disposable
d
)
{
}
@Override
public
void
onNext
(
RespDTO
<
List
<
NewsType
>>
listRespDTO
)
{
mView
.
showListNewsType
(
listRespDTO
.
data
);
mView
.
initTabLayout
();
}
@Override
public
void
onError
(
Throwable
e
)
{
}
@Override
public
void
onComplete
()
{
}
});
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录