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
d2e3abca
Commit
d2e3abca
authored
Apr 13, 2020
by
ydl
Browse files
Options
Browse Files
Download
Plain Diff
merge
parents
249f2afc
2beef95f
Hide whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
917 additions
and
716 deletions
+917
-716
config.gradle
config.gradle
+12
-12
AudioHomeActivity.kt
m-audioim/src/main/java/com/ydl/audioim/AudioHomeActivity.kt
+41
-108
YDLavManager.kt
m-audioim/src/main/java/com/ydl/audioim/YDLavManager.kt
+52
-11
AudioLogUtils.kt
m-audioim/src/main/java/com/ydl/audioim/utils/AudioLogUtils.kt
+18
-16
ConsultantAudioHomeActivity.kt
m-audioim/src/main/java/com/ydl/consultantim/ConsultantAudioHomeActivity.kt
+49
-90
ExpertSearchActivity.kt
m-consultant/src/main/java/com/yidianling/consultant/ExpertSearchActivity.kt
+4
-7
ExpertSearchFragment.kt
m-consultant/src/main/java/com/yidianling/consultant/ExpertSearchFragment.kt
+282
-175
ExpertSearchAdapter.kt
m-consultant/src/main/java/com/yidianling/consultant/adapter/ExpertSearchAdapter.kt
+135
-94
ConsultBIConstants.kt
m-consultant/src/main/java/com/yidianling/consultant/constants/ConsultBIConstants.kt
+13
-0
consultant_activity_expert_search_list.xml
m-consultant/src/main/res/layout/consultant_activity_expert_search_list.xml
+43
-33
consultant_assistant_dialog_img.png
m-consultant/src/xlzx/res/drawable-xhdpi/consultant_assistant_dialog_img.png
+0
-0
consultant_assistant_dialog_text_bg.xml
m-consultant/src/xlzx/res/drawable/consultant_assistant_dialog_text_bg.xml
+13
-0
consultant_assistant_dialog_img.png
m-consultant/src/ydl/res/drawable-xhdpi/consultant_assistant_dialog_img.png
+0
-0
consultant_assistant_dialog_text_bg.xml
m-consultant/src/ydl/res/drawable/consultant_assistant_dialog_text_bg.xml
+0
-0
YdlHomeAdapter.kt
m-home/src/xlzx/java/com/yidianling/home/adapter/YdlHomeAdapter.kt
+46
-15
HomeAssuageGriefView.kt
m-home/src/xlzx/java/com/yidianling/home/ui/view/HomeAssuageGriefView.kt
+3
-0
HomeButtonBannerView.kt
m-home/src/xlzx/java/com/yidianling/home/ui/view/HomeButtonBannerView.kt
+25
-0
home_course_bt_bg_huawei.png
m-home/src/xlzx/res/drawable-xhdpi/home_course_bt_bg_huawei.png
+0
-0
home_dcotor_bt_bg_huawei.png
m-home/src/xlzx/res/drawable-xhdpi/home_dcotor_bt_bg_huawei.png
+0
-0
home_listen_bt_bg_huawei.png
m-home/src/xlzx/res/drawable-xhdpi/home_listen_bt_bg_huawei.png
+0
-0
home_test_bt_bg_hauwei.png
m-home/src/xlzx/res/drawable-xhdpi/home_test_bt_bg_hauwei.png
+0
-0
home_button_banner_view.xml
m-home/src/xlzx/res/layout/home_button_banner_view.xml
+36
-59
ConfideOrderInfoView.java
m-im/src/main/java/com/yidianling/uikit/custom/widget/ConfideOrderInfoView.java
+0
-4
im_nim_chat_confide_order_info_view.xml
m-im/src/main/res_uikit/layout/im_nim_chat_confide_order_info_view.xml
+73
-89
UserApi.kt
m-user/src/main/java/com/yidianling/user/http/UserApi.kt
+3
-1
UserHttpImpl.kt
m-user/src/main/java/com/yidianling/user/http/UserHttpImpl.kt
+3
-1
YDLCommonPlugin.kt
ydl-flutter-base/src/main/java/com/channel/ydl_flutter_base/plugin/YDLCommonPlugin.kt
+8
-0
BaseActivity.kt
ydl-platform/src/main/java/com/ydl/ydlcommon/base/BaseActivity.kt
+26
-0
LogHelper.kt
ydl-platform/src/main/java/com/ydl/ydlcommon/utils/log/LogHelper.kt
+22
-0
H5JsBean.kt
ydl-webview/src/main/java/com/ydl/webview/H5JsBean.kt
+2
-0
NewH5Activity.java
ydl-webview/src/main/java/com/ydl/webview/NewH5Activity.java
+8
-1
No files found.
config.gradle
View file @
d2e3abca
...
@@ -42,12 +42,12 @@ ext {
...
@@ -42,12 +42,12 @@ ext {
ydlPublishVersion
=
[
ydlPublishVersion
=
[
// -------------- 业务模块 --------------
// -------------- 业务模块 --------------
//第三步 若干
//第三步 若干
"m-confide"
:
"0.0.48.1
1
"
,
"m-confide"
:
"0.0.48.1
2
"
,
"m-consultant"
:
"0.0.5
8.6
"
,
"m-consultant"
:
"0.0.5
9.0
"
,
"m-fm"
:
"0.0.29.3"
,
"m-fm"
:
"0.0.29.3"
,
"m-user"
:
"0.0.60.4"
,
"m-user"
:
"0.0.60.4"
,
"m-home"
:
"0.0.
19.1
"
,
"m-home"
:
"0.0.
21.4
"
,
"m-im"
:
"0.0.1
7.9
"
,
"m-im"
:
"0.0.1
8.0
"
,
"m-dynamic"
:
"0.0.7.5"
,
"m-dynamic"
:
"0.0.7.5"
,
"m-muse"
:
"0.0.28.9"
,
"m-muse"
:
"0.0.28.9"
,
...
@@ -69,14 +69,14 @@ ext {
...
@@ -69,14 +69,14 @@ ext {
//-------------- 功能组件 --------------
//-------------- 功能组件 --------------
//第一步
//第一步
"ydl-platform"
:
"0.0.39.2
2
"
,
"ydl-platform"
:
"0.0.39.2
4
"
,
//第二步 若干
//第二步 若干
"ydl-webview"
:
"0.0.38.2
4
"
,
"ydl-webview"
:
"0.0.38.2
9
"
,
"ydl-media"
:
"0.0.20"
,
"ydl-media"
:
"0.0.20"
,
"ydl-pay"
:
"0.0.17"
,
"ydl-pay"
:
"0.0.17"
,
"m-audioim"
:
"0.0.48.3.1
4
"
,
"m-audioim"
:
"0.0.48.3.1
6
"
,
"ydl-flutter-base"
:
"0.0.1
0.9
"
,
"ydl-flutter-base"
:
"0.0.1
4.12
"
,
//以下 几乎不会动
//以下 几乎不会动
"router"
:
"0.0.1"
,
"router"
:
"0.0.1"
,
...
@@ -115,13 +115,13 @@ ext {
...
@@ -115,13 +115,13 @@ ext {
//-------------- 功能组件 --------------
//-------------- 功能组件 --------------
//第一步
//第一步
"ydl-platform"
:
"0.0.39.2
1
"
,
"ydl-platform"
:
"0.0.39.2
4
"
,
//第二步 若干
//第二步 若干
"ydl-webview"
:
"0.0.38.2
4
"
,
"ydl-webview"
:
"0.0.38.2
9
"
,
"ydl-media"
:
"0.0.20"
,
"ydl-media"
:
"0.0.20"
,
"ydl-pay"
:
"0.0.17"
,
"ydl-pay"
:
"0.0.17"
,
"m-audioim"
:
"0.0.48.3.1
4
"
,
"m-audioim"
:
"0.0.48.3.1
6
"
,
"ydl-flutter-base"
:
"0.0.10.9"
,
"ydl-flutter-base"
:
"0.0.10.9"
,
//以下 几乎不会动
//以下 几乎不会动
...
@@ -270,7 +270,7 @@ ext {
...
@@ -270,7 +270,7 @@ ext {
//flutter功能组件升级===>发布ydl-flutter组件===>引用flutter相关的业务模块
//flutter功能组件升级===>发布ydl-flutter组件===>引用flutter相关的业务模块
"ydl-flutter-base"
:
"com.ydl:ydl-flutter-base:${ydlCompileVersion["
ydl
-
flutter
-
base
"]}"
,
//组件化项目中的flutter base模块
"ydl-flutter-base"
:
"com.ydl:ydl-flutter-base:${ydlCompileVersion["
ydl
-
flutter
-
base
"]}"
,
//组件化项目中的flutter base模块
"ydl-flutter"
:
"com.ydl:ydl-flutter:0.0.18.
0
@aar"
,
//flutter aar
"ydl-flutter"
:
"com.ydl:ydl-flutter:0.0.18.
9
@aar"
,
//flutter aar
"ydl-flutter-sp"
:
"com.ydl:ydl-flutter-sp:0.0.2@aar"
,
//flutter 缓存 aar
"ydl-flutter-sp"
:
"com.ydl:ydl-flutter-sp:0.0.2@aar"
,
//flutter 缓存 aar
//基础组件 <<--- 先发这个,发完改这里的版本号
//基础组件 <<--- 先发这个,发完改这里的版本号
...
...
m-audioim/src/main/java/com/ydl/audioim/AudioHomeActivity.kt
View file @
d2e3abca
...
@@ -56,6 +56,7 @@ import com.ydl.ydlcommon.utils.log.LogHelper
...
@@ -56,6 +56,7 @@ import com.ydl.ydlcommon.utils.log.LogHelper
import
com.ydl.ydlcommon.utils.remind.ToastHelper
import
com.ydl.ydlcommon.utils.remind.ToastHelper
import
com.yidianling.user.api.service.IUserService
import
com.yidianling.user.api.service.IUserService
import
de.greenrobot.event.EventBus
import
de.greenrobot.event.EventBus
import
io.agora.rtc.Constants
import
io.agora.rtc.IRtcEngineEventHandler
import
io.agora.rtc.IRtcEngineEventHandler
import
io.reactivex.Observable
import
io.reactivex.Observable
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.android.schedulers.AndroidSchedulers
...
@@ -190,6 +191,7 @@ class AudioHomeActivity :
...
@@ -190,6 +191,7 @@ class AudioHomeActivity :
runOnUiThread
{
runOnUiThread
{
when
(
warn
)
{
when
(
warn
)
{
103
,
104
,
105
,
106
,
107
->
{
103
,
104
,
105
,
106
,
107
->
{
writeAgoraLog
(
"通话挂断:网络异常(${warn})"
)
showToast
(
"当前网络较差,请更换网络!"
)
showToast
(
"当前网络较差,请更换网络!"
)
//通话结束或挂断时,上传日志文件
//通话结束或挂断时,上传日志文件
uploadLog
()
uploadLog
()
...
@@ -259,6 +261,7 @@ class AudioHomeActivity :
...
@@ -259,6 +261,7 @@ class AudioHomeActivity :
//更新:现在专家先加入频道,所以不会有等待的过程,
//更新:现在专家先加入频道,所以不会有等待的过程,
runOnUiThread
{
runOnUiThread
{
writeAgoraLog
(
"主叫加入频道成功"
)
//自己加入频道成功
//自己加入频道成功
connectSuccess
()
connectSuccess
()
}
}
...
@@ -271,6 +274,7 @@ class AudioHomeActivity :
...
@@ -271,6 +274,7 @@ class AudioHomeActivity :
runOnUiThread
{
runOnUiThread
{
//自己加入频道成功
//自己加入频道成功
if
(!
isConnectSuccess
)
{
if
(!
isConnectSuccess
)
{
writeAgoraLog
(
"主叫重新加入频道成功"
)
connectSuccess
()
connectSuccess
()
}
}
}
}
...
@@ -281,6 +285,7 @@ class AudioHomeActivity :
...
@@ -281,6 +285,7 @@ class AudioHomeActivity :
super
.
onRtcStats
(
stats
)
super
.
onRtcStats
(
stats
)
//因为用户端直接加入了频道,防止该回调执行时,专家还未加入频道,因此在连接成功之后,才进行频道人数判断
//因为用户端直接加入了频道,防止该回调执行时,专家还未加入频道,因此在连接成功之后,才进行频道人数判断
if
(
isConnectSuccess
&&
null
!=
stats
?.
users
&&
stats
.
users
==
1
)
{
if
(
isConnectSuccess
&&
null
!=
stats
?.
users
&&
stats
.
users
==
1
)
{
writeAgoraLog
(
"通话结束:用户加入了频道,但频道内只有一个人"
)
com
.
yidianling
.
common
.
tools
.
ToastUtil
.
toastShort
(
"专家已挂断"
)
com
.
yidianling
.
common
.
tools
.
ToastUtil
.
toastShort
(
"专家已挂断"
)
//通话结束或挂断时,上传日志文件
//通话结束或挂断时,上传日志文件
uploadLog
()
uploadLog
()
...
@@ -292,6 +297,7 @@ class AudioHomeActivity :
...
@@ -292,6 +297,7 @@ class AudioHomeActivity :
super
.
onConnectionStateChanged
(
state
,
reason
)
super
.
onConnectionStateChanged
(
state
,
reason
)
// 3 网络连接被服务器中止 该情况现在是因为后端踢人逻辑
// 3 网络连接被服务器中止 该情况现在是因为后端踢人逻辑
if
(
reason
==
3
)
{
if
(
reason
==
3
)
{
writeAgoraLog
(
"通话结束:原因(${reason})"
)
com
.
yidianling
.
common
.
tools
.
ToastUtil
.
toastShort
(
"专家已挂断"
)
com
.
yidianling
.
common
.
tools
.
ToastUtil
.
toastShort
(
"专家已挂断"
)
//通话结束或挂断时,上传日志文件
//通话结束或挂断时,上传日志文件
uploadLog
()
uploadLog
()
...
@@ -306,15 +312,6 @@ class AudioHomeActivity :
...
@@ -306,15 +312,6 @@ class AudioHomeActivity :
uploadLog
()
uploadLog
()
}
}
override
fun
onLastmileQuality
(
quality
:
Int
)
{
super
.
onLastmileQuality
(
quality
)
// LogUtil.e("[agora]网络质量报告回调${quality}")
}
override
fun
onConnectionInterrupted
()
{
super
.
onConnectionInterrupted
()
LogUtil
.
e
(
"[agora]连接中断回调"
)
}
override
fun
onUserJoined
(
uid
:
Int
,
elapsed
:
Int
)
{
override
fun
onUserJoined
(
uid
:
Int
,
elapsed
:
Int
)
{
super
.
onUserJoined
(
uid
,
elapsed
)
super
.
onUserJoined
(
uid
,
elapsed
)
...
@@ -324,6 +321,7 @@ class AudioHomeActivity :
...
@@ -324,6 +321,7 @@ class AudioHomeActivity :
override
fun
onUserOffline
(
uid
:
Int
,
elapsed
:
Int
)
{
override
fun
onUserOffline
(
uid
:
Int
,
elapsed
:
Int
)
{
super
.
onUserOffline
(
uid
,
elapsed
)
super
.
onUserOffline
(
uid
,
elapsed
)
LogUtil
.
e
(
"[agora]远端用户$uid 离开频道回调"
)
LogUtil
.
e
(
"[agora]远端用户$uid 离开频道回调"
)
writeAgoraLog
(
"接通后通话结束:对方已挂断"
)
//通话结束或挂断时,上传日志文件
//通话结束或挂断时,上传日志文件
uploadLog
()
uploadLog
()
showToast
(
"专家已挂断"
)
showToast
(
"专家已挂断"
)
...
@@ -354,16 +352,19 @@ class AudioHomeActivity :
...
@@ -354,16 +352,19 @@ class AudioHomeActivity :
initSensorManager
()
initSensorManager
()
//页面传递数据初始化
//页面传递数据初始化
initIntentData
()
initIntentData
()
if
(
YDLavManager
.
sdkStatus
!=
Constants
.
CONNECTION_STATE_CONNECTED
)
{
//再次登录声网,确保声网登录状态
reLoginRTM
()
}
//view初始化
//view初始化
initView
()
initView
()
//设置信令的回调
setCallBack
()
//点击事件
//点击事件
setClickEvent
()
setClickEvent
()
//权限申请
//权限申请
requestPermission
()
requestPermission
()
}
}
private
fun
setWindowStatusBarColor
()
{
private
fun
setWindowStatusBarColor
()
{
StatusBarUtils
.
setWindowStatusBarColor
(
this
,
R
.
color
.
audioim_color_40353535
)
StatusBarUtils
.
setWindowStatusBarColor
(
this
,
R
.
color
.
audioim_color_40353535
)
}
}
...
@@ -393,14 +394,6 @@ class AudioHomeActivity :
...
@@ -393,14 +394,6 @@ class AudioHomeActivity :
listenId
=
intent
.
getStringExtra
(
IntentConstants
.
INTENT_LISTEN_ID
)
listenId
=
intent
.
getStringExtra
(
IntentConstants
.
INTENT_LISTEN_ID
)
commentUrl
=
intent
.
getStringExtra
(
IntentConstants
.
INTENT_COMMENT_URL
)
commentUrl
=
intent
.
getStringExtra
(
IntentConstants
.
INTENT_COMMENT_URL
)
writeAgoraLog
()
localRemainTime
=
remainTime
?.
toInt
()
handler
=
Handler
()
vibrator
=
getSystemService
(
Service
.
VIBRATOR_SERVICE
)
as
Vibrator
?
}
private
fun
writeAgoraLog
()
{
val
logBean
=
AgoraLogInfoBean
(
val
logBean
=
AgoraLogInfoBean
(
expertHeadUrl
,
expertHeadUrl
,
expertName
,
expertName
,
...
@@ -411,18 +404,25 @@ class AudioHomeActivity :
...
@@ -411,18 +404,25 @@ class AudioHomeActivity :
callId
,
callId
,
listenId
listenId
)
)
val
content
=
Gson
().
toJson
(
logBean
)
writeAgoraLog
(
"主叫方发送的邀请通话消息内容:$content"
,
isAppend
=
false
)
Observable
.
create
<
Any
>
{
localRemainTime
=
remainTime
?.
toInt
()
try
{
handler
=
Handler
()
val
content
=
Gson
().
toJson
(
logBean
)
vibrator
=
getSystemService
(
Service
.
VIBRATOR_SERVICE
)
as
Vibrator
?
AudioLogUtils
.
writeAgoraLog
(
content
,
"confide"
)
}
}
catch
(
e
:
Exception
)
{
}
}.
subscribeOn
(
Schedulers
.
io
())
.
subscribe
()
private
fun
reLoginRTM
()
{
writeAgoraLog
(
"RMT状态:${YDLavManager.sdkStatus},重新登录RMT"
)
val
uid
=
YdlCommonRouterManager
.
getYdlCommonRoute
().
getUid
().
toString
()
YDLavManager
.
instances
.
login
(
uid
)
{
_isSuccess
,
_msg
->
writeAgoraLog
(
"登录RTM的uid=${uid}"
)
val
result
=
if
(
_isSuccess
)
"RMT登录成功"
else
"RMT登录失败:$_msg"
writeAgoraLog
(
result
)
}
}
}
private
fun
initView
()
{
private
fun
initView
()
{
tv_change_route
.
isEnabled
=
false
tv_change_route
.
isEnabled
=
false
//水波纹view初始化
//水波纹view初始化
...
@@ -461,8 +461,8 @@ class AudioHomeActivity :
...
@@ -461,8 +461,8 @@ class AudioHomeActivity :
return
@setOnClickListener
return
@setOnClickListener
}
}
if
(
isConnectSuccess
)
{
if
(
isConnectSuccess
)
{
writeAgoraLog
(
"已接通:主叫主动挂断"
)
updateExpertStatus
(
false
,
1
)
updateExpertStatus
(
false
,
1
)
// userCloseCalling()
leaveChannel
()
leaveChannel
()
uploadLog
()
uploadLog
()
}
else
{
}
else
{
...
@@ -499,71 +499,6 @@ class AudioHomeActivity :
...
@@ -499,71 +499,6 @@ class AudioHomeActivity :
}
}
}
}
private
fun
setCallBack
()
{
/**
* RTC 回调 在[YDLavManager.setCallback]中注册使用
*/
// //RTC 回调
// YDLRTMClient.instances.setCallListener(object : CallListener {
// override fun onCallRecivedByPeer(response: CallLocalResponse?) {
// playWaitingMusic()
// //返回给主叫:被叫已收到呼叫邀请
// LogUtil.i("[agora]${response?.calleeId}已收到呼叫邀请,频道号${response?.ChannelId}")
// }
//
// override fun onCallAccepted(response: CallLocalResponse?, msg: String?) {
// //返回给主叫
// LogUtil.i("[agora]${response?.calleeId}已接受呼叫邀请")
// //加入声网频道时机修改:用户收到专家接受邀请的回调后再加入声网频道
// joinChannel()
// }
//
// override fun onCallRefused(response: CallLocalResponse?, msg: String?) {
// //返回给主叫
// LogUtil.i("[agora]${response?.calleeId}已拒绝呼叫邀请")
// ToastUtil.showToast(applicationContext, "对方已挂断")
// //通话结束或挂断时,上传日志文件
// uploadLog()
// leaveChannel()
// }
//
// override fun onCallCanceled(response: CallLocalResponse?) {
// //返回给主叫
// LogUtil.i("[agora]主叫已取消呼叫邀请")
// }
//
// override fun onCallFailure(response: CallLocalResponse?, errorCode: Int) {
// //返回给主叫
// LogUtil.i("[agora]呼叫${response?.calleeId}用户失败:${response?.response}")
// //专家离线或者30 秒后仍未收到专家响应,重新再邀请一次
// when (errorCode) {
// //被叫不在线 呼叫邀请发出 30 秒后被叫仍未 ACK 响应呼叫邀请
// RtmStatusCode.LocalInvitationError.LOCAL_INVITATION_ERR_PEER_OFFLINE,
// RtmStatusCode.LocalInvitationError.LOCAL_INVITATION_ERR_PEER_NO_RESPONSE -> {
// rtcCall()
// }
// RtmStatusCode.LocalInvitationError.LOCAL_INVITATION_ERR_INVITATION_EXPIRE -> {//呼叫邀请过期。被叫 ACK 响应呼叫邀请后 60 秒呼叫邀请未被取消、接受、拒绝,则呼叫邀请过期。
//
// }
// }
// }
//
// override fun onMessageReceived(message: RTMMesssage?, member: ChannelMember?) {
// //接到频道消息
// LogUtil.i("[agora]接到${member?.channelId}频道${member?.userId}的消息:" + message?.text)
// }
//
// override fun onMemberJoined(member: ChannelMember?) {
// //新用户加入频道
// LogUtil.i("[agora]新用户加入${member?.channelId}频道:${member?.userId}")
// }
//
// override fun onMemberLeft(member: ChannelMember?) {
// LogUtil.i("[agora]有用户离开${member?.channelId}频道:${member?.userId}")
// }
// })
}
/**
/**
* 请求权限
* 请求权限
*/
*/
...
@@ -609,22 +544,9 @@ class AudioHomeActivity :
...
@@ -609,22 +544,9 @@ class AudioHomeActivity :
)
)
sendDoctocrMsg
=
Gson
().
toJson
(
msgBean
)
sendDoctocrMsg
=
Gson
().
toJson
(
msgBean
)
writeAgoraLog
(
"主叫发送通话邀请"
)
rtcCall
()
rtcCall
()
// Observable.interval(0, 100, TimeUnit.MILLISECONDS)
// .subscribeOn(Schedulers.computation())
// .take(303)
// .observeOn(AndroidSchedulers.mainThread())
// .subscribe({
// var result = it.toFloat() / 2.5f
// progress_view.setProgress(result)
// if (result >= 100f && !iv_hang_up.isEnabled) {
// //挂断按钮可点击
// iv_hang_up.isEnabled = true
// iv_hang_up.setImageResource(R.drawable.audioim_img_hang_up)
// }
// }, {}, {})
//开始60s等待倒计时
//开始60s等待倒计时
waitDisposable
=
Observable
.
interval
(
0
,
100
,
TimeUnit
.
MILLISECONDS
)
waitDisposable
=
Observable
.
interval
(
0
,
100
,
TimeUnit
.
MILLISECONDS
)
...
@@ -646,6 +568,7 @@ class AudioHomeActivity :
...
@@ -646,6 +568,7 @@ class AudioHomeActivity :
if
(!
isConnectSuccess
)
{
if
(!
isConnectSuccess
)
{
//关闭音乐
//关闭音乐
stopPlaying
()
stopPlaying
()
writeAgoraLog
(
"未接通挂断:60s等待倒计时结束挂断"
)
//提示切换传统线路
//提示切换传统线路
//发送消息通知专家用户已挂断
//发送消息通知专家用户已挂断
YDLRTMClient
.
instances
.
cancelCall
(
listenerUid
,
channelId
,
object
:
CancelCallStatusListener
{
YDLRTMClient
.
instances
.
cancelCall
(
listenerUid
,
channelId
,
object
:
CancelCallStatusListener
{
...
@@ -689,6 +612,7 @@ class AudioHomeActivity :
...
@@ -689,6 +612,7 @@ class AudioHomeActivity :
* 声网加入频道
* 声网加入频道
*/
*/
fun
joinChannel
()
{
fun
joinChannel
()
{
writeAgoraLog
(
"对方接受了通话邀请,主叫开始加入频道:$channelId"
)
voiceManage
!!
.
getVoiceApi
().
joinChannel
(
voiceManage
!!
.
getVoiceApi
().
joinChannel
(
token
!!
,
token
!!
,
channelId
!!
,
channelId
!!
,
...
@@ -703,10 +627,11 @@ class AudioHomeActivity :
...
@@ -703,10 +627,11 @@ class AudioHomeActivity :
*
*
*/
*/
private
fun
userCloseCalling
()
{
private
fun
userCloseCalling
()
{
//发送消息通知专家用户已挂断
writeAgoraLog
(
"未接听时:主叫主动挂断,取消呼叫"
)
//发送消息通知专家用户已挂断
//发送消息通知专家用户已挂断
YDLRTMClient
.
instances
.
cancelCall
(
listenerUid
,
channelId
,
object
:
CancelCallStatusListener
{
YDLRTMClient
.
instances
.
cancelCall
(
listenerUid
,
channelId
,
object
:
CancelCallStatusListener
{
override
fun
onFailure
(
errorMsg
:
String
?,
errorCode
:
Int
)
{
override
fun
onFailure
(
errorMsg
:
String
?,
errorCode
:
Int
)
{
writeAgoraLog
(
"未接听时:主叫主动挂断失败,msg=$errorMsg($errorCode),再次挂断"
)
YDLRTMClient
.
instances
.
cancelCall
(
listenerUid
,
channelId
,
null
)
YDLRTMClient
.
instances
.
cancelCall
(
listenerUid
,
channelId
,
null
)
}
}
...
@@ -1166,6 +1091,14 @@ class AudioHomeActivity :
...
@@ -1166,6 +1091,14 @@ class AudioHomeActivity :
}
}
fun
writeAgoraLog
(
content
:
String
,
isAppend
:
Boolean
=
true
)
{
try
{
AudioLogUtils
.
writeAgoraLog
(
content
,
"confide"
,
isAppend
)
}
catch
(
e
:
Exception
)
{
}
}
override
fun
finishActivity
()
{
override
fun
finishActivity
()
{
leaveChannel
()
leaveChannel
()
}
}
...
...
m-audioim/src/main/java/com/ydl/audioim/YDLavManager.kt
View file @
d2e3abca
...
@@ -2,11 +2,13 @@ package com.ydl.audioim
...
@@ -2,11 +2,13 @@ package com.ydl.audioim
import
android.annotation.SuppressLint
import
android.annotation.SuppressLint
import
android.content.Context
import
android.content.Context
import
android.os.Handler
import
android.text.TextUtils
import
android.text.TextUtils
import
com.alibaba.android.arouter.launcher.ARouter
import
com.alibaba.android.arouter.launcher.ARouter
import
com.google.gson.Gson
import
com.google.gson.Gson
import
com.ydl.audioim.http.AudioApiRequestUtil
import
com.ydl.audioim.http.AudioApiRequestUtil
import
com.ydl.audioim.http.command.ConnectExceptionCommand
import
com.ydl.audioim.http.command.ConnectExceptionCommand
import
com.ydl.audioim.utils.AudioLogUtils
import
com.ydl.consultantim.ConsultantAudioHomeActivity
import
com.ydl.consultantim.ConsultantAudioHomeActivity
import
com.ydl.ydl_av.chat.bean.AudioMessageBean
import
com.ydl.ydl_av.chat.bean.AudioMessageBean
import
com.ydl.ydl_av.messge_service.YDLRTMClient
import
com.ydl.ydl_av.messge_service.YDLRTMClient
...
@@ -38,6 +40,10 @@ class YDLavManager {
...
@@ -38,6 +40,10 @@ class YDLavManager {
companion
object
{
companion
object
{
val
FILE_NAME
=
"consult"
//当前sdk的登录状态
var
sdkStatus
=
-
1
val
instances
:
YDLavManager
by
lazy
(
mode
=
LazyThreadSafetyMode
.
SYNCHRONIZED
)
{
val
instances
:
YDLavManager
by
lazy
(
mode
=
LazyThreadSafetyMode
.
SYNCHRONIZED
)
{
YDLavManager
()
YDLavManager
()
}
}
...
@@ -49,6 +55,14 @@ class YDLavManager {
...
@@ -49,6 +55,14 @@ class YDLavManager {
YDLRTMClient
.
instances
.
init
(
context
,
appId
,
listener
)
YDLRTMClient
.
instances
.
init
(
context
,
appId
,
listener
)
//设置回调
//设置回调
setCallback
()
setCallback
()
val
uid
=
ModularServiceManager
.
provide
(
IUserService
::
class
.
java
).
getUserInfo
()
?.
uid
if
(!
TextUtils
.
isEmpty
(
uid
)
&&
!
TextUtils
.
equals
(
"0"
,
uid
))
{
//不延时,可能会导致请求api报 network not unablibale
Handler
().
postDelayed
({
login
(
uid
)
},
300
)
}
}
}
...
@@ -88,6 +102,7 @@ class YDLavManager {
...
@@ -88,6 +102,7 @@ class YDLavManager {
if
(
act
is
AudioHomeActivity
)
{
if
(
act
is
AudioHomeActivity
)
{
act
.
runOnUiThread
{
act
.
runOnUiThread
{
ToastUtil
.
toastShort
(
"对方已挂断"
)
ToastUtil
.
toastShort
(
"对方已挂断"
)
act
.
writeAgoraLog
(
"被叫拒绝了通话邀请"
)
//通话结束或挂断时,上传日志文件
//通话结束或挂断时,上传日志文件
act
.
uploadLog
()
act
.
uploadLog
()
act
.
leaveChannel
()
act
.
leaveChannel
()
...
@@ -100,17 +115,23 @@ class YDLavManager {
...
@@ -100,17 +115,23 @@ class YDLavManager {
override
fun
onCallCanceled
(
response
:
CallLocalResponse
?)
{
override
fun
onCallCanceled
(
response
:
CallLocalResponse
?)
{
//返回给主叫
//返回给主叫
LogUtil
.
e
(
"[agora]主叫已取消呼叫邀请"
)
LogUtil
.
e
(
"[agora]主叫已取消呼叫邀请"
)
val
act
=
ActivityManager
.
getInstance
().
getTopTaskActivity
()
if
(
act
is
AudioHomeActivity
)
{
act
.
runOnUiThread
{
act
.
writeAgoraLog
(
"主叫呼叫取消:超时或主动取消"
)
}
}
}
}
override
fun
onCallFailure
(
response
:
CallLocalResponse
?,
errorCode
:
Int
)
{
override
fun
onCallFailure
(
response
:
CallLocalResponse
?,
errorCode
:
Int
)
{
//返回给主叫
//返回给主叫
LogUtil
.
e
(
"[agora]呼叫${response?.calleeId}用户失败:${response?.response}"
)
LogUtil
.
e
(
"[agora]呼叫${response?.calleeId}用户失败:${response?.response}"
)
val
act
=
ActivityManager
.
getInstance
().
getTopTaskActivity
()
//专家离线或者30 秒后仍未收到专家响应,重新再邀请一次
//专家离线或者30 秒后仍未收到专家响应,重新再邀请一次
when
(
errorCode
)
{
when
(
errorCode
)
{
//被叫不在线 呼叫邀请发出 30 秒后被叫仍未 ACK 响应呼叫邀请
//被叫不在线 呼叫邀请发出 30 秒后被叫仍未 ACK 响应呼叫邀请
RtmStatusCode
.
LocalInvitationError
.
LOCAL_INVITATION_ERR_PEER_OFFLINE
,
RtmStatusCode
.
LocalInvitationError
.
LOCAL_INVITATION_ERR_PEER_OFFLINE
,
RtmStatusCode
.
LocalInvitationError
.
LOCAL_INVITATION_ERR_PEER_NO_RESPONSE
->
{
RtmStatusCode
.
LocalInvitationError
.
LOCAL_INVITATION_ERR_PEER_NO_RESPONSE
->
{
val
act
=
ActivityManager
.
getInstance
().
getTopTaskActivity
()
if
(
act
is
AudioHomeActivity
)
{
if
(
act
is
AudioHomeActivity
)
{
act
.
runOnUiThread
{
act
.
runOnUiThread
{
act
.
rtcCall
()
act
.
rtcCall
()
...
@@ -118,7 +139,14 @@ class YDLavManager {
...
@@ -118,7 +139,14 @@ class YDLavManager {
}
}
}
}
RtmStatusCode
.
LocalInvitationError
.
LOCAL_INVITATION_ERR_INVITATION_EXPIRE
->
{
//呼叫邀请过期。被叫 ACK 响应呼叫邀请后 60 秒呼叫邀请未被取消、接受、拒绝,则呼叫邀请过期。
RtmStatusCode
.
LocalInvitationError
.
LOCAL_INVITATION_ERR_INVITATION_EXPIRE
->
{
//呼叫邀请过期。被叫 ACK 响应呼叫邀请后 60 秒呼叫邀请未被取消、接受、拒绝,则呼叫邀请过期。
if
(
act
is
AudioHomeActivity
)
{
act
.
runOnUiThread
{
act
.
writeAgoraLog
(
"呼叫失败:${errorCode}"
)
//通话结束或挂断时,上传日志文件
act
.
uploadLog
()
act
.
leaveChannel
()
}
}
}
}
}
}
}
}
...
@@ -126,7 +154,7 @@ class YDLavManager {
...
@@ -126,7 +154,7 @@ class YDLavManager {
override
fun
onRemoteInvitationReceived
(
response
:
CallRemoteResponse
?)
{
override
fun
onRemoteInvitationReceived
(
response
:
CallRemoteResponse
?)
{
//返回给被叫
//返回给被叫
LogUtil
.
e
(
"[agora]收到来自${response?.callerId}的呼叫邀请"
)
LogUtil
.
e
(
"[agora]收到来自${response?.callerId}的呼叫邀请"
)
receivedCall
(
response
?.
content
)
receivedCall
(
response
?.
content
,
"来自RTM"
)
}
}
override
fun
onRemoteInvitationAccepted
(
response
:
CallRemoteResponse
?)
{
override
fun
onRemoteInvitationAccepted
(
response
:
CallRemoteResponse
?)
{
...
@@ -142,12 +170,18 @@ class YDLavManager {
...
@@ -142,12 +170,18 @@ class YDLavManager {
override
fun
onRemoteInvitationCanceled
(
response
:
CallRemoteResponse
?)
{
override
fun
onRemoteInvitationCanceled
(
response
:
CallRemoteResponse
?)
{
//返回给被叫
//返回给被叫
LogUtil
.
e
(
"[agora]主叫${response?.callerId}已取消呼叫邀请"
)
LogUtil
.
e
(
"[agora]主叫${response?.callerId}已取消呼叫邀请"
)
AudioLogUtils
.
writeAgoraLog
(
"呼叫邀请被取消:主叫主动取消"
,
FILE_NAME
)
closePage
()
closePage
()
}
}
override
fun
onRemoteInvitationFailure
(
response
:
CallRemoteResponse
?,
errorCode
:
Int
)
{
override
fun
onRemoteInvitationFailure
(
response
:
CallRemoteResponse
?,
errorCode
:
Int
)
{
//返回给被叫
//返回给被叫
LogUtil
.
e
(
"[agora]来自主叫${response?.callerId}的呼叫邀请进程失败:${response?.response}"
)
LogUtil
.
e
(
"[agora]来自主叫${response?.callerId}的呼叫邀请进程失败:${response?.response}"
)
if
(
errorCode
==
RtmStatusCode
.
RemoteInvitationError
.
REMOTE_INVITATION_ERR_INVITATION_EXPIRE
)
{
//呼叫邀请过期
AudioLogUtils
.
writeAgoraLog
(
"呼叫邀请被取消:呼叫邀请过期"
,
FILE_NAME
)
}
else
{
AudioLogUtils
.
writeAgoraLog
(
"呼叫邀请被取消:错误原因(${errorCode})"
,
FILE_NAME
)
}
//关闭页面
//关闭页面
closePage
()
closePage
()
}
}
...
@@ -158,8 +192,16 @@ class YDLavManager {
...
@@ -158,8 +192,16 @@ class YDLavManager {
})
})
}
}
@SuppressLint
(
"CheckResult"
)
fun
login
(
userId
:
String
?)
{
fun
login
(
userId
:
String
?)
{
login
(
userId
)
{
_
,
_
->
}
}
@SuppressLint
(
"CheckResult"
)
fun
login
(
userId
:
String
?,
event
:
(
isSuccess
:
Boolean
,
msg
:
String
?)
->
Unit
)
{
if
(
TextUtils
.
isEmpty
(
userId
)
||
userId
?:
"0"
<=
"0"
)
{
if
(
TextUtils
.
isEmpty
(
userId
)
||
userId
?:
"0"
<=
"0"
)
{
//如果uid为空或小于等于0 ,则不进行登录,因为uid为0也会登录成功,会导致后面uid正确时无法登录
//如果uid为空或小于等于0 ,则不进行登录,因为uid为0也会登录成功,会导致后面uid正确时无法登录
LogUtil
.
e
(
"[agora]login-uid:$userId"
)
LogUtil
.
e
(
"[agora]login-uid:$userId"
)
...
@@ -177,10 +219,12 @@ class YDLavManager {
...
@@ -177,10 +219,12 @@ class YDLavManager {
override
fun
onSuccess
()
{
override
fun
onSuccess
()
{
//登陆成功,发起呼叫
//登陆成功,发起呼叫
LogUtil
.
e
(
"[agora]实时消息登录成功"
)
LogUtil
.
e
(
"[agora]实时消息登录成功"
)
event
(
true
,
""
)
}
}
override
fun
onFailure
(
msg
:
String
?)
{
override
fun
onFailure
(
msg
:
String
?)
{
LogUtil
.
e
(
"[agora]实时消息登录失败:$msg"
)
LogUtil
.
e
(
"[agora]实时消息登录失败:$msg"
)
event
(
false
,
msg
)
}
}
})
})
...
@@ -199,7 +243,7 @@ class YDLavManager {
...
@@ -199,7 +243,7 @@ class YDLavManager {
* 收到邀请
* 收到邀请
*/
*/
@SuppressLint
(
"CheckResult"
)
@SuppressLint
(
"CheckResult"
)
fun
receivedCall
(
content
:
String
?)
{
fun
receivedCall
(
content
:
String
?
,
from
:
String
=
""
)
{
if
(!
TextUtils
.
isEmpty
(
content
))
{
if
(!
TextUtils
.
isEmpty
(
content
))
{
//如果已经接听了用户电话 再有电话进来 是不能接听的
//如果已经接听了用户电话 再有电话进来 是不能接听的
if
(!
activityIsExists
(
ConsultantAudioHomeActivity
::
class
.
java
)
&&
!
activityIsExists
(
if
(!
activityIsExists
(
ConsultantAudioHomeActivity
::
class
.
java
)
&&
!
activityIsExists
(
...
@@ -215,14 +259,10 @@ class YDLavManager {
...
@@ -215,14 +259,10 @@ class YDLavManager {
ARouter
.
getInstance
().
build
(
"/av/ConsultantAudioHomeActivity"
)
ARouter
.
getInstance
().
build
(
"/av/ConsultantAudioHomeActivity"
)
.
withString
(
"param"
,
content
)
.
withString
(
"param"
,
content
)
.
navigation
()
.
navigation
()
AudioLogUtils
.
writeAgoraLog
(
"收到主叫方通话邀请($from)"
,
FILE_NAME
,
false
)
}
}
}
else
{
}
else
{
try
{
val
mAudioMessageBean
=
Gson
().
fromJson
(
content
,
AudioMessageBean
::
class
.
java
)
YDLRTMClient
.
instances
.
refuseCall
(
mAudioMessageBean
.
channelId
)
}
catch
(
e
:
Exception
)
{
}
LogUtil
.
d
(
"[agora]收到声网邀请,但界面实例已存在"
)
LogUtil
.
d
(
"[agora]收到声网邀请,但界面实例已存在"
)
}
}
}
else
{
}
else
{
...
@@ -303,6 +343,7 @@ class YDLavManager {
...
@@ -303,6 +343,7 @@ class YDLavManager {
}
}
override
fun
onConnectionStateChanged
(
state
:
Int
,
reason
:
Int
)
{
override
fun
onConnectionStateChanged
(
state
:
Int
,
reason
:
Int
)
{
sdkStatus
=
state
LogUtil
.
i
(
"[agora]onConnectionStateChanged:state:${state} -->reason:$reason"
)
LogUtil
.
i
(
"[agora]onConnectionStateChanged:state:${state} -->reason:$reason"
)
}
}
...
...
m-audioim/src/main/java/com/ydl/audioim/utils/AudioLogUtils.kt
View file @
d2e3abca
...
@@ -29,10 +29,10 @@ class AudioLogUtils {
...
@@ -29,10 +29,10 @@ class AudioLogUtils {
@SuppressLint
(
"SimpleDateFormat"
)
@SuppressLint
(
"SimpleDateFormat"
)
private
val
format
=
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
)
private
val
format
=
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
)
fun
writeAgoraLog
(
content
:
String
,
fileName
:
String
)
{
fun
writeAgoraLog
(
content
:
String
,
fileName
:
String
,
isAppend
:
Boolean
=
true
)
{
Observable
.
create
<
Any
>
{
Observable
.
create
<
Any
>
{
try
{
try
{
writeLog
(
content
,
fileName
)
writeLog
(
content
,
fileName
,
isAppend
)
if
(
BuildConfig
.
DEBUG
)
{
if
(
BuildConfig
.
DEBUG
)
{
LogUtil
.
d
(
"writeLog_complete"
)
LogUtil
.
d
(
"writeLog_complete"
)
}
}
...
@@ -42,7 +42,7 @@ class AudioLogUtils {
...
@@ -42,7 +42,7 @@ class AudioLogUtils {
.
subscribe
()
.
subscribe
()
}
}
private
fun
writeLog
(
content
:
String
,
fileName
:
String
)
{
private
fun
writeLog
(
content
:
String
,
fileName
:
String
,
isAppend
:
Boolean
)
{
try
{
try
{
val
folder
=
getLogFolder
()
val
folder
=
getLogFolder
()
val
file
=
File
(
folder
,
fileName
)
val
file
=
File
(
folder
,
fileName
)
...
@@ -51,19 +51,21 @@ class AudioLogUtils {
...
@@ -51,19 +51,21 @@ class AudioLogUtils {
}
}
val
fileWriter
=
FileWriter
(
file
,
true
)
val
fileWriter
=
FileWriter
(
file
,
true
)
val
writer
=
BufferedWriter
(
fileWriter
)
val
writer
=
BufferedWriter
(
fileWriter
)
writer
.
write
(
"""Time:${format.format(Calendar.getInstance().time)}"""
)
if
(!
isAppend
)
{
writer
.
newLine
()
writer
.
write
(
"----------------"
)
writer
.
write
(
"UserUid = ${ModularServiceManager.getPlatformUserService()?.getUser()?.userId}"
)
writer
.
newLine
()
writer
.
newLine
()
writer
.
write
(
"""Time:${format.format(Calendar.getInstance().time)}"""
)
writer
.
write
(
"""Network:${RxNetTool.getNetWorkTypeName(BaseApp.getApp())}"""
)
writer
.
newLine
()
writer
.
newLine
()
writer
.
write
(
"ExpertUid = ${ModularServiceManager.getPlatformUserService()?.getUser()?.userId}"
)
writer
.
write
(
"""DevicesInfo:${RxDeviceTool.getBuildBrandModel()},${RxDeviceTool.getSDKVersionName()}"""
)
writer
.
newLine
()
writer
.
newLine
()
writer
.
write
(
"""Network:${RxNetTool.getNetWorkTypeName(BaseApp.getApp())}"""
)
writer
.
write
(
"""VersionInfo:${RxAppTool.getAppVersionName(BaseApp.getApp())}"""
)
writer
.
newLine
()
writer
.
newLine
()
writer
.
write
(
"""DevicesInfo:${RxDeviceTool.getBuildBrandModel()},${RxDeviceTool.getSDKVersionName()}"""
)
writer
.
write
(
"AgoraLog:$content"
)
writer
.
newLine
()
writer
.
newLine
()
writer
.
write
(
"""VersionInfo:${RxAppTool.getAppVersionName(BaseApp.getApp())}"""
)
writer
.
write
(
"--------"
)
writer
.
newLine
()
}
writer
.
write
(
content
)
writer
.
newLine
()
writer
.
newLine
()
writer
.
flush
()
writer
.
flush
()
writer
.
close
()
writer
.
close
()
...
...
m-audioim/src/main/java/com/ydl/consultantim/ConsultantAudioHomeActivity.kt
View file @
d2e3abca
...
@@ -52,6 +52,7 @@ import com.ydl.ydlcommon.utils.remind.ToastHelper
...
@@ -52,6 +52,7 @@ import com.ydl.ydlcommon.utils.remind.ToastHelper
import
com.yidianling.common.tools.ToastUtil
import
com.yidianling.common.tools.ToastUtil
import
com.yidianling.user.api.service.IUserService
import
com.yidianling.user.api.service.IUserService
import
de.greenrobot.event.EventBus
import
de.greenrobot.event.EventBus
import
io.agora.rtc.Constants
import
io.agora.rtc.IRtcEngineEventHandler
import
io.agora.rtc.IRtcEngineEventHandler
import
io.reactivex.Observable
import
io.reactivex.Observable
import
io.reactivex.android.schedulers.AndroidSchedulers
import
io.reactivex.android.schedulers.AndroidSchedulers
...
@@ -128,9 +129,12 @@ class ConsultantAudioHomeActivity :
...
@@ -128,9 +129,12 @@ class ConsultantAudioHomeActivity :
override
fun
onJoinChannelSuccess
(
channel
:
String
?,
uid
:
Int
,
elapsed
:
Int
)
{
override
fun
onJoinChannelSuccess
(
channel
:
String
?,
uid
:
Int
,
elapsed
:
Int
)
{
super
.
onJoinChannelSuccess
(
channel
,
uid
,
elapsed
)
super
.
onJoinChannelSuccess
(
channel
,
uid
,
elapsed
)
LogUtil
.
e
(
"[agora]$uid 加入频道回调"
)
LogUtil
.
e
(
"[agora]$uid 加入频道回调"
)
// 加入频道后再通知用户已接受
writeAgoraLog
(
"被叫加入声网($channel)频道成功"
)
YDLRTMClient
.
instances
.
acceptCall
(
mAudioMessageBean
?.
channelId
)
runOnUiThread
{
runOnUiThread
{
// 加入频道后再通知用户已接受
YDLRTMClient
.
instances
.
acceptCall
(
mAudioMessageBean
?.
channelId
)
tv_toast
.
visibility
=
View
.
VISIBLE
tv_toast
.
visibility
=
View
.
VISIBLE
tv_toast
.
text
=
"连接中..."
tv_toast
.
text
=
"连接中..."
...
@@ -143,9 +147,32 @@ class ConsultantAudioHomeActivity :
...
@@ -143,9 +147,32 @@ class ConsultantAudioHomeActivity :
}
}
}
}
/**
* 重新加入频道回调
*/
override
fun
onRejoinChannelSuccess
(
channel
:
String
?,
uid
:
Int
,
elapsed
:
Int
)
{
super
.
onRejoinChannelSuccess
(
channel
,
uid
,
elapsed
)
LogUtil
.
e
(
"[agora]$uid 重新加入频道回调"
)
writeAgoraLog
(
"被叫重新加入声网频道($channel)成功"
)
runOnUiThread
{
if
(!
isConnectSuccess
)
{
tv_toast
.
visibility
=
View
.
VISIBLE
tv_toast
.
text
=
"连接中..."
voiceManage
!!
.
getVoiceApi
().
setEnableSpeakerphone
(
false
)
//5s倒计时,5s后还是连接中,则直接关闭页面
connectingStatusWaitingTimeCount
()
}
}
}
override
fun
onUserJoined
(
uid
:
Int
,
elapsed
:
Int
)
{
override
fun
onUserJoined
(
uid
:
Int
,
elapsed
:
Int
)
{
super
.
onUserJoined
(
uid
,
elapsed
)
super
.
onUserJoined
(
uid
,
elapsed
)
LogUtil
.
e
(
"[agora]远端用户加入频道回调"
)
LogUtil
.
e
(
"[agora]远端用户加入频道回调"
)
writeAgoraLog
(
"主叫加入声网频道成功"
)
//另一方加入频道成功
//另一方加入频道成功
runOnUiThread
{
runOnUiThread
{
isConnectSuccess
=
true
isConnectSuccess
=
true
...
@@ -166,6 +193,7 @@ class ConsultantAudioHomeActivity :
...
@@ -166,6 +193,7 @@ class ConsultantAudioHomeActivity :
// 3 网络连接被服务器中止 该情况现在是因为后端踢人逻辑
// 3 网络连接被服务器中止 该情况现在是因为后端踢人逻辑
if
(
reason
==
3
)
{
if
(
reason
==
3
)
{
ToastUtil
.
toastShort
(
"对方已挂断"
)
ToastUtil
.
toastShort
(
"对方已挂断"
)
writeAgoraLog
(
"通话挂断:网络连接被服务器中止"
)
//通话结束或挂断时,上传日志文件
//通话结束或挂断时,上传日志文件
uploadLog
()
uploadLog
()
leaveChannel
()
leaveChannel
()
...
@@ -203,6 +231,7 @@ class ConsultantAudioHomeActivity :
...
@@ -203,6 +231,7 @@ class ConsultantAudioHomeActivity :
LogUtil
.
e
(
"[agora]$uid 主播离开频道回调"
)
LogUtil
.
e
(
"[agora]$uid 主播离开频道回调"
)
runOnUiThread
{
runOnUiThread
{
showLongToast
(
"对方已挂断"
)
showLongToast
(
"对方已挂断"
)
writeAgoraLog
(
"通话接通后挂断:主叫离开频道"
)
//通话结束或挂断时,上传日志文件
//通话结束或挂断时,上传日志文件
uploadLog
()
uploadLog
()
if
(
null
!=
totalDisposable
)
{
if
(
null
!=
totalDisposable
)
{
...
@@ -214,27 +243,6 @@ class ConsultantAudioHomeActivity :
...
@@ -214,27 +243,6 @@ class ConsultantAudioHomeActivity :
}
}
/**
/**
* 重新加入频道回调
*/
override
fun
onRejoinChannelSuccess
(
channel
:
String
?,
uid
:
Int
,
elapsed
:
Int
)
{
super
.
onRejoinChannelSuccess
(
channel
,
uid
,
elapsed
)
LogUtil
.
e
(
"[agora]$uid 重新加入频道回调"
)
runOnUiThread
{
if
(!
isConnectSuccess
)
{
tv_toast
.
visibility
=
View
.
VISIBLE
tv_toast
.
text
=
"连接中..."
voiceManage
!!
.
getVoiceApi
().
setEnableSpeakerphone
(
false
)
//5s倒计时,5s后还是连接中,则直接关闭页面
connectingStatusWaitingTimeCount
()
}
}
}
/**
* 网络质量报告回调
* 网络质量报告回调
* 报告本地用户的网络质量。当你调用 enableLastmileTest 之后,该回调函数每 2 秒触发一次
* 报告本地用户的网络质量。当你调用 enableLastmileTest 之后,该回调函数每 2 秒触发一次
*/
*/
...
@@ -257,6 +265,7 @@ class ConsultantAudioHomeActivity :
...
@@ -257,6 +265,7 @@ class ConsultantAudioHomeActivity :
runOnUiThread
{
runOnUiThread
{
when
(
warn
)
{
when
(
warn
)
{
103
,
104
,
105
,
106
,
107
->
{
103
,
104
,
105
,
106
,
107
->
{
writeAgoraLog
(
"通话挂断:网络异常($warn)"
)
showLongToast
(
"当前网络较差,请更换网络!"
)
showLongToast
(
"当前网络较差,请更换网络!"
)
//通话结束或挂断时,上传日志文件
//通话结束或挂断时,上传日志文件
uploadLog
()
uploadLog
()
...
@@ -339,8 +348,6 @@ class ConsultantAudioHomeActivity :
...
@@ -339,8 +348,6 @@ class ConsultantAudioHomeActivity :
ConsultantAudioUtils
.
wakeUpAndUnlock
(
this
)
ConsultantAudioUtils
.
wakeUpAndUnlock
(
this
)
//页面传递数据初始化
//页面传递数据初始化
getParam
()
getParam
()
//设置信令的回调
setCallback
()
//初始化传感器
//初始化传感器
initSensorManager
()
initSensorManager
()
initUser
()
initUser
()
...
@@ -362,10 +369,20 @@ class ConsultantAudioHomeActivity :
...
@@ -362,10 +369,20 @@ class ConsultantAudioHomeActivity :
if
(
null
!=
intent
.
getStringExtra
(
PARAM
))
{
if
(
null
!=
intent
.
getStringExtra
(
PARAM
))
{
val
json
=
intent
.
getStringExtra
(
PARAM
)
val
json
=
intent
.
getStringExtra
(
PARAM
)
if
(!
TextUtils
.
isEmpty
(
json
))
{
if
(!
TextUtils
.
isEmpty
(
json
))
{
writeAgoraLog
(
json
)
writeAgoraLog
(
"收到邀请通话消息内容:$json"
)
mAudioMessageBean
=
Gson
().
fromJson
(
json
,
AudioMessageBean
::
class
.
java
)
mAudioMessageBean
=
Gson
().
fromJson
(
json
,
AudioMessageBean
::
class
.
java
)
YDLavManager
.
instances
.
login
(
ModularServiceManager
.
provide
(
IUserService
::
class
.
java
).
getUserInfo
()
?.
uid
)
if
(
YDLavManager
.
sdkStatus
!=
Constants
.
CONNECTION_STATE_CONNECTED
)
{
writeAgoraLog
(
"RMT状态:${YDLavManager.sdkStatus},重新登录RMT"
)
val
uid
=
ModularServiceManager
.
provide
(
IUserService
::
class
.
java
).
getUserInfo
()
?.
uid
YDLavManager
.
instances
.
login
(
uid
)
{
_isSuccess
,
_msg
->
writeAgoraLog
(
"登录RTM的uid=${uid}"
)
val
result
=
if
(
_isSuccess
)
"RMT登录成功"
else
"RMT登录失败:$_msg"
writeAgoraLog
(
result
)
}
}
}
}
}
else
{
}
else
{
close
(
RESULT_NOT_ANSWERED_CODE
,
"通话异常"
)
close
(
RESULT_NOT_ANSWERED_CODE
,
"通话异常"
)
...
@@ -373,69 +390,6 @@ class ConsultantAudioHomeActivity :
...
@@ -373,69 +390,6 @@ class ConsultantAudioHomeActivity :
}
}
}
}
private
fun
setCallback
()
{
/**
* RTC 回调 在[YDLavManager.setCallback]中注册使用
*/
// YDLRTMClient.instances.setCallListener(object : CallListener {
// override fun onCallRecivedByPeer(response: CallLocalResponse?) {
// //返回给主叫:被叫已收到呼叫邀请
// LogUtil.I("[agora]${response?.calleeId}已收到呼叫邀请,频道号${response?.ChannelId}")
// }
//
// override fun onCallAccepted(response: CallLocalResponse?, msg: String?) {
// //返回给主叫
// LogUtil.I("[agora]${response?.calleeId}已接受呼叫邀请")
// }
//
// override fun onCallRefused(response: CallLocalResponse?, msg: String?) {
// //返回给主叫
// LogUtil.I("[agora]${response?.calleeId}已拒绝呼叫邀请")
// }
//
// override fun onCallCanceled(response: CallLocalResponse?) {
// //返回给主叫
// LogUtil.I("[agora]主叫已取消呼叫邀请")
// }
//
// override fun onCallFailure(response: CallLocalResponse?, errorCode: Int) {
// //返回给主叫
// LogUtil.I("[agora]呼叫${response?.calleeId}用户失败:${response?.response}")
//
// }
//
// override fun onRemoteInvitationReceived(response: CallRemoteResponse?) {
// //返回给被叫
// LogUtil.I("[agora]收到来自${response?.callerId}的呼叫邀请")
// }
//
// override fun onRemoteInvitationAccepted(response: CallRemoteResponse?) {
// //返回给被叫
// LogUtil.I("[agora]接受来自${response?.callerId}的呼叫成功")
// }
//
// override fun onRemoteInvitationRefused(response: CallRemoteResponse?) {
// //返回给被叫
// LogUtil.I("[agora]已拒绝来自${response?.callerId}的呼叫")
// }
//
// override fun onRemoteInvitationCanceled(response: CallRemoteResponse?) {
// //返回给被叫
// LogUtil.I("[agora]主叫${response?.callerId}已取消呼叫邀请")
// }
//
// override fun onRemoteInvitationFailure(response: CallRemoteResponse?, errorCode: Int) {
// //返回给被叫
// LogUtil.I("[agora]来自主叫${response?.callerId}的呼叫邀请进程失败:${response?.response}")
// }
//
// override fun onOtherMsg(error: String?) {
// LogUtil.I("[agora]其它消息:${error}")
// }
// })
}
@SuppressLint
(
"InvalidWakeLockTag"
)
@SuppressLint
(
"InvalidWakeLockTag"
)
private
fun
initSensorManager
()
{
private
fun
initSensorManager
()
{
sensorManager
=
getSystemService
(
Context
.
SENSOR_SERVICE
)
as
SensorManager
?
sensorManager
=
getSystemService
(
Context
.
SENSOR_SERVICE
)
as
SensorManager
?
...
@@ -493,6 +447,7 @@ class ConsultantAudioHomeActivity :
...
@@ -493,6 +447,7 @@ class ConsultantAudioHomeActivity :
* //获取声网频道号
* //获取声网频道号
*/
*/
private
fun
getChannelToken
()
{
private
fun
getChannelToken
()
{
writeAgoraLog
(
"获取声网token"
)
//获取频道token
//获取频道token
mPresenter
.
getChannelToken
(
mAudioMessageBean
,
false
)
mPresenter
.
getChannelToken
(
mAudioMessageBean
,
false
)
}
}
...
@@ -506,6 +461,7 @@ class ConsultantAudioHomeActivity :
...
@@ -506,6 +461,7 @@ class ConsultantAudioHomeActivity :
return
return
}
}
this
.
channelToken
=
token
this
.
channelToken
=
token
writeAgoraLog
(
"返回的声网token=$channelToken"
)
if
(
needJoinChannel
)
{
if
(
needJoinChannel
)
{
//权限申请
//权限申请
requestPermission
()
requestPermission
()
...
@@ -622,11 +578,13 @@ class ConsultantAudioHomeActivity :
...
@@ -622,11 +578,13 @@ class ConsultantAudioHomeActivity :
private
fun
showStopService
()
{
private
fun
showStopService
()
{
if
(
status
==
STATUS_NOT_ANSWERED
)
{
if
(
status
==
STATUS_NOT_ANSWERED
)
{
writeAgoraLog
(
"通话未接通挂断:主动挂断"
)
//通话结束或挂断时,上传日志文件
//通话结束或挂断时,上传日志文件
uploadLog
()
uploadLog
()
//当未接听 直接挂断 要发送给老师一条消息
//当未接听 直接挂断 要发送给老师一条消息
close
(
RESULT_NOT_ANSWERED_CODE
,
"用户已挂断"
)
close
(
RESULT_NOT_ANSWERED_CODE
,
"用户已挂断"
)
}
else
if
(
status
==
STATUS_ANSWERED
)
{
}
else
if
(
status
==
STATUS_ANSWERED
)
{
writeAgoraLog
(
"通话接通后挂断:专家主动挂断"
)
//正常接听 挂断电话 需要重置信令管理类状态
//正常接听 挂断电话 需要重置信令管理类状态
close
(
RESULT_ANSWERED_CODE
,
""
)
close
(
RESULT_ANSWERED_CODE
,
""
)
}
}
...
@@ -842,6 +800,7 @@ class ConsultantAudioHomeActivity :
...
@@ -842,6 +800,7 @@ class ConsultantAudioHomeActivity :
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
({},
{},
{
.
subscribe
({},
{},
{
if
(!
isConnectSuccess
)
{
if
(!
isConnectSuccess
)
{
writeAgoraLog
(
"通话未接通挂断:连接中的状态超过5s自动挂断"
)
ToastUtil
.
toastShort
(
this
,
"用户已挂断"
)
ToastUtil
.
toastShort
(
this
,
"用户已挂断"
)
close
(
RESULT_NOT_ANSWERED_CODE
,
""
)
close
(
RESULT_NOT_ANSWERED_CODE
,
""
)
}
}
...
...
m-consultant/src/main/java/com/yidianling/consultant/ExpertSearchActivity.kt
View file @
d2e3abca
...
@@ -86,9 +86,6 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
...
@@ -86,9 +86,6 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
window
.
setSoftInputMode
(
WindowManager
.
LayoutParams
.
SOFT_INPUT_ADJUST_RESIZE
or
WindowManager
.
LayoutParams
.
SOFT_INPUT_STATE_HIDDEN
)
window
.
setSoftInputMode
(
WindowManager
.
LayoutParams
.
SOFT_INPUT_ADJUST_RESIZE
or
WindowManager
.
LayoutParams
.
SOFT_INPUT_STATE_HIDDEN
)
initViews
()
initViews
()
initData
(
intent
)
initData
(
intent
)
ActionCountUtils
.
count
(
"main_page|app_consult_list_page_visit|app_consult_list_page_visit"
)
}
}
override
fun
getStatusViewOptions
():
StatusBarOptions
{
override
fun
getStatusViewOptions
():
StatusBarOptions
{
...
@@ -174,8 +171,8 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
...
@@ -174,8 +171,8 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
private
var
headData
:
HeadData
?
=
null
//筛选数据
private
var
headData
:
HeadData
?
=
null
//筛选数据
private
var
isFromSplash
=
false
private
var
isFromSplash
=
false
private
val
props1
=
JSONObject
()
//筛选标题埋点参数
private
val
props1
=
JSONObject
()
//筛选标题埋点参数
private
var
fromPageType
:
Int
=
0
//从哪个页面跳转过来的
private
var
fromPageType
:
Int
=
1
//从哪个页面跳转过来的
private
val
fromPages
=
arrayOf
(
"首页
搜索"
,
"找专家
"
,
"在线专家"
)
private
val
fromPages
=
arrayOf
(
"首页
"
,
"搜索页面
"
,
"在线专家"
)
private
var
isRecommend
=
false
//埋点数据
private
var
isRecommend
=
false
//埋点数据
private
var
keyWord
:
String
?
=
null
//埋点数据
private
var
keyWord
:
String
?
=
null
//埋点数据
private
var
isDoSearch
:
Boolean
=
false
//埋点判断是否通过搜索进入埋点的
private
var
isDoSearch
:
Boolean
=
false
//埋点判断是否通过搜索进入埋点的
...
@@ -382,7 +379,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
...
@@ -382,7 +379,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
v_loading
.
setViewType
(
LogoLoadingView
.
TYPE_LOADING
,
null
)
v_loading
.
setViewType
(
LogoLoadingView
.
TYPE_LOADING
,
null
)
if
(
fromPageType
!=
-
1
)
{
if
(
fromPageType
!=
-
1
)
{
doctorAdapter
.
setEntrance
(
fromPages
[
fromPageType
])
doctorAdapter
.
setEntrance
(
fromPages
[
fromPageType
]
,
1
)
}
}
}
}
...
@@ -1456,7 +1453,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
...
@@ -1456,7 +1453,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
override
fun
onResume
()
{
override
fun
onResume
()
{
super
.
onResume
()
super
.
onResume
()
ActionCountUtils
.
count
(
ConsultBIConstants
.
Consult
Event
.
APP_CONSULT
_LIST_PAGE_VISIT
)
ActionCountUtils
.
count
(
ConsultBIConstants
.
Consult
SearchListEvent
.
APP_CONSULT_SEARCH
_LIST_PAGE_VISIT
)
}
}
...
...
m-consultant/src/main/java/com/yidianling/consultant/ExpertSearchFragment.kt
View file @
d2e3abca
...
@@ -26,6 +26,7 @@ import com.ydl.ydl_image.listener.YDLImageRecyclerOnScrollListener
...
@@ -26,6 +26,7 @@ import com.ydl.ydl_image.listener.YDLImageRecyclerOnScrollListener
import
com.ydl.ydl_image.manager.YDLImageCacheManager
import
com.ydl.ydl_image.manager.YDLImageCacheManager
import
com.ydl.ydlcommon.base.BaseMvpFragment
import
com.ydl.ydlcommon.base.BaseMvpFragment
import
com.ydl.ydlcommon.base.config.HttpConfig
import
com.ydl.ydlcommon.base.config.HttpConfig
import
com.ydl.ydlcommon.data.PlatformDataManager
import
com.ydl.ydlcommon.ui.LogoLoadingView
import
com.ydl.ydlcommon.ui.LogoLoadingView
import
com.ydl.ydlcommon.utils.BuryPointUtils
import
com.ydl.ydlcommon.utils.BuryPointUtils
import
com.ydl.ydlcommon.utils.DisplayUtils
import
com.ydl.ydlcommon.utils.DisplayUtils
...
@@ -57,8 +58,9 @@ import kotlinx.android.synthetic.main.consultant_layout_search_toolbar.*
...
@@ -57,8 +58,9 @@ import kotlinx.android.synthetic.main.consultant_layout_search_toolbar.*
import
org.json.JSONObject
import
org.json.JSONObject
import
java.util.concurrent.Executors
import
java.util.concurrent.Executors
class
ExpertSearchFragment
:
BaseMvpFragment
<
IExpertSearchView
,
ExpertSearchPresenter
>(),
View
.
OnClickListener
,
IExpertSearchView
,
class
ExpertSearchFragment
:
BaseMvpFragment
<
IExpertSearchView
,
ExpertSearchPresenter
>(),
OnCategoriesSelectedListener
,
OnSortItemSelectedListener
,
OnFilterConfirmListener
,
View
.
OnClickListener
,
IExpertSearchView
,
OnCategoriesSelectedListener
,
OnSortItemSelectedListener
,
OnFilterConfirmListener
,
SwipeRefreshLayout
.
OnRefreshListener
{
SwipeRefreshLayout
.
OnRefreshListener
{
...
@@ -68,13 +70,18 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -68,13 +70,18 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
override
fun
initDataAndEvent
()
{
override
fun
initDataAndEvent
()
{
var
statusBarHeight
=
StatusBarUtils
.
getStatusBarHeight
(
context
);
var
statusBarHeight
=
StatusBarUtils
.
getStatusBarHeight
(
context
);
rootView
.
setPadding
(
0
,
statusBarHeight
,
0
,
0
)
rootView
.
setPadding
(
0
,
statusBarHeight
,
0
,
0
)
btn_back
.
visibility
=
View
.
GONE
btn_back
.
visibility
=
View
.
GONE
title_layout
.
setPadding
(
DisplayUtils
.
dp2px
(
context
,
15
),
0
,
0
,
0
)
title_layout
.
setPadding
(
DisplayUtils
.
dp2px
(
context
,
15
),
0
,
0
,
0
)
initViews
()
initViews
()
initData
()
initData
()
ActionCountUtils
.
count
(
"main_page|app_consult_list_page_visit|app_consult_list_page_visit"
)
val
ffrom
=
PlatformDataManager
.
getRam
().
getChannelName
()
if
(!
TextUtils
.
isEmpty
(
ffrom
)
&&
ffrom
.
endsWith
(
"huawei"
))
{
rl_hot_fix_for_huawei
.
visibility
=
View
.
GONE
}
else
{
rl_hot_fix_for_huawei
.
visibility
=
View
.
VISIBLE
}
}
}
override
fun
initDataAndEventLazy
()
{
override
fun
initDataAndEventLazy
()
{
...
@@ -93,7 +100,13 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -93,7 +100,13 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
}
}
}
}
override
fun
showImage
(
url
:
String
?,
imgView
:
ImageView
,
width
:
Int
,
heigh
:
Int
,
ops
:
SimpleImageOpConfiger
)
{
override
fun
showImage
(
url
:
String
?,
imgView
:
ImageView
,
width
:
Int
,
heigh
:
Int
,
ops
:
SimpleImageOpConfiger
)
{
if
(
isAdded
)
{
if
(
isAdded
)
{
YDLImageCacheManager
.
showImage
(
activity
,
url
,
imgView
,
width
,
heigh
,
ops
)
YDLImageCacheManager
.
showImage
(
activity
,
url
,
imgView
,
width
,
heigh
,
ops
)
}
}
...
@@ -134,7 +147,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -134,7 +147,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
private
var
headData
:
HeadData
?
=
null
//筛选数据
private
var
headData
:
HeadData
?
=
null
//筛选数据
private
val
props1
=
JSONObject
()
//筛选标题埋点参数
private
val
props1
=
JSONObject
()
//筛选标题埋点参数
private
var
fromPageType
:
Int
=
0
//从哪个页面跳转过来的
private
var
fromPageType
:
Int
=
0
//从哪个页面跳转过来的
private
val
fromPages
=
arrayOf
(
"首页
搜索"
,
"找专家
"
,
"在线专家"
)
private
val
fromPages
=
arrayOf
(
"首页
"
,
"搜索页面
"
,
"在线专家"
)
private
var
isRecommend
=
false
//埋点数据
private
var
isRecommend
=
false
//埋点数据
private
var
keyWord
:
String
?
=
null
//埋点数据
private
var
keyWord
:
String
?
=
null
//埋点数据
private
var
isDoSearch
:
Boolean
=
false
//埋点判断是否通过搜索进入埋点的
private
var
isDoSearch
:
Boolean
=
false
//埋点判断是否通过搜索进入埋点的
...
@@ -154,12 +167,18 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -154,12 +167,18 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
btn_call
.
setOnClickListener
(
this
)
btn_call
.
setOnClickListener
(
this
)
tv_guide
.
setOnClickListener
(
this
)
tv_guide
.
setOnClickListener
(
this
)
rl_search
.
setOnClickListener
(
this
)
rl_search
.
setOnClickListener
(
this
)
srlContainer
.
setColorSchemeColors
(
ContextCompat
.
getColor
(
activity
,
R
.
color
.
consultant_main_theme
))
srlContainer
.
setColorSchemeColors
(
ContextCompat
.
getColor
(
activity
,
R
.
color
.
consultant_main_theme
)
)
srlContainer
.
setProgressViewOffset
(
false
,
0
,
200
)
srlContainer
.
setProgressViewOffset
(
false
,
0
,
200
)
srlContainer
.
setOnRefreshListener
(
this
)
srlContainer
.
setOnRefreshListener
(
this
)
initNetLossView
()
initNetLossView
()
recommendListView
.
addViewPagerScrollStateListener
(
object
:
RecommendListView
.
ViewPagerScrollStateCallback
{
recommendListView
.
addViewPagerScrollStateListener
(
object
:
RecommendListView
.
ViewPagerScrollStateCallback
{
override
fun
viewPagerScroll
(
isScrolling
:
Boolean
)
{
override
fun
viewPagerScroll
(
isScrolling
:
Boolean
)
{
//如果viewpager正在滚动,则禁止下拉刷新
//如果viewpager正在滚动,则禁止下拉刷新
srlContainer
.
isEnabled
=
!
isScrolling
srlContainer
.
isEnabled
=
!
isScrolling
...
@@ -212,7 +231,9 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -212,7 +231,9 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
var
alpha
=
PropertyValuesHolder
.
ofFloat
(
"alpha"
,
1f
,
0f
)
var
alpha
=
PropertyValuesHolder
.
ofFloat
(
"alpha"
,
1f
,
0f
)
var
scaleX
=
PropertyValuesHolder
.
ofFloat
(
"scaleX"
,
1f
,
0f
)
var
scaleX
=
PropertyValuesHolder
.
ofFloat
(
"scaleX"
,
1f
,
0f
)
var
scaleY
=
PropertyValuesHolder
.
ofFloat
(
"scaleY"
,
1f
,
0f
)
var
scaleY
=
PropertyValuesHolder
.
ofFloat
(
"scaleY"
,
1f
,
0f
)
var
animator
=
ObjectAnimator
.
ofPropertyValuesHolder
(
image_scroll_top
,
alpha
,
scaleX
,
scaleY
).
setDuration
(
200
)
var
animator
=
ObjectAnimator
.
ofPropertyValuesHolder
(
image_scroll_top
,
alpha
,
scaleX
,
scaleY
)
.
setDuration
(
200
)
animator
.
addListener
(
object
:
AnimatorListenerAdapter
()
{
animator
.
addListener
(
object
:
AnimatorListenerAdapter
()
{
override
fun
onAnimationEnd
(
animation
:
Animator
)
{
override
fun
onAnimationEnd
(
animation
:
Animator
)
{
image_scroll_top
.
visibility
=
View
.
GONE
image_scroll_top
.
visibility
=
View
.
GONE
...
@@ -229,7 +250,9 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -229,7 +250,9 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
var
alpha
=
PropertyValuesHolder
.
ofFloat
(
"alpha"
,
0f
,
1f
)
var
alpha
=
PropertyValuesHolder
.
ofFloat
(
"alpha"
,
0f
,
1f
)
var
scaleX
=
PropertyValuesHolder
.
ofFloat
(
"scaleX"
,
0f
,
1f
)
var
scaleX
=
PropertyValuesHolder
.
ofFloat
(
"scaleX"
,
0f
,
1f
)
var
scaleY
=
PropertyValuesHolder
.
ofFloat
(
"scaleY"
,
0f
,
1f
)
var
scaleY
=
PropertyValuesHolder
.
ofFloat
(
"scaleY"
,
0f
,
1f
)
var
animator
=
ObjectAnimator
.
ofPropertyValuesHolder
(
image_scroll_top
,
alpha
,
scaleX
,
scaleY
).
setDuration
(
200
)
var
animator
=
ObjectAnimator
.
ofPropertyValuesHolder
(
image_scroll_top
,
alpha
,
scaleX
,
scaleY
)
.
setDuration
(
200
)
animator
.
addListener
(
object
:
AnimatorListenerAdapter
()
{
animator
.
addListener
(
object
:
AnimatorListenerAdapter
()
{
override
fun
onAnimationEnd
(
animation
:
Animator
)
{
override
fun
onAnimationEnd
(
animation
:
Animator
)
{
image_scroll_top
.
visibility
=
View
.
VISIBLE
image_scroll_top
.
visibility
=
View
.
VISIBLE
...
@@ -246,7 +269,9 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -246,7 +269,9 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
var
alpha
=
PropertyValuesHolder
.
ofFloat
(
"alpha"
,
1f
,
0f
)
var
alpha
=
PropertyValuesHolder
.
ofFloat
(
"alpha"
,
1f
,
0f
)
var
scaleX
=
PropertyValuesHolder
.
ofFloat
(
"scaleX"
,
1f
,
0f
)
var
scaleX
=
PropertyValuesHolder
.
ofFloat
(
"scaleX"
,
1f
,
0f
)
var
scaleY
=
PropertyValuesHolder
.
ofFloat
(
"scaleY"
,
1f
,
0f
)
var
scaleY
=
PropertyValuesHolder
.
ofFloat
(
"scaleY"
,
1f
,
0f
)
var
animator
=
ObjectAnimator
.
ofPropertyValuesHolder
(
image_scroll_top
,
alpha
,
scaleX
,
scaleY
).
setDuration
(
200
)
var
animator
=
ObjectAnimator
.
ofPropertyValuesHolder
(
image_scroll_top
,
alpha
,
scaleX
,
scaleY
)
.
setDuration
(
200
)
animator
.
addListener
(
object
:
AnimatorListenerAdapter
()
{
animator
.
addListener
(
object
:
AnimatorListenerAdapter
()
{
override
fun
onAnimationEnd
(
animation
:
Animator
)
{
override
fun
onAnimationEnd
(
animation
:
Animator
)
{
image_scroll_top
.
visibility
=
View
.
GONE
image_scroll_top
.
visibility
=
View
.
GONE
...
@@ -284,7 +309,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -284,7 +309,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
super
.
setUserVisibleHint
(
isVisibleToUser
)
super
.
setUserVisibleHint
(
isVisibleToUser
)
if
(
isVisibleToUser
&&
isResumed
&&
userVisibleHint
)
{
if
(
isVisibleToUser
&&
isResumed
&&
userVisibleHint
)
{
showConsultAssistantDialog
()
showConsultAssistantDialog
()
}
else
{
}
else
{
hideConsultAssistantDialog
()
hideConsultAssistantDialog
()
}
}
if
(
isVisibleToUser
&&
isResumed
)
{
if
(
isVisibleToUser
&&
isResumed
)
{
...
@@ -302,12 +327,12 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -302,12 +327,12 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
}
}
private
fun
initNetLossView
()
{
private
fun
initNetLossView
()
{
v_loading
.
setListener
(
object
:
LogoLoadingView
.
LogoLoadingListener
{
v_loading
.
setListener
(
object
:
LogoLoadingView
.
LogoLoadingListener
{
override
fun
onDataResetClick
()
{
override
fun
onDataResetClick
()
{
rvExperts
.
visibility
=
View
.
GONE
rvExperts
.
visibility
=
View
.
GONE
v_loading
.
visibility
=
View
.
VISIBLE
v_loading
.
visibility
=
View
.
VISIBLE
ll_network_error
.
visibility
=
View
.
GONE
ll_network_error
.
visibility
=
View
.
GONE
v_loading
.
setViewType
(
LogoLoadingView
.
TYPE_LOADING
,
null
)
v_loading
.
setViewType
(
LogoLoadingView
.
TYPE_LOADING
,
null
)
refresh
(
false
)
refresh
(
false
)
}
}
...
@@ -334,11 +359,11 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -334,11 +359,11 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
getPresenter
().
localData
(
initShowType
)
getPresenter
().
localData
(
initShowType
)
//refresh(false)
//refresh(false)
v_loading
.
visibility
=
View
.
VISIBLE
v_loading
.
visibility
=
View
.
VISIBLE
v_loading
.
setViewType
(
LogoLoadingView
.
TYPE_LOADING
,
null
)
v_loading
.
setViewType
(
LogoLoadingView
.
TYPE_LOADING
,
null
)
if
(
fromPageType
!=
-
1
)
{
if
(
fromPageType
!=
-
1
)
{
doctorAdapter
.
setEntrance
(
fromPages
[
fromPageType
])
doctorAdapter
.
setEntrance
(
fromPages
[
fromPageType
]
,
0
)
}
}
}
}
...
@@ -350,9 +375,9 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -350,9 +375,9 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
StatusBarUtils
.
setTransparentForImageView
(
activity
,
null
)
StatusBarUtils
.
setTransparentForImageView
(
activity
,
null
)
val
statusBarHeight
=
StatusBarUtils
.
getStatusBarHeight
(
context
)
val
statusBarHeight
=
StatusBarUtils
.
getStatusBarHeight
(
context
)
val
lp1
=
title_layout
.
layoutParams
as
LinearLayout
.
LayoutParams
val
lp1
=
title_layout
.
layoutParams
as
LinearLayout
.
LayoutParams
lp1
.
height
=
(
RxImageTool
.
dp2px
(
48f
)
+
statusBarHeight
)
lp1
.
height
=
(
RxImageTool
.
dp2px
(
48f
)
+
statusBarHeight
)
title_layout
.
setPadding
(
0
,
statusBarHeight
,
0
,
0
)
title_layout
.
setPadding
(
0
,
statusBarHeight
,
0
,
0
)
}
}
}
}
...
@@ -368,10 +393,10 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -368,10 +393,10 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
allFilter
.
categories
.
add
(
cate
)
allFilter
.
categories
.
add
(
cate
)
if
(
allFilter
.
categories
.
size
==
1
&&
!
"全部"
.
equals
(
allFilter
.
categories
[
0
].
cateName
))
{
if
(
allFilter
.
categories
.
size
==
1
&&
!
"全部"
.
equals
(
allFilter
.
categories
[
0
].
cateName
))
{
//显示选中标题
//显示选中标题
tvSubject
.
text
=
allFilter
.
categories
[
0
].
cateName
tvSubject
.
text
=
allFilter
.
categories
[
0
].
cateName
}
else
{
}
else
{
//显示主标题
//显示主标题
tvSubject
.
text
=
"主题"
tvSubject
.
text
=
"主题"
}
}
updateFilterTextViewStatus
(
tvSubject
,
FILTER_STATUS_FILTERED
)
updateFilterTextViewStatus
(
tvSubject
,
FILTER_STATUS_FILTERED
)
break
break
...
@@ -464,10 +489,10 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -464,10 +489,10 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
}
}
if
(
allFilter
.
categories
.
size
==
1
&&
"全部"
!=
allFilter
.
categories
[
0
].
cateName
)
{
if
(
allFilter
.
categories
.
size
==
1
&&
"全部"
!=
allFilter
.
categories
[
0
].
cateName
)
{
//显示选中标题
//显示选中标题
tvSubject
.
text
=
allFilter
.
categories
[
0
].
cateName
tvSubject
.
text
=
allFilter
.
categories
[
0
].
cateName
}
else
{
}
else
{
//显示主标题
//显示主标题
tvSubject
.
text
=
"主题"
tvSubject
.
text
=
"主题"
}
}
}
}
}
}
...
@@ -479,7 +504,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -479,7 +504,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
if
(
hasSelectedArea
)
{
if
(
hasSelectedArea
)
{
for
((
index
,
bean
)
in
headData
!!
.
highlighter
.
withIndex
())
{
for
((
index
,
bean
)
in
headData
!!
.
highlighter
.
withIndex
())
{
if
(
bean
.
type
==
"2"
||
bean
.
type
==
"8"
)
{
if
(
bean
.
type
==
"2"
||
bean
.
type
==
"8"
)
{
var
textview
=
lin_filter2
.
getChildAt
(
index
)
as
TextView
var
textview
=
lin_filter2
.
getChildAt
(
index
)
as
TextView
textview
.
isSelected
=
false
textview
.
isSelected
=
false
textview
.
paint
.
isFakeBoldText
=
false
textview
.
paint
.
isFakeBoldText
=
false
}
}
...
@@ -495,16 +520,16 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -495,16 +520,16 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
}
}
allFilter
.
region
=
bean
allFilter
.
region
=
bean
if
(
allFilter
.
region
.
value
?.
length
?:
0
>
4
)
{
if
(
allFilter
.
region
.
value
?.
length
?:
0
>
4
)
{
tvArea
.
text
=
allFilter
.
region
.
value
?.
substring
(
0
,
3
)
+
"..."
tvArea
.
text
=
allFilter
.
region
.
value
?.
substring
(
0
,
3
)
+
"..."
}
else
{
}
else
{
tvArea
.
text
=
allFilter
.
region
.
value
tvArea
.
text
=
allFilter
.
region
.
value
}
}
updateFilterTextViewStatus
(
tvArea
,
FILTER_STATUS_FILTERED
)
updateFilterTextViewStatus
(
tvArea
,
FILTER_STATUS_FILTERED
)
hasSelectedArea
=
true
hasSelectedArea
=
true
}
else
{
}
else
{
allFilter
.
region
=
RegionItem
()
allFilter
.
region
=
RegionItem
()
tvArea
.
text
=
"地区"
tvArea
.
text
=
"地区"
updateFilterTextViewStatus
(
tvArea
,
FILTER_STATUS_NORMAL
)
updateFilterTextViewStatus
(
tvArea
,
FILTER_STATUS_NORMAL
)
hasSelectedArea
=
false
hasSelectedArea
=
false
...
@@ -521,7 +546,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -521,7 +546,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
if
(
hasSelectedSort
)
{
if
(
hasSelectedSort
)
{
for
((
index
,
bean
)
in
headData
!!
.
highlighter
.
withIndex
())
{
for
((
index
,
bean
)
in
headData
!!
.
highlighter
.
withIndex
())
{
if
(
bean
.
type
==
"3"
)
{
if
(
bean
.
type
==
"3"
)
{
var
textview
=
lin_filter2
.
getChildAt
(
index
)
as
TextView
var
textview
=
lin_filter2
.
getChildAt
(
index
)
as
TextView
textview
.
isSelected
=
false
textview
.
isSelected
=
false
textview
.
paint
.
isFakeBoldText
=
false
textview
.
paint
.
isFakeBoldText
=
false
}
}
...
@@ -540,9 +565,10 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -540,9 +565,10 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
}
}
}
}
when
{
when
{
allFilter
.
reorder
.
value
.
equals
(
"综合排序"
)
->
tvSort
.
text
=
"排序"
allFilter
.
reorder
.
value
.
equals
(
"综合排序"
)
->
tvSort
.
text
=
"排序"
allFilter
.
reorder
.
value
?.
length
?:
0
>
4
->
tvSort
.
text
=
allFilter
.
reorder
.
value
?.
substring
(
0
,
3
)
+
"..."
allFilter
.
reorder
.
value
?.
length
?:
0
>
4
->
tvSort
.
text
=
else
->
tvSort
.
text
=
allFilter
.
reorder
.
value
allFilter
.
reorder
.
value
?.
substring
(
0
,
3
)
+
"..."
else
->
tvSort
.
text
=
allFilter
.
reorder
.
value
}
}
}
}
}
}
...
@@ -635,7 +661,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -635,7 +661,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
if
(
hasSelectedArea
)
{
if
(
hasSelectedArea
)
{
for
((
index
,
bean
)
in
headData
!!
.
highlighter
.
withIndex
())
{
for
((
index
,
bean
)
in
headData
!!
.
highlighter
.
withIndex
())
{
if
(
bean
.
type
==
"2"
||
bean
.
type
==
"8"
)
{
if
(
bean
.
type
==
"2"
||
bean
.
type
==
"8"
)
{
var
textview
=
lin_filter2
.
getChildAt
(
index
)
as
TextView
var
textview
=
lin_filter2
.
getChildAt
(
index
)
as
TextView
textview
.
isSelected
=
false
textview
.
isSelected
=
false
textview
.
paint
.
isFakeBoldText
=
false
textview
.
paint
.
isFakeBoldText
=
false
}
}
...
@@ -645,16 +671,20 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -645,16 +671,20 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
bean
.
key
=
hotData
.
id
bean
.
key
=
hotData
.
id
bean
.
value
=
hotData
.
value
bean
.
value
=
hotData
.
value
for
(
headBean
in
headData
!!
.
region
)
{
for
(
headBean
in
headData
!!
.
region
)
{
if
(
TextUtils
.
equals
(
headBean
.
key
!!
.
substring
(
0
,
2
),
bean
.
key
!!
.
substring
(
0
,
2
)))
{
if
(
TextUtils
.
equals
(
headBean
.
key
!!
.
substring
(
0
,
2
),
bean
.
key
!!
.
substring
(
0
,
2
)
)
)
{
allFilter
.
region
=
headBean
allFilter
.
region
=
headBean
break
break
}
}
}
}
allFilter
.
sub
=
bean
allFilter
.
sub
=
bean
if
(
allFilter
.
sub
.
value
?.
length
?:
0
>
4
)
{
if
(
allFilter
.
sub
.
value
?.
length
?:
0
>
4
)
{
tvArea
.
text
=
allFilter
.
sub
.
value
?.
substring
(
0
,
3
)
+
"..."
tvArea
.
text
=
allFilter
.
sub
.
value
?.
substring
(
0
,
3
)
+
"..."
}
else
{
}
else
{
tvArea
.
text
=
allFilter
.
sub
.
value
tvArea
.
text
=
allFilter
.
sub
.
value
}
}
updateFilterTextViewStatus
(
tvArea
,
FILTER_STATUS_FILTERED
)
updateFilterTextViewStatus
(
tvArea
,
FILTER_STATUS_FILTERED
)
...
@@ -663,7 +693,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -663,7 +693,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
allFilter
.
region
=
RegionItem
()
allFilter
.
region
=
RegionItem
()
allFilter
.
sub
=
SubItem
(
"不限"
,
null
)
allFilter
.
sub
=
SubItem
(
"不限"
,
null
)
tvArea
.
text
=
"地区"
tvArea
.
text
=
"地区"
updateFilterTextViewStatus
(
tvArea
,
FILTER_STATUS_NORMAL
)
updateFilterTextViewStatus
(
tvArea
,
FILTER_STATUS_NORMAL
)
hasSelectedArea
=
false
hasSelectedArea
=
false
...
@@ -679,14 +709,14 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -679,14 +709,14 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
if
(
lin_filter2
.
childCount
>
0
)
{
if
(
lin_filter2
.
childCount
>
0
)
{
//清空选中
//清空选中
for
(
i
in
0
.
until
(
lin_filter2
.
childCount
))
{
for
(
i
in
0
.
until
(
lin_filter2
.
childCount
))
{
val
textView
=
lin_filter2
.
getChildAt
(
i
)
as
TextView
val
textView
=
lin_filter2
.
getChildAt
(
i
)
as
TextView
textView
.
isSelected
=
false
textView
.
isSelected
=
false
textView
.
paint
.
isFakeBoldText
=
false
textView
.
paint
.
isFakeBoldText
=
false
}
}
//重置选中状态
//重置选中状态
for
((
index
,
other
)
in
otherdata
.
withIndex
())
{
for
((
index
,
other
)
in
otherdata
.
withIndex
())
{
for
(
i
in
0
until
lin_filter2
.
childCount
)
{
for
(
i
in
0
until
lin_filter2
.
childCount
)
{
val
textView
=
lin_filter2
.
getChildAt
(
i
)
as
TextView
val
textView
=
lin_filter2
.
getChildAt
(
i
)
as
TextView
if
(
textView
.
text
==
other
.
value
)
{
if
(
textView
.
text
==
other
.
value
)
{
textView
.
isSelected
=
true
textView
.
isSelected
=
true
textView
.
paint
.
isFakeBoldText
=
true
textView
.
paint
.
isFakeBoldText
=
true
...
@@ -697,7 +727,11 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -697,7 +727,11 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
}
}
//服务列表数据获取到后的回调
//服务列表数据获取到后的回调
override
fun
onServiceListFetched
(
data
:
MutableList
<
DoctorServiceItem
>,
page
:
Int
,
totalPage
:
Int
)
{
override
fun
onServiceListFetched
(
data
:
MutableList
<
DoctorServiceItem
>,
page
:
Int
,
totalPage
:
Int
)
{
LogUtil
.
d
(
"onServiceListFetched"
)
LogUtil
.
d
(
"onServiceListFetched"
)
// if (rvExperts.adapter != serviceAdapter) {
// if (rvExperts.adapter != serviceAdapter) {
// rvExperts.adapter = serviceAdapter
// rvExperts.adapter = serviceAdapter
...
@@ -726,18 +760,22 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -726,18 +760,22 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
isRecommend
=
false
isRecommend
=
false
isDoSearch
=
false
isDoSearch
=
false
v_loading
.
visibility
=
View
.
GONE
v_loading
.
visibility
=
View
.
GONE
ll_network_error
.
visibility
=
View
.
GONE
ll_network_error
.
visibility
=
View
.
GONE
rvExperts
.
visibility
=
View
.
VISIBLE
rvExperts
.
visibility
=
View
.
VISIBLE
srlContainer
.
isRefreshing
=
false
srlContainer
.
isRefreshing
=
false
}
}
//专家列表数据获取到后的回调
//专家列表数据获取到后的回调
override
fun
onDoctorListFetched
(
data
:
MutableList
<
DoctorServiceItem
>,
page
:
Int
,
totalPage
:
Int
)
{
override
fun
onDoctorListFetched
(
data
:
MutableList
<
DoctorServiceItem
>,
page
:
Int
,
totalPage
:
Int
)
{
LogUtil
.
d
(
"onDoctorListFetched"
)
LogUtil
.
d
(
"onDoctorListFetched"
)
if
(
rvExperts
.
adapter
!=
doctorAdapter
)
{
if
(
rvExperts
.
adapter
!=
doctorAdapter
)
{
rvExperts
.
adapter
=
doctorAdapter
rvExperts
.
adapter
=
doctorAdapter
}
}
LogUtil
.
d
(
"data size "
+
data
.
size
)
LogUtil
.
d
(
"data size "
+
data
.
size
)
...
@@ -764,10 +802,10 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -764,10 +802,10 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
isDoSearch
=
false
isDoSearch
=
false
isRecommend
=
false
isRecommend
=
false
v_loading
.
visibility
=
View
.
GONE
v_loading
.
visibility
=
View
.
GONE
ll_network_error
.
visibility
=
View
.
GONE
ll_network_error
.
visibility
=
View
.
GONE
rvExperts
.
visibility
=
View
.
VISIBLE
rvExperts
.
visibility
=
View
.
VISIBLE
srlContainer
.
isRefreshing
=
false
srlContainer
.
isRefreshing
=
false
}
}
...
@@ -776,27 +814,30 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -776,27 +814,30 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
isRecommend
=
false
isRecommend
=
false
if
(
curPage
==
1
)
{
if
(
curPage
==
1
)
{
v_loading
.
setViewType
(
LogoLoadingView
.
TYPE_NET_LOSS
,
getString
(
R
.
string
.
consultant_reload_hint
))
v_loading
.
setViewType
(
v_loading
.
visibility
=
View
.
VISIBLE
LogoLoadingView
.
TYPE_NET_LOSS
,
getString
(
R
.
string
.
consultant_reload_hint
)
)
v_loading
.
visibility
=
View
.
VISIBLE
ll_network_error
.
visibility
=
View
.
GONE
ll_network_error
.
visibility
=
View
.
GONE
}
else
{
}
else
{
ToastHelper
.
show
(
"网络不给力"
)
ToastHelper
.
show
(
"网络不给力"
)
}
}
srlContainer
.
isRefreshing
=
false
srlContainer
.
isRefreshing
=
false
}
}
override
fun
fetchListEmpty
(
msg
:
String
?)
{
override
fun
fetchListEmpty
(
msg
:
String
?)
{
isDoSearch
=
false
isDoSearch
=
false
isRecommend
=
false
isRecommend
=
false
tv_reload
.
visibility
=
View
.
GONE
tv_reload
.
visibility
=
View
.
GONE
tv_reload_hint
.
text
=
msg
tv_reload_hint
.
text
=
msg
ll_network_error
.
visibility
=
View
.
VISIBLE
ll_network_error
.
visibility
=
View
.
VISIBLE
iv_exception
.
setImageResource
(
R
.
drawable
.
platform_ico_img_zixun_empty
)
iv_exception
.
setImageResource
(
R
.
drawable
.
platform_ico_img_zixun_empty
)
rvExperts
.
visibility
=
View
.
GONE
rvExperts
.
visibility
=
View
.
GONE
srlContainer
.
isRefreshing
=
false
srlContainer
.
isRefreshing
=
false
}
}
override
fun
fetchFailed
(
msg
:
String
?)
{
override
fun
fetchFailed
(
msg
:
String
?)
{
...
@@ -805,17 +846,20 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -805,17 +846,20 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
if
(
msg
!=
null
)
{
if
(
msg
!=
null
)
{
ToastUtil
.
toastShort
(
msg
)
ToastUtil
.
toastShort
(
msg
)
}
}
v_loading
.
setViewType
(
LogoLoadingView
.
TYPE_NET_LOSS
,
getString
(
R
.
string
.
consultant_reload_hint
))
v_loading
.
setViewType
(
v_loading
.
visibility
=
View
.
VISIBLE
LogoLoadingView
.
TYPE_NET_LOSS
,
getString
(
R
.
string
.
consultant_reload_hint
)
)
v_loading
.
visibility
=
View
.
VISIBLE
ll_network_error
.
visibility
=
View
.
GONE
ll_network_error
.
visibility
=
View
.
GONE
rvExperts
.
visibility
=
View
.
GONE
rvExperts
.
visibility
=
View
.
GONE
appbar_layout
.
setExpanded
(
false
)
appbar_layout
.
setExpanded
(
false
)
}
}
override
fun
showRefreshLayout
()
{
override
fun
showRefreshLayout
()
{
srlContainer
.
isRefreshing
=
true
srlContainer
.
isRefreshing
=
true
}
}
...
@@ -827,8 +871,8 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -827,8 +871,8 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
R
.
id
.
tvSubject
->
{
R
.
id
.
tvSubject
->
{
props1
.
put
(
"filtrate_first"
,
"主题"
)
props1
.
put
(
"filtrate_first"
,
"主题"
)
hideSoftInput
()
hideSoftInput
()
appbar_layout
.
setExpanded
(
false
)
appbar_layout
.
setExpanded
(
false
)
appbar_layout
.
postDelayed
({
appbar_layout
.
postDelayed
({
showSubjectPopupWindow
()
showSubjectPopupWindow
()
},
300
);
},
300
);
...
@@ -836,8 +880,8 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -836,8 +880,8 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
R
.
id
.
tvArea
->
{
R
.
id
.
tvArea
->
{
props1
.
put
(
"filtrate_first"
,
"地区"
)
props1
.
put
(
"filtrate_first"
,
"地区"
)
hideSoftInput
()
hideSoftInput
()
appbar_layout
.
setExpanded
(
false
)
appbar_layout
.
setExpanded
(
false
)
appbar_layout
.
postDelayed
({
appbar_layout
.
postDelayed
({
showAreaPopupWindow
()
showAreaPopupWindow
()
},
300
);
},
300
);
...
@@ -845,8 +889,8 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -845,8 +889,8 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
R
.
id
.
tvSort
->
{
R
.
id
.
tvSort
->
{
props1
.
put
(
"filtrate_first"
,
"排序"
)
props1
.
put
(
"filtrate_first"
,
"排序"
)
hideSoftInput
()
hideSoftInput
()
appbar_layout
.
setExpanded
(
false
)
appbar_layout
.
setExpanded
(
false
)
appbar_layout
.
postDelayed
({
appbar_layout
.
postDelayed
({
showSortPopupWindow
()
showSortPopupWindow
()
},
300
);
},
300
);
...
@@ -854,8 +898,8 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -854,8 +898,8 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
R
.
id
.
tvFilter
->
{
R
.
id
.
tvFilter
->
{
props1
.
put
(
"filtrate_first"
,
"筛选"
)
props1
.
put
(
"filtrate_first"
,
"筛选"
)
hideSoftInput
()
hideSoftInput
()
appbar_layout
.
setExpanded
(
false
)
appbar_layout
.
setExpanded
(
false
)
appbar_layout
.
postDelayed
({
appbar_layout
.
postDelayed
({
showFilterPopupWindow
()
showFilterPopupWindow
()
},
300
);
},
300
);
...
@@ -863,7 +907,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -863,7 +907,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
R
.
id
.
tv_guide
->
{
R
.
id
.
tv_guide
->
{
ActionCountUtils
.
count
(
ConsultBIConstants
.
ConsultEvent
.
APP_CONSULT_LIST_CONSULT_GUIDE_CLICK
)
ActionCountUtils
.
count
(
ConsultBIConstants
.
ConsultEvent
.
APP_CONSULT_LIST_CONSULT_GUIDE_CLICK
)
val
h5param
=
H5Params
(
HttpConfig
.
H5_URL
+
"help/consultation/"
,
"咨询指南"
)
val
h5param
=
H5Params
(
HttpConfig
.
H5_URL
+
"help/consultation/"
,
"咨询指南"
)
h5param
.
isShowMenu
=
true
h5param
.
isShowMenu
=
true
NewH5Activity
.
start
(
context
,
h5param
)
NewH5Activity
.
start
(
context
,
h5param
)
}
}
...
@@ -874,19 +918,19 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -874,19 +918,19 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
}
}
R
.
id
.
rl_search
->
{
R
.
id
.
rl_search
->
{
ARouter
.
getInstance
()
ARouter
.
getInstance
()
.
build
(
"/consult/hot_search"
)
.
build
(
"/consult/hot_search"
)
.
withString
(
HOT_SEARCH_DOCTOR_NAME
,
tv_search_content
.
text
.
toString
())
.
withString
(
HOT_SEARCH_DOCTOR_NAME
,
tv_search_content
.
text
.
toString
())
.
navigation
()
.
navigation
()
}
}
}
}
}
}
private
fun
scrollToTop
()
{
private
fun
scrollToTop
()
{
if
((
rvExperts
.
layoutManager
as
LinearLayoutManager
).
findFirstVisibleItemPosition
()
>
10
)
{
if
((
rvExperts
.
layoutManager
as
LinearLayoutManager
).
findFirstVisibleItemPosition
()
>
10
)
{
rvExperts
.
scrollToPosition
(
10
)
rvExperts
.
scrollToPosition
(
10
)
rvExperts
.
smoothScrollToPosition
(
0
)
rvExperts
.
smoothScrollToPosition
(
0
)
}
else
{
}
else
{
rvExperts
.
smoothScrollToPosition
(
0
)
rvExperts
.
smoothScrollToPosition
(
0
)
}
}
}
}
...
@@ -913,8 +957,11 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -913,8 +957,11 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
val
filterPopupWindow
=
FilterPopupWindow
(
context
,
headData
?.
filters
!!
,
tempFilter
)
val
filterPopupWindow
=
FilterPopupWindow
(
context
,
headData
?.
filters
!!
,
tempFilter
)
filterPopupWindow
.
setOnDismissListener
{
filterPopupWindow
.
setOnDismissListener
{
// viewDim.visibility = View.INVISIBLE
// viewDim.visibility = View.INVISIBLE
viewDim_filter
.
visibility
=
View
.
GONE
viewDim_filter
.
visibility
=
View
.
GONE
if
(
allFilter
.
others
.
size
+
allFilter
.
enquiries
.
size
+
allFilter
.
ages
.
size
+
allFilter
.
title
.
size
>
0
||
!
TextUtils
.
isEmpty
(
allFilter
.
priceRanges
?.
minPrice
)
||
!
TextUtils
.
isEmpty
(
allFilter
.
priceRanges
?.
maxPrice
))
{
if
(
allFilter
.
others
.
size
+
allFilter
.
enquiries
.
size
+
allFilter
.
ages
.
size
+
allFilter
.
title
.
size
>
0
||
!
TextUtils
.
isEmpty
(
allFilter
.
priceRanges
?.
minPrice
)
||
!
TextUtils
.
isEmpty
(
allFilter
.
priceRanges
?.
maxPrice
)
)
{
updateFilterTextViewStatus
(
tvFilter
,
FILTER_STATUS_FILTERED
)
updateFilterTextViewStatus
(
tvFilter
,
FILTER_STATUS_FILTERED
)
}
else
{
}
else
{
updateFilterTextViewStatus
(
tvFilter
,
FILTER_STATUS_NORMAL
)
updateFilterTextViewStatus
(
tvFilter
,
FILTER_STATUS_NORMAL
)
...
@@ -927,7 +974,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -927,7 +974,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
filterPopupWindow
.
onFilterConfirmListener
=
this
filterPopupWindow
.
onFilterConfirmListener
=
this
updateFilterTextViewStatus
(
tvFilter
,
FILTER_STATUS_OPEN
)
updateFilterTextViewStatus
(
tvFilter
,
FILTER_STATUS_OPEN
)
// viewDim.visibility = View.VISIBLE
// viewDim.visibility = View.VISIBLE
viewDim_filter
.
visibility
=
View
.
VISIBLE
viewDim_filter
.
visibility
=
View
.
VISIBLE
}
else
{
}
else
{
ToastUtil
.
toastShort
(
"数据初始化失败,请重试"
)
ToastUtil
.
toastShort
(
"数据初始化失败,请重试"
)
getPresenter
().
fetchListHead
()
getPresenter
().
fetchListHead
()
...
@@ -937,8 +984,19 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -937,8 +984,19 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
//筛选确认回调
//筛选确认回调
override
fun
onFilterConfirmed
()
{
override
fun
onFilterConfirmed
()
{
updateFilterTextViewStatus
(
tvFilter
,
FILTER_STATUS_OPEN
)
updateFilterTextViewStatus
(
tvFilter
,
FILTER_STATUS_OPEN
)
LogUtil
.
d
(
"filter: "
+
tempFilter
.
showType
.
value
+
","
+
tempFilter
.
enquiries
.
map
{
it
.
value
}.
joinToString
(
","
)
+
","
+
tempFilter
.
ages
.
map
{
it
.
value
}.
joinToString
(
","
)
+
","
+
tempFilter
.
others
.
map
{
it
.
value
}.
joinToString
(
","
))
LogUtil
.
d
(
props1
.
put
(
"filtrate_second"
,
tempFilter
.
showType
.
value
+
","
+
tempFilter
.
enquiries
.
map
{
it
.
value
}.
joinToString
(
","
)
+
","
+
tempFilter
.
ages
.
map
{
it
.
value
}.
joinToString
(
","
)
+
","
+
tempFilter
.
others
.
map
{
it
.
value
}.
joinToString
(
","
))
"filter: "
+
tempFilter
.
showType
.
value
+
","
+
tempFilter
.
enquiries
.
map
{
it
.
value
}.
joinToString
(
","
)
+
","
+
tempFilter
.
ages
.
map
{
it
.
value
}.
joinToString
(
","
)
+
","
+
tempFilter
.
others
.
map
{
it
.
value
}.
joinToString
(
","
)
)
props1
.
put
(
"filtrate_second"
,
tempFilter
.
showType
.
value
+
","
+
tempFilter
.
enquiries
.
map
{
it
.
value
}.
joinToString
(
","
)
+
","
+
tempFilter
.
ages
.
map
{
it
.
value
}.
joinToString
(
","
)
+
","
+
tempFilter
.
others
.
map
{
it
.
value
}.
joinToString
(
","
)
)
BuryPointUtils
.
buryPoint
(
"Filtrate"
,
props1
)
BuryPointUtils
.
buryPoint
(
"Filtrate"
,
props1
)
...
@@ -959,13 +1017,17 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -959,13 +1017,17 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
if
(
headData
!!
.
highlighter
.
size
>
0
)
{
if
(
headData
!!
.
highlighter
.
size
>
0
)
{
for
(
index
in
0
.
until
(
headData
!!
.
highlighter
.
size
))
{
for
(
index
in
0
.
until
(
headData
!!
.
highlighter
.
size
))
{
if
(
headData
!!
.
highlighter
[
index
].
type
==
"4"
)
{
if
(
headData
!!
.
highlighter
[
index
].
type
==
"4"
)
{
var
textview
=
lin_filter2
.
getChildAt
(
index
)
as
TextView
var
textview
=
lin_filter2
.
getChildAt
(
index
)
as
TextView
activity
.
runOnUiThread
{
activity
.
runOnUiThread
{
textview
.
isSelected
=
false
textview
.
isSelected
=
false
textview
.
paint
.
isFakeBoldText
=
false
textview
.
paint
.
isFakeBoldText
=
false
}
}
for
(
bean
in
allFilter
.
enquiries
)
{
for
(
bean
in
allFilter
.
enquiries
)
{
if
(
TextUtils
.
equals
(
bean
.
key
.
toString
(),
headData
!!
.
highlighter
[
index
].
id
))
{
if
(
TextUtils
.
equals
(
bean
.
key
.
toString
(),
headData
!!
.
highlighter
[
index
].
id
)
)
{
activity
.
runOnUiThread
{
activity
.
runOnUiThread
{
textview
.
isSelected
=
true
textview
.
isSelected
=
true
textview
.
paint
.
isFakeBoldText
=
true
textview
.
paint
.
isFakeBoldText
=
true
...
@@ -975,13 +1037,17 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -975,13 +1037,17 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
}
}
}
}
if
(
headData
!!
.
highlighter
[
index
].
type
==
"5"
)
{
if
(
headData
!!
.
highlighter
[
index
].
type
==
"5"
)
{
var
textview
=
lin_filter2
.
getChildAt
(
index
)
as
TextView
var
textview
=
lin_filter2
.
getChildAt
(
index
)
as
TextView
activity
.
runOnUiThread
{
activity
.
runOnUiThread
{
textview
.
isSelected
=
false
textview
.
isSelected
=
false
textview
.
paint
.
isFakeBoldText
=
false
textview
.
paint
.
isFakeBoldText
=
false
}
}
for
(
bean
in
allFilter
.
ages
)
{
for
(
bean
in
allFilter
.
ages
)
{
if
(
TextUtils
.
equals
(
bean
.
value
.
toString
(),
headData
!!
.
highlighter
[
index
].
id
))
{
if
(
TextUtils
.
equals
(
bean
.
value
.
toString
(),
headData
!!
.
highlighter
[
index
].
id
)
)
{
activity
.
runOnUiThread
{
activity
.
runOnUiThread
{
textview
.
isSelected
=
true
textview
.
isSelected
=
true
textview
.
paint
.
isFakeBoldText
=
true
textview
.
paint
.
isFakeBoldText
=
true
...
@@ -991,13 +1057,17 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -991,13 +1057,17 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
}
}
}
}
if
(
headData
!!
.
highlighter
[
index
].
type
==
"6"
)
{
if
(
headData
!!
.
highlighter
[
index
].
type
==
"6"
)
{
var
textview
=
lin_filter2
.
getChildAt
(
index
)
as
TextView
var
textview
=
lin_filter2
.
getChildAt
(
index
)
as
TextView
activity
.
runOnUiThread
{
activity
.
runOnUiThread
{
textview
.
isSelected
=
false
textview
.
isSelected
=
false
textview
.
paint
.
isFakeBoldText
=
false
textview
.
paint
.
isFakeBoldText
=
false
}
}
for
(
bean
in
allFilter
.
others
)
{
for
(
bean
in
allFilter
.
others
)
{
if
(
TextUtils
.
equals
(
bean
.
key
.
toString
(),
headData
!!
.
highlighter
[
index
].
id
))
{
if
(
TextUtils
.
equals
(
bean
.
key
.
toString
(),
headData
!!
.
highlighter
[
index
].
id
)
)
{
activity
.
runOnUiThread
{
activity
.
runOnUiThread
{
textview
.
isSelected
=
true
textview
.
isSelected
=
true
textview
.
paint
.
isFakeBoldText
=
true
textview
.
paint
.
isFakeBoldText
=
true
...
@@ -1008,13 +1078,17 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -1008,13 +1078,17 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
}
}
if
(
headData
!!
.
highlighter
[
index
].
type
==
"7"
)
{
if
(
headData
!!
.
highlighter
[
index
].
type
==
"7"
)
{
var
textview
=
lin_filter2
.
getChildAt
(
index
)
as
TextView
var
textview
=
lin_filter2
.
getChildAt
(
index
)
as
TextView
activity
.
runOnUiThread
{
activity
.
runOnUiThread
{
textview
.
isSelected
=
false
textview
.
isSelected
=
false
textview
.
paint
.
isFakeBoldText
=
false
textview
.
paint
.
isFakeBoldText
=
false
}
}
for
(
bean
in
allFilter
.
title
)
{
for
(
bean
in
allFilter
.
title
)
{
if
(
TextUtils
.
equals
(
bean
.
key
.
toString
(),
headData
!!
.
highlighter
[
index
].
id
))
{
if
(
TextUtils
.
equals
(
bean
.
key
.
toString
(),
headData
!!
.
highlighter
[
index
].
id
)
)
{
activity
.
runOnUiThread
{
activity
.
runOnUiThread
{
textview
.
isSelected
=
true
textview
.
isSelected
=
true
textview
.
paint
.
isFakeBoldText
=
true
textview
.
paint
.
isFakeBoldText
=
true
...
@@ -1049,12 +1123,12 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -1049,12 +1123,12 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
text
=
"筛选"
text
=
"筛选"
}
}
if
(
text
?.
length
?:
0
>
4
)
{
if
(
text
?.
length
?:
0
>
4
)
{
tvFilter
.
text
=
text
?.
substring
(
0
,
3
)
+
"..."
tvFilter
.
text
=
text
?.
substring
(
0
,
3
)
+
"..."
}
else
{
}
else
{
tvFilter
.
text
=
text
tvFilter
.
text
=
text
}
}
}
else
{
}
else
{
tvFilter
.
text
=
"筛选"
tvFilter
.
text
=
"筛选"
}
}
}
}
...
@@ -1066,7 +1140,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -1066,7 +1140,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
if
(
headData
?.
reorder
!=
null
)
{
if
(
headData
?.
reorder
!=
null
)
{
sortPopup
=
SortPopupWindow
(
activity
,
headData
?.
reorder
!!
,
allFilter
.
reorder
,
this
)
sortPopup
=
SortPopupWindow
(
activity
,
headData
?.
reorder
!!
,
allFilter
.
reorder
,
this
)
sortPopup
!!
.
setOnDismissListener
{
sortPopup
!!
.
setOnDismissListener
{
viewDim
.
visibility
=
View
.
INVISIBLE
viewDim
.
visibility
=
View
.
INVISIBLE
if
(
allFilter
.
reorder
!=
headData
!!
.
reorder
[
0
])
{
if
(
allFilter
.
reorder
!=
headData
!!
.
reorder
[
0
])
{
updateFilterTextViewStatus
(
tvSort
,
FILTER_STATUS_FILTERED
)
updateFilterTextViewStatus
(
tvSort
,
FILTER_STATUS_FILTERED
)
}
else
{
}
else
{
...
@@ -1079,7 +1153,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -1079,7 +1153,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
}
}
sortPopup
!!
.
showAsDropDown
(
viewSep2
)
sortPopup
!!
.
showAsDropDown
(
viewSep2
)
updateFilterTextViewStatus
(
tvSort
,
FILTER_STATUS_OPEN
)
updateFilterTextViewStatus
(
tvSort
,
FILTER_STATUS_OPEN
)
viewDim
.
visibility
=
View
.
VISIBLE
viewDim
.
visibility
=
View
.
VISIBLE
}
else
{
}
else
{
ToastUtil
.
toastShort
(
"数据初始化失败,请重试"
)
ToastUtil
.
toastShort
(
"数据初始化失败,请重试"
)
getPresenter
().
fetchListHead
()
getPresenter
().
fetchListHead
()
...
@@ -1088,22 +1162,24 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -1088,22 +1162,24 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
//排序选择回调
//排序选择回调
override
fun
onSortItemSelected
(
sortItem
:
ReorderItem
)
{
override
fun
onSortItemSelected
(
sortItem
:
ReorderItem
)
{
ActionCountUtils
.
count
(
ConsultBIConstants
.
ConsultEvent
.
APP_CONSULT_LIST_SORT_CLICK
,
sortItem
.
value
ActionCountUtils
.
count
(
?:
""
)
ConsultBIConstants
.
ConsultEvent
.
APP_CONSULT_LIST_SORT_CLICK
,
sortItem
.
value
?:
""
)
if
(
sortItem
.
value
.
equals
(
"综合排序"
))
{
if
(
sortItem
.
value
.
equals
(
"综合排序"
))
{
tvSort
.
text
=
"排序"
tvSort
.
text
=
"排序"
}
else
if
(
sortItem
.
value
?.
length
?:
0
>
4
)
{
}
else
if
(
sortItem
.
value
?.
length
?:
0
>
4
)
{
tvSort
.
text
=
sortItem
.
value
?.
substring
(
0
,
3
)
+
"..."
tvSort
.
text
=
sortItem
.
value
?.
substring
(
0
,
3
)
+
"..."
}
else
{
}
else
{
tvSort
.
text
=
sortItem
.
value
tvSort
.
text
=
sortItem
.
value
}
}
//判断排序选中,判断热门筛选中是否也有该排序
//判断排序选中,判断热门筛选中是否也有该排序
if
(
headData
!!
.
highlighter
.
size
>
0
)
{
if
(
headData
!!
.
highlighter
.
size
>
0
)
{
for
(
index
in
0
.
until
(
headData
!!
.
highlighter
.
size
))
{
for
(
index
in
0
.
until
(
headData
!!
.
highlighter
.
size
))
{
if
(
headData
!!
.
highlighter
[
index
].
type
==
"3"
)
{
if
(
headData
!!
.
highlighter
[
index
].
type
==
"3"
)
{
var
textview
=
lin_filter2
.
getChildAt
(
index
)
as
TextView
var
textview
=
lin_filter2
.
getChildAt
(
index
)
as
TextView
if
(
TextUtils
.
equals
(
sortItem
.
value
,
headData
!!
.
highlighter
[
index
].
value
))
{
if
(
TextUtils
.
equals
(
sortItem
.
value
,
headData
!!
.
highlighter
[
index
].
value
))
{
textview
.
isSelected
=
true
textview
.
isSelected
=
true
textview
.
paint
.
isFakeBoldText
=
true
textview
.
paint
.
isFakeBoldText
=
true
...
@@ -1129,82 +1205,88 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -1129,82 +1205,88 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
//显示地区弹窗
//显示地区弹窗
private
fun
showAreaPopupWindow
()
{
private
fun
showAreaPopupWindow
()
{
if
(
headData
?.
region
!=
null
)
{
if
(
headData
?.
region
!=
null
)
{
val
regionPopupWindow
=
AreaPopupWindow
(
activity
,
headData
?.
region
val
regionPopupWindow
=
AreaPopupWindow
(
?:
ArrayList
(),
allFilter
.
region
,
allFilter
.
sub
)
activity
,
headData
?.
region
?:
ArrayList
(),
allFilter
.
region
,
allFilter
.
sub
)
regionPopupWindow
.
showAsDropDown
(
viewSep2
)
regionPopupWindow
.
showAsDropDown
(
viewSep2
)
viewDim
.
visibility
=
View
.
VISIBLE
viewDim
.
visibility
=
View
.
VISIBLE
updateFilterTextViewStatus
(
tvArea
,
FILTER_STATUS_OPEN
)
updateFilterTextViewStatus
(
tvArea
,
FILTER_STATUS_OPEN
)
regionPopupWindow
.
setOnDismissListener
{
regionPopupWindow
.
setOnDismissListener
{
viewDim
.
visibility
=
View
.
INVISIBLE
viewDim
.
visibility
=
View
.
INVISIBLE
if
(
tvArea
.
text
!=
"地区"
)
{
if
(
tvArea
.
text
!=
"地区"
)
{
updateFilterTextViewStatus
(
tvArea
,
FILTER_STATUS_FILTERED
)
updateFilterTextViewStatus
(
tvArea
,
FILTER_STATUS_FILTERED
)
}
else
{
}
else
{
updateFilterTextViewStatus
(
tvArea
,
FILTER_STATUS_NORMAL
)
updateFilterTextViewStatus
(
tvArea
,
FILTER_STATUS_NORMAL
)
}
}
}
}
regionPopupWindow
.
onRegionSelectedListener
=
object
:
AreaPopupWindow
.
OnRegionSelectedListener
{
regionPopupWindow
.
onRegionSelectedListener
=
override
fun
onRegionSelected
(
region
:
RegionItem
,
sub
:
SubItem
)
{
object
:
AreaPopupWindow
.
OnRegionSelectedListener
{
updateFilterTextViewStatus
(
tvArea
,
FILTER_STATUS_OPEN
)
override
fun
onRegionSelected
(
region
:
RegionItem
,
sub
:
SubItem
)
{
allFilter
.
region
=
region
updateFilterTextViewStatus
(
tvArea
,
FILTER_STATUS_OPEN
)
allFilter
.
sub
=
sub
allFilter
.
region
=
region
if
(
region
.
key
==
null
&&
sub
.
key
==
null
)
{
allFilter
.
sub
=
sub
if
(
region
.
key
==
null
&&
sub
.
key
==
null
)
{
// LogUtil.d("onRegionSelected: " + region.value)
// LogUtil.d("onRegionSelected: " + region.value)
// props1.put("filtrate_second", region.value)
// props1.put("filtrate_second", region.value)
// BuryPointUtils.buryPoint("Filtrate", props1)
// BuryPointUtils.buryPoint("Filtrate", props1)
tvArea
.
text
=
"地区"
tvArea
.
text
=
"地区"
}
else
if
(
region
.
key
!=
null
&&
sub
.
key
==
null
)
{
}
else
if
(
region
.
key
!=
null
&&
sub
.
key
==
null
)
{
// LogUtil.d("onRegionSelected: " + region.value)
// LogUtil.d("onRegionSelected: " + region.value)
// props1.put("filtrate_second", region.value)
// props1.put("filtrate_second", region.value)
// BuryPointUtils.buryPoint("Filtrate", props1)
// BuryPointUtils.buryPoint("Filtrate", props1)
if
(
region
.
value
?.
length
?:
0
>
4
)
{
if
(
region
.
value
?.
length
?:
0
>
4
)
{
tvArea
.
text
=
region
.
value
?.
substring
(
0
,
3
)
+
"..."
tvArea
.
text
=
region
.
value
?.
substring
(
0
,
3
)
+
"..."
}
else
{
tvArea
.
text
=
region
.
value
}
}
else
{
}
else
{
tvArea
.
text
=
region
.
value
}
}
else
{
// LogUtil.d("onRegionSelected: " + sub.value)
// LogUtil.d("onRegionSelected: " + sub.value)
// props1.put("filtrate_second", sub.value)
// props1.put("filtrate_second", sub.value)
// BuryPointUtils.buryPoint("Filtrate", props1)
// BuryPointUtils.buryPoint("Filtrate", props1)
if
(
sub
.
value
?.
length
?:
0
>
4
)
{
if
(
sub
.
value
?.
length
?:
0
>
4
)
{
tvArea
.
text
=
sub
.
value
?.
substring
(
0
,
3
)
+
"..."
tvArea
.
text
=
sub
.
value
?.
substring
(
0
,
3
)
+
"..."
}
else
{
}
else
{
tvArea
.
text
=
sub
.
value
tvArea
.
text
=
sub
.
value
}
}
}
}
ActionCountUtils
.
count
(
ActionCountUtils
.
count
(
ConsultBIConstants
.
ConsultEvent
.
APP_CONSULT_LIST_AREA_CLICK
,
region
.
value
+
"|"
+
sub
.
value
)
ConsultBIConstants
.
ConsultEvent
.
APP_CONSULT_LIST_AREA_CLICK
,
region
.
value
+
"|"
+
sub
.
value
//更新热门搜索显示状态
)
if
(
headData
!!
.
highlighter
.
size
>
0
)
{
for
((
index
,
hot
)
in
headData
!!
.
highlighter
!!
.
withIndex
())
{
//更新热门搜索显示状态
if
(
hot
.
type
==
"2"
||
hot
.
type
==
"8"
)
{
if
(
headData
!!
.
highlighter
.
size
>
0
)
{
var
textview
=
lin_filter2
.
getChildAt
(
index
)
as
TextView
for
((
index
,
hot
)
in
headData
!!
.
highlighter
!!
.
withIndex
())
{
//有选择城市
if
(
hot
.
type
==
"2"
||
hot
.
type
==
"8"
)
{
if
(!
TextUtils
.
isEmpty
(
sub
.
key
))
{
var
textview
=
lin_filter2
.
getChildAt
(
index
)
as
TextView
if
(
TextUtils
.
equals
(
sub
.
key
,
hot
.
id
))
{
//有选择城市
textview
.
isSelected
=
true
if
(!
TextUtils
.
isEmpty
(
sub
.
key
))
{
textview
.
paint
.
isFakeBoldText
=
true
if
(
TextUtils
.
equals
(
sub
.
key
,
hot
.
id
))
{
hasSelectedArea
=
true
textview
.
isSelected
=
true
}
else
{
textview
.
paint
.
isFakeBoldText
=
true
textview
.
isSelected
=
false
hasSelectedArea
=
true
textview
.
paint
.
isFakeBoldText
=
false
}
else
{
}
textview
.
isSelected
=
false
}
else
{
textview
.
paint
.
isFakeBoldText
=
false
if
(
TextUtils
.
equals
(
region
.
key
,
hot
.
id
))
{
}
textview
.
isSelected
=
true
textview
.
paint
.
isFakeBoldText
=
true
hasSelectedArea
=
true
}
else
{
}
else
{
textview
.
isSelected
=
false
if
(
TextUtils
.
equals
(
region
.
key
,
hot
.
id
))
{
textview
.
paint
.
isFakeBoldText
=
false
textview
.
isSelected
=
true
textview
.
paint
.
isFakeBoldText
=
true
hasSelectedArea
=
true
}
else
{
textview
.
isSelected
=
false
textview
.
paint
.
isFakeBoldText
=
false
}
}
}
}
}
}
}
}
}
regionPopupWindow
.
dismiss
()
refresh
()
}
}
regionPopupWindow
.
dismiss
()
refresh
()
}
}
}
}
else
{
}
else
{
ToastUtil
.
toastShort
(
"数据初始化失败,请重试"
)
ToastUtil
.
toastShort
(
"数据初始化失败,请重试"
)
getPresenter
().
fetchListHead
()
getPresenter
().
fetchListHead
()
...
@@ -1221,7 +1303,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -1221,7 +1303,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
if
(
categories
!=
null
)
{
if
(
categories
!=
null
)
{
categoryPopup
=
CategoryPopupWindow
(
activity
,
categories
,
tempFilter
.
categories
)
categoryPopup
=
CategoryPopupWindow
(
activity
,
categories
,
tempFilter
.
categories
)
categoryPopup
!!
.
setOnDismissListener
{
categoryPopup
!!
.
setOnDismissListener
{
viewDim
.
visibility
=
View
.
INVISIBLE
viewDim
.
visibility
=
View
.
INVISIBLE
if
(
allFilter
.
categories
.
size
>
1
||
(
allFilter
.
categories
.
size
==
1
&&
allFilter
.
categories
[
0
]
!=
headData
!!
.
cates
[
0
]))
{
if
(
allFilter
.
categories
.
size
>
1
||
(
allFilter
.
categories
.
size
==
1
&&
allFilter
.
categories
[
0
]
!=
headData
!!
.
cates
[
0
]))
{
updateFilterTextViewStatus
(
tvSubject
,
FILTER_STATUS_FILTERED
)
updateFilterTextViewStatus
(
tvSubject
,
FILTER_STATUS_FILTERED
)
}
else
{
}
else
{
...
@@ -1231,7 +1313,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -1231,7 +1313,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
categoryPopup
!!
.
onSubjectsSelectedListener
=
this
categoryPopup
!!
.
onSubjectsSelectedListener
=
this
categoryPopup
!!
.
showAsDropDown
(
viewSep2
)
categoryPopup
!!
.
showAsDropDown
(
viewSep2
)
updateFilterTextViewStatus
(
tvSubject
,
FILTER_STATUS_OPEN
)
updateFilterTextViewStatus
(
tvSubject
,
FILTER_STATUS_OPEN
)
viewDim
.
visibility
=
View
.
VISIBLE
viewDim
.
visibility
=
View
.
VISIBLE
}
else
{
}
else
{
ToastUtil
.
toastShort
(
"数据初始化失败,请重试"
)
ToastUtil
.
toastShort
(
"数据初始化失败,请重试"
)
getPresenter
().
fetchListHead
()
getPresenter
().
fetchListHead
()
...
@@ -1244,26 +1326,33 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -1244,26 +1326,33 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
* 新增逻辑:当主题选择后,需要判断热门筛选中是否也有该主题,如果有,也需要同步更新选中状态
* 新增逻辑:当主题选择后,需要判断热门筛选中是否也有该主题,如果有,也需要同步更新选中状态
*/
*/
override
fun
onCategoriesSelected
(
categories
:
ArrayList
<
CateItem
>)
{
override
fun
onCategoriesSelected
(
categories
:
ArrayList
<
CateItem
>)
{
ActionCountUtils
.
count
(
ConsultBIConstants
.
ConsultEvent
.
APP_CONSULT_LIST_THEME_CLICK
,
categories
.
map
{
it
.
cateName
}.
joinToString
(
"|"
))
ActionCountUtils
.
count
(
ConsultBIConstants
.
ConsultEvent
.
APP_CONSULT_LIST_THEME_CLICK
,
categories
.
map
{
it
.
cateName
}.
joinToString
(
"|"
)
)
if
(
categories
.
size
==
1
&&
"全部"
!=
categories
[
0
].
cateName
)
{
if
(
categories
.
size
==
1
&&
"全部"
!=
categories
[
0
].
cateName
)
{
//显示选中标题
//显示选中标题
tvSubject
.
text
=
categories
[
0
].
cateName
tvSubject
.
text
=
categories
[
0
].
cateName
}
else
{
}
else
{
//显示主标题
//显示主标题
tvSubject
.
text
=
"主题"
tvSubject
.
text
=
"主题"
}
}
//判断主题选中,判断热门筛选中是否也有该主题
//判断主题选中,判断热门筛选中是否也有该主题
Executors
.
newCachedThreadPool
().
execute
{
Executors
.
newCachedThreadPool
().
execute
{
if
(
headData
!!
.
highlighter
.
size
>
0
)
{
if
(
headData
!!
.
highlighter
.
size
>
0
)
{
for
(
index
in
0
.
until
(
headData
!!
.
highlighter
.
size
))
{
for
(
index
in
0
.
until
(
headData
!!
.
highlighter
.
size
))
{
if
(
headData
!!
.
highlighter
[
index
].
type
==
"1"
)
{
if
(
headData
!!
.
highlighter
[
index
].
type
==
"1"
)
{
var
textview
=
lin_filter2
.
getChildAt
(
index
)
as
TextView
var
textview
=
lin_filter2
.
getChildAt
(
index
)
as
TextView
activity
.
runOnUiThread
{
activity
.
runOnUiThread
{
textview
.
isSelected
=
false
textview
.
isSelected
=
false
textview
.
paint
.
isFakeBoldText
=
false
textview
.
paint
.
isFakeBoldText
=
false
}
}
for
(
bean
in
categories
)
{
for
(
bean
in
categories
)
{
if
(
TextUtils
.
equals
(
bean
.
cateName
,
headData
!!
.
highlighter
[
index
].
value
))
{
if
(
TextUtils
.
equals
(
bean
.
cateName
,
headData
!!
.
highlighter
[
index
].
value
)
)
{
activity
.
runOnUiThread
{
activity
.
runOnUiThread
{
textview
.
isSelected
=
true
textview
.
isSelected
=
true
textview
.
paint
.
isFakeBoldText
=
true
textview
.
paint
.
isFakeBoldText
=
true
...
@@ -1298,8 +1387,8 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -1298,8 +1387,8 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
//刷新列表
//刷新列表
private
fun
refresh
(
isShowRefresh
:
Boolean
?
=
true
)
{
private
fun
refresh
(
isShowRefresh
:
Boolean
?
=
true
)
{
srlContainer
.
isRefreshing
=
isShowRefresh
!!
srlContainer
.
isRefreshing
=
isShowRefresh
!!
val
key
=
tv_search_content
.
text
.
toString
()
val
key
=
tv_search_content
.
text
.
toString
()
if
(!
TextUtils
.
isEmpty
(
key
.
trim
()))
{
if
(!
TextUtils
.
isEmpty
(
key
.
trim
()))
{
allFilter
.
searchWord
=
key
.
trim
()
allFilter
.
searchWord
=
key
.
trim
()
}
else
{
}
else
{
...
@@ -1313,7 +1402,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -1313,7 +1402,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
//执行搜索
//执行搜索
private
fun
doSearch
()
{
private
fun
doSearch
()
{
image_scroll_top
.
visibility
=
View
.
GONE
image_scroll_top
.
visibility
=
View
.
GONE
hideSoftInput
();
hideSoftInput
();
// keyWord = etSearch.text.toString()
// keyWord = etSearch.text.toString()
// if (TextUtils.isEmpty(keyWord?.trim())) {
// if (TextUtils.isEmpty(keyWord?.trim())) {
...
@@ -1321,7 +1410,10 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -1321,7 +1410,10 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
// return
// return
// }
// }
ActionCountUtils
.
count
(
ConsultBIConstants
.
UserMainEvent
.
YDL_USER_SEARCH_CLICK
,
keyWord
?:
""
)
ActionCountUtils
.
count
(
ConsultBIConstants
.
UserMainEvent
.
YDL_USER_SEARCH_CLICK
,
keyWord
?:
""
)
isDoSearch
=
true
isDoSearch
=
true
resetFilter
()
resetFilter
()
refresh
()
refresh
()
...
@@ -1357,17 +1449,32 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -1357,17 +1449,32 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
FILTER_STATUS_NORMAL
->
{
FILTER_STATUS_NORMAL
->
{
tv
.
typeface
=
Typeface
.
defaultFromStyle
(
Typeface
.
NORMAL
)
tv
.
typeface
=
Typeface
.
defaultFromStyle
(
Typeface
.
NORMAL
)
tv
.
setTextColor
(
ContextCompat
.
getColor
(
context
,
R
.
color
.
platform_colorTextDefault
))
tv
.
setTextColor
(
ContextCompat
.
getColor
(
context
,
R
.
color
.
platform_colorTextDefault
))
tv
.
setCompoundDrawablesWithIntrinsicBounds
(
0
,
0
,
R
.
drawable
.
platform_ic_arrow_drop_down_grey_500_18dp
,
0
)
tv
.
setCompoundDrawablesWithIntrinsicBounds
(
0
,
0
,
R
.
drawable
.
platform_ic_arrow_drop_down_grey_500_18dp
,
0
)
}
}
FILTER_STATUS_FILTERED
->
{
FILTER_STATUS_FILTERED
->
{
tv
.
typeface
=
Typeface
.
DEFAULT_BOLD
tv
.
typeface
=
Typeface
.
DEFAULT_BOLD
tv
.
setTextColor
(
ContextCompat
.
getColor
(
context
,
R
.
color
.
consultant_main_theme
))
tv
.
setTextColor
(
ContextCompat
.
getColor
(
context
,
R
.
color
.
consultant_main_theme
))
tv
.
setCompoundDrawablesWithIntrinsicBounds
(
0
,
0
,
R
.
drawable
.
platform_ic_arrow_drop_down_grey_500_18dp
,
0
)
tv
.
setCompoundDrawablesWithIntrinsicBounds
(
0
,
0
,
R
.
drawable
.
platform_ic_arrow_drop_down_grey_500_18dp
,
0
)
}
}
FILTER_STATUS_OPEN
->
{
FILTER_STATUS_OPEN
->
{
tv
.
typeface
=
Typeface
.
DEFAULT_BOLD
tv
.
typeface
=
Typeface
.
DEFAULT_BOLD
tv
.
setTextColor
(
ContextCompat
.
getColor
(
context
,
R
.
color
.
platform_colorTextDefault
))
tv
.
setTextColor
(
ContextCompat
.
getColor
(
context
,
R
.
color
.
platform_colorTextDefault
))
tv
.
setCompoundDrawablesWithIntrinsicBounds
(
0
,
0
,
R
.
drawable
.
consultant_ic_arrow_drop_down
,
0
)
tv
.
setCompoundDrawablesWithIntrinsicBounds
(
0
,
0
,
R
.
drawable
.
consultant_ic_arrow_drop_down
,
0
)
}
}
}
}
}
}
...
@@ -1385,11 +1492,11 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
...
@@ -1385,11 +1492,11 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
*/
*/
fun
bury
(
keyworks
:
String
,
isResult
:
Boolean
,
isRecommend
:
Boolean
,
location
:
String
)
{
fun
bury
(
keyworks
:
String
,
isResult
:
Boolean
,
isRecommend
:
Boolean
,
location
:
String
)
{
BuryPointUtils
.
getInstance
().
createMap
()
BuryPointUtils
.
getInstance
().
createMap
()
.
put
(
"keyWord"
,
keyworks
)
.
put
(
"keyWord"
,
keyworks
)
.
put
(
"hasResult"
,
isResult
)
.
put
(
"hasResult"
,
isResult
)
.
put
(
"isRecommend"
,
isRecommend
)
.
put
(
"isRecommend"
,
isRecommend
)
.
put
(
"location"
,
location
)
.
put
(
"location"
,
location
)
.
burryPoint
(
"search"
)
.
burryPoint
(
"search"
)
}
}
override
fun
onResume
()
{
override
fun
onResume
()
{
...
...
m-consultant/src/main/java/com/yidianling/consultant/adapter/ExpertSearchAdapter.kt
View file @
d2e3abca
...
@@ -38,8 +38,11 @@ import kotlinx.android.synthetic.main.consultant_item_tag.view.*
...
@@ -38,8 +38,11 @@ import kotlinx.android.synthetic.main.consultant_item_tag.view.*
/**
/**
* 专家服务列表适配器
* 专家服务列表适配器
*/
*/
class
ExpertSearchAdapter
(
private
val
context
:
Context
,
private
val
expertSearchView
:
IExpertSearchView
,
private
val
listData
:
ArrayList
<
DoctorServiceItem
>)
class
ExpertSearchAdapter
(
:
RecyclerView
.
Adapter
<
RecyclerView
.
ViewHolder
>()
{
private
val
context
:
Context
,
private
val
expertSearchView
:
IExpertSearchView
,
private
val
listData
:
ArrayList
<
DoctorServiceItem
>
)
:
RecyclerView
.
Adapter
<
RecyclerView
.
ViewHolder
>()
{
companion
object
{
companion
object
{
const
val
NORMAL_VIEW
=
0
const
val
NORMAL_VIEW
=
0
...
@@ -48,14 +51,16 @@ class ExpertSearchAdapter(private val context: Context, private val expertSearch
...
@@ -48,14 +51,16 @@ class ExpertSearchAdapter(private val context: Context, private val expertSearch
}
}
//记录当前选择主题的id
//记录当前选择主题的id
var
cateId
:
String
?
=
null
var
cateId
:
String
?
=
null
var
hasMore
=
true
var
hasMore
=
true
var
entranceName
:
String
?
=
null
var
entranceName
:
String
?
=
null
var
pageIndex
:
Int
=
0
fun
setEntrance
(
entranceName
:
String
)
{
fun
setEntrance
(
entranceName
:
String
,
pageIndex
:
Int
)
{
this
.
entranceName
=
entranceName
this
.
entranceName
=
entranceName
this
.
pageIndex
=
pageIndex
}
}
@SuppressLint
(
"SetTextI18n"
)
@SuppressLint
(
"SetTextI18n"
)
...
@@ -66,47 +71,46 @@ class ExpertSearchAdapter(private val context: Context, private val expertSearch
...
@@ -66,47 +71,46 @@ class ExpertSearchAdapter(private val context: Context, private val expertSearch
val
headConfig
=
SimpleImageOpConfiger
()
val
headConfig
=
SimpleImageOpConfiger
()
headConfig
.
loadingPic
=
R
.
drawable
.
consultant_avatar_def_circle
headConfig
.
loadingPic
=
R
.
drawable
.
consultant_avatar_def_circle
headConfig
.
errorPic
=
R
.
drawable
.
consultant_avatar_def_circle
headConfig
.
errorPic
=
R
.
drawable
.
consultant_avatar_def_circle
expertSearchView
.
showImage
(
itemBean
.
head
,
holder
.
imgHead
,
holder
.
imgHead
.
width
,
holder
.
imgHead
.
height
,
headConfig
)
expertSearchView
.
showImage
(
itemBean
.
head
,
holder
.
imgHead
,
holder
.
imgHead
.
width
,
holder
.
imgHead
.
height
,
headConfig
)
//姓名
//姓名
holder
.
tvName
.
text
=
itemBean
.
name
holder
.
tvName
.
text
=
itemBean
.
name
// if (TextUtils.isEmpty(itemBean.famousRemark)){
// holder.group_desc.visibility = View.GONE
// }else{
// holder.group_desc.visibility = View.VISIBLE
// //描述
// holder.tvDesc.text = itemBean.famousRemark
// }
//服务中
//服务中
if
(
itemBean
.
inConsult
||
itemBean
.
isListening
)
{
if
(
itemBean
.
inConsult
||
itemBean
.
isListening
)
{
holder
.
imgHead_online_server
.
visibility
=
View
.
VISIBLE
holder
.
imgHead_online_server
.
visibility
=
View
.
VISIBLE
holder
.
chat_people_in_question
.
visibility
=
View
.
GONE
holder
.
chat_people_in_question
.
visibility
=
View
.
GONE
holder
.
imgHead_online
.
visibility
=
View
.
GONE
holder
.
imgHead_online
.
visibility
=
View
.
GONE
}
else
{
}
else
{
//不是服务中且问询人数大于0
//不是服务中且问询人数大于0
if
(
itemBean
.
chatNum
>
5
)
{
if
(
itemBean
.
chatNum
>
5
)
{
holder
.
chat_people_in_question
.
visibility
=
View
.
VISIBLE
holder
.
chat_people_in_question
.
visibility
=
View
.
VISIBLE
holder
.
chat_people_in_question
.
text
=
"多人在问询"
holder
.
chat_people_in_question
.
text
=
"多人在问询"
}
else
if
(
itemBean
.
chatNum
>
0
)
{
}
else
if
(
itemBean
.
chatNum
>
0
)
{
holder
.
chat_people_in_question
.
visibility
=
View
.
VISIBLE
holder
.
chat_people_in_question
.
visibility
=
View
.
VISIBLE
holder
.
chat_people_in_question
.
text
=
"${itemBean.chatNum}人在问询"
holder
.
chat_people_in_question
.
text
=
"${itemBean.chatNum}人在问询"
}
else
{
}
else
{
holder
.
chat_people_in_question
.
visibility
=
View
.
GONE
holder
.
chat_people_in_question
.
visibility
=
View
.
GONE
}
}
//可预约
//可预约
holder
.
imgHead_online_server
.
visibility
=
View
.
GONE
holder
.
imgHead_online_server
.
visibility
=
View
.
GONE
if
(
itemBean
.
isTodayFree
==
true
){
if
(
itemBean
.
isTodayFree
==
true
)
{
holder
.
imgHead_online
.
visibility
=
View
.
VISIBLE
holder
.
imgHead_online
.
visibility
=
View
.
VISIBLE
}
else
{
}
else
{
holder
.
imgHead_online
.
visibility
=
View
.
GONE
holder
.
imgHead_online
.
visibility
=
View
.
GONE
}
}
}
}
//省市
//省市
if
(!
TextUtils
.
isEmpty
(
itemBean
.
province
)){
if
(!
TextUtils
.
isEmpty
(
itemBean
.
province
))
{
holder
.
tvCity
.
text
=
itemBean
.
province
+
"·"
+
itemBean
.
city
holder
.
tvCity
.
text
=
itemBean
.
province
+
"·"
+
itemBean
.
city
}
else
{
}
else
{
holder
.
tvCity
.
text
=
""
holder
.
tvCity
.
text
=
""
}
}
...
@@ -151,20 +155,13 @@ class ExpertSearchAdapter(private val context: Context, private val expertSearch
...
@@ -151,20 +155,13 @@ class ExpertSearchAdapter(private val context: Context, private val expertSearch
holder
.
imgAbilityLevel
.
background
=
holder
.
imgAbilityLevel
.
background
=
context
.
resources
.
getDrawable
(
R
.
drawable
.
consultant_expert_search_xinshou
)
context
.
resources
.
getDrawable
(
R
.
drawable
.
consultant_expert_search_xinshou
)
holder
.
imgAbilityLevel
.
visibility
=
View
.
VISIBLE
holder
.
imgAbilityLevel
.
visibility
=
View
.
VISIBLE
}
}
else
{
// else if (3 == itemBean.abilityLevel){
// //精英
// holder.imgAbilityLevel.background = context.resources.getDrawable(R.drawable.consultant_expert_search_jingying)
// holder.imgAbilityLevel.visibility = View.VISIBLE
// }
else
{
holder
.
imgAbilityLevel
.
visibility
=
View
.
GONE
holder
.
imgAbilityLevel
.
visibility
=
View
.
GONE
}
}
//活动图标
//活动图标
if
(!
TextUtils
.
isEmpty
(
itemBean
.
activityImg
))
{
if
(!
TextUtils
.
isEmpty
(
itemBean
.
activityImg
))
{
holder
.
imgActivity
.
visibility
=
View
.
VISIBLE
holder
.
imgActivity
.
visibility
=
View
.
VISIBLE
GlideApp
.
with
(
context
).
load
(
itemBean
.
activityImg
).
into
(
holder
.
imgActivity
)
GlideApp
.
with
(
context
).
load
(
itemBean
.
activityImg
).
into
(
holder
.
imgActivity
)
// GlideApp.with(context).load("https://video.ydlcdn.com/2019/11/04/abdd3782c98939d0406080a6a80b8ea5.jpg").into(holder.imgActivity)
}
else
{
}
else
{
holder
.
imgActivity
.
visibility
=
View
.
GONE
holder
.
imgActivity
.
visibility
=
View
.
GONE
}
}
...
@@ -187,29 +184,38 @@ class ExpertSearchAdapter(private val context: Context, private val expertSearch
...
@@ -187,29 +184,38 @@ class ExpertSearchAdapter(private val context: Context, private val expertSearch
}
}
}
}
holder
.
ll_feedbackRate
.
removeAllViews
()
holder
.
ll_feedbackRate
.
removeAllViews
()
for
(
num
in
1
..
5
){
for
(
num
in
1
..
5
)
{
val
view
=
LayoutInflater
.
from
(
context
).
inflate
(
R
.
layout
.
consultant_expert_search_feedbackrate
,
holder
.
ll_feedbackRate
,
false
)
val
view
=
LayoutInflater
.
from
(
context
).
inflate
(
if
(
itemBean
.
feedbackRate
>=
num
){
R
.
layout
.
consultant_expert_search_feedbackrate
,
(
view
.
imgRate
as
ImageView
).
background
=
context
.
resources
.
getDrawable
(
R
.
drawable
.
consultant_expert_search_full_star
)
holder
.
ll_feedbackRate
,
}
else
if
(
itemBean
.
feedbackRate
<
num
&&
itemBean
.
feedbackRate
>
num
-
1
){
false
(
view
.
imgRate
as
ImageView
).
background
=
context
.
resources
.
getDrawable
(
R
.
drawable
.
consultant_expert_search_half_star
)
)
}
else
{
if
(
itemBean
.
feedbackRate
>=
num
)
{
(
view
.
imgRate
as
ImageView
).
background
=
context
.
resources
.
getDrawable
(
R
.
drawable
.
consultant_expert_search_nothing_star
)
(
view
.
imgRate
as
ImageView
).
background
=
context
.
resources
.
getDrawable
(
R
.
drawable
.
consultant_expert_search_full_star
)
}
else
if
(
itemBean
.
feedbackRate
<
num
&&
itemBean
.
feedbackRate
>
num
-
1
)
{
(
view
.
imgRate
as
ImageView
).
background
=
context
.
resources
.
getDrawable
(
R
.
drawable
.
consultant_expert_search_half_star
)
}
else
{
(
view
.
imgRate
as
ImageView
).
background
=
context
.
resources
.
getDrawable
(
R
.
drawable
.
consultant_expert_search_nothing_star
)
}
}
holder
.
ll_feedbackRate
.
addView
(
view
)
holder
.
ll_feedbackRate
.
addView
(
view
)
}
}
//XXX人点评
//XXX人点评
val
numSb
=
StringBuffer
()
val
numSb
=
StringBuffer
()
holder
.
tv_zixunOrderNum
.
text
=
numSb
.
append
(
itemBean
.
zixunOrderNum
).
append
(
""
).
toString
()
holder
.
tv_zixunOrderNum
.
text
=
numSb
.
append
(
itemBean
.
zixunOrderNum
).
append
(
""
).
toString
()
//咨询师简介
//咨询师简介
holder
.
tvTeamCertifications
.
text
=
itemBean
.
teamCertifications
holder
.
tvTeamCertifications
.
text
=
itemBean
.
teamCertifications
//咨询师标签
//咨询师标签
holder
.
ll_tags
.
removeAllViews
()
holder
.
ll_tags
.
removeAllViews
()
if
(!
TextUtils
.
isEmpty
(
itemBean
.
tags
)){
if
(!
TextUtils
.
isEmpty
(
itemBean
.
tags
))
{
val
tagList
=
itemBean
.
tags
!!
.
split
(
"|"
)
val
tagList
=
itemBean
.
tags
!!
.
split
(
"|"
)
for
(
tag
in
tagList
)
{
for
(
tag
in
tagList
)
{
if
(!
TextUtils
.
isEmpty
(
tag
)){
if
(!
TextUtils
.
isEmpty
(
tag
))
{
val
view
=
LayoutInflater
.
from
(
context
).
inflate
(
R
.
layout
.
consultant_item_tag
,
holder
.
ll_tags
,
false
)
val
view
=
LayoutInflater
.
from
(
context
)
.
inflate
(
R
.
layout
.
consultant_item_tag
,
holder
.
ll_tags
,
false
)
view
.
tvTag
.
text
=
tag
view
.
tvTag
.
text
=
tag
holder
.
ll_tags
.
addView
(
view
)
holder
.
ll_tags
.
addView
(
view
)
}
}
...
@@ -218,49 +224,61 @@ class ExpertSearchAdapter(private val context: Context, private val expertSearch
...
@@ -218,49 +224,61 @@ class ExpertSearchAdapter(private val context: Context, private val expertSearch
//帮助人数
//帮助人数
val
orderUser
=
StringBuffer
()
val
orderUser
=
StringBuffer
()
holder
.
tvOrderNum
.
text
=
orderUser
.
append
(
itemBean
.
zixunOrderUser
).
append
(
""
).
toString
()
holder
.
tvOrderNum
.
text
=
orderUser
.
append
(
itemBean
.
zixunOrderUser
).
append
(
""
).
toString
()
// if ( 50 <= itemBean.zixunOrderNum){
// holder.tvOrderNumContent.text = "帮助"
// holder.tvSaleDurationForMonth.visibility = View.VISIBLE
// holder.tvSaleDurationForMonthContent.visibility = View.VISIBLE
// }else{
// holder.tvOrderNumContent.text = "公益解答"
// holder.tvSaleDurationForMonth.visibility = View.GONE
// holder.tvSaleDurationForMonthContent.visibility = View.GONE
// }
//私聊文案
//私聊文案
if
(
TextUtils
.
isEmpty
(
itemBean
.
chatBtnText
)){
if
(
TextUtils
.
isEmpty
(
itemBean
.
chatBtnText
))
{
holder
.
tvChat
.
text
=
"私聊"
holder
.
tvChat
.
text
=
"私聊"
holder
.
tvChat
.
setTextColor
(
ContextCompat
.
getColor
(
context
,
R
.
color
.
consultant_confirm_text_color
))
holder
.
tvChat
.
setTextColor
(
holder
.
tvChat
.
background
=
ContextCompat
.
getDrawable
(
context
,
R
.
drawable
.
consultant_expert_search_chat
)
ContextCompat
.
getColor
(
}
else
{
context
,
R
.
color
.
consultant_confirm_text_color
)
)
holder
.
tvChat
.
background
=
ContextCompat
.
getDrawable
(
context
,
R
.
drawable
.
consultant_expert_search_chat
)
}
else
{
holder
.
tvChat
.
text
=
itemBean
.
chatBtnText
holder
.
tvChat
.
text
=
itemBean
.
chatBtnText
holder
.
tvChat
.
setTextColor
(
ContextCompat
.
getColor
(
context
,
R
.
color
.
platform_color_999999
))
holder
.
tvChat
.
setTextColor
(
holder
.
tvChat
.
background
=
ContextCompat
.
getDrawable
(
context
,
R
.
drawable
.
consultant_expert_search_chat_rest
)
ContextCompat
.
getColor
(
context
,
R
.
color
.
platform_color_999999
)
)
holder
.
tvChat
.
background
=
ContextCompat
.
getDrawable
(
context
,
R
.
drawable
.
consultant_expert_search_chat_rest
)
}
}
//服务时长
//服务时长
val
durationStringBuffer
=
StringBuffer
()
val
durationStringBuffer
=
StringBuffer
()
holder
.
tvSaleDurationForMonth
.
text
=
durationStringBuffer
.
append
(
itemBean
.
allSaleDuration
.
toInt
()).
append
(
""
).
toString
()
holder
.
tvSaleDurationForMonth
.
text
=
durationStringBuffer
.
append
(
itemBean
.
allSaleDuration
.
toInt
()).
append
(
""
).
toString
()
//价格
//价格
val
sb
=
StringBuffer
()
val
sb
=
StringBuffer
()
holder
.
tvPrice
.
text
=
sb
.
append
(
""
).
append
(
itemBean
.
minBookingPrice
).
toString
()
holder
.
tvPrice
.
text
=
sb
.
append
(
""
).
append
(
itemBean
.
minBookingPrice
).
toString
()
//套餐
//套餐
holder
.
ll_products
.
removeAllViews
()
holder
.
ll_products
.
removeAllViews
()
if
(
null
!=
itemBean
.
products
&&
!
itemBean
.
products
.
isEmpty
()){
if
(
null
!=
itemBean
.
products
&&
!
itemBean
.
products
.
isEmpty
())
{
for
(
item
in
itemBean
.
products
)
{
for
(
item
in
itemBean
.
products
)
{
val
view
=
LayoutInflater
.
from
(
context
).
inflate
(
R
.
layout
.
consultant_expert_search_products_item
,
holder
.
ll_tags
,
false
)
val
view
=
LayoutInflater
.
from
(
context
).
inflate
(
if
(
1
==
item
.
isPackage
){
R
.
layout
.
consultant_expert_search_products_item
,
holder
.
ll_tags
,
false
)
if
(
1
==
item
.
isPackage
)
{
view
.
tvTitle
.
text
=
"单次"
view
.
tvTitle
.
text
=
"单次"
view
.
tvTitle
.
setTextColor
(
context
.
resources
.
getColor
(
R
.
color
.
platform_color_1DA1F2
))
view
.
tvTitle
.
setTextColor
(
context
.
resources
.
getColor
(
R
.
color
.
platform_color_1DA1F2
))
view
.
tvTitle
.
background
=
context
.
resources
.
getDrawable
(
R
.
drawable
.
consultant_expert_search_single
)
view
.
tvTitle
.
background
=
context
.
resources
.
getDrawable
(
R
.
drawable
.
consultant_expert_search_single
)
view
.
tvContent
.
text
=
item
.
name
view
.
tvContent
.
text
=
item
.
name
holder
.
ll_products
.
addView
(
view
)
holder
.
ll_products
.
addView
(
view
)
}
else
if
(
2
==
item
.
isPackage
){
}
else
if
(
2
==
item
.
isPackage
)
{
view
.
tvTitle
.
text
=
"套餐"
view
.
tvTitle
.
text
=
"套餐"
view
.
tvTitle
.
setTextColor
(
context
.
resources
.
getColor
(
R
.
color
.
consultant_color_FF9500
))
view
.
tvTitle
.
setTextColor
(
context
.
resources
.
getColor
(
R
.
color
.
consultant_color_FF9500
))
view
.
tvTitle
.
background
=
context
.
resources
.
getDrawable
(
R
.
drawable
.
consultant_expert_search_menu
)
view
.
tvTitle
.
background
=
context
.
resources
.
getDrawable
(
R
.
drawable
.
consultant_expert_search_menu
)
view
.
tvContent
.
text
=
item
.
name
view
.
tvContent
.
text
=
item
.
name
holder
.
ll_products
.
addView
(
view
)
holder
.
ll_products
.
addView
(
view
)
}
else
{
}
else
{
}
}
}
}
...
@@ -277,27 +295,31 @@ class ExpertSearchAdapter(private val context: Context, private val expertSearch
...
@@ -277,27 +295,31 @@ class ExpertSearchAdapter(private val context: Context, private val expertSearch
}
}
}
}
override
fun
getItemCount
():
Int
=
if
(
listData
.
size
<
ExpertSearchActivity
.
PAGE_SIZE
&&
hasMore
)
{
override
fun
getItemCount
():
Int
=
listData
.
size
if
(
listData
.
size
<
ExpertSearchActivity
.
PAGE_SIZE
&&
hasMore
)
{
}
else
{
listData
.
size
listData
.
size
+
1
}
else
{
}
listData
.
size
+
1
}
override
fun
onCreateViewHolder
(
parent
:
ViewGroup
?,
viewType
:
Int
):
RecyclerView
.
ViewHolder
=
override
fun
onCreateViewHolder
(
parent
:
ViewGroup
?,
viewType
:
Int
):
RecyclerView
.
ViewHolder
=
when
(
viewType
)
{
when
(
viewType
)
{
NORMAL_VIEW
->
{
NORMAL_VIEW
->
{
val
view
=
LayoutInflater
.
from
(
context
).
inflate
(
R
.
layout
.
consultant_expert_search_item_view
,
parent
,
false
)
val
view
=
LayoutInflater
.
from
(
context
)
NormalViewHolder
(
view
)
.
inflate
(
R
.
layout
.
consultant_expert_search_item_view
,
parent
,
false
)
}
NormalViewHolder
(
view
)
FOOT_VIEW
->
{
val
view
=
LayoutInflater
.
from
(
context
).
inflate
(
R
.
layout
.
consultant_item_footer
,
parent
,
false
)
FooterViewHolder
(
view
)
}
else
->
{
val
view
=
LayoutInflater
.
from
(
context
).
inflate
(
R
.
layout
.
consultant_item_empty
,
parent
,
false
)
EmptyViewHolder
(
view
)
}
}
}
FOOT_VIEW
->
{
val
view
=
LayoutInflater
.
from
(
context
)
.
inflate
(
R
.
layout
.
consultant_item_footer
,
parent
,
false
)
FooterViewHolder
(
view
)
}
else
->
{
val
view
=
LayoutInflater
.
from
(
context
)
.
inflate
(
R
.
layout
.
consultant_item_empty
,
parent
,
false
)
EmptyViewHolder
(
view
)
}
}
override
fun
getItemViewType
(
position
:
Int
):
Int
=
when
{
override
fun
getItemViewType
(
position
:
Int
):
Int
=
when
{
position
<
listData
.
size
->
NORMAL_VIEW
position
<
listData
.
size
->
NORMAL_VIEW
...
@@ -362,27 +384,46 @@ class ExpertSearchAdapter(private val context: Context, private val expertSearch
...
@@ -362,27 +384,46 @@ class ExpertSearchAdapter(private val context: Context, private val expertSearch
val
itemBean
=
listData
[
adapterPosition
]
val
itemBean
=
listData
[
adapterPosition
]
var
linkUrl
=
itemBean
.
linkUrl
var
linkUrl
=
itemBean
.
linkUrl
if
(!
TextUtils
.
isEmpty
(
cateId
)){
if
(!
TextUtils
.
isEmpty
(
cateId
))
{
linkUrl
=
URLUtils
.
appendParmas
(
linkUrl
,
"cateId"
,
cateId
)
linkUrl
=
URLUtils
.
appendParmas
(
linkUrl
,
"cateId"
,
cateId
)
}
}
ActionCountUtils
.
count
(
ConsultBIConstants
.
ConsultEvent
.
APP_CONSULT_LIST_DOCTOR_CLICK
,
itemBean
.
doctorId
?:
""
)
TempH5RouteUtils
.
tempH5Route
(
linkUrl
)
// var params = URLDecoder.decode( Uri.parse(linkUrl)!!.getQueryParameter("params"),"UTF-8")
if
(
pageIndex
==
0
)
{
// ARouter.getInstance().build("/h5/h5").withSerializable("routerParam",params).navigation()
ActionCountUtils
.
count
(
ConsultBIConstants
.
ConsultEvent
.
APP_CONSULT_LIST_DOCTOR_CLICK
,
itemBean
.
doctorId
?:
""
)
}
else
{
ActionCountUtils
.
count
(
ConsultBIConstants
.
ConsultSearchListEvent
.
APP_CONSULT_SEARCH_LIST_CONSULT_ITEM_CLICK
,
itemBean
.
doctorId
?:
""
)
}
TempH5RouteUtils
.
tempH5Route
(
linkUrl
)
}
}
}
}
itemView
.
tvChat
.
setOnClickListener
{
itemView
.
tvChat
.
setOnClickListener
{
if
(
adapterPosition
!=
RecyclerView
.
NO_POSITION
)
{
if
(
adapterPosition
!=
RecyclerView
.
NO_POSITION
)
{
val
doctor
=
listData
[
adapterPosition
]
if
(
pageIndex
==
0
)
{
ActionCountUtils
.
count
(
ConsultBIConstants
.
ConsultEvent
.
APP_CONSULT_LIST_CHAT_CLICK
,
doctor
.
doctorId
?:
""
)
}
else
{
ActionCountUtils
.
count
(
ConsultBIConstants
.
ConsultSearchListEvent
.
APP_CONSULT_SEARCH_LIST_CHAT_CLICK
,
doctor
.
doctorId
?:
""
)
}
//判断是否已登录
//判断是否已登录
if
(!
ConsultantIn
.
getUserImpl
().
isLogin
())
{
if
(!
ConsultantIn
.
getUserImpl
().
isLogin
())
{
TempH5RouteUtils
.
tempH5Route
(
IYDLRouterConstant
.
ROUTER_MINE_LOGIN
)
TempH5RouteUtils
.
tempH5Route
(
IYDLRouterConstant
.
ROUTER_MINE_LOGIN
)
return
@setOnClickListener
return
@setOnClickListener
}
}
val
doctor
=
listData
[
adapterPosition
]
ActionCountUtils
.
count
(
ConsultBIConstants
.
ConsultEvent
.
APP_CONSULT_LIST_CHAT_CLICK
,
doctor
.
doctorId
?:
""
)
if
(!
TextUtils
.
isEmpty
(
doctor
.
uid
))
{
if
(!
TextUtils
.
isEmpty
(
doctor
.
uid
))
{
//跳转私聊
//跳转私聊
...
@@ -393,10 +434,10 @@ class ExpertSearchAdapter(private val context: Context, private val expertSearch
...
@@ -393,10 +434,10 @@ class ExpertSearchAdapter(private val context: Context, private val expertSearch
if
(!
TextUtils
.
isEmpty
(
entranceName
))
{
if
(!
TextUtils
.
isEmpty
(
entranceName
))
{
LogUtil
.
d
(
"entrance name: $entranceName"
)
LogUtil
.
d
(
"entrance name: $entranceName"
)
BuryPointUtils
.
getInstance
().
createMap
()
BuryPointUtils
.
getInstance
().
createMap
()
.
put
(
"expert_entrance"
,
entranceName
?:
""
)
.
put
(
"expert_entrance"
,
entranceName
?:
""
)
.
put
(
"expert_ID"
,
doctor
.
doctorId
?:
0
)
.
put
(
"expert_ID"
,
doctor
.
doctorId
?:
0
)
.
put
(
"expert_name"
,
doctor
.
name
?:
""
)
.
put
(
"expert_name"
,
doctor
.
name
?:
""
)
.
burryPoint
(
"Chat_click"
)
.
burryPoint
(
"Chat_click"
)
}
}
}
}
}
}
...
...
m-consultant/src/main/java/com/yidianling/consultant/constants/ConsultBIConstants.kt
View file @
d2e3abca
...
@@ -32,6 +32,19 @@ class ConsultBIConstants {
...
@@ -32,6 +32,19 @@ class ConsultBIConstants {
const
val
APP_CONSULT_LIST_CHAT_CLICK
:
String
=
APP_CONSULT_LIST_PAGE
+
"app_consult_list_chat_click"
//每个咨询师私聊
const
val
APP_CONSULT_LIST_CHAT_CLICK
:
String
=
APP_CONSULT_LIST_PAGE
+
"app_consult_list_chat_click"
//每个咨询师私聊
}
}
}
}
class
ConsultSearchListEvent
{
companion
object
{
private
const
val
CONSULT_SEARCH_LIST_PAGE
:
String
=
"consul_search_list_page|"
//APP咨询搜索列表页 partId
const
val
APP_CONSULT_SEARCH_LIST_PAGE_VISIT
:
String
=
CONSULT_SEARCH_LIST_PAGE
+
"consul_search_list_page_visit"
//列表页浏览事件
const
val
APP_CONSULT_SEARCH_LIST_CONSULT_ITEM_CLICK
:
String
=
CONSULT_SEARCH_LIST_PAGE
+
"consult_search_list_doctor_click "
//每个咨询师页面点击
const
val
APP_CONSULT_SEARCH_LIST_CHAT_CLICK
:
String
=
CONSULT_SEARCH_LIST_PAGE
+
"consult__search_list_chat_click"
//每个咨询师私聊
}
}
class
UserMainEvent
{
class
UserMainEvent
{
companion
object
{
companion
object
{
...
...
m-consultant/src/main/res/layout/consultant_activity_expert_search_list.xml
View file @
d2e3abca
...
@@ -11,57 +11,67 @@
...
@@ -11,57 +11,67 @@
layout=
"@layout/consultant_layout_search_toolbar"
layout=
"@layout/consultant_layout_search_toolbar"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"48dp"
/>
android:layout_height=
"48dp"
/>
<com.yidianling.consultant.ui.view.ExpertSearchSwipeRefreshLayout
<com.yidianling.consultant.ui.view.ExpertSearchSwipeRefreshLayout
android:id=
"@+id/srlContainer"
android:id=
"@+id/srlContainer"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
android:layout_height=
"match_parent"
>
<android.support.design.widget.CoordinatorLayout
<android.support.design.widget.CoordinatorLayout
android:id=
"@+id/container"
android:id=
"@+id/container"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/consultant_colorBg"
tools:ignore=
"InefficientWeight"
>
<android.support.design.widget.AppBarLayout
android:id=
"@+id/appbar_layout"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"
wrap_cont
ent"
android:layout_height=
"
match_par
ent"
android:background=
"@color/consultant_colorBg"
android:background=
"@color/consultant_colorBg"
android:clipChildren=
"false"
tools:ignore=
"InefficientWeight"
>
android:clipToPadding=
"false"
android:theme=
"@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:elevation=
"0dp"
>
<android.support.design.widget.CollapsingToolbarLayout
<android.support.design.widget.AppBarLayout
android:id=
"@+id/appbar_layout"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/consultant_colorBg"
android:clipChildren=
"false"
android:clipChildren=
"false"
android:clipToPadding=
"false"
android:clipToPadding=
"false"
app:layout_scrollFlags=
"scroll|exitUntilCollapsed"
>
android:theme=
"@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:elevation=
"0dp"
>
<com.yidianling.consultant.ui.view.topView.RecommendListView
<android.support.design.widget.CollapsingToolbarLayout
android:id=
"@+id/recommendListView"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
android:layout_height=
"match_parent"
</com.yidianling.consultant.ui.view.topView.RecommendListView>
android:clipChildren=
"false"
android:clipToPadding=
"false"
app:layout_scrollFlags=
"scroll|exitUntilCollapsed"
>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<include
layout=
"@layout/consultant_layout_search_content"
/>
<!-- 心理咨询app华为渠道紧急处理,咨询师列表页先简单粗暴的隐藏顶部推荐模块-->
<RelativeLayout
android:id=
"@+id/rl_hot_fix_for_huawei"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:visibility=
"gone"
>
<!--<include layout="@layout/layout_search_head_input"/>-->
<com.yidianling.consultant.ui.view.topView.RecommendListView
android:id=
"@+id/recommendListView"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
/>
</RelativeLayout>
<!--筛选弹窗半透明背景-->
<View
android:id=
"@+id/viewDim_filter"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"#40000000"
android:visibility=
"gone"
/>
</android.support.design.widget.CoordinatorLayout>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<include
layout=
"@layout/consultant_layout_search_content"
/>
<!--<include layout="@layout/layout_search_head_input"/>-->
<!--筛选弹窗半透明背景-->
<View
android:id=
"@+id/viewDim_filter"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"#40000000"
android:visibility=
"gone"
/>
</android.support.design.widget.CoordinatorLayout>
</com.yidianling.consultant.ui.view.ExpertSearchSwipeRefreshLayout>
</com.yidianling.consultant.ui.view.ExpertSearchSwipeRefreshLayout>
...
...
m-consultant/src/xlzx/res/drawable-xhdpi/consultant_assistant_dialog_img.png
0 → 100644
View file @
d2e3abca
49.9 KB
m-consultant/src/xlzx/res/drawable/consultant_assistant_dialog_text_bg.xml
0 → 100644
View file @
d2e3abca
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:shape=
"rectangle"
>
<corners
android:topLeftRadius=
"8dp"
android:bottomLeftRadius=
"8dp"
/>
<gradient
android:angle=
"0"
android:startColor=
"#CC1DA1F2"
android:endColor=
"#CC1DA1F2"
/>
</shape>
\ No newline at end of file
m-consultant/src/
main
/res/drawable-xhdpi/consultant_assistant_dialog_img.png
→
m-consultant/src/
ydl
/res/drawable-xhdpi/consultant_assistant_dialog_img.png
View file @
d2e3abca
File moved
m-consultant/src/
main
/res/drawable/consultant_assistant_dialog_text_bg.xml
→
m-consultant/src/
ydl
/res/drawable/consultant_assistant_dialog_text_bg.xml
View file @
d2e3abca
File moved
m-home/src/xlzx/java/com/yidianling/home/adapter/YdlHomeAdapter.kt
View file @
d2e3abca
...
@@ -2,13 +2,14 @@ package com.yidianling.home.adapter
...
@@ -2,13 +2,14 @@ package com.yidianling.home.adapter
import
android.content.Context
import
android.content.Context
import
android.support.v7.widget.RecyclerView
import
android.support.v7.widget.RecyclerView
import
android.text.TextUtils
import
android.view.LayoutInflater
import
android.view.LayoutInflater
import
android.view.View
import
android.view.View
import
android.view.ViewGroup
import
android.view.ViewGroup
import
com.ydl.ydlcommon.data.PlatformDataManager.getRam
import
com.yidianling.home.R
import
com.yidianling.home.R
import
com.yidianling.home.constract.YdlHomeViewHolderConstract
import
com.yidianling.home.constract.YdlHomeViewHolderConstract
import
com.yidianling.home.event.HomeImpl
import
com.yidianling.home.event.HomeImpl
import
com.yidianling.home.event.IHomeEvent
import
com.yidianling.home.model.bean.HomeAskBean
import
com.yidianling.home.model.bean.HomeAskBean
import
com.yidianling.home.model.bean.HomeConfideBean
import
com.yidianling.home.model.bean.HomeConfideBean
import
com.yidianling.home.model.bean.HomeConsultBean
import
com.yidianling.home.model.bean.HomeConsultBean
...
@@ -22,9 +23,11 @@ import com.yidianling.home.ui.view.*
...
@@ -22,9 +23,11 @@ import com.yidianling.home.ui.view.*
* @Company 壹点灵
* @Company 壹点灵
* @date 2019/02/13
* @date 2019/02/13
*/
*/
class
YdlHomeAdapter
(
private
val
mContext
:
Context
,
class
YdlHomeAdapter
(
private
var
homeEvent
:
HomeImpl
,
private
val
mContext
:
Context
,
private
var
list
:
ArrayList
<
HomePagerDataBean
>)
:
RecyclerView
.
Adapter
<
RecyclerView
.
ViewHolder
>()
{
private
var
homeEvent
:
HomeImpl
,
private
var
list
:
ArrayList
<
HomePagerDataBean
>
)
:
RecyclerView
.
Adapter
<
RecyclerView
.
ViewHolder
>()
{
private
val
mInflater
:
LayoutInflater
=
LayoutInflater
.
from
(
mContext
)
private
val
mInflater
:
LayoutInflater
=
LayoutInflater
.
from
(
mContext
)
/**
/**
...
@@ -141,11 +144,17 @@ class YdlHomeAdapter(private val mContext: Context,
...
@@ -141,11 +144,17 @@ class YdlHomeAdapter(private val mContext: Context,
when
(
holder
)
{
when
(
holder
)
{
//顶部预约专家,即时倾诉,心理课堂,心理测试按钮模块
//顶部预约专家,即时倾诉,心理课堂,心理测试按钮模块
is
HomeButtonBannerViewHolder
->
{
is
HomeButtonBannerViewHolder
->
{
holder
.
buttonBannerView
.
initData
(
list
[
position
].
headerBean
?.
homeSaleData
,
list
[
position
].
headerBean
?.
askCategoryData
)
holder
.
buttonBannerView
.
initData
(
list
[
position
].
headerBean
?.
homeSaleData
,
list
[
position
].
headerBean
?.
askCategoryData
)
}
}
//倾诉*排解模块
//倾诉*排解模块
is
HomeConfideViewHolder
->
{
is
HomeConfideViewHolder
->
{
holder
.
confideViewView
.
setTitle
(
list
[
position
].
headerBean
?.
listenCategoryDate
,
confideSelectPosition
)
holder
.
confideViewView
.
setTitle
(
list
[
position
].
headerBean
?.
listenCategoryDate
,
confideSelectPosition
)
holder
.
confideViewView
.
setConfideExpertInfoView
(
list
[
position
].
confideBean
?.
body
)
holder
.
confideViewView
.
setConfideExpertInfoView
(
list
[
position
].
confideBean
?.
body
)
confidePosition
=
position
confidePosition
=
position
}
}
...
@@ -155,7 +164,15 @@ class YdlHomeAdapter(private val mContext: Context,
...
@@ -155,7 +164,15 @@ class YdlHomeAdapter(private val mContext: Context,
}
}
//解忧*问答模块
//解忧*问答模块
is
HomeAssuageGriefViewHolder
->
{
is
HomeAssuageGriefViewHolder
->
{
holder
.
assuageGriefViewView
.
initData
(
position
,
list
[
position
].
askBean
?.
data
)
val
ffrom
=
getRam
().
getChannelName
()
if
(!
TextUtils
.
isEmpty
(
ffrom
)
&&
ffrom
.
endsWith
(
"huawei"
))
{
val
parm
=
holder
.
itemView
.
layoutParams
parm
.
height
=
0
holder
.
itemView
.
layoutParams
=
parm
}
else
{
holder
.
assuageGriefViewView
.
initData
(
position
,
list
[
position
].
askBean
?.
data
)
}
}
}
//文章*阅读模块
//文章*阅读模块
is
HomeArticleViewHolder
->
{
is
HomeArticleViewHolder
->
{
...
@@ -163,8 +180,14 @@ class YdlHomeAdapter(private val mContext: Context,
...
@@ -163,8 +180,14 @@ class YdlHomeAdapter(private val mContext: Context,
}
}
//咨询模块
//咨询模块
is
HomeConsultViewHolder
->
{
is
HomeConsultViewHolder
->
{
holder
.
consultView
.
setTitle
(
list
[
position
].
headerBean
?.
consultCategoryData
,
consultSelectPosition
)
holder
.
consultView
.
setTitle
(
holder
.
consultView
.
setConsultInfoView
(
list
[
position
].
consultBean
?.
list
,
list
[
position
].
headerBean
?.
consultCategoryData
?.
get
(
consultSelectPosition
))
list
[
position
].
headerBean
?.
consultCategoryData
,
consultSelectPosition
)
holder
.
consultView
.
setConsultInfoView
(
list
[
position
].
consultBean
?.
list
,
list
[
position
].
headerBean
?.
consultCategoryData
?.
get
(
consultSelectPosition
)
)
consultPosition
=
position
consultPosition
=
position
}
}
//测试模块
//测试模块
...
@@ -177,25 +200,30 @@ class YdlHomeAdapter(private val mContext: Context,
...
@@ -177,25 +200,30 @@ class YdlHomeAdapter(private val mContext: Context,
override
fun
getItemCount
():
Int
{
override
fun
getItemCount
():
Int
{
return
list
.
size
return
list
.
size
}
}
/**
/**
* 顶部预约专家,即时倾诉,心理测试按钮模块 ViewHolder
* 顶部预约专家,即时倾诉,心理测试按钮模块 ViewHolder
*/
*/
inner
class
HomeButtonBannerViewHolder
(
val
buttonBannerView
:
HomeButtonBannerView
)
:
RecyclerView
.
ViewHolder
(
buttonBannerView
)
inner
class
HomeButtonBannerViewHolder
(
val
buttonBannerView
:
HomeButtonBannerView
)
:
RecyclerView
.
ViewHolder
(
buttonBannerView
)
/**
/**
* 咨询模块 ViewHolder
* 咨询模块 ViewHolder
*/
*/
inner
class
HomeConsultViewHolder
(
val
consultView
:
HomeConsultView
)
:
RecyclerView
.
ViewHolder
(
consultView
)
inner
class
HomeConsultViewHolder
(
val
consultView
:
HomeConsultView
)
:
RecyclerView
.
ViewHolder
(
consultView
)
/**
/**
* 倾诉*排解模块 ViewHolder
* 倾诉*排解模块 ViewHolder
*/
*/
inner
class
HomeConfideViewHolder
(
val
confideViewView
:
HomeConfideView
)
:
RecyclerView
.
ViewHolder
(
confideViewView
)
inner
class
HomeConfideViewHolder
(
val
confideViewView
:
HomeConfideView
)
:
RecyclerView
.
ViewHolder
(
confideViewView
)
/**
/**
* 课程*成长模块 ViewHolder
* 课程*成长模块 ViewHolder
*/
*/
inner
class
HomeCourseViewHolder
(
val
courseViewView
:
HomeCourseView
)
:
RecyclerView
.
ViewHolder
(
courseViewView
)
inner
class
HomeCourseViewHolder
(
val
courseViewView
:
HomeCourseView
)
:
RecyclerView
.
ViewHolder
(
courseViewView
)
/**
/**
* 测试模块 ViewHolder
* 测试模块 ViewHolder
...
@@ -205,11 +233,14 @@ class YdlHomeAdapter(private val mContext: Context,
...
@@ -205,11 +233,14 @@ class YdlHomeAdapter(private val mContext: Context,
/**
/**
* 解忧*问答模块 ViewHolder
* 解忧*问答模块 ViewHolder
*/
*/
inner
class
HomeAssuageGriefViewHolder
(
val
assuageGriefViewView
:
HomeAssuageGriefView
)
:
RecyclerView
.
ViewHolder
(
assuageGriefViewView
)
inner
class
HomeAssuageGriefViewHolder
(
val
assuageGriefViewView
:
HomeAssuageGriefView
)
:
RecyclerView
.
ViewHolder
(
assuageGriefViewView
)
/**
/**
* 文章*阅读模块 ViewHolder
* 文章*阅读模块 ViewHolder
*/
*/
inner
class
HomeArticleViewHolder
(
val
articleViewView
:
HomeArticleView
)
:
RecyclerView
.
ViewHolder
(
articleViewView
)
inner
class
HomeArticleViewHolder
(
val
articleViewView
:
HomeArticleView
)
:
RecyclerView
.
ViewHolder
(
articleViewView
)
/**
/**
* 底部提示语模块 ViewHolder
* 底部提示语模块 ViewHolder
...
...
m-home/src/xlzx/java/com/yidianling/home/ui/view/HomeAssuageGriefView.kt
View file @
d2e3abca
package
com.yidianling.home.ui.view
package
com.yidianling.home.ui.view
import
android.content.Context
import
android.content.Context
import
android.graphics.Color
import
android.view.View
import
android.view.View
import
android.view.ViewGroup
import
android.view.ViewGroup
import
android.widget.LinearLayout
import
android.widget.LinearLayout
...
@@ -33,6 +34,7 @@ class HomeAssuageGriefView(private val mContext: Context, private var homeEvent:
...
@@ -33,6 +34,7 @@ class HomeAssuageGriefView(private val mContext: Context, private var homeEvent:
)
)
layoutParams
=
params
layoutParams
=
params
View
.
inflate
(
mContext
,
R
.
layout
.
home_assuage_grief_view
,
this
)
View
.
inflate
(
mContext
,
R
.
layout
.
home_assuage_grief_view
,
this
)
setBackgroundColor
(
Color
.
GREEN
)
homeModuleAssuageGriefViewHomeCommonTitleView
.
setTitle
(
"解忧·问答"
)
homeModuleAssuageGriefViewHomeCommonTitleView
.
setTitle
(
"解忧·问答"
)
homeModuleAssuageGriefViewHomeCommonTitleView
.
setOnClickListener
{
homeModuleAssuageGriefViewHomeCommonTitleView
.
setOnClickListener
{
homeEvent
?.
askMoreClick
()
homeEvent
?.
askMoreClick
()
...
@@ -42,6 +44,7 @@ class HomeAssuageGriefView(private val mContext: Context, private var homeEvent:
...
@@ -42,6 +44,7 @@ class HomeAssuageGriefView(private val mContext: Context, private var homeEvent:
fun
initData
(
position
:
Int
,
list
:
List
<
HomeAskBean
.
DataBean
>?)
{
fun
initData
(
position
:
Int
,
list
:
List
<
HomeAskBean
.
DataBean
>?)
{
//添加View
//添加View
if
(
list
==
null
)
{
if
(
list
==
null
)
{
visibility
=
View
.
GONE
return
return
}
}
if
(
cacheList
.
size
!=
list
?.
size
)
{
if
(
cacheList
.
size
!=
list
?.
size
)
{
...
...
m-home/src/xlzx/java/com/yidianling/home/ui/view/HomeButtonBannerView.kt
View file @
d2e3abca
package
com.yidianling.home.ui.view
package
com.yidianling.home.ui.view
import
android.content.Context
import
android.content.Context
import
android.graphics.Color
import
android.support.v7.widget.RecyclerView
import
android.support.v7.widget.RecyclerView
import
android.text.TextUtils
import
android.view.View
import
android.view.View
import
android.view.ViewGroup
import
android.view.ViewGroup
import
android.widget.FrameLayout
import
android.widget.FrameLayout
import
android.widget.LinearLayout
import
android.widget.LinearLayout
import
com.ydl.ydlcommon.data.PlatformDataManager
import
com.yidianling.common.tools.RxImageTool
import
com.yidianling.common.tools.RxImageTool
import
com.yidianling.home.R
import
com.yidianling.home.R
import
com.yidianling.home.event.IHomeBaseEvent
import
com.yidianling.home.event.IHomeBaseEvent
...
@@ -56,6 +59,28 @@ class HomeButtonBannerView(private val mContext: Context, private var homeEvent:
...
@@ -56,6 +59,28 @@ class HomeButtonBannerView(private val mContext: Context, private var homeEvent:
// initButtonView()
// initButtonView()
val
ffrom
=
PlatformDataManager
.
getRam
().
getChannelName
()
if
(!
TextUtils
.
isEmpty
(
ffrom
)
&&
ffrom
.
endsWith
(
"huawei"
))
{
homeModuleButtonBannerFirst
.
background
=
resources
.
getDrawable
(
R
.
drawable
.
home_dcotor_bt_bg_huawei
)
homeModuleButtonBannerSecond
.
background
=
resources
.
getDrawable
(
R
.
drawable
.
home_test_bt_bg_hauwei
)
homeModuleButtonBannerThird
.
background
=
resources
.
getDrawable
(
R
.
drawable
.
home_course_bt_bg_huawei
)
homeModuleButtonBannerFourth
.
background
=
resources
.
getDrawable
(
R
.
drawable
.
home_listen_bt_bg_huawei
)
homeModuleButtonBannerFirstTitle
.
setTextColor
(
Color
.
WHITE
)
tv_first_text
.
setTextColor
(
Color
.
WHITE
)
homeModuleButtonBannerFourthTitle
.
setTextColor
(
Color
.
WHITE
)
tv_second_text
.
setTextColor
(
Color
.
WHITE
)
homeModuleButtonBannerThirdTitle
.
setTextColor
(
Color
.
WHITE
)
tv_third_text
.
setTextColor
(
Color
.
WHITE
)
homeModuleButtonBannerSecondTitle
.
setTextColor
(
Color
.
WHITE
)
tv_fourth_text
.
setTextColor
(
Color
.
WHITE
)
}
homeModuleButtonBannerFirst
.
setOnClickListener
{
homeModuleButtonBannerFirst
.
setOnClickListener
{
homeEvent
?.
reservationExpertsClick
()
homeEvent
?.
reservationExpertsClick
()
}
}
...
...
m-home/src/xlzx/res/drawable-xhdpi/home_course_bt_bg_huawei.png
0 → 100644
View file @
d2e3abca
21.9 KB
m-home/src/xlzx/res/drawable-xhdpi/home_dcotor_bt_bg_huawei.png
0 → 100644
View file @
d2e3abca
21.4 KB
m-home/src/xlzx/res/drawable-xhdpi/home_listen_bt_bg_huawei.png
0 → 100644
View file @
d2e3abca
21.5 KB
m-home/src/xlzx/res/drawable-xhdpi/home_test_bt_bg_hauwei.png
0 → 100644
View file @
d2e3abca
20.8 KB
m-home/src/xlzx/res/layout/home_button_banner_view.xml
View file @
d2e3abca
...
@@ -5,11 +5,6 @@
...
@@ -5,11 +5,6 @@
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
>
android:orientation=
"vertical"
>
<com.yidianling.home.ui.widget.HomeModuleCategoryView
android:id=
"@+id/home_category_view"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
/>
<LinearLayout
<LinearLayout
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
...
@@ -17,8 +12,8 @@
...
@@ -17,8 +12,8 @@
android:layout_marginTop=
"8dp"
android:layout_marginTop=
"8dp"
android:layout_marginRight=
"15dp"
android:layout_marginRight=
"15dp"
android:gravity=
"center_horizontal"
android:gravity=
"center_horizontal"
android:
orientation=
"horizontal
"
android:
paddingBottom=
"12dp
"
android:
paddingBottom=
"20dp
"
>
android:
orientation=
"horizontal
"
>
<RelativeLayout
<RelativeLayout
...
@@ -29,22 +24,23 @@
...
@@ -29,22 +24,23 @@
android:layout_marginRight=
"8dp"
android:layout_marginRight=
"8dp"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:background=
"@drawable/home_dcotor_bt_bg"
android:background=
"@drawable/home_dcotor_bt_bg"
android:gravity=
"center"
>
android:gravity=
"center
_horizontal
"
>
<TextView
<TextView
android:id=
"@+id/homeModuleButtonBannerFirstTitle"
android:id=
"@+id/homeModuleButtonBannerFirstTitle"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"7dp"
android:text=
"预约咨询"
android:text=
"预约咨询"
android:textColor=
"@color/platform_black"
android:textColor=
"@color/platform_black"
android:textSize=
"@dimen/platform_dp_16"
android:textSize=
"@dimen/platform_dp_16"
android:textStyle=
"bold"
/>
android:textStyle=
"bold"
/>
<TextView
<TextView
android:id=
"@+id/tv_first_text"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_below=
"@+id/homeModuleButtonBannerFirstTitle"
android:layout_below=
"@+id/homeModuleButtonBannerFirstTitle"
android:layout_marginTop=
"2dp"
android:text=
"1W+师资"
android:text=
"1W+师资"
android:textColor=
"@color/platform_color_444444"
android:textColor=
"@color/platform_color_444444"
android:textSize=
"@dimen/platform_dp_11"
/>
android:textSize=
"@dimen/platform_dp_11"
/>
...
@@ -58,22 +54,23 @@
...
@@ -58,22 +54,23 @@
android:layout_marginRight=
"8dp"
android:layout_marginRight=
"8dp"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:background=
"@drawable/home_listen_bt_bg"
android:background=
"@drawable/home_listen_bt_bg"
android:gravity=
"center"
>
android:gravity=
"center
_horizontal
"
>
<TextView
<TextView
android:id=
"@+id/homeModuleButtonBannerFourthTitle"
android:id=
"@+id/homeModuleButtonBannerFourthTitle"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"7dp"
android:text=
"心理测试"
android:text=
"心理测试"
android:textColor=
"@color/platform_black"
android:textColor=
"@color/platform_black"
android:textSize=
"@dimen/platform_dp_16"
android:textSize=
"@dimen/platform_dp_16"
android:textStyle=
"bold"
/>
android:textStyle=
"bold"
/>
<TextView
<TextView
android:id=
"@+id/tv_second_text"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_below=
"@+id/homeModuleButtonBannerFourthTitle"
android:layout_below=
"@+id/homeModuleButtonBannerFourthTitle"
android:layout_marginTop=
"2dp"
android:text=
"专业权威"
android:text=
"专业权威"
android:textColor=
"@color/platform_color_444444"
android:textColor=
"@color/platform_color_444444"
android:textSize=
"@dimen/platform_dp_11"
/>
android:textSize=
"@dimen/platform_dp_11"
/>
...
@@ -87,23 +84,24 @@
...
@@ -87,23 +84,24 @@
android:layout_marginRight=
"8dp"
android:layout_marginRight=
"8dp"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:background=
"@drawable/home_course_bt_bg"
android:background=
"@drawable/home_course_bt_bg"
android:gravity=
"center"
android:gravity=
"center
_horizontal
"
android:orientation=
"vertical"
>
android:orientation=
"vertical"
>
<TextView
<TextView
android:id=
"@+id/homeModuleButtonBannerThirdTitle"
android:id=
"@+id/homeModuleButtonBannerThirdTitle"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"7dp"
android:text=
"心理课堂"
android:text=
"心理课堂"
android:textColor=
"@color/platform_black"
android:textColor=
"@color/platform_black"
android:textSize=
"@dimen/platform_dp_16"
android:textSize=
"@dimen/platform_dp_16"
android:textStyle=
"bold"
/>
android:textStyle=
"bold"
/>
<TextView
<TextView
android:id=
"@+id/tv_third_text"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_below=
"@+id/homeModuleButtonBannerThirdTitle"
android:layout_below=
"@+id/homeModuleButtonBannerThirdTitle"
android:layout_marginTop=
"2dp"
android:text=
"学习与成长"
android:text=
"学习与成长"
android:textColor=
"@color/platform_color_444444"
android:textColor=
"@color/platform_color_444444"
android:textSize=
"@dimen/platform_dp_11"
/>
android:textSize=
"@dimen/platform_dp_11"
/>
...
@@ -114,59 +112,38 @@
...
@@ -114,59 +112,38 @@
android:layout_width=
"0dp"
android:layout_width=
"0dp"
android:layout_height=
"78dp"
android:layout_height=
"78dp"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:background=
"@drawable/home_test_bt_bg"
>
android:background=
"@drawable/home_test_bt_bg"
android:gravity=
"center_horizontal"
>
<RelativeLayout
<TextView
android:id=
"@+id/homeModuleButtonBannerSecondTitle"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_alignParentLeft=
"true"
android:layout_gravity=
"center"
android:background=
"@drawable/home_button_first_free_bg"
android:layout_marginTop=
"7dp"
android:paddingLeft=
"5dp"
android:text=
"即时倾诉"
android:paddingTop=
"1dp"
android:textColor=
"@color/platform_black"
android:paddingRight=
"5dp"
android:textSize=
"@dimen/platform_dp_16"
android:paddingBottom=
"1dp"
android:textStyle=
"bold"
/>
android:visibility=
"gone"
/>
<TextView
<LinearLayout
android:id=
"@+id/tv_fourth_text"
android:layout_width=
"match_parent"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_below=
"@+id/homeModuleButtonBannerSecondTitle"
android:layout_centerVertical=
"true"
android:layout_centerVertical=
"true"
android:layout_gravity=
"center_horizontal"
android:text=
"专业解忧"
android:gravity=
"center_vertical"
android:textColor=
"@color/platform_color_444444"
android:orientation=
"vertical"
>
android:textSize=
"@dimen/platform_dp_11"
/>
<LinearLayout
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:orientation=
"vertical"
>
<TextView
android:id=
"@+id/homeModuleButtonBannerSecondTitle"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:text=
"即时倾诉"
android:textColor=
"@color/platform_black"
android:textSize=
"@dimen/platform_dp_16"
android:textStyle=
"bold"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_below=
"@+id/homeModuleButtonBannerSecondTitle"
android:layout_centerVertical=
"true"
android:layout_marginTop=
"2dp"
android:text=
"专业解忧"
android:textColor=
"@color/platform_color_444444"
android:textSize=
"@dimen/platform_dp_11"
/>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
</LinearLayout>
</LinearLayout>
<com.yidianling.home.ui.widget.HomeModuleCategoryView
android:id=
"@+id/home_category_view"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
/>
</LinearLayout>
</LinearLayout>
m-im/src/main/java/com/yidianling/uikit/custom/widget/ConfideOrderInfoView.java
View file @
d2e3abca
...
@@ -36,7 +36,6 @@ public class ConfideOrderInfoView extends RelativeLayout {
...
@@ -36,7 +36,6 @@ public class ConfideOrderInfoView extends RelativeLayout {
private
String
mSessionId
;
private
String
mSessionId
;
private
IP2PCustomActionHandler
.
DocInfo
info
=
null
;
private
IP2PCustomActionHandler
.
DocInfo
info
=
null
;
private
TextView
tv_status
=
null
;
private
TextView
tv_status
=
null
;
private
TextView
tv_tips
=
null
;
private
TextView
tv_action
=
null
;
private
TextView
tv_action
=
null
;
private
TextView
tv_order_info
=
null
;
private
TextView
tv_order_info
=
null
;
private
ImageView
iv_call
=
null
;
private
ImageView
iv_call
=
null
;
...
@@ -61,7 +60,6 @@ public class ConfideOrderInfoView extends RelativeLayout {
...
@@ -61,7 +60,6 @@ public class ConfideOrderInfoView extends RelativeLayout {
View
.
inflate
(
mContext
,
R
.
layout
.
im_nim_chat_confide_order_info_view
,
this
);
View
.
inflate
(
mContext
,
R
.
layout
.
im_nim_chat_confide_order_info_view
,
this
);
setBackground
(
getResources
().
getDrawable
(
R
.
drawable
.
im_bg_im_confide_action
));
setBackground
(
getResources
().
getDrawable
(
R
.
drawable
.
im_bg_im_confide_action
));
tv_status
=
findViewById
(
R
.
id
.
tv_status
);
tv_status
=
findViewById
(
R
.
id
.
tv_status
);
tv_tips
=
findViewById
(
R
.
id
.
tv_tips
);
tv_action
=
findViewById
(
R
.
id
.
tv_action
);
tv_action
=
findViewById
(
R
.
id
.
tv_action
);
iv_call
=
findViewById
(
R
.
id
.
iv_call
);
iv_call
=
findViewById
(
R
.
id
.
iv_call
);
tv_order_info
=
findViewById
(
R
.
id
.
tv_order_info
);
tv_order_info
=
findViewById
(
R
.
id
.
tv_order_info
);
...
@@ -78,7 +76,6 @@ public class ConfideOrderInfoView extends RelativeLayout {
...
@@ -78,7 +76,6 @@ public class ConfideOrderInfoView extends RelativeLayout {
//有未完成订单
//有未完成订单
if
(
info
.
hasAvailableListenOrder
==
2
)
{
if
(
info
.
hasAvailableListenOrder
==
2
)
{
tv_status
.
setText
(
"剩余时间:"
+
coverTime
(
Integer
.
valueOf
(
info
.
listenOrderRemainTime
)));
tv_status
.
setText
(
"剩余时间:"
+
coverTime
(
Integer
.
valueOf
(
info
.
listenOrderRemainTime
)));
tv_tips
.
setVisibility
(
View
.
GONE
);
if
(
info
.
is_online
==
3
)
{
//通话中
if
(
info
.
is_online
==
3
)
{
//通话中
...
@@ -98,7 +95,6 @@ public class ConfideOrderInfoView extends RelativeLayout {
...
@@ -98,7 +95,6 @@ public class ConfideOrderInfoView extends RelativeLayout {
tv_action
.
setBackground
(
getResources
().
getDrawable
(
R
.
drawable
.
im_background_chat_confide_order_action
));
tv_action
.
setBackground
(
getResources
().
getDrawable
(
R
.
drawable
.
im_background_chat_confide_order_action
));
tv_action
.
setTextColor
(
getResources
().
getColor
(
R
.
color
.
im_white
));
tv_action
.
setTextColor
(
getResources
().
getColor
(
R
.
color
.
im_white
));
tv_action
.
setText
(
"去评价"
);
tv_action
.
setText
(
"去评价"
);
tv_tips
.
setVisibility
(
View
.
VISIBLE
);
}
}
tv_order_info
.
setText
(
info
.
listenOrderDesc
);
tv_order_info
.
setText
(
info
.
listenOrderDesc
);
}
}
...
...
m-im/src/main/res_uikit/layout/im_nim_chat_confide_order_info_view.xml
View file @
d2e3abca
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<merge
xmlns:android=
"http://schemas.android.com/apk/res/android"
<merge
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
tools:parentTag=
"android.widget.RelativeLayout"
>
tools:parentTag=
"android.widget.RelativeLayout"
>
<TextView
<TextView
android:id=
"@+id/tv_order_style"
android:id=
"@+id/tv_order_style"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"15dp"
android:layout_marginLeft=
"15dp"
android:layout_marginTop=
"18dp"
android:layout_marginTop=
"18dp"
android:background=
"@drawable/im_background_chat_confide_order_stytle"
android:background=
"@drawable/im_background_chat_confide_order_stytle"
android:paddingLeft=
"5dp"
android:paddingLeft=
"5dp"
android:paddingRight=
"5dp"
android:paddingRight=
"5dp"
android:text=
"倾诉"
android:text=
"倾诉"
android:textColor=
"@color/platform_color_1DA1F2"
android:textColor=
"@color/platform_color_1DA1F2"
android:textSize=
"11sp"
/>
android:textSize=
"11sp"
/>
<TextView
<TextView
android:id=
"@+id/tv_status"
android:id=
"@+id/tv_status"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"6dp"
android:layout_marginLeft=
"6dp"
android:layout_marginTop=
"16dp"
android:layout_marginTop=
"16dp"
android:layout_toRightOf=
"@+id/tv_order_style"
android:layout_toRightOf=
"@+id/tv_order_style"
android:textColor=
"@color/im_color_242424"
android:textColor=
"@color/im_color_242424"
android:textSize=
"15sp"
android:textSize=
"15sp"
android:textStyle=
"bold"
android:textStyle=
"bold"
tools:text=
"已结束"
/>
tools:text=
"已结束"
/>
<TextView
<TextView
android:id=
"@+id/tv_order_info"
android:id=
"@+id/tv_order_info"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_below=
"@+id/tv_order_style"
android:layout_below=
"@+id/tv_order_style"
android:layout_marginLeft=
"15dp"
android:layout_marginLeft=
"15dp"
android:layout_marginTop=
"7dp"
android:layout_marginTop=
"7dp"
android:layout_marginBottom=
"13dp"
android:layout_marginBottom=
"13dp"
android:textColor=
"@color/platform_color_999999"
android:textColor=
"@color/platform_color_999999"
android:textSize=
"11sp"
android:textSize=
"11sp"
android:textStyle=
"bold"
android:textStyle=
"bold"
tools:text=
"电话倾诉 倾诉时长:25分钟 2018.11.24 "
/>
tools:text=
"电话倾诉 倾诉时长:25分钟 2018.11.24 "
/>
<ImageView
<ImageView
android:id=
"@+id/iv_call"
android:id=
"@+id/iv_call"
android:layout_width=
"36dp"
android:layout_width=
"36dp"
android:layout_height=
"36dp"
android:layout_height=
"36dp"
android:layout_alignParentRight=
"true"
android:layout_alignParentRight=
"true"
android:layout_centerVertical=
"true"
android:layout_centerVertical=
"true"
android:layout_marginRight=
"15dp"
android:layout_marginRight=
"15dp"
android:src=
"@drawable/im_icon_qingsu_call"
android:src=
"@drawable/im_icon_qingsu_call"
android:visibility=
"gone"
/>
android:visibility=
"gone"
/>
<TextView
<TextView
android:id=
"@+id/tv_action"
android:id=
"@+id/tv_action"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_alignParentRight=
"true"
android:layout_alignParentRight=
"true"
android:layout_centerVertical=
"true"
android:layout_centerVertical=
"true"
android:layout_marginRight=
"15dp"
android:layout_marginRight=
"15dp"
android:paddingLeft=
"14dp"
android:paddingLeft=
"14dp"
android:paddingTop=
"4dp"
android:paddingTop=
"4dp"
android:paddingRight=
"14dp"
android:paddingRight=
"14dp"
android:paddingBottom=
"4dp"
android:paddingBottom=
"4dp"
android:textColor=
"@color/im_white"
android:textColor=
"@color/im_white"
tools:background=
"@drawable/im_background_chat_confide_order_action"
tools:background=
"@drawable/im_background_chat_confide_order_action"
tools:text=
"去评价"
/>
tools:text=
"去评价"
/>
</merge>
<TextView
android:id=
"@+id/tv_tips"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_alignParentRight=
"true"
android:background=
"@drawable/im_background_chat_confide_order_tpis"
android:paddingLeft=
"5dp"
android:paddingTop=
"1dp"
android:paddingRight=
"5dp"
android:paddingBottom=
"1dp"
android:text=
"最高返30元红包"
android:textColor=
"@color/im_white"
android:textSize=
"9sp"
android:visibility=
"gone"
/>
</merge>
m-user/src/main/java/com/yidianling/user/http/UserApi.kt
View file @
d2e3abca
...
@@ -191,7 +191,8 @@ interface UserApi {
...
@@ -191,7 +191,8 @@ interface UserApi {
fun
getFocusData
(
@Query
(
"parentId"
)
parentId
:
String
=
"0"
):
Observable
<
BaseAPIResponse
<
List
<
CollectFocusItemBean
>>>
fun
getFocusData
(
@Query
(
"parentId"
)
parentId
:
String
=
"0"
):
Observable
<
BaseAPIResponse
<
List
<
CollectFocusItemBean
>>>
//获取新用户引导页面url
//获取新用户引导页面url
@FormUrlEncoded
@POST
(
"user/getNewUserJumpUrl"
)
@POST
(
"user/getNewUserJumpUrl"
)
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
)
@Headers
(
YDL_DOMAIN
+
YDL_DOMAIN_JAVA
)
fun
getNewUserJumpUrl
():
Observable
<
BaseAPIResponse
<
String
>>
fun
getNewUserJumpUrl
(
@FieldMap
params
:
Map
<
String
,
String
>
):
Observable
<
BaseAPIResponse
<
String
>>
}
}
\ No newline at end of file
m-user/src/main/java/com/yidianling/user/http/UserHttpImpl.kt
View file @
d2e3abca
...
@@ -6,6 +6,7 @@ import com.google.gson.internal.LinkedTreeMap
...
@@ -6,6 +6,7 @@ import com.google.gson.internal.LinkedTreeMap
import
com.umeng.socialize.bean.SHARE_MEDIA
import
com.umeng.socialize.bean.SHARE_MEDIA
import
com.ydl.ydlcommon.base.BaseApp
import
com.ydl.ydlcommon.base.BaseApp
import
com.ydl.ydlcommon.data.http.BaseAPIResponse
import
com.ydl.ydlcommon.data.http.BaseAPIResponse
import
com.ydl.ydlcommon.data.http.BaseCommand
import
com.ydl.ydlcommon.data.http.BaseResponse
import
com.ydl.ydlcommon.data.http.BaseResponse
import
com.ydl.ydlcommon.data.http.RxUtils
import
com.ydl.ydlcommon.data.http.RxUtils
import
com.ydl.ydlcommon.router.YdlCommonOut
import
com.ydl.ydlcommon.router.YdlCommonOut
...
@@ -204,7 +205,8 @@ class UserHttpImpl private constructor() : UserHttp {
...
@@ -204,7 +205,8 @@ class UserHttpImpl private constructor() : UserHttp {
}
}
override
fun
getNewUserJumpUrl
():
Observable
<
BaseAPIResponse
<
String
>>
{
override
fun
getNewUserJumpUrl
():
Observable
<
BaseAPIResponse
<
String
>>
{
return
getUserApi
().
getNewUserJumpUrl
()
return
RxUtils
.
mapObservable
(
BaseCommand
())
.
flatMap
{
getUserApi
().
getNewUserJumpUrl
(
it
)
}
}
}
private
object
Holder
{
private
object
Holder
{
...
...
ydl-flutter-base/src/main/java/com/channel/ydl_flutter_base/plugin/YDLCommonPlugin.kt
View file @
d2e3abca
...
@@ -9,6 +9,7 @@ import com.ydl.ydlcommon.base.BaseApp
...
@@ -9,6 +9,7 @@ import com.ydl.ydlcommon.base.BaseApp
import
com.ydl.ydlcommon.base.config.YDLConstants
import
com.ydl.ydlcommon.base.config.YDLConstants
import
com.ydl.ydlcommon.data.PlatformDataManager
import
com.ydl.ydlcommon.data.PlatformDataManager
import
com.ydl.ydlcommon.modular.ModularServiceManager
import
com.ydl.ydlcommon.modular.ModularServiceManager
import
com.ydl.ydlcommon.router.YdlCommonOut
import
com.ydl.ydlcommon.utils.SharedPreferencesEditor
import
com.ydl.ydlcommon.utils.SharedPreferencesEditor
import
com.ydl.ydlcommon.utils.YDLCacheUtils
import
com.ydl.ydlcommon.utils.YDLCacheUtils
import
com.ydl.ydlcommon.utils.YdlBuryPointUtil
import
com.ydl.ydlcommon.utils.YdlBuryPointUtil
...
@@ -40,6 +41,7 @@ class YDLCommonPlugin : MethodChannel.MethodCallHandler {
...
@@ -40,6 +41,7 @@ class YDLCommonPlugin : MethodChannel.MethodCallHandler {
companion
object
{
companion
object
{
const
val
CHANNEL
:
String
=
"lib/common/channel"
const
val
CHANNEL
:
String
=
"lib/common/channel"
const
val
GETPUBLICPARAMAS
:
String
=
"getPublicParamas"
const
val
GETPUBLICPARAMAS
:
String
=
"getPublicParamas"
const
val
GET_PACKAGE_AND_FFROM
:
String
=
"get_package_and_ffrom"
// 获取包名和渠道名,中间用,分割
const
val
ACTION_PUSH_EVENT_TRACKING_TAP
:
String
=
"action_push_event_tracking_tap"
// 点击事件埋点
const
val
ACTION_PUSH_EVENT_TRACKING_TAP
:
String
=
"action_push_event_tracking_tap"
// 点击事件埋点
const
val
ACTION_PUSH_EVENT_TRACKING_PV
:
String
=
"action_push_event_tracking_pv"
//pv埋点
const
val
ACTION_PUSH_EVENT_TRACKING_PV
:
String
=
"action_push_event_tracking_pv"
//pv埋点
...
@@ -127,6 +129,11 @@ class YDLCommonPlugin : MethodChannel.MethodCallHandler {
...
@@ -127,6 +129,11 @@ class YDLCommonPlugin : MethodChannel.MethodCallHandler {
YdlBuryPointUtil
.
sendPv
(
pvPath
)
YdlBuryPointUtil
.
sendPv
(
pvPath
)
}
}
}
}
GET_PACKAGE_AND_FFROM
->
{
val
packageName
=
YdlCommonOut
.
getApp
().
packageName
val
ffrom
=
PlatformDataManager
.
getRam
().
getChannelName
()
result
.
success
(
"$packageName,$ffrom"
)
}
}
}
}
}
}
}
\ No newline at end of file
ydl-platform/src/main/java/com/ydl/ydlcommon/base/BaseActivity.kt
View file @
d2e3abca
...
@@ -102,6 +102,32 @@ abstract class BaseActivity : AppCompatActivity(), IActivityLifecycleable {
...
@@ -102,6 +102,32 @@ abstract class BaseActivity : AppCompatActivity(), IActivityLifecycleable {
}
}
}
}
/**
* 设置底部抬高的布局的颜色
*/
open
fun
setBottomColor
(
color
:
String
)
{
try
{
if
(
getStatusViewOptions
()
?.
isAddStatusView
)
{
if
(
StatusBarUtils
.
hasBottomNavigatorLine
(
this
))
{
findViewById
<
View
>(
R
.
id
.
ll_bottom_v
).
setBackgroundColor
(
Color
.
parseColor
(
color
)
)
}
}
else
{
if
(
StatusBarUtils
.
hasBottomNavigatorLine
(
this
))
{
findViewById
<
View
>(
R
.
id
.
ll_bottom_fit_v
).
setBackgroundColor
(
Color
.
parseColor
(
color
)
)
}
}
}
catch
(
e
:
Exception
)
{
}
}
open
fun
getDefaultBottomColor
():
Int
{
open
fun
getDefaultBottomColor
():
Int
{
return
Color
.
parseColor
(
"#00000000"
)
return
Color
.
parseColor
(
"#00000000"
)
}
}
...
...
ydl-platform/src/main/java/com/ydl/ydlcommon/utils/log/LogHelper.kt
View file @
d2e3abca
...
@@ -154,6 +154,8 @@ class LogHelper private constructor() {
...
@@ -154,6 +154,8 @@ class LogHelper private constructor() {
val
yunxinLog
=
getYunXinLog
(
BaseApp
.
getApp
())
val
yunxinLog
=
getYunXinLog
(
BaseApp
.
getApp
())
//声网日志
//声网日志
val
agoraLog
=
getAgoraLog
(
BaseApp
.
getApp
())
val
agoraLog
=
getAgoraLog
(
BaseApp
.
getApp
())
val
agoraRtmLog
=
getAgoraRTMLog
(
BaseApp
.
getApp
())
val
agoraRtmBackLog
=
getAgoraRtmBackLog
(
BaseApp
.
getApp
())
if
(
zipFile
.
exists
())
zipFile
.
delete
()
if
(
zipFile
.
exists
())
zipFile
.
delete
()
zipFile
.
createNewFile
()
zipFile
.
createNewFile
()
...
@@ -167,6 +169,12 @@ class LogHelper private constructor() {
...
@@ -167,6 +169,12 @@ class LogHelper private constructor() {
if
(
agoraLog
.
exists
())
{
if
(
agoraLog
.
exists
())
{
files
.
add
(
agoraLog
)
files
.
add
(
agoraLog
)
}
}
if
(
agoraRtmLog
.
exists
())
{
files
.
add
(
agoraRtmLog
)
}
if
(
agoraRtmBackLog
.
exists
())
{
files
.
add
(
agoraRtmBackLog
)
}
// ZipUtils.toZip(getLogFolder().absolutePath, FileOutputStream(zipFile), true)
// ZipUtils.toZip(getLogFolder().absolutePath, FileOutputStream(zipFile), true)
ZipUtils
.
toZip
(
files
,
FileOutputStream
(
zipFile
))
ZipUtils
.
toZip
(
files
,
FileOutputStream
(
zipFile
))
...
@@ -233,6 +241,20 @@ class LogHelper private constructor() {
...
@@ -233,6 +241,20 @@ class LogHelper private constructor() {
return
File
(
filePath
)
return
File
(
filePath
)
}
}
//获取RTM日志
private
fun
getAgoraRTMLog
(
context
:
Context
):
File
{
val
agoraRTMLog
=
FileUtils
.
getSDDirectory
()
+
"/"
+
context
.
packageName
+
"/agorartm.log"
return
File
(
agoraRTMLog
)
}
//获取RTM备份日志
private
fun
getAgoraRtmBackLog
(
context
:
Context
):
File
{
val
agoraRTMLog
=
FileUtils
.
getSDDirectory
()
+
"/"
+
context
.
packageName
+
"/agorartm_1.log"
return
File
(
agoraRTMLog
)
}
private
object
Holder
{
private
object
Holder
{
val
INSTANCE
=
LogHelper
()
val
INSTANCE
=
LogHelper
()
}
}
...
...
ydl-webview/src/main/java/com/ydl/webview/H5JsBean.kt
View file @
d2e3abca
...
@@ -44,6 +44,8 @@ class H5JsBean {
...
@@ -44,6 +44,8 @@ class H5JsBean {
var
orderStatus
:
Int
=
0
var
orderStatus
:
Int
=
0
var
orderStatusDesc
:
String
?
=
null
var
orderStatusDesc
:
String
?
=
null
var
bottomfitViewColor
:
String
?
=
null
//底部适配布局的颜色
var
orderContent
:
String
?
=
null
//默认发送的第一天聊天
var
orderContent
:
String
?
=
null
//默认发送的第一天聊天
var
action_name
:
String
?
=
null
var
action_name
:
String
?
=
null
...
...
ydl-webview/src/main/java/com/ydl/webview/NewH5Activity.java
View file @
d2e3abca
...
@@ -17,7 +17,6 @@ import android.text.TextUtils;
...
@@ -17,7 +17,6 @@ import android.text.TextUtils;
import
android.util.Log
;
import
android.util.Log
;
import
android.view.KeyEvent
;
import
android.view.KeyEvent
;
import
android.view.View
;
import
android.view.View
;
import
android.webkit.ValueCallback
;
import
android.widget.ImageView
;
import
android.widget.ImageView
;
import
android.widget.LinearLayout
;
import
android.widget.LinearLayout
;
import
android.widget.PopupWindow
;
import
android.widget.PopupWindow
;
...
@@ -28,6 +27,7 @@ import com.tencent.smtt.export.external.interfaces.JsResult;
...
@@ -28,6 +27,7 @@ import com.tencent.smtt.export.external.interfaces.JsResult;
import
com.tencent.smtt.export.external.interfaces.SslError
;
import
com.tencent.smtt.export.external.interfaces.SslError
;
import
com.tencent.smtt.export.external.interfaces.SslErrorHandler
;
import
com.tencent.smtt.export.external.interfaces.SslErrorHandler
;
import
com.tencent.smtt.sdk.CookieSyncManager
;
import
com.tencent.smtt.sdk.CookieSyncManager
;
import
com.tencent.smtt.sdk.ValueCallback
;
import
com.tencent.smtt.sdk.WebChromeClient
;
import
com.tencent.smtt.sdk.WebChromeClient
;
import
com.tencent.smtt.sdk.WebSettings
;
import
com.tencent.smtt.sdk.WebSettings
;
import
com.tencent.smtt.sdk.WebView
;
import
com.tencent.smtt.sdk.WebView
;
...
@@ -544,6 +544,12 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
...
@@ -544,6 +544,12 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
});
});
}
}
public
void
setBottomViewColor
(
String
color
)
{
runOnUiThread
(()
->
{
setBottomColor
(
color
);
});
}
public
void
showTitleBar
()
{
public
void
showTitleBar
()
{
runOnUiThread
(()
->
{
runOnUiThread
(()
->
{
tb_title
.
setVisibility
(
VISIBLE
);
tb_title
.
setVisibility
(
VISIBLE
);
...
@@ -1267,6 +1273,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
...
@@ -1267,6 +1273,7 @@ public class NewH5Activity extends BaseActivity implements PtrHandler {
* 新用户侧滑按钮限制
* 新用户侧滑按钮限制
*/
*/
if
(
h5Params
.
getBackLimit
()
!=
null
&&
h5Params
.
getBackLimit
()
==
H5Params
.
BackLimit
.
NEW_USER_PAGE
)
{
if
(
h5Params
.
getBackLimit
()
!=
null
&&
h5Params
.
getBackLimit
()
==
H5Params
.
BackLimit
.
NEW_USER_PAGE
)
{
ModularServiceManager
.
INSTANCE
.
provide
(
IAppService
.
class
).
mainIntent
(
this
);
return
true
;
return
true
;
}
}
...
...
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