Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
YDL-Component-Medical
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
杨凯
YDL-Component-Medical
Commits
290aa8e9
Commit
290aa8e9
authored
Jul 13, 2022
by
fengquan
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/release' into feat/fq/fq_consulttant_revision_release
parents
1deb8fdc
98bbab77
Hide whitespace changes
Inline
Side-by-side
Showing
36 changed files
with
699 additions
and
427 deletions
+699
-427
build.gradle
api/consultant/build.gradle
+1
-1
OnBottomWordListener.kt
api/consultant/src/main/java/com/yidianling/consultant/OnBottomWordListener.kt
+9
-0
IConsultantService.kt
api/consultant/src/main/java/com/yidianling/consultant/api/IConsultantService.kt
+8
-2
FunctionWordConsultBean.kt
api/consultant/src/main/java/com/yidianling/consultant/bean/FunctionWordConsultBean.kt
+9
-0
config.gradle
config.gradle
+2
-2
ExpertSearchActivity.kt
m-consultant/src/main/java/com/yidianling/consultant/ExpertSearchActivity.kt
+41
-7
ExpertSearchFragment.kt
m-consultant/src/main/java/com/yidianling/consultant/ExpertSearchFragment.kt
+41
-9
ExpertSearchPresenter.kt
m-consultant/src/main/java/com/yidianling/consultant/ExpertSearchPresenter.kt
+19
-1
HotSearchActivity.kt
m-consultant/src/main/java/com/yidianling/consultant/HotSearchActivity.kt
+83
-20
IExpertSearchView.kt
m-consultant/src/main/java/com/yidianling/consultant/IExpertSearchView.kt
+4
-1
ExpertSearchAdapter.kt
m-consultant/src/main/java/com/yidianling/consultant/adapter/ExpertSearchAdapter.kt
+0
-2
SearchWordsBean.kt
m-consultant/src/main/java/com/yidianling/consultant/bean/SearchWordsBean.kt
+9
-6
ConsultBIConstants.kt
m-consultant/src/main/java/com/yidianling/consultant/constants/ConsultBIConstants.kt
+10
-4
IHotSearchContract.kt
m-consultant/src/main/java/com/yidianling/consultant/contract/IHotSearchContract.kt
+25
-3
HotSearchHttpImpl.kt
m-consultant/src/main/java/com/yidianling/consultant/http/hotsearch/HotSearchHttpImpl.kt
+10
-3
IHotSearchHttp.kt
m-consultant/src/main/java/com/yidianling/consultant/http/hotsearch/IHotSearchHttp.kt
+9
-2
HotSearchModelImpl.kt
m-consultant/src/main/java/com/yidianling/consultant/model/HotSearchModelImpl.kt
+9
-2
SearchApi.kt
m-consultant/src/main/java/com/yidianling/consultant/model/SearchApi.kt
+15
-6
FunctionWordBean.kt
m-consultant/src/main/java/com/yidianling/consultant/model/bean/FunctionWordBean.kt
+9
-0
ConsultantServiceImp.kt
m-consultant/src/main/java/com/yidianling/consultant/modular/ConsultantServiceImp.kt
+26
-3
HotSearchPresenterImpl.kt
m-consultant/src/main/java/com/yidianling/consultant/presenter/HotSearchPresenterImpl.kt
+31
-10
YdlHomeFragment.kt
m-home/src/xlzx/java/com/yidianling/home/ui/fragment/YdlHomeFragment.kt
+41
-1
YdlHomeFragment.kt
m-home/src/ydl/java/com/yidianling/home/ui/fragment/YdlHomeFragment.kt
+50
-23
AndroidManifest.xml
m-im/src/main/AndroidManifest.xml
+0
-11
build.gradle
m-user/build.gradle
+3
-1
AndroidManifest.xml
m-user/src/main/AndroidManifest.xml
+2
-2
AddAccountActivity.kt
m-user/src/main/java/com/yidianling/user/mine/AddAccountActivity.kt
+61
-52
ChooseAccountActivity.kt
m-user/src/main/java/com/yidianling/user/mine/ChooseAccountActivity.kt
+11
-4
AccountBean.kt
m-user/src/main/java/com/yidianling/user/mine/bean/AccountBean.kt
+49
-1
AddAliAccountFragment.kt
m-user/src/main/java/com/yidianling/user/mine/fragment/AddAliAccountFragment.kt
+0
-80
AddBankAccountFragment.kt
m-user/src/main/java/com/yidianling/user/mine/fragment/AddBankAccountFragment.kt
+0
-22
user_mine_img_yhk.jpg
m-user/src/main/res/drawable-xhdpi/user_mine_img_yhk.jpg
+0
-0
user_mine_activity_add_account.xml
m-user/src/main/res/layout/user_mine_activity_add_account.xml
+111
-29
user_mine_fragment_add_ali_account.xml
m-user/src/main/res/layout/user_mine_fragment_add_ali_account.xml
+0
-94
user_mine_fragment_add_bank_account.xml
m-user/src/main/res/layout/user_mine_fragment_add_bank_account.xml
+0
-23
NewH5Activity.java
ydl-webview/src/main/java/com/ydl/webview/NewH5Activity.java
+1
-0
No files found.
api/consultant/build.gradle
View file @
290aa8e9
...
...
@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
apply
plugin:
'kotlin-android'
apply
from:
"../../maven_push_api.gradle"
version
=
'1.0.
0
'
version
=
'1.0.
2
'
android
{
compileSdkVersion
rootProject
.
ext
.
android
[
"compileSdkVersion"
]
...
...
api/consultant/src/main/java/com/yidianling/consultant/OnBottomWordListener.kt
0 → 100644
View file @
290aa8e9
package
com.yidianling.consultant
import
com.yidianling.consultant.bean.FunctionWordConsultBean
interface
OnBottomWordListener
{
fun
onBottomWord
(
wordList
:
MutableList
<
FunctionWordConsultBean
>)
}
\ No newline at end of file
api/consultant/src/main/java/com/yidianling/consultant/api/IConsultantService.kt
View file @
290aa8e9
...
...
@@ -6,6 +6,7 @@ import androidx.fragment.app.Fragment
import
com.alibaba.android.arouter.facade.template.IProvider
import
com.yidianling.consultant.bean.GuideBean
import
com.yidianling.consultant.bean.Keyworks
import
com.yidianling.consultant.OnBottomWordListener
/**
* Created by xj on 2019/11/14.
...
...
@@ -39,11 +40,15 @@ interface IConsultantService: IProvider {
fun
requestGuideData
()
fun
jumpConsultAssistant
(
activity
:
Activity
,
location
:
Int
)
fun
jumpConsultAssistant
(
activity
:
Activity
,
location
:
Int
)
//根据返回Type跳转自主或者导医
fun
dueToTypeJumpAutoOrGuide
(
activity
:
Activity
,
location
:
Int
,
doctorId
:
Int
,
url
:
String
)
fun
dueToTypeJumpAutoOrGuide
(
activity
:
Activity
,
location
:
Int
,
doctorId
:
Int
,
url
:
String
)
// 咨询列表页显示咨询助理弹框
fun
showConfideListDialog
(
activity
:
Activity
)
//获取底纹词
fun
getbottomWord
(
type
:
Int
,
listener
:
OnBottomWordListener
)
}
\ No newline at end of file
api/consultant/src/main/java/com/yidianling/consultant/bean/FunctionWordConsultBean.kt
0 → 100644
View file @
290aa8e9
package
com.yidianling.consultant.bean
data class
FunctionWordConsultBean
(
var
id
:
Long
?,
var
word
:
String
?,
var
type
:
Int
?,
var
jumpUrl
:
String
?
)
\ No newline at end of file
config.gradle
View file @
290aa8e9
...
...
@@ -8,7 +8,7 @@ ext {
"m-consultant"
:
"0.0.60.78"
,
"m-fm"
:
"0.0.30.09"
,
"m-user"
:
"0.0.62.72"
,
"m-home"
:
"0.0.24.0
0
"
,
"m-home"
:
"0.0.24.0
4
"
,
"m-im"
:
"0.0.21.69"
,
"m-dynamic"
:
"0.0.7.80"
,
"m-article"
:
"0.0.0.10"
,
...
...
@@ -231,7 +231,7 @@ ext {
"ydl-m-tests-api"
:
"com.ydl:m-tests-api:1.0.0"
,
"ydl-m-im-api"
:
"com.ydl:m-im-api:1.0.3"
,
"ydl-m-home-api"
:
"com.ydl:m-home-api:${ydlPublishVersion["
m
-
home
-
api
"]}"
,
"ydl-m-consultant-api"
:
"com.ydl:m-consultant-api:1.0.
0
"
,
"ydl-m-consultant-api"
:
"com.ydl:m-consultant-api:1.0.
2
"
,
"ydl-m-dynamic-api"
:
"com.ydl:m-dynamic-api:1.0.0"
,
"ydl-m-confide-api"
:
"com.ydl:m-confide-api:1.0.4"
,
"ydl-m-course-api"
:
"com.ydl:m-course-api:1.0.0"
,
...
...
m-consultant/src/main/java/com/yidianling/consultant/ExpertSearchActivity.kt
View file @
290aa8e9
...
...
@@ -40,6 +40,7 @@ import com.yidianling.common.tools.LogUtil
import
com.yidianling.common.tools.RxImageTool
import
com.yidianling.common.tools.ToastUtil
import
com.yidianling.consultant.adapter.ExpertSearchAdapter
import
com.yidianling.consultant.bean.FunctionWordConsultBean
import
com.yidianling.consultant.constants.ConsultBIConstants
import
com.yidianling.consultant.constants.ConsultBIConstants.ConsultEvent.Companion.YDL_USER_CONSULT_SEARCH_CLICK
import
com.yidianling.consultant.listener.OnCategoriesSelectedListener
...
...
@@ -53,25 +54,32 @@ import com.yidianling.consultant.ui.view.CategoryPopupWindow
import
com.yidianling.consultant.ui.view.FilterPopupWindow
import
com.yidianling.consultant.ui.view.SortPopupWindow
import
com.yidianling.consultant.ui.view.topView.RecommendListView
import
io.reactivex.Observable
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.disposables.Disposable
import
io.reactivex.schedulers.Schedulers
import
kotlinx.android.synthetic.main.consultant_activity_expert_search_list.*
import
kotlinx.android.synthetic.main.consultant_item_filter_online.view.*
import
kotlinx.android.synthetic.main.consultant_layout_search_content.*
import
kotlinx.android.synthetic.main.consultant_layout_search_toolbar.*
import
org.json.JSONObject
import
java.util.concurrent.Executors
import
java.util.concurrent.TimeUnit
@Route
(
path
=
"/consult/list"
)
class
ExpertSearchActivity
:
BaseMvpActivity
<
IExpertSearchView
,
ExpertSearchPresenter
>(),
View
.
OnClickListener
,
IExpertSearchView
,
OnCategoriesSelectedListener
,
OnSortItemSelectedListener
,
OnFilterConfirmListener
,
SwipeRefreshLayout
.
OnRefreshListener
{
var
bottomWordDisposable
:
Disposable
?
=
null
private
lateinit
var
bottomWordlist
:
List
<
FunctionWordBean
>
private
var
searchWord
:
String
?
=
""
override
fun
showImage
(
url
:
String
?,
imgView
:
ImageView
)
{
YDLImageCacheManager
.
showImage
(
ExpertSearchActivity
@
this
,
url
,
imgView
)
}
override
fun
showImage
(
url
:
String
?,
imgView
:
ImageView
,
ops
:
SimpleImageOpConfiger
)
{
YDLImageCacheManager
.
showImage
(
ExpertSearchActivity
@
this
,
url
,
imgView
,
ops
)
YDLImageCacheManager
.
showImage
(
this
,
url
,
imgView
,
ops
)
}
override
fun
showImage
(
...
...
@@ -383,7 +391,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
initCategory
=
mIntent
.
getStringExtra
(
EXTRA_CATEGORY
)
?:
""
initShowType
=
mIntent
.
getIntExtra
(
EXTRA_SHOW_TYPE
,
0
)
val
relatedWord
=
mIntent
.
getStringExtra
(
EXTRA_RELATED_WORD
)
// 搜索内容的联想词
val
searchWord
=
mIntent
.
getStringExtra
(
EXTRA_SEARCH_WORD
)
searchWord
=
mIntent
.
getStringExtra
(
EXTRA_SEARCH_WORD
)
val
isRecommendWords
=
mIntent
.
getBooleanExtra
(
EXTRA_IS_RECCOMMEND_WORD
,
false
)
if
(!
TextUtils
.
isEmpty
(
relatedWord
))
{
// 判断搜索内容的联想词为空,则用搜索词进行搜索
allFilter
.
searchWord
=
relatedWord
...
...
@@ -394,7 +402,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
getRouterParam
()
allFilter
.
showType
.
key
=
initShowType
if
(!
TextUtils
.
isEmpty
(
initCategory
)
&&
initCategory
!=
"0"
)
{
if
(!
TextUtils
.
isEmpty
(
initCategory
)
&&
initCategory
!=
"0"
)
{
allFilter
.
categoryId2List
.
add
(
initCategory
)
}
if
(!
TextUtils
.
isEmpty
(
cateName
))
{
...
...
@@ -414,11 +422,11 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
LogUtil
.
e
(
"relatedWord:${relatedWord}"
)
if
(!
TextUtils
.
isEmpty
(
searchWord
)
&&
!
TextUtils
.
isEmpty
(
relatedWord
)
&&
searchWord
!=
relatedWord
)
{
if
(
doctorList
.
size
>
0
&&
doctorList
[
0
].
is_head_view
)
{
doctorList
[
0
]
=
ExpertServiceItem
(
true
,
searchWord
,
relatedWord
)
doctorList
[
0
]
=
ExpertServiceItem
(
true
,
searchWord
.
toString
()
,
relatedWord
)
}
else
if
(
doctorList
.
size
>
0
)
{
doctorList
.
add
(
0
,
ExpertServiceItem
(
true
,
searchWord
,
relatedWord
))
doctorList
.
add
(
0
,
ExpertServiceItem
(
true
,
searchWord
.
toString
()
,
relatedWord
))
}
else
{
doctorList
.
add
(
ExpertServiceItem
(
true
,
searchWord
,
relatedWord
))
doctorList
.
add
(
ExpertServiceItem
(
true
,
searchWord
.
toString
()
,
relatedWord
))
}
}
else
{
if
(
doctorList
.
size
>
0
&&
doctorList
[
0
].
is_head_view
)
{
...
...
@@ -432,6 +440,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
doctorAdapter
.
clickCount
=
0
doctorAdapter
.
setIsRecommendWords
(
isRecommendWords
)
doctorAdapter
.
setEntrance
(
1
)
getPresenter
().
fetchFunctionWord
(
2
)
}
override
fun
onNewIntent
(
intent
:
Intent
?)
{
...
...
@@ -511,6 +520,30 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
}
}
override
fun
onFunctionWordFetched
(
wordBean
:
MutableList
<
FunctionWordBean
>)
{
//获取底纹词
bottomWordlist
=
wordBean
if
(
bottomWordlist
.
isNullOrEmpty
())
return
if
(!
searchWord
.
isNullOrEmpty
())
{
tv_search_content
.
text
=
searchWord
}
else
{
if
(
bottomWordlist
.
size
==
1
)
{
tv_search_content
.
text
=
bottomWordlist
[
0
].
word
}
else
{
bottomWordDisposable
=
Observable
.
interval
(
0
,
3
,
TimeUnit
.
SECONDS
)
.
subscribeOn
(
Schedulers
.
computation
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
tv_search_content
.
text
=
bottomWordlist
[(
it
%
bottomWordlist
.
size
).
toInt
()].
word
},
{
},
{
})
}
}
}
/**
* 热门
*/
...
...
@@ -1559,6 +1592,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
override
fun
onDestroy
()
{
super
.
onDestroy
()
mHandler
=
null
bottomWordDisposable
?.
dispose
()
ConsultAssistantDialogUtils
.
INSTANCE
.
expertSearchResetStatus
()
}
}
m-consultant/src/main/java/com/yidianling/consultant/ExpertSearchFragment.kt
View file @
290aa8e9
...
...
@@ -4,6 +4,7 @@ import android.animation.Animator
import
android.animation.AnimatorListenerAdapter
import
android.animation.ObjectAnimator
import
android.animation.PropertyValuesHolder
import
android.annotation.SuppressLint
import
android.content.Context
import
android.graphics.Typeface
import
android.os.Handler
...
...
@@ -41,6 +42,7 @@ import com.yidianling.common.tools.LogUtil
import
com.yidianling.common.tools.RxImageTool
import
com.yidianling.common.tools.ToastUtil
import
com.yidianling.consultant.adapter.ExpertSearchAdapter
import
com.yidianling.consultant.bean.FunctionWordConsultBean
import
com.yidianling.consultant.constants.ConsultBIConstants
import
com.yidianling.consultant.listener.OnCategoriesSelectedListener
import
com.yidianling.consultant.listener.OnExpertClickListener
...
...
@@ -56,12 +58,17 @@ import com.yidianling.consultant.ui.view.SortPopupWindow
import
com.yidianling.consultant.ui.view.topView.RecommendListView
import
com.yidianling.home.api.event.HomeModuleTabEvent
import
de.greenrobot.event.EventBus
import
io.reactivex.Observable
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.disposables.Disposable
import
io.reactivex.schedulers.Schedulers
import
kotlinx.android.synthetic.main.consultant_activity_expert_search_list.*
import
kotlinx.android.synthetic.main.consultant_item_filter_online.view.*
import
kotlinx.android.synthetic.main.consultant_layout_search_content.*
import
kotlinx.android.synthetic.main.consultant_layout_search_toolbar.*
import
org.json.JSONObject
import
java.util.concurrent.Executors
import
java.util.concurrent.TimeUnit
@Route
(
path
=
"/consultant/consultant"
)
class
ExpertSearchFragment
:
BaseMvpFragment
<
IExpertSearchView
,
ExpertSearchPresenter
>(),
...
...
@@ -73,7 +80,8 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
var
startTime
=
0L
var
endTime
=
0L
private
var
mIdssign1
:
String
=
""
// 列表埋点咨询师列表id拼接参数
var
bottomWordDisposable
:
Disposable
?
=
null
private
lateinit
var
bottomWordlist
:
List
<
FunctionWordBean
>
override
fun
layoutResId
():
Int
{
return
R
.
layout
.
consultant_activity_expert_search_list
}
...
...
@@ -145,6 +153,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
const
val
FROM_FIND_EXPERT
=
1
const
val
FROM_ONLINE_EXPERT
=
2
const
val
PAGE_SIZE
=
15
//列表点击回来不刷新列表
var
needRefresh
=
true
;
}
...
...
@@ -197,12 +206,13 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
srlContainer
.
isEnabled
=
i
>=
0
})
doctorAdapter
=
ExpertSearchAdapter
(
mContext
,
this
,
doctorList
,
object
:
OnExpertClickListener
{
override
fun
onExpertClick
()
{
needRefresh
=
false
}
doctorAdapter
=
ExpertSearchAdapter
(
mContext
,
this
,
doctorList
,
object
:
OnExpertClickListener
{
override
fun
onExpertClick
()
{
needRefresh
=
false
}
})
})
rvExperts
.
adapter
=
doctorAdapter
val
layoutManager
=
LinearLayoutManager
(
...
...
@@ -346,6 +356,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
allFilter
.
showType
.
key
=
initShowType
getPresenter
().
fetchListHead
()
getPresenter
().
fetchFunctionWord
(
2
)
recommendListView
.
requestData
(
""
)
v_loading
.
visibility
=
View
.
VISIBLE
...
...
@@ -418,6 +429,26 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
}
}
@SuppressLint
(
"CheckResult"
)
override
fun
onFunctionWordFetched
(
wordBean
:
MutableList
<
FunctionWordBean
>)
{
//获取底纹词
bottomWordlist
=
wordBean
if
(
bottomWordlist
.
isNullOrEmpty
())
return
if
(
bottomWordlist
.
size
==
1
)
{
tv_search_content
.
text
=
bottomWordlist
[
0
].
word
}
else
{
bottomWordDisposable
=
Observable
.
interval
(
0
,
3
,
TimeUnit
.
SECONDS
)
.
subscribeOn
(
Schedulers
.
computation
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
tv_search_content
.
text
=
bottomWordlist
[(
it
%
bottomWordlist
.
size
).
toInt
()].
word
},
{
},
{
})
}
}
/**
* 热门
*/
...
...
@@ -1374,7 +1405,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
srlContainer
.
isRefreshing
=
isShowRefresh
!!
val
key
=
tv_search_content
.
text
.
toString
()
if
(!
TextUtils
.
isEmpty
(
key
.
trim
()))
{
allFilter
.
searchWord
=
key
.
trim
()
allFilter
.
searchWord
=
null
}
else
{
allFilter
.
searchWord
=
null
}
...
...
@@ -1430,9 +1461,9 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
override
fun
onResume
()
{
super
.
onResume
()
if
(
needRefresh
){
if
(
needRefresh
)
{
refresh
(
false
)
}
else
{
}
else
{
//
needRefresh
=
true
}
...
...
@@ -1444,6 +1475,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
super
.
onDestroy
()
EventBus
.
getDefault
().
unregister
(
this
)
mHandler
=
null
bottomWordDisposable
?.
dispose
()
ConsultAssistantDialogUtils
.
INSTANCE
.
resetStatus
()
}
}
m-consultant/src/main/java/com/yidianling/consultant/ExpertSearchPresenter.kt
View file @
290aa8e9
...
...
@@ -43,6 +43,24 @@ class ExpertSearchPresenter : SimplePresenter<IExpertSearchView>() {
})
}
// 查询底纹词
@SuppressLint
(
"CheckResult"
)
fun
fetchFunctionWord
(
type
:
Int
)
{
val
map
=
HashMap
<
String
,
Any
>()
map
[
"type"
]
=
type
SearchApi
.
getSearchApi
()
.
searchFunctionWord
(
map
)
.
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
mView
))
//使用 Rxlifecycle,使 Disposable 和 Activity 一起销毁
.
compose
(
RxUtils
.
resultJavaData
())
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
resp
->
mView
.
onFunctionWordFetched
(
resp
)
},
{
t
->
HttpErrorUtils
.
handleError
(
BaseApp
.
getApp
(),
t
)
mView
.
fetchFailed
(
t
.
message
)
})
}
@SuppressLint
(
"CheckResult"
)
fun
fetchListData
(
allFilter
:
AllFilter
,
extras
:
Extras
?)
{
...
...
@@ -53,7 +71,7 @@ class ExpertSearchPresenter : SimplePresenter<IExpertSearchView>() {
// filter
val
filterMap
=
HashMap
<
String
,
Any
?>()
// 搜索词
if
(!
TextUtils
.
isEmpty
(
allFilter
.
searchWord
)){
if
(!
TextUtils
.
isEmpty
(
allFilter
.
searchWord
))
{
filterMap
[
"__keywords"
]
=
allFilter
.
searchWord
}
val
categoryList
=
ArrayList
<
Any
>()
...
...
m-consultant/src/main/java/com/yidianling/consultant/HotSearchActivity.kt
View file @
290aa8e9
...
...
@@ -15,6 +15,8 @@ import androidx.recyclerview.widget.LinearLayoutManager
import
com.alibaba.android.arouter.facade.annotation.Route
import
com.google.gson.Gson
import
com.google.gson.reflect.TypeToken
import
com.ydl.webview.H5Params
import
com.ydl.webview.NewH5Activity
import
com.ydl.ydl_image.module.GlideApp
import
com.ydl.ydl_router.manager.YDLRouterParams
import
com.ydl.ydlcommon.base.BaseMvpActivity
...
...
@@ -30,7 +32,9 @@ import com.yidianling.consultant.adapter.SearchWordsAdapter
import
com.yidianling.consultant.api.IConsultantService
import
com.yidianling.consultant.bean.*
import
com.yidianling.consultant.constants.ConsultBIConstants
import
com.yidianling.consultant.constants.ConsultBIConstants.ConsultEvent.Companion.SEARCH_BANNERWORD_CLICK
import
com.yidianling.consultant.contract.IHotSearchContract
import
com.yidianling.consultant.model.bean.FunctionWordBean
import
com.yidianling.consultant.modular.utils.ConsultAssistantEntryUtils
import
com.yidianling.consultant.modular.utils.TempH5RouteUtils
import
com.yidianling.consultant.presenter.HotSearchPresenterImpl
...
...
@@ -40,14 +44,20 @@ import kotlinx.android.synthetic.main.consultant_item_expert_hot_search.view.*
@Route
(
path
=
"/consult/hot_search"
)
class
HotSearchActivity
:
BaseMvpActivity
<
IHotSearchContract
.
View
,
IHotSearchContract
.
Presenter
>(),
IHotSearchContract
.
View
{
private
lateinit
var
searchWordsAdapter
:
SearchWordsAdapter
private
val
searchSuggestList
:
ArrayList
<
SearchSuggestListBean
>
=
ArrayList
()
private
var
mSearchContent
:
String
=
""
private
val
CACHE_CONSULT_SEARCH_HISTORY_DATA
=
"cache_consult_search_history_data"
private
val
HOT_SEARCH_DOCTOR_NAME
=
"hot_search_doctor_name"
private
var
historyList
:
FixSizeLinkedList
<
String
>
=
FixSizeLinkedList
(
15
)
private
val
bannerList
=
ArrayList
<
String
>()
companion
object
{
private
const
val
CACHE_CONSULT_SEARCH_HISTORY_DATA
=
"cache_consult_search_history_data"
private
const
val
HOT_SEARCH_DOCTOR_NAME
=
"hot_search_doctor_name"
private
const
val
JUMP_WORD
=
"jump_word"
}
//历史搜索内容的最大宽度
private
var
maxWidth
:
Int
=
0
...
...
@@ -82,7 +92,7 @@ class HotSearchActivity : BaseMvpActivity<IHotSearchContract.View, IHotSearchCon
private
fun
getDataFromIntent
()
{
val
doctorName
=
intent
.
getStringExtra
(
HOT_SEARCH_DOCTOR_NAME
)
if
(!
TextUtils
.
isEmpty
(
doctorName
))
{
etSearch
.
setText
(
doctorName
)
etSearch
.
hint
=
doctorName
iv_delete_icon
.
visibility
=
View
.
VISIBLE
}
}
...
...
@@ -109,11 +119,20 @@ class HotSearchActivity : BaseMvpActivity<IHotSearchContract.View, IHotSearchCon
if
(
TextUtils
.
isEmpty
(
relatedWords
)
&&
!
TextUtils
.
isEmpty
(
searchSuggestList
[
0
].
suggest_content
))
{
relatedWords
=
searchSuggestList
[
0
].
suggest_content
}
doSearch
(
etSearch
.
text
.
toString
(),
relatedWords
,
isRecommendWords
)
if
(
searchSuggestList
?.
get
(
0
)
?.
suggest_types
?.
contains
(
JUMP_WORD
))
{
NewH5Activity
.
start
(
this
,
H5Params
(
searchSuggestList
[
0
].
jump_url
!!
,
null
))
}
else
{
if
(
etSearch
.
text
.
toString
().
isNullOrEmpty
())
{
doSearch
(
etSearch
.
hint
.
toString
(),
relatedWords
,
isRecommendWords
)
}
else
{
doSearch
(
etSearch
.
text
.
toString
(),
relatedWords
,
isRecommendWords
)
}
}
}
else
{
val
searchWords
=
etSearch
.
text
.
toString
()
if
(
TextUtils
.
isEmpty
(
searchWords
))
{
doSearch
(
searchWords
,
""
,
isRecommendWords
)
getSearchWords
(
etSearch
.
hint
.
toString
(),
true
)
}
else
{
getSearchWords
(
etSearch
.
text
.
toString
(),
true
)
}
...
...
@@ -164,7 +183,15 @@ class HotSearchActivity : BaseMvpActivity<IHotSearchContract.View, IHotSearchCon
relatedWords
=
searchSuggestList
[
position
].
suggest_content
}
}
doSearch
(
searchSuggestList
[
position
].
suggest_content
,
relatedWords
,
isRecommendWords
)
if
(
searchSuggestList
[
position
].
suggest_types
.
contains
(
JUMP_WORD
))
{
NewH5Activity
.
start
(
this
,
H5Params
(
searchSuggestList
[
position
].
jump_url
!!
,
null
))
}
else
{
doSearch
(
searchSuggestList
[
position
].
suggest_content
,
relatedWords
,
isRecommendWords
)
}
// 埋点
ActionCountUtils
.
baiDuCountSign3
(
...
...
@@ -219,6 +246,7 @@ class HotSearchActivity : BaseMvpActivity<IHotSearchContract.View, IHotSearchCon
isClickWords
:
Boolean
)
{
if
(
isClickWords
)
{
//判断 suggest_classify_types 有值则通过 jump_url跳转
// 搜索的关联词
var
relatedWords
=
""
var
isRecommendWords
=
false
...
...
@@ -231,7 +259,27 @@ class HotSearchActivity : BaseMvpActivity<IHotSearchContract.View, IHotSearchCon
relatedWords
=
searchWordsBean
.
search_suggests
[
0
].
suggest_content
}
}
doSearch
(
searchContent
,
relatedWords
,
isRecommendWords
)
if
(!
searchWordsBean
.
search_suggests
.
isNullOrEmpty
()
&&
searchWordsBean
.
search_suggests
.
get
(
0
).
suggest_types
.
contains
(
JUMP_WORD
)
)
{
//将数据增加到历史搜索中
if
(!
TextUtils
.
isEmpty
(
searchContent
))
{
historyList
.
remove
(
searchContent
)
historyList
.
add
(
searchContent
)
SharedPreferencesEditor
.
putString
(
CACHE_CONSULT_SEARCH_HISTORY_DATA
,
Gson
().
toJson
(
historyList
)
)
}
NewH5Activity
.
start
(
this
,
H5Params
(
searchWordsBean
.
search_suggests
[
0
].
jump_url
!!
,
null
)
)
finish
()
}
else
{
doSearch
(
searchContent
,
relatedWords
,
isRecommendWords
)
}
}
else
{
searchSuggestList
.
clear
()
if
(!
searchWordsBean
.
search_suggests
.
isNullOrEmpty
())
{
...
...
@@ -257,7 +305,9 @@ class HotSearchActivity : BaseMvpActivity<IHotSearchContract.View, IHotSearchCon
private
fun
initData
()
{
initHistoryData
()
mPresenter
.
localData
(
this
)
val
mapType
=
HashMap
<
String
,
Any
>()
mapType
[
"type"
]
=
1
mPresenter
.
searchHotWordData
(
mapType
)
if
(
etSearch
.
requestFocus
())
{
val
imm
=
getSystemService
(
Context
.
INPUT_METHOD_SERVICE
)
as
InputMethodManager
val
isShowing
=
imm
.
showSoftInput
(
etSearch
,
InputMethodManager
.
SHOW_IMPLICIT
)
...
...
@@ -276,30 +326,36 @@ class HotSearchActivity : BaseMvpActivity<IHotSearchContract.View, IHotSearchCon
refreshBanner
(
hotSearchBean
.
focusList
)
}
override
fun
requestFail
()
{
refreshBanner
(
null
)
}
//刷新 热门搜索
private
fun
refreshHotSearchData
(
keywordData
:
MutableList
<
HotSearchKeyWordDataBean
>?)
{
if
(
null
==
keywordData
||
keywordData
.
isEmpty
())
{
override
fun
searchHotWordData
(
wordList
:
MutableList
<
FunctionWordBean
>)
{
//热门词搜索结果
if
(
wordList
.
isEmpty
())
{
llHotSearch
.
visibility
=
View
.
GONE
return
}
llHotSearch
.
visibility
=
View
.
VISIBLE
flHotSearch
.
removeAllViews
()
for
(
index
in
keywordData
.
indices
)
{
for
(
index
in
wordList
.
indices
)
{
val
view
=
LayoutInflater
.
from
(
this
)
.
inflate
(
R
.
layout
.
consultant_item_expert_hot_search
,
flHotSearch
,
false
)
view
.
tvHotSearch
.
text
=
keywordData
[
index
].
key
word
view
.
tvHotSearch
.
text
=
wordList
[
index
].
word
view
.
setOnClickListener
{
getSearchWords
(
keywordData
[
index
].
keyword
!!
,
true
)
ActionCountUtils
.
count
(
SEARCH_BANNERWORD_CLICK
,
wordList
[
index
].
word
!!
,
"热门搜索"
)
getSearchWords
(
wordList
[
index
].
word
!!
,
true
)
}
flHotSearch
.
addView
(
view
)
}
}
override
fun
requestFail
()
{
refreshBanner
(
null
)
}
//刷新 热门搜索
private
fun
refreshHotSearchData
(
keywordData
:
MutableList
<
HotSearchKeyWordDataBean
>?)
{
//旧的热门搜索
}
//刷新 本周热门专家
private
fun
refreshHotExpertData
(
hotSearchExpert
:
MutableList
<
HotSearchPopularDoctorBean
>?)
{
if
(
null
==
hotSearchExpert
||
hotSearchExpert
.
isEmpty
())
{
...
...
@@ -326,7 +382,12 @@ class HotSearchActivity : BaseMvpActivity<IHotSearchContract.View, IHotSearchCon
}
}
view
.
setOnClickListener
{
getSearchWords
(
hotSearchExpert
[
index
].
name
!!
,
true
)
ActionCountUtils
.
count
(
SEARCH_BANNERWORD_CLICK
,
hotSearchExpert
[
index
].
name
.
toString
(),
"本周热门专家"
)
getSearchWords
(
hotSearchExpert
[
index
].
name
.
toString
(),
true
)
}
flHotExpert
.
addView
(
view
)
}
...
...
@@ -388,6 +449,8 @@ class HotSearchActivity : BaseMvpActivity<IHotSearchContract.View, IHotSearchCon
break
}
view
.
setOnClickListener
{
//历史搜索
ActionCountUtils
.
count
(
SEARCH_BANNERWORD_CLICK
,
historyStr
,
"历史搜索"
)
getSearchWords
(
historyStr
,
true
)
}
fl_search_history
.
addView
(
view
)
...
...
m-consultant/src/main/java/com/yidianling/consultant/IExpertSearchView.kt
View file @
290aa8e9
...
...
@@ -3,8 +3,10 @@ package com.yidianling.consultant
import
android.widget.ImageView
import
com.ydl.ydl_image.config.SimpleImageOpConfiger
import
com.ydl.ydlcommon.mvp.base.IView
import
com.yidianling.consultant.bean.FunctionWordConsultBean
import
com.yidianling.consultant.model.bean.ExpertServiceItem
import
com.yidianling.consultant.model.bean.Extras
import
com.yidianling.consultant.model.bean.FunctionWordBean
import
com.yidianling.consultant.model.bean.HeadData
/**
...
...
@@ -16,7 +18,8 @@ interface IExpertSearchView : IView {
fun
localData
()
fun
onHeadFetched
(
headData
:
HeadData
?)
fun
onDoctorListFetched
(
data
:
MutableList
<
ExpertServiceItem
>,
extras
:
Extras
?,
curPage
:
Int
)
fun
onFunctionWordFetched
(
wordBean
:
MutableList
<
FunctionWordBean
>)
fun
onDoctorListFetched
(
data
:
MutableList
<
ExpertServiceItem
>,
extras
:
Extras
?,
curPage
:
Int
)
fun
fetchFailed
(
msg
:
String
?)
fun
fetchListFailed
(
msg
:
String
?)
fun
fetchListEmpty
(
msg
:
String
?)
...
...
m-consultant/src/main/java/com/yidianling/consultant/adapter/ExpertSearchAdapter.kt
View file @
290aa8e9
...
...
@@ -402,8 +402,6 @@ class ExpertSearchAdapter(
}
}
}
else
if
(
holder
is
FooterViewHolder
)
{
LogUtil
.
e
(
"${listData.size}"
)
LogUtil
.
e
(
"${hasMore}"
)
if
(
hasMore
)
{
holder
.
itemView
.
visibility
=
View
.
VISIBLE
holder
.
pbLoading
.
visibility
=
View
.
VISIBLE
...
...
m-consultant/src/main/java/com/yidianling/consultant/bean/SearchWordsBean.kt
View file @
290aa8e9
...
...
@@ -8,11 +8,13 @@ data class SearchWordsBean(
)
data class
SearchSuggestListBean
(
val
id
:
String
,
val
score
:
String
,
val
suggest_content
:
String
,
val
suggest_relations
:
ArrayList
<
String
>,
val
id
:
String
,
val
score
:
String
,
val
suggest_content
:
String
,
val
suggest_relations
:
ArrayList
<
String
>,
val
search_count
:
Int
,
val
suggest_classify_types
:
ArrayList
<
String
>,
val
mapping_classify_type_exist
:
Boolean
val
suggest_classify_types
:
ArrayList
<
String
>?,
val
mapping_classify_type_exist
:
Boolean
,
val
jump_url
:
String
?,
val
suggest_types
:
ArrayList
<
String
>
)
\ No newline at end of file
m-consultant/src/main/java/com/yidianling/consultant/constants/ConsultBIConstants.kt
View file @
290aa8e9
...
...
@@ -58,10 +58,16 @@ class ConsultBIConstants {
const
val
YDL_USER_CONSULT_TYPE_CLICK
:
String
=
APP_CONSULT_LIST_PAGE
+
"ydl_user_consult_type_click"
//咨询师顶部ICON 厌学专题、限时特惠、精神心理
const
val
POSITION_CONSULT_COUNSELOR_CARD_CLICK
=
"consult_counselor_card_click"
// 咨询师列表点击position
const
val
POSITION_CHOICE_FILTER_CLICK
=
"choice_filter_click"
// 热门点击项position
const
val
POSITION_TWO_CATEGORY_CLICK
=
"two_category_click"
// 八大类标签选择埋点
const
val
POSITION_GOODAT_CROWD_CLICK
=
"goodat_crowd_click"
// 擅长人群埋点
const
val
POSITION_CONSULT_COUNSELOR_CARD_CLICK
=
"consult_counselor_card_click"
// 咨询师列表点击position
const
val
POSITION_CHOICE_FILTER_CLICK
=
"choice_filter_click"
// 热门点击项position
const
val
POSITION_TWO_CATEGORY_CLICK
=
"two_category_click"
// 八大类标签选择埋点
const
val
POSITION_GOODAT_CROWD_CLICK
=
"goodat_crowd_click"
// 擅长人群埋点
const
val
SEARCH_BANNERWORD_CLICK
=
"$PART_ID_YDL_USER_MAIN_PAGE|search_bannerword_click"
//历史搜索、热门搜索、本周热门专家搜索
}
}
class
ConsultSearchListEvent
{
...
...
m-consultant/src/main/java/com/yidianling/consultant/contract/IHotSearchContract.kt
View file @
290aa8e9
package
com.yidianling.consultant.contract
import
android.content.Context
import
com.ydl.ydlcommon.data.http.BaseAPIResponse
import
com.ydl.ydlcommon.mvp.base.IModel
import
com.ydl.ydlcommon.mvp.base.IPresenter
import
com.ydl.ydlcommon.mvp.base.IView
import
com.yidianling.consultant.bean.HotSearchBean
import
com.yidianling.consultant.bean.SearchWordsBean
import
com.yidianling.consultant.model.bean.FunctionWordBean
import
io.reactivex.Observable
/**
...
...
@@ -24,6 +26,11 @@ class IHotSearchContract {
fun
searchDataResponse
(
hotSearchBean
:
HotSearchBean
)
/**
* 搜索页请求热门词
*/
fun
searchHotWordData
(
wordList
:
MutableList
<
FunctionWordBean
>)
/**
* 请求失败
*/
fun
requestFail
()
...
...
@@ -31,7 +38,11 @@ class IHotSearchContract {
/**
* 联想词请求成功结果
*/
fun
getSearchWordsSuccess
(
searchWordsBean
:
SearchWordsBean
,
searchContent
:
String
,
isClickWords
:
Boolean
)
fun
getSearchWordsSuccess
(
searchWordsBean
:
SearchWordsBean
,
searchContent
:
String
,
isClickWords
:
Boolean
)
}
interface
Presenter
:
IPresenter
<
View
>
{
...
...
@@ -46,9 +57,14 @@ class IHotSearchContract {
fun
searchData
()
/**
* 搜索页请求热门词
*/
fun
searchHotWordData
(
map
:
HashMap
<
String
,
Any
>)
/**
* 获取联想词
*/
fun
getSearchWords
(
map
:
HashMap
<
String
,
Any
>,
searchContent
:
String
,
isClickWords
:
Boolean
)
fun
getSearchWords
(
map
:
HashMap
<
String
,
Any
>,
searchContent
:
String
,
isClickWords
:
Boolean
)
}
interface
Model
:
IModel
{
...
...
@@ -60,6 +76,11 @@ class IHotSearchContract {
/**
* 获取到联想词
*/
fun
getSearchWords
(
map
:
HashMap
<
String
,
Any
>):
Observable
<
SearchWordsBean
>
fun
getSearchWords
(
map
:
HashMap
<
String
,
Any
>):
Observable
<
SearchWordsBean
>
/**
* 搜索页请求热门词
*/
fun
searchHotWordData
(
map
:
HashMap
<
String
,
Any
>):
Observable
<
BaseAPIResponse
<
MutableList
<
FunctionWordBean
>>>
}
}
\ No newline at end of file
m-consultant/src/main/java/com/yidianling/consultant/http/hotsearch/HotSearchHttpImpl.kt
View file @
290aa8e9
...
...
@@ -3,10 +3,13 @@ package com.yidianling.consultant.http.hotsearch
import
com.ydl.ydlcommon.data.http.BaseAPIResponse
import
com.ydl.ydlcommon.data.http.RxUtils
import
com.ydl.ydlnet.YDLHttpUtils
import
com.yidianling.consultant.bean.FunctionWordConsultBean
import
com.yidianling.consultant.bean.HotSearchBean
import
com.yidianling.consultant.bean.HotSearchKeyWordDataBean
import
com.yidianling.consultant.bean.SearchWordsBean
import
com.yidianling.consultant.http.ExpertSearchParam
import
com.yidianling.consultant.model.SearchApi
import
com.yidianling.consultant.model.bean.FunctionWordBean
import
io.reactivex.Observable
/**
...
...
@@ -43,9 +46,13 @@ class HotSearchHttpImpl : IHotSearchHttp {
override
fun
searchData
():
Observable
<
BaseAPIResponse
<
HotSearchBean
>>
{
return
RxUtils
.
mapObservable
(
ExpertSearchParam
(
""
))
.
flatMap
{
getSearchApi
().
searchPage
()
}
.
flatMap
{
getSearchApi
().
searchPage
()
}
}
override
fun
searchHotWordData
(
map
:
HashMap
<
String
,
Any
>):
Observable
<
BaseAPIResponse
<
MutableList
<
FunctionWordBean
>>>
{
return
getSearchApi
().
searchFunctionWord
(
map
)
}
override
fun
getSearchWords
(
map
:
HashMap
<
String
,
Any
>):
Observable
<
BaseAPIResponse
<
SearchWordsBean
>>
{
...
...
m-consultant/src/main/java/com/yidianling/consultant/http/hotsearch/IHotSearchHttp.kt
View file @
290aa8e9
...
...
@@ -3,6 +3,7 @@ package com.yidianling.consultant.http.hotsearch
import
com.ydl.ydlcommon.data.http.BaseAPIResponse
import
com.yidianling.consultant.bean.HotSearchBean
import
com.yidianling.consultant.bean.SearchWordsBean
import
com.yidianling.consultant.model.bean.FunctionWordBean
import
io.reactivex.Observable
/**
...
...
@@ -12,14 +13,19 @@ import io.reactivex.Observable
* @Company 壹点灵
* @date 2018/7/26
*/
interface
IHotSearchHttp
{
interface
IHotSearchHttp
{
/**
* 搜索页请求
*/
fun
searchData
():
Observable
<
BaseAPIResponse
<
HotSearchBean
>>
/**
* 搜索页请求热门词
*/
fun
searchHotWordData
(
map
:
HashMap
<
String
,
Any
>):
Observable
<
BaseAPIResponse
<
MutableList
<
FunctionWordBean
>>>
/**
* 搜索联想词请求
*/
fun
getSearchWords
(
map
:
HashMap
<
String
,
Any
>):
Observable
<
BaseAPIResponse
<
SearchWordsBean
>>
fun
getSearchWords
(
map
:
HashMap
<
String
,
Any
>):
Observable
<
BaseAPIResponse
<
SearchWordsBean
>>
}
\ No newline at end of file
m-consultant/src/main/java/com/yidianling/consultant/model/HotSearchModelImpl.kt
View file @
290aa8e9
package
com.yidianling.consultant.model
import
com.ydl.ydlcommon.data.http.BaseAPIResponse
import
com.ydl.ydlcommon.data.http.RxUtils
import
com.yidianling.consultant.bean.HotSearchBean
import
com.yidianling.consultant.bean.SearchWordsBean
import
com.yidianling.consultant.contract.IHotSearchContract
import
com.yidianling.consultant.http.hotsearch.HotSearchDataManager
import
com.yidianling.consultant.model.bean.FunctionWordBean
import
io.reactivex.Observable
/**
...
...
@@ -14,12 +16,16 @@ import io.reactivex.Observable
* @Company 壹点灵
* @date 2018/7/26
*/
class
HotSearchModelImpl
:
IHotSearchContract
.
Model
{
class
HotSearchModelImpl
:
IHotSearchContract
.
Model
{
override
fun
searchData
():
Observable
<
HotSearchBean
>
{
return
HotSearchDataManager
.
getHttp
().
searchData
().
compose
(
RxUtils
.
resultJavaData
())
}
override
fun
getSearchWords
(
map
:
HashMap
<
String
,
Any
>):
Observable
<
SearchWordsBean
>
{
override
fun
getSearchWords
(
map
:
HashMap
<
String
,
Any
>):
Observable
<
SearchWordsBean
>
{
return
HotSearchDataManager
.
getHttp
().
getSearchWords
(
map
).
compose
(
RxUtils
.
resultJavaData
())
}
override
fun
searchHotWordData
(
map
:
HashMap
<
String
,
Any
>):
Observable
<
BaseAPIResponse
<
MutableList
<
FunctionWordBean
>>>
{
return
HotSearchDataManager
.
getHttp
().
searchHotWordData
(
map
)
}
}
\ No newline at end of file
m-consultant/src/main/java/com/yidianling/consultant/model/SearchApi.kt
View file @
290aa8e9
...
...
@@ -6,11 +6,9 @@ import com.ydl.ydlcommon.base.config.YDL_DOMAIN_JAVA
import
com.ydl.ydlcommon.data.http.BaseAPIResponse
import
com.ydl.ydlcommon.data.http.BaseResponse
import
com.ydl.ydlnet.YDLHttpUtils
import
com.yidianling.consultant.bean.ExpertSearchTopShowBean
import
com.yidianling.consultant.bean.GuideBean
import
com.yidianling.consultant.bean.HotSearchBean
import
com.yidianling.consultant.bean.SearchWordsBean
import
com.yidianling.consultant.bean.*
import
com.yidianling.consultant.model.bean.ExpertBean
import
com.yidianling.consultant.model.bean.FunctionWordBean
import
com.yidianling.consultant.model.bean.HeadData
import
io.reactivex.Observable
import
retrofit2.http.*
...
...
@@ -43,13 +41,24 @@ interface SearchApi {
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
)
fun
searchConditions
(
@Query
(
"cateSource"
)
cateSource
:
Int
):
Observable
<
BaseAPIResponse
<
HeadData
>>
//查询功能词、底纹词
//(1热门词,2底纹词,3跳转词)
@POST
(
"function/word/queryList"
)
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
)
fun
searchFunctionWord
(
@Body
map
:
Map
<
String
,
@JvmSuppressWildcards
Any
>):
Observable
<
BaseAPIResponse
<
MutableList
<
FunctionWordBean
>>>
//查询功能词、底纹词
//(1热门词,2底纹词,3跳转词)
@POST
(
"function/word/queryList"
)
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
)
fun
searchFunctionWordApi
(
@Body
map
:
Map
<
String
,
@JvmSuppressWildcards
Any
>):
Observable
<
BaseAPIResponse
<
MutableList
<
FunctionWordConsultBean
>>>
/**
* 新咨询师列表接口(包含搜索、筛选咨询师)
*/
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
,
"X-App-Id: plough_cloud"
)
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
,
"X-App-Id: plough_cloud"
)
@POST
(
"smart-rank/v1/search"
)
fun
getExpertList
(
@Body
map
:
Map
<
String
,
@JvmSuppressWildcards
Any
>):
Observable
<
BaseAPIResponse
<
ExpertBean
>>
fun
getExpertList
(
@Body
map
:
Map
<
String
,
@JvmSuppressWildcards
Any
>):
Observable
<
BaseAPIResponse
<
ExpertBean
>>
/**
* 获取搜索联想词
...
...
m-consultant/src/main/java/com/yidianling/consultant/model/bean/FunctionWordBean.kt
0 → 100644
View file @
290aa8e9
package
com.yidianling.consultant.model.bean
data class
FunctionWordBean
(
var
id
:
Long
?,
var
word
:
String
?,
var
type
:
Int
?,
var
jumpUrl
:
String
?
)
\ No newline at end of file
m-consultant/src/main/java/com/yidianling/consultant/modular/ConsultantServiceImp.kt
View file @
290aa8e9
...
...
@@ -9,14 +9,17 @@ import android.text.TextUtils
import
com.alibaba.android.arouter.facade.annotation.Route
import
com.google.gson.Gson
import
com.google.gson.reflect.TypeToken
import
com.ydl.ydlcommon.base.BaseApp
import
com.ydl.ydlcommon.data.http.RxUtils
import
com.ydl.ydlcommon.utils.SharedPreferencesEditor
import
com.y
idianling.common.tools.LogUtil
import
com.y
dl.ydlcommon.utils.remind.HttpErrorUtils
import
com.yidianling.consultant.ExpertSearchActivity
import
com.yidianling.consultant.ExpertSearchFragment
import
com.yidianling.consultant.api.IConsultantService
import
com.yidianling.consultant.bean.GuideBean
import
com.yidianling.consultant.bean.Keyworks
import
com.yidianling.consultant.data.ConsultantDataManager
import
com.yidianling.consultant.OnBottomWordListener
import
com.yidianling.consultant.model.SearchApi
import
com.yidianling.consultant.modular.singlton.ConsultAssistantDialogUtils
import
com.yidianling.consultant.modular.utils.ConsultAssistantEntryUtils
...
...
@@ -118,14 +121,34 @@ class ConsultantServiceImp : IConsultantService {
ConsultAssistantEntryUtils
.
jumpConsultAssistant
(
activity
,
location
,
null
)
}
override
fun
dueToTypeJumpAutoOrGuide
(
activity
:
Activity
,
location
:
Int
,
doctorId
:
Int
,
url
:
String
)
{
ConsultAssistantEntryUtils
.
getTypeJump
(
activity
,
location
,
doctorId
,
url
)
override
fun
dueToTypeJumpAutoOrGuide
(
activity
:
Activity
,
location
:
Int
,
doctorId
:
Int
,
url
:
String
)
{
ConsultAssistantEntryUtils
.
getTypeJump
(
activity
,
location
,
doctorId
,
url
)
}
override
fun
showConfideListDialog
(
activity
:
Activity
)
{
ConsultAssistantDialogUtils
.
INSTANCE
.
showFromConfideListHome
(
activity
)
}
@SuppressLint
(
"CheckResult"
)
override
fun
getbottomWord
(
type
:
Int
,
listener
:
OnBottomWordListener
)
{
val
map
=
hashMapOf
(
"type"
to
type
)
SearchApi
.
getSearchApi
()
.
searchFunctionWordApi
(
map
)
.
compose
(
RxUtils
.
resultJavaData
())
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
resp
->
listener
.
onBottomWord
(
resp
)
},
{
t
->
HttpErrorUtils
.
handleError
(
BaseApp
.
getApp
(),
t
)
})
}
override
fun
resetConsultAssistantDialogStatus
()
{
ConsultAssistantDialogUtils
.
INSTANCE
.
resetStatus
()
}
...
...
m-consultant/src/main/java/com/yidianling/consultant/presenter/HotSearchPresenterImpl.kt
View file @
290aa8e9
...
...
@@ -4,6 +4,7 @@ import android.annotation.SuppressLint
import
android.content.Context
import
android.text.TextUtils
import
com.google.gson.Gson
import
com.ydl.ydlcommon.data.http.BaseAPIResponse
import
com.ydl.ydlcommon.data.http.ThrowableConsumer
import
com.ydl.ydlcommon.mvp.base.BasePresenter
import
com.ydl.ydlcommon.utils.RxLifecycleUtils
...
...
@@ -13,6 +14,8 @@ import com.yidianling.common.tools.ToastUtil
import
com.yidianling.consultant.bean.HotSearchBean
import
com.yidianling.consultant.contract.IHotSearchContract
import
com.yidianling.consultant.model.HotSearchModelImpl
import
com.yidianling.consultant.model.bean.FunctionWordBean
import
io.reactivex.Observable
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.functions.Consumer
import
io.reactivex.schedulers.Schedulers
...
...
@@ -66,25 +69,43 @@ class HotSearchPresenterImpl : BasePresenter<IHotSearchContract.View, IHotSearch
.
filter
{
it
!=
null
}
.
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
mView
!!
))
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
Consumer
{
mView
.
searchDataResponse
(
it
)
YDLCacheUtils
.
saveHotSearchData
(
Gson
().
toJson
(
it
))
},
object
:
ThrowableConsumer
()
{
override
fun
accept
(
msg
:
String
)
{
mView
.
requestFail
()
}
})
.
subscribe
(
Consumer
{
mView
.
searchDataResponse
(
it
)
YDLCacheUtils
.
saveHotSearchData
(
Gson
().
toJson
(
it
))
},
object
:
ThrowableConsumer
()
{
override
fun
accept
(
msg
:
String
)
{
mView
.
requestFail
()
}
})
}
@SuppressLint
(
"CheckResult"
)
override
fun
searchHotWordData
(
map
:
HashMap
<
String
,
Any
>)
{
mModel
.
searchHotWordData
(
map
).
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
mView
!!
))
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
Consumer
{
mView
.
searchHotWordData
(
it
.
data
)
},
object
:
ThrowableConsumer
()
{
override
fun
accept
(
msg
:
String
)
{
mView
.
requestFail
()
}
})
}
@SuppressLint
(
"CheckResult"
)
override
fun
getSearchWords
(
map
:
HashMap
<
String
,
Any
>,
searchContent
:
String
,
isClickWords
:
Boolean
)
{
override
fun
getSearchWords
(
map
:
HashMap
<
String
,
Any
>,
searchContent
:
String
,
isClickWords
:
Boolean
)
{
mModel
.
getSearchWords
(
map
)
// .debounce(500L, TimeUnit.MILLISECONDS)
.
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
mView
))
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
Consumer
{
mView
.
getSearchWordsSuccess
(
it
,
searchContent
,
isClickWords
)
mView
.
getSearchWordsSuccess
(
it
,
searchContent
,
isClickWords
)
},
object
:
ThrowableConsumer
()
{
override
fun
accept
(
msg
:
String
)
{
ToastUtil
.
toastShort
(
msg
)
...
...
m-home/src/xlzx/java/com/yidianling/home/ui/fragment/YdlHomeFragment.kt
View file @
290aa8e9
...
...
@@ -22,7 +22,9 @@ import com.ydl.ydlcommon.utils.StatusBarUtils
import
com.ydl.ydlcommon.utils.Utils
import
com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import
com.ydl.ydlcommon.utils.remind.ToastHelper
import
com.yidianling.consultant.OnBottomWordListener
import
com.yidianling.consultant.api.IConsultantService
import
com.yidianling.consultant.bean.FunctionWordConsultBean
import
com.yidianling.home.R
import
com.yidianling.home.adapter.YdlHomeAdapter
import
com.yidianling.home.constants.HomeBIConstants
...
...
@@ -37,9 +39,14 @@ import com.yidianling.home.presenter.HomePresenterImpl
import
com.yidianling.home.ui.view.CouponDialog
import
com.yidianling.im.api.service.IImService
import
com.yidianling.user.api.service.IUserService
import
io.reactivex.Observable
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.disposables.Disposable
import
io.reactivex.schedulers.Schedulers
import
kotlinx.android.synthetic.xlzx.home_fragment_home_module.*
import
kotlinx.android.synthetic.xlzx.home_layout_home_module_content.*
import
kotlinx.android.synthetic.xlzx.home_layout_home_module_input.*
import
java.util.concurrent.TimeUnit
import
kotlin.properties.Delegates
...
...
@@ -86,6 +93,8 @@ class YdlHomeFragment : BaseMvpFragment<IHomeContract.View, HomePresenterImpl>()
private
var
isFromCreate
:
Boolean
=
true
var
startTime
=
System
.
currentTimeMillis
()
var
endTime
by
Delegates
.
notNull
<
Long
>()
private
lateinit
var
bottomWordlist
:
MutableList
<
FunctionWordConsultBean
>
var
bottomWordDisposable
:
Disposable
?
=
null
override
fun
layoutResId
():
Int
{
return
R
.
layout
.
home_fragment_home_module
}
...
...
@@ -100,6 +109,7 @@ class YdlHomeFragment : BaseMvpFragment<IHomeContract.View, HomePresenterImpl>()
homeEvent
=
HomeImpl
(
mActivity
!!
,
this
)
initView
()
initAdapter
()
getBottomWord
()
}
private
fun
initAdapter
()
{
...
...
@@ -126,7 +136,7 @@ class YdlHomeFragment : BaseMvpFragment<IHomeContract.View, HomePresenterImpl>()
)
home_swipe_refresh_layout
.
setProgressViewOffset
(
false
,
0
,
200
)
home_swipe_refresh_layout
.
isEnabled
=
true
etSearch
.
setOnClickListener
{
homeEvent
?.
searchTvClick
(
""
)
}
etSearch
.
setOnClickListener
{
homeEvent
?.
searchTvClick
(
etSearch
.
hint
.
toString
()
)
}
home_page_xiaoyi
.
setOnClickListener
{
activity
?.
let
{
...
...
@@ -377,4 +387,33 @@ class YdlHomeFragment : BaseMvpFragment<IHomeContract.View, HomePresenterImpl>()
showConsultAssistantDialog
()
}
}
private
fun
getBottomWord
()
{
ModularServiceManager
.
provide
(
IConsultantService
::
class
.
java
)
.
getbottomWord
(
2
,
object
:
OnBottomWordListener
{
override
fun
onBottomWord
(
wordList
:
MutableList
<
FunctionWordConsultBean
>)
{
bottomWordlist
=
wordList
if
(
bottomWordlist
.
isNullOrEmpty
())
return
if
(
bottomWordlist
.
size
==
1
)
{
etSearch
.
hint
=
bottomWordlist
[
0
].
word
}
else
{
if
(
bottomWordDisposable
!=
null
)
{
bottomWordDisposable
?.
dispose
()
}
else
{
bottomWordDisposable
=
Observable
.
interval
(
0
,
3
,
TimeUnit
.
SECONDS
)
.
subscribeOn
(
Schedulers
.
computation
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
etSearch
.
hint
=
bottomWordlist
[(
it
%
bottomWordlist
.
size
).
toInt
()].
word
},
{
},
{
})
}
}
}
})
}
}
\ No newline at end of file
m-home/src/ydl/java/com/yidianling/home/ui/fragment/YdlHomeFragment.kt
View file @
290aa8e9
...
...
@@ -26,7 +26,9 @@ import com.ydl.ydlcommon.base.BaseMvpFragment
import
com.ydl.ydlcommon.modular.ModularServiceManager
import
com.ydl.ydlcommon.utils.*
import
com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import
com.yidianling.consultant.OnBottomWordListener
import
com.yidianling.consultant.api.IConsultantService
import
com.yidianling.consultant.bean.FunctionWordConsultBean
import
com.yidianling.home.R
import
com.yidianling.home.adapter.YdlHomeAdapter
import
com.yidianling.home.constants.HomeBIConstants
...
...
@@ -42,10 +44,15 @@ import com.yidianling.home.ui.view.CouponDialog
import
com.yidianling.home.ui.view.HomeSpaceItemDecoration
import
com.yidianling.home.utils.HomeAnimUtils
import
com.yidianling.user.api.service.IUserService
import
io.reactivex.Observable
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.disposables.Disposable
import
io.reactivex.schedulers.Schedulers
import
kotlinx.android.synthetic.ydl.home_fragment.*
import
kotlinx.android.synthetic.ydl.home_fragment.tab_layout
import
kotlinx.android.synthetic.ydl.home_muse_view.*
import
kotlinx.android.synthetic.ydl.home_muse_view.view.*
import
java.util.concurrent.TimeUnit
import
kotlin.properties.Delegates
...
...
@@ -99,13 +106,15 @@ open class YdlHomeFragment : BaseMvpFragment<IHomeContract.View, HomePresenterIm
open
var
searchText
:
String
=
""
open
var
doctorName
:
String
=
""
var
startTime
=
0L
var
endTime
=
0L
var
startTime
=
0L
var
endTime
=
0L
/**
* 如果是第一次加载,则调用所有接口进行刷新,否则,只调用咨询和倾诉接口
*/
private
var
isFromCreate
:
Boolean
=
true
private
lateinit
var
bottomWordlist
:
MutableList
<
FunctionWordConsultBean
>
var
bottomWordDisposable
:
Disposable
?
=
null
override
fun
layoutResId
():
Int
{
return
R
.
layout
.
home_fragment
...
...
@@ -122,6 +131,7 @@ open class YdlHomeFragment : BaseMvpFragment<IHomeContract.View, HomePresenterIm
open
fun
initHomeEvent
()
{
homeEvent
=
HomeImpl
(
mActivity
,
this
)
getBottomWord
()
}
private
fun
initAdapter
()
{
...
...
@@ -173,17 +183,17 @@ open class YdlHomeFragment : BaseMvpFragment<IHomeContract.View, HomePresenterIm
}
open
fun
initSearchBar
()
{
if
(!
TextUtils
.
isEmpty
(
doctorName
))
{
searchText
=
doctorName
}
//
if (!TextUtils.isEmpty(doctorName)) {
//
searchText = doctorName
//
}
home_tv
.
setOnClickListener
{
homeEvent
?.
searchTvClick
(
searchText
)
homeEvent
?.
searchTvClick
(
home_tv
.
text
.
toString
()
)
}
iv_search_icon
.
setOnClickListener
{
homeEvent
?.
searchTvClick
(
searchText
)
}
home_tv
.
text
=
searchText
//
home_tv.text = searchText
}
/**
...
...
@@ -228,25 +238,11 @@ open class YdlHomeFragment : BaseMvpFragment<IHomeContract.View, HomePresenterIm
}
override
fun
startAnim
()
{
HomeAnimUtils
.
startAnim
(
mContext
,
rl_top
,
rl_search
,
home_service_call
,
home_tv
)
HomeAnimUtils
.
startSearchShow
(
ll_top_function
,
view_search_input_bg
,
home_tv
,
iv_search_icon
,
img_ad
)
}
override
fun
endAnim
()
{
HomeAnimUtils
.
endAnim
(
mContext
,
rl_top
,
rl_search
,
home_tv
,
home_service_call
,
this
)
HomeAnimUtils
.
startSearchHide
(
ll_top_function
,
view_search_input_bg
,
home_tv
,
iv_search_icon
,
img_ad
)
}
override
fun
getSearchContent
():
String
{
...
...
@@ -515,6 +511,35 @@ open class YdlHomeFragment : BaseMvpFragment<IHomeContract.View, HomePresenterIm
.
showConsultAssistantDialog
(
mActivity
)
}
private
fun
getBottomWord
()
{
ModularServiceManager
.
provide
(
IConsultantService
::
class
.
java
)
.
getbottomWord
(
2
,
object
:
OnBottomWordListener
{
override
fun
onBottomWord
(
wordList
:
MutableList
<
FunctionWordConsultBean
>)
{
bottomWordlist
=
wordList
if
(
bottomWordlist
.
isNullOrEmpty
())
return
if
(
bottomWordlist
.
size
==
1
)
{
home_tv
.
text
=
bottomWordlist
[
0
].
word
}
else
{
if
(
bottomWordDisposable
!=
null
)
{
bottomWordDisposable
?.
dispose
()
}
else
{
bottomWordDisposable
=
Observable
.
interval
(
0
,
3
,
TimeUnit
.
SECONDS
)
.
subscribeOn
(
Schedulers
.
computation
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({
home_tv
.
text
=
bottomWordlist
[(
it
%
bottomWordlist
.
size
).
toInt
()].
word
},
{
},
{
})
}
}
}
})
}
private
fun
hideConsultAssistantDialog
()
{
ModularServiceManager
.
provide
(
IConsultantService
::
class
.
java
).
hideConsultAssistantDialog
()
}
...
...
@@ -662,5 +687,6 @@ open class YdlHomeFragment : BaseMvpFragment<IHomeContract.View, HomePresenterIm
override
fun
onDestroyView
()
{
super
.
onDestroyView
()
HomeAnimUtils
.
clear
()
bottomWordDisposable
?.
dispose
()
}
}
\ No newline at end of file
m-im/src/main/AndroidManifest.xml
View file @
290aa8e9
...
...
@@ -91,17 +91,6 @@
android:permission=
"android.permission.BIND_JOB_SERVICE"
android:process=
":core"
/>
<!-- 云信SDK的监视系统启动和网络变化的广播接收器,用户开机自启动以及网络变化时候重新登录 -->
<receiver
android:name=
"com.netease.nimlib.service.NimReceiver"
android:exported=
"false"
android:process=
":core"
>
<intent-filter>
<action
android:name=
"android.intent.action.BOOT_COMPLETED"
/>
<action
android:name=
"android.net.conn.CONNECTIVITY_CHANGE"
/>
</intent-filter>
</receiver>
<!-- 云信进程间通信receiver -->
<receiver
android:name=
"com.netease.nimlib.service.ResponseReceiver"
/>
...
...
m-user/build.gradle
View file @
290aa8e9
...
...
@@ -35,7 +35,9 @@ android {
proguardFiles
getDefaultProguardFile
(
'proguard-android.txt'
),
'proguard-rules.pro'
}
}
dataBinding
{
enabled
true
}
compileOptions
{
sourceCompatibility
JavaVersion
.
VERSION_1_8
targetCompatibility
JavaVersion
.
VERSION_1_8
...
...
m-user/src/main/AndroidManifest.xml
View file @
290aa8e9
...
...
@@ -157,10 +157,10 @@
android:name=
".mine.EditAccountActivity"
android:screenOrientation=
"portrait"
android:theme=
"@style/platform_NoTitleTheme"
/>
<!--添加提现账号-->
<activity
android:name=
".mine.AddAccountActivity"
android:screenOrientation=
"portrait"
android:theme=
"@style/platform_NoTitleTheme"
/>
android:screenOrientation=
"portrait"
/>
<activity
android:name=
".mine.RechargeResultActivity"
android:screenOrientation=
"portrait"
...
...
m-user/src/main/java/com/yidianling/user/mine/AddAccountActivity.kt
View file @
290aa8e9
package
com.yidianling.user.mine
import
android.annotation.SuppressLint
import
android.app.Activity
import
android.content.Intent
import
android
x.fragment.app.Fragment
import
android
x.viewpager.widget.ViewPager
import
android
.view.View
import
com.ydl.ydlcommon.adapter.FragmentWithTabPagerAdapter
import
com.ydl.ydlcommon.
base.BaseActivity
import
com.ydl.ydlcommon.
bean.StatusBarOptions
import
com.y
dl.ydlcommon.view.widgets.TopTabSelectLayout
import
android
.os.Bundle
import
android
.text.TextUtils
import
android
x.appcompat.app.AppCompatActivity
import
androidx.databinding.DataBindingUtil
import
com.ydl.ydlcommon.
data.http.RxUtils
import
com.ydl.ydlcommon.
data.http.ThrowableConsumer
import
com.y
idianling.common.tools.ToastUtil
import
com.yidianling.user.R
import
com.yidianling.user.mine.fragment.AddAliAccountFragment
import
com.yidianling.user.mine.fragment.AddBankAccountFragment
import
com.yidianling.user.databinding.UserMineActivityAddAccountBinding
import
com.yidianling.user.mine.bean.AddAccountCmd
import
com.yidianling.user.mine.data.AppDataManager
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.functions.Consumer
import
kotlinx.android.synthetic.main.user_mine_activity_add_account.*
/**
* 添加提现帐号
*/
class
AddAccountActivity
:
BaseActivity
()
{
* @author liupeng
* 添加提现账号
* */
class
AddAccountActivity
:
AppCompatActivity
()
{
private
lateinit
var
binding
:
UserMineActivityAddAccountBinding
companion
object
{
fun
startForResult
(
activity
:
Activity
,
request
:
Int
)
{
...
...
@@ -26,47 +33,48 @@ class AddAccountActivity : BaseActivity() {
}
}
override
fun
getStatusViewOptions
():
StatusBarOptions
{
return
StatusBarOptions
(
true
,
tru
e
)
}
override
fun
layoutResId
():
Int
{
return
R
.
layout
.
user_mine_activity_add_account
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceStat
e
)
binding
=
DataBindingUtil
.
setContentView
(
this
,
R
.
layout
.
user_mine_activity_add_account
)
btn_ensure
.
setOnClickListener
{
saveAccount
()
}
}
override
fun
initDataAndEvent
()
{
var
titles
=
mutableListOf
<
String
>()
titles
.
add
(
"支付宝"
)
titles
.
add
(
"银行卡"
)
var
fragments
=
mutableListOf
<
Fragment
>()
fragments
.
add
(
AddAliAccountFragment
())
fragments
.
add
(
AddBankAccountFragment
())
var
adapter
=
FragmentWithTabPagerAdapter
(
supportFragmentManager
,
titles
,
fragments
)
top_layout
.
setButtonTitle
(
"支付宝"
,
"银行卡"
)
top_layout
.
setSelectIndex
(
0
)
top_layout
.
setLineViewVisible
(
View
.
GONE
)
top_layout
.
setOnSelectTabClickListener
(
object
:
TopTabSelectLayout
.
OnSelectTabClickListener
{
override
fun
selectTabClickListener
(
index
:
Int
)
{
viewpager
.
currentItem
=
index
}
override
fun
onReturnClickListener
()
{
}
})
viewpager
.
currentItem
=
0
viewpager
.
adapter
=
adapter
viewpager
.
addOnPageChangeListener
(
object
:
ViewPager
.
OnPageChangeListener
{
override
fun
onPageScrolled
(
position
:
Int
,
positionOffset
:
Float
,
positionOffsetPixels
:
Int
)
{
}
override
fun
onPageSelected
(
position
:
Int
)
{
top_layout
.
setSelectIndex
(
position
)
}
override
fun
onPageScrollStateChanged
(
state
:
Int
)
{
/**
* 保存支付宝帐号
*/
@SuppressLint
(
"CheckResult"
)
private
fun
saveAccount
()
{
var
account
=
et_account
.
text
.
trim
().
toString
()
if
(
TextUtils
.
isEmpty
(
account
))
{
ToastUtil
.
toastShort
(
"支付宝帐号不能为空"
)
return
}
var
name
=
et_name
.
text
.
trim
().
toString
()
if
(
TextUtils
.
isEmpty
(
name
))
{
ToastUtil
.
toastShort
(
"姓名不能为空"
)
return
}
}
})
var
param
=
AddAccountCmd
(
name
,
account
,
"1"
)
AppDataManager
.
getHttp
().
addAccount
(
param
)
.
compose
(
RxUtils
.
resultData
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
Consumer
{
bean
->
if
(
bean
==
null
)
{
ToastUtil
.
toastShort
(
"返回数据错误"
)
}
else
{
ToastUtil
.
toastShort
(
"添加帐号成功"
)
var
intent
=
Intent
()
intent
.
putExtra
(
ChooseAccountActivity
.
ADD_ACCOUNT_REQUEST_KEY
,
bean
)
setResult
(
Activity
.
RESULT_OK
,
intent
)
finish
()
}
},
object
:
ThrowableConsumer
()
{
override
fun
accept
(
msg
:
String
)
{
ToastUtil
.
toastShort
(
msg
)
}
})
}
}
}
\ No newline at end of file
m-user/src/main/java/com/yidianling/user/mine/ChooseAccountActivity.kt
View file @
290aa8e9
...
...
@@ -138,18 +138,25 @@ class ChooseAccountActivity : BaseActivity() {
TransferCacheUtils
.
removeTransferData
(
INTENT_DATA
)
}
if
(
requestCode
==
ADD_ACCOUNT_REQUEST_CODE
)
{
//添加帐号页面返回
val
bean
:
AccountBean
=
TransferCacheUtils
.
getTransferData
(
ADD_ACCOUNT_REQUEST_CODE
)
as
AccountBean
dataLists
!!
.
add
(
1
,
bean
)
adapter
!!
.
notifyDataSetChanged
()
try
{
//添加帐号页面返回
val
bean
=
data
?.
getParcelableExtra
<
AccountBean
>(
ADD_ACCOUNT_REQUEST_KEY
)
bean
?.
let
{
dataLists
?.
add
(
1
,
bean
)
adapter
?.
notifyDataSetChanged
()
}
}
catch
(
e
:
Exception
)
{
e
.
printStackTrace
()
}
}
companion
object
{
const
val
INTENT_LIST
=
"intent_list"
const
val
INTENT_DATA
=
"intent_data"
const
val
INTENT_DATA_REQUEST_CODE
=
1024
//添加帐号
const
val
ADD_ACCOUNT_REQUEST_CODE
=
1025
const
val
ADD_ACCOUNT_REQUEST_KEY
=
"add_key"
fun
startForResult
(
activity
:
Activity
,
list
:
MutableList
<
AccountBean
>,
code
:
Int
)
{
val
intent
=
Intent
(
activity
,
ChooseAccountActivity
::
class
.
java
)
TransferCacheUtils
.
putTransferData
(
INTENT_LIST
,
list
)
...
...
m-user/src/main/java/com/yidianling/user/mine/bean/AccountBean.kt
View file @
290aa8e9
package
com.yidianling.user.mine.bean
import
android.os.Parcel
import
android.os.Parcelable
/**
* Created by jiucheng on 2018/7/13.
* 功能:
*/
class
AccountBean
{
class
AccountBean
()
:
Parcelable
{
var
id
:
String
?
=
null
//id
var
uid
:
String
?
=
null
//id
var
type
:
Int
?
=
-
1
//1,//账号类型:1、支付宝;2、微信;3、银行卡
...
...
@@ -17,4 +20,48 @@ class AccountBean {
var
remark
:
String
?
=
null
//工作日9-18点,到账时间:2小时内;休息日顺延至下一个工作日
var
isDefault
:
Int
=
-
1
//默认账户 1默认2非默认
var
status
:
Int
=
-
1
//1' => "未审核", '2' => "审核中",'3' => "审核成功",'4' => "审核失败"5、
constructor
(
parcel
:
Parcel
)
:
this
()
{
id
=
parcel
.
readString
()
uid
=
parcel
.
readString
()
type
=
parcel
.
readValue
(
Int
::
class
.
java
.
classLoader
)
as
?
Int
cashName
=
parcel
.
readString
()
bankRealName
=
parcel
.
readString
()
bankName
=
parcel
.
readString
()
bankAddress
=
parcel
.
readString
()
account
=
parcel
.
readString
()
bankIcon
=
parcel
.
readString
()
remark
=
parcel
.
readString
()
isDefault
=
parcel
.
readInt
()
status
=
parcel
.
readInt
()
}
override
fun
writeToParcel
(
parcel
:
Parcel
,
flags
:
Int
)
{
parcel
.
writeString
(
id
)
parcel
.
writeString
(
uid
)
parcel
.
writeValue
(
type
)
parcel
.
writeString
(
cashName
)
parcel
.
writeString
(
bankRealName
)
parcel
.
writeString
(
bankName
)
parcel
.
writeString
(
bankAddress
)
parcel
.
writeString
(
account
)
parcel
.
writeString
(
bankIcon
)
parcel
.
writeString
(
remark
)
parcel
.
writeInt
(
isDefault
)
parcel
.
writeInt
(
status
)
}
override
fun
describeContents
():
Int
{
return
0
}
companion
object
CREATOR
:
Parcelable
.
Creator
<
AccountBean
>
{
override
fun
createFromParcel
(
parcel
:
Parcel
):
AccountBean
{
return
AccountBean
(
parcel
)
}
override
fun
newArray
(
size
:
Int
):
Array
<
AccountBean
?>
{
return
arrayOfNulls
(
size
)
}
}
}
\ No newline at end of file
m-user/src/main/java/com/yidianling/user/mine/fragment/AddAliAccountFragment.kt
deleted
100644 → 0
View file @
1deb8fdc
package
com.yidianling.user.mine.fragment
import
android.annotation.SuppressLint
import
android.app.Activity
import
android.content.Intent
import
android.text.TextUtils
import
com.yidianling.user.mine.ChooseAccountActivity
import
com.ydl.ydlcommon.base.BaseFragment
import
com.ydl.ydlcommon.data.http.RxUtils
import
com.ydl.ydlcommon.data.http.ThrowableConsumer
import
com.ydl.ydlcommon.utils.TransferCacheUtils
import
com.yidianling.common.tools.ToastUtil
import
com.yidianling.user.R
import
com.yidianling.user.mine.bean.AddAccountCmd
import
com.yidianling.user.mine.data.AppDataManager
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.functions.Consumer
import
kotlinx.android.synthetic.main.user_mine_fragment_add_ali_account.*
/**
* 添加支付宝帐号
*/
class
AddAliAccountFragment
:
BaseFragment
()
{
override
fun
layoutResId
():
Int
{
return
R
.
layout
.
user_mine_fragment_add_ali_account
}
override
fun
initDataAndEvent
()
{
btn_ensure
.
setOnClickListener
{
saveAccount
()
}
}
/**
* 保存支付宝帐号
*/
@SuppressLint
(
"CheckResult"
)
private
fun
saveAccount
()
{
var
account
=
et_account
.
text
.
trim
().
toString
()
if
(
TextUtils
.
isEmpty
(
account
))
{
ToastUtil
.
toastShort
(
"支付宝帐号不能为空"
)
return
}
var
name
=
et_name
.
text
.
trim
().
toString
()
if
(
TextUtils
.
isEmpty
(
name
))
{
ToastUtil
.
toastShort
(
"姓名不能为空"
)
return
}
var
param
=
AddAccountCmd
(
name
,
account
,
"1"
)
// showProgressDialog("")
AppDataManager
.
getHttp
().
addAccount
(
param
)
.
compose
(
RxUtils
.
resultData
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
Consumer
{
// dismissProgressDialog()
if
(
it
==
null
)
{
ToastUtil
.
toastShort
(
"返回数据错误"
)
}
else
{
ToastUtil
.
toastShort
(
"添加帐号成功"
)
var
intent
=
Intent
()
TransferCacheUtils
.
putTransferData
(
ChooseAccountActivity
.
ADD_ACCOUNT_REQUEST_CODE
,
it
)
activity
!!
.
setResult
(
Activity
.
RESULT_OK
,
intent
)
activity
!!
.
finish
()
}
},
object
:
ThrowableConsumer
()
{
override
fun
accept
(
msg
:
String
)
{
// dismissProgressDialog()
ToastUtil
.
toastShort
(
msg
)
}
})
}
override
fun
initDataAndEventLazy
()
{
}
}
m-user/src/main/java/com/yidianling/user/mine/fragment/AddBankAccountFragment.kt
deleted
100644 → 0
View file @
1deb8fdc
package
com.yidianling.user.mine.fragment
import
com.ydl.ydlcommon.base.BaseFragment
import
com.yidianling.user.R
/**
* 添加银行卡(后续会增加添加银行卡功能,做成独立页面)
*/
class
AddBankAccountFragment
:
BaseFragment
()
{
override
fun
layoutResId
():
Int
{
return
R
.
layout
.
user_mine_fragment_add_bank_account
}
override
fun
initDataAndEvent
()
{
}
override
fun
initDataAndEventLazy
()
{
}
}
m-user/src/main/res/drawable-xhdpi/user_mine_img_yhk.jpg
deleted
100644 → 0
View file @
1deb8fdc
12.3 KB
m-user/src/main/res/layout/user_mine_activity_add_account.xml
View file @
290aa8e9
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
tools:context=
"com.yidianling.user.mine.AddAccountActivity"
>
<com.ydl.ydlcommon.view.TitleBar
android:id=
"@+id/title_bar"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/title_bar_height"
app:pa_left_start_icon=
"@drawable/platform_common_back"
android:background=
"@color/platform_white"
app:pa_title_text=
"添加提现帐号"
/>
<layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
>
<
View
<
LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"
1dp
"
android:
background=
"#e5e5e5"
/
>
android:layout_height=
"
match_parent
"
android:
orientation=
"vertical"
>
<com.ydl.ydlcommon.view.TitleBar
android:id=
"@+id/title_bar"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/title_bar_height"
app:pa_left_start_icon=
"@drawable/platform_common_back"
android:background=
"@color/platform_white"
app:pa_title_text=
"添加提现帐号"
/>
<com.ydl.ydlcommon.view.widgets.TopTabSelectLayout
android:id=
"@+id/top_layout"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"15dp"
android:layout_marginRight=
"15dp"
/>
<View
android:layout_width=
"match_parent"
android:layout_height=
"1dp"
android:background=
"#e5e5e5"
/>
<androidx.viewpager.widget.ViewPager
android:id=
"@+id/viewpager"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
</LinearLayout>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
>
<View
style=
"@style/platform_viewline"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"50dp"
android:paddingLeft=
"15dp"
android:paddingRight=
"15dp"
android:background=
"@color/white"
android:orientation=
"horizontal"
>
<TextView
android:layout_width=
"111dp"
android:layout_height=
"match_parent"
android:gravity=
"center_vertical"
android:text=
"支付宝帐号"
android:textColor=
"@color/black"
android:textSize=
"17sp"
/>
<EditText
android:id=
"@+id/et_account"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:background=
"@null"
android:inputType=
"textEmailAddress"
android:hint=
"请输入您的支付宝帐号"
android:textColor=
"@color/black"
android:textColorHint=
"@color/platform_color_999999"
android:textSize=
"17sp"
/>
</LinearLayout>
<View
style=
"@style/platform_viewline"
android:layout_marginLeft=
"15dp"
android:layout_marginRight=
"15dp"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"50dp"
android:paddingLeft=
"15dp"
android:paddingRight=
"15dp"
android:background=
"@color/white"
android:orientation=
"horizontal"
>
<TextView
android:layout_width=
"111dp"
android:layout_height=
"match_parent"
android:gravity=
"center_vertical"
android:text=
"姓名"
android:textColor=
"@color/black"
android:textSize=
"17sp"
/>
<EditText
android:id=
"@+id/et_name"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:background=
"@null"
android:hint=
"请输入您的姓名"
android:textColor=
"@color/black"
android:textColorHint=
"@color/platform_color_999999"
android:textSize=
"17sp"
/>
</LinearLayout>
<View
style=
"@style/platform_viewline"
/>
<View
android:layout_width=
"1dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
/>
<com.ydl.ydlcommon.view.RoundCornerButton
android:id=
"@+id/btn_ensure"
style=
"?android:attr/borderlessButtonStyle"
android:layout_width=
"match_parent"
android:layout_height=
"50dp"
android:layout_marginBottom=
"28dp"
android:layout_marginLeft=
"20dp"
android:layout_marginRight=
"20dp"
android:text=
"保存"
android:textColor=
"@color/white"
android:textSize=
"16sp"
app:pa_round_btn_bg=
"@color/platform_main_theme"
app:pa_round_btn_radio_size=
"4dp"
/>
</LinearLayout>
</LinearLayout>
</layout>
m-user/src/main/res/layout/user_mine_fragment_add_ali_account.xml
deleted
100644 → 0
View file @
1deb8fdc
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
tools:context=
"com.yidianling.user.mine.fragment.AddAliAccountFragment"
>
<View
style=
"@style/platform_viewline"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"50dp"
android:paddingLeft=
"15dp"
android:paddingRight=
"15dp"
android:background=
"@color/white"
android:orientation=
"horizontal"
>
<TextView
android:layout_width=
"111dp"
android:layout_height=
"match_parent"
android:gravity=
"center_vertical"
android:text=
"支付宝帐号"
android:textColor=
"@color/black"
android:textSize=
"17sp"
/>
<EditText
android:id=
"@+id/et_account"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:background=
"@null"
android:inputType=
"textEmailAddress"
android:hint=
"请输入您的支付宝帐号"
android:textColor=
"@color/black"
android:textColorHint=
"@color/platform_color_999999"
android:textSize=
"17sp"
/>
</LinearLayout>
<View
style=
"@style/platform_viewline"
android:layout_marginLeft=
"15dp"
android:layout_marginRight=
"15dp"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"50dp"
android:paddingLeft=
"15dp"
android:paddingRight=
"15dp"
android:background=
"@color/white"
android:orientation=
"horizontal"
>
<TextView
android:layout_width=
"111dp"
android:layout_height=
"match_parent"
android:gravity=
"center_vertical"
android:text=
"姓名"
android:textColor=
"@color/black"
android:textSize=
"17sp"
/>
<EditText
android:id=
"@+id/et_name"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:background=
"@null"
android:hint=
"请输入您的姓名"
android:textColor=
"@color/black"
android:textColorHint=
"@color/platform_color_999999"
android:textSize=
"17sp"
/>
</LinearLayout>
<View
style=
"@style/platform_viewline"
/>
<View
android:layout_width=
"1dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
/>
<com.ydl.ydlcommon.view.RoundCornerButton
android:id=
"@+id/btn_ensure"
style=
"?android:attr/borderlessButtonStyle"
android:layout_width=
"match_parent"
android:layout_height=
"50dp"
android:layout_marginBottom=
"28dp"
android:layout_marginLeft=
"20dp"
android:layout_marginRight=
"20dp"
android:text=
"保存"
android:textColor=
"@color/white"
android:textSize=
"16sp"
app:pa_round_btn_bg=
"@color/platform_main_theme"
app:pa_round_btn_radio_size=
"4dp"
/>
</LinearLayout>
m-user/src/main/res/layout/user_mine_fragment_add_bank_account.xml
deleted
100644 → 0
View file @
1deb8fdc
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:gravity=
"center_horizontal"
android:orientation=
"vertical"
tools:context=
"com.yidianling.user.mine.fragment.AddBankAccountFragment"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"100dp"
android:src=
"@drawable/user_mine_img_yhk"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"26dp"
android:text=
"近期会持续开通提现到银行卡,敬请期待......"
android:textColor=
"@color/platform_color_999999"
android:textSize=
"15sp"
/>
</LinearLayout>
ydl-webview/src/main/java/com/ydl/webview/NewH5Activity.java
View file @
290aa8e9
...
...
@@ -829,6 +829,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
super
.
onReceivedError
(
view
,
errorCode
,
description
,
failingUrl
);
AliYunRichLogsHelper
.
Companion
.
getInstance
()
.
sendRichLog
(
AliYunLogConfig
.
WEB
,
"onReceivedError---- errorCode: "
+
errorCode
+
"----failingUrl:"
+
failingUrl
);
LogUtil
.
e
(
"webviewErrorCode:"
+
errorCode
+
"description:"
+
description
);
loadFailed
=
true
;
tb_title
.
setTitle
(
"加载中"
);
if
(
wv_content
!=
null
)
{
...
...
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