Commit 6202a283 by 刘鹏

Merge remote-tracking branch 'origin/d/v_confide_2.0' into feat/lp/lp_confide_2.0

# Conflicts:
#	config.gradle
parents 29693366 a65cdba3
package com.ydl.component.service.web package com.ydl.component.service.web
import android.webkit.JavascriptInterface import android.webkit.JavascriptInterface
import androidx.fragment.app.FragmentActivity
import com.google.gson.Gson import com.google.gson.Gson
import com.ydl.confide.api.ConfideRoute
import com.ydl.confide.api.IConfideService
import com.ydl.js_module.manager.WebViewRouterManager import com.ydl.js_module.manager.WebViewRouterManager
import com.ydl.webview.H5JsBean import com.ydl.webview.H5JsBean
import com.ydl.webview.IJavascriptHandler import com.ydl.webview.IJavascriptHandler
import com.ydl.ydl_router.manager.YDLRouterManager import com.ydl.ydl_router.manager.YDLRouterManager
import com.ydl.ydlcommon.base.BaseActivityMgr
import com.ydl.ydlcommon.base.config.HttpConfig
import com.ydl.ydlcommon.modular.ModularServiceManager import com.ydl.ydlcommon.modular.ModularServiceManager
import com.ydl.ydlcommon.modular.findRouteService
import com.ydl.ydlcommon.utils.log.LogHelper import com.ydl.ydlcommon.utils.log.LogHelper
import com.yidianling.common.tools.LogUtil import com.yidianling.common.tools.LogUtil
import com.yidianling.user.UserHelper import com.yidianling.user.UserHelper
...@@ -385,6 +391,15 @@ class WebJavascriptHandler : IJavascriptHandler{ ...@@ -385,6 +391,15 @@ class WebJavascriptHandler : IJavascriptHandler{
"get_next_doctor"->{ "get_next_doctor"->{
wvEnventPro?.getNextExpertStatus(jsData.cmd?.params?.doctorId.toString(),jsData.cmd?.params?.title,jsData.cmd?.params?.uid.toString()) wvEnventPro?.getNextExpertStatus(jsData.cmd?.params?.doctorId.toString(),jsData.cmd?.params?.title,jsData.cmd?.params?.uid.toString())
} }
"show_popup_window" -> {
val doctorId = jsData.cmd?.params?.doctorId?.toString()
val confideId = jsData.cmd?.params?.confidedId
val topActivity = BaseActivityMgr.INST.getTopActivity()
if (topActivity is FragmentActivity && doctorId != null && confideId != null) {
val url = HttpConfig.MH5_URL + ConfideRoute.h5ConfideIntro(confideId)
findRouteService(IConfideService::class.java).showExpertDetailDialog(topActivity, url, doctorId)
}
}
} }
} }
} }
...@@ -5,22 +5,22 @@ ext { ...@@ -5,22 +5,22 @@ ext {
ydlPublishVersion = [ ydlPublishVersion = [
// -------------- 业务模块 -------------- // -------------- 业务模块 --------------
//第三步 若干 //第三步 若干
"m-confide" : "0.0.49.78", "m-confide" : "0.0.49.84",
"m-consultant" : "0.0.60.25", "m-consultant" : "0.0.60.25",
"m-fm" : "0.0.30.08", "m-fm" : "0.0.30.08",
"m-user" : "0.0.62.11", "m-user" : "0.0.62.11",
"m-home" : "0.0.23.48", "m-home" : "0.0.23.60",
"m-im" : "0.0.21.45", "m-im" : "0.0.21.45",
"m-dynamic" : "0.0.7.73", "m-dynamic" : "0.0.7.73",
"m-article" : "0.0.0.10", "m-article" : "0.0.0.10",
"m-muse" : "0.0.28.28", "m-muse" : "0.0.28.28",
"m-tests" : "0.0.24.18", "m-tests" : "0.0.24.18",
"m-course" : "0.0.43.37", "m-course" : "0.0.43.38",
//-------------- 业务模块 API 层 -------------- //-------------- 业务模块 API 层 --------------
"m-audioim-api" : "0.0.6", "m-audioim-api" : "0.0.6",
"m-confide-api" : "0.0.2.12", "m-confide-api" : "0.0.2.14",
"m-consultant-api": "0.0.5.63", "m-consultant-api": "0.0.5.63",
"m-course-api" : "0.0.3.6", "m-course-api" : "0.0.3.6",
"m-fm-api" : "0.0.3", "m-fm-api" : "0.0.3",
...@@ -35,13 +35,13 @@ ext { ...@@ -35,13 +35,13 @@ ext {
//mdt 组件 //mdt 组件
"ydl-tuicore" : "0.0.23", "ydl-tuicore" : "0.0.23",
//第一步 //第一步
"ydl-platform" : "0.0.41.11", "ydl-platform" : "0.0.41.16",
//第二步 若干 //第二步 若干
"ydl-webview" : "0.0.38.62", "ydl-webview" : "0.0.38.80",
"ydl-media" : "0.0.21.45", "ydl-media" : "0.0.21.45",
"ydl-pay" : "0.0.18.19", "ydl-pay" : "0.0.18.19",
"m-audioim" : "0.0.49.29.92", "m-audioim" : "0.0.49.29.93",
"ydl-flutter-base": "0.0.14.38", "ydl-flutter-base": "0.0.14.38",
//以下 几乎不会动 //以下 几乎不会动
...@@ -90,21 +90,21 @@ ext { ...@@ -90,21 +90,21 @@ ext {
// -------------- 业务模块 -------------- // -------------- 业务模块 --------------
//第三步 若干 //第三步 若干
"m-confide" : "0.0.49.78", "m-confide" : "0.0.49.84",
"m-consultant" : "0.0.60.25", "m-consultant" : "0.0.60.25",
"m-fm" : "0.0.30.08", "m-fm" : "0.0.30.08",
"m-user" : "0.0.62.11", "m-user" : "0.0.62.11",
"m-home" : "0.0.23.48", "m-home" : "0.0.23.60",
"m-im" : "0.0.21.45", "m-im" : "0.0.21.45",
"m-dynamic" : "0.0.7.73", "m-dynamic" : "0.0.7.73",
"m-article" : "0.0.0.8", "m-article" : "0.0.0.8",
"m-muse" : "0.0.28.28", "m-muse" : "0.0.28.28",
"m-tests" : "0.0.24.18", "m-tests" : "0.0.24.18",
"m-course" : "0.0.43.37", "m-course" : "0.0.43.38",
//-------------- 业务模块 API 层 -------------- //-------------- 业务模块 API 层 --------------
"m-audioim-api" : "0.0.6", "m-audioim-api" : "0.0.6",
"m-confide-api" : "0.0.2.12", "m-confide-api" : "0.0.2.14",
"m-consultant-api": "0.0.5.63", "m-consultant-api": "0.0.5.63",
"m-course-api" : "0.0.3.6", "m-course-api" : "0.0.3.6",
"m-fm-api" : "0.0.3", "m-fm-api" : "0.0.3",
...@@ -118,13 +118,13 @@ ext { ...@@ -118,13 +118,13 @@ ext {
//mdt组件 //mdt组件
"ydl-tuicore" : "0.0.23", "ydl-tuicore" : "0.0.23",
//第一步 //第一步
"ydl-platform" : "0.0.41.11", "ydl-platform" : "0.0.41.16",
//第二步 若干 //第二步 若干
"ydl-webview" : "0.0.38.62", "ydl-webview" : "0.0.38.80",
"ydl-media" : "0.0.21.45", "ydl-media" : "0.0.21.45",
"ydl-pay" : "0.0.18.19", "ydl-pay" : "0.0.18.19",
"m-audioim" : "0.0.49.29.92", "m-audioim" : "0.0.49.29.93",
"ydl-flutter-base": "0.0.14.38", "ydl-flutter-base": "0.0.14.38",
//以下 几乎不会动 //以下 几乎不会动
......
...@@ -42,7 +42,6 @@ import com.ydl.webview.H5Params ...@@ -42,7 +42,6 @@ import com.ydl.webview.H5Params
import com.ydl.webview.NewH5Activity import com.ydl.webview.NewH5Activity
import com.ydl.webview.RefreshWebEvent import com.ydl.webview.RefreshWebEvent
import com.ydl.ydl_av.chat.bean.AudioMessageBean import com.ydl.ydl_av.chat.bean.AudioMessageBean
import com.ydl.ydl_av.voice.impl.YDLVoiceApiImpl
import com.ydl.ydl_av.voice.listener.IYDLVoiceEventHandler import com.ydl.ydl_av.voice.listener.IYDLVoiceEventHandler
import com.ydl.ydl_av.voice.manager.YDLVoiceManager import com.ydl.ydl_av.voice.manager.YDLVoiceManager
import com.ydl.ydl_image.config.SimpleImageOpConfiger import com.ydl.ydl_image.config.SimpleImageOpConfiger
...@@ -460,6 +459,7 @@ class AudioHomeActivity : ...@@ -460,6 +459,7 @@ class AudioHomeActivity :
//权限申请 //权限申请
requestPermission() requestPermission()
ActionCountUtils.record("call_phone_page", "call_phone_page_visit", "0", "1")
} }
...@@ -589,6 +589,7 @@ class AudioHomeActivity : ...@@ -589,6 +589,7 @@ class AudioHomeActivity :
} }
//静音开启 //静音开启
rl_mute_on_off.setOnClickListener { rl_mute_on_off.setOnClickListener {
ActionCountUtils.record("call_phone_page", "call_phone_icon_click", "0", "2")
if (iv_mute_on_off.isSelected) { if (iv_mute_on_off.isSelected) {
iv_mute_on_off.isSelected = false iv_mute_on_off.isSelected = false
iv_mute_on_off.setImageResource(R.drawable.audiohome_muteoff) iv_mute_on_off.setImageResource(R.drawable.audiohome_muteoff)
...@@ -603,6 +604,7 @@ class AudioHomeActivity : ...@@ -603,6 +604,7 @@ class AudioHomeActivity :
} }
//切换线路 //切换线路
ll_changeRoute.setOnClickListener { ll_changeRoute.setOnClickListener {
ActionCountUtils.record("call_phone_page", "call_phone_icon_click", "0", "4")
showChooseDialog(1) showChooseDialog(1)
} }
//挂断 //挂断
...@@ -611,6 +613,7 @@ class AudioHomeActivity : ...@@ -611,6 +613,7 @@ class AudioHomeActivity :
//防止连击 //防止连击
return@setOnClickListener return@setOnClickListener
} }
ActionCountUtils.record("call_phone_page", "call_phone_icon_click", "0", "1")
if (isConnectSuccess) { if (isConnectSuccess) {
writeAgoraLog("已接通:主叫主动挂断") writeAgoraLog("已接通:主叫主动挂断")
AliYunRichLogsHelper.getInstance() AliYunRichLogsHelper.getInstance()
...@@ -633,6 +636,7 @@ class AudioHomeActivity : ...@@ -633,6 +636,7 @@ class AudioHomeActivity :
} }
//免提 //免提
iv_hands_free.setOnClickListener { iv_hands_free.setOnClickListener {
ActionCountUtils.record("call_phone_page", "call_phone_icon_click", "0", "3")
if (iv_hands_free.isSelected) { if (iv_hands_free.isSelected) {
iv_hands_free.isSelected = false iv_hands_free.isSelected = false
iv_hands_free.setImageResource(R.drawable.audioim_img_hands_free_unuse) iv_hands_free.setImageResource(R.drawable.audioim_img_hands_free_unuse)
...@@ -756,7 +760,7 @@ class AudioHomeActivity : ...@@ -756,7 +760,7 @@ class AudioHomeActivity :
if (remainTime <= 0) { if (remainTime <= 0) {
waittingStatus() waittingStatus()
} else { } else {
tv_change_time_counter.text = "${remainTime}s" tv_change_time_counter.text = "转传统电话(${remainTime}s)"
} }
if (remainTime<=20){ if (remainTime<=20){
......
...@@ -11,8 +11,6 @@ import androidx.fragment.app.FragmentActivity ...@@ -11,8 +11,6 @@ import androidx.fragment.app.FragmentActivity
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.SimpleItemAnimator import androidx.recyclerview.widget.SimpleItemAnimator
import com.alibaba.android.arouter.facade.annotation.Route import com.alibaba.android.arouter.facade.annotation.Route
import com.bumptech.glide.Glide
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.jcodecraeer.xrecyclerview.ProgressStyle import com.jcodecraeer.xrecyclerview.ProgressStyle
import com.jcodecraeer.xrecyclerview.XRecyclerView import com.jcodecraeer.xrecyclerview.XRecyclerView
import com.ydl.confide.R import com.ydl.confide.R
...@@ -37,18 +35,18 @@ import com.ydl.webview.H5Params ...@@ -37,18 +35,18 @@ import com.ydl.webview.H5Params
import com.ydl.webview.NewH5Activity import com.ydl.webview.NewH5Activity
import com.ydl.ydl_image.listener.YDLImageRecyclerOnScrollListener import com.ydl.ydl_image.listener.YDLImageRecyclerOnScrollListener
import com.ydl.ydlcommon.base.config.HttpConfig import com.ydl.ydlcommon.base.config.HttpConfig
import com.ydl.ydlcommon.base.config.HttpConfig.Companion.H5_URL
import com.ydl.ydlcommon.base.config.HttpConfig.Companion.YDL_H5 import com.ydl.ydlcommon.base.config.HttpConfig.Companion.YDL_H5
import com.ydl.ydlcommon.modular.findRouteService import com.ydl.ydlcommon.modular.findRouteService
import com.ydl.ydlcommon.mvp.lce.BaseLceActivity import com.ydl.ydlcommon.mvp.lce.BaseLceActivity
import com.ydl.ydlcommon.router.IYDLRouterConstant import com.ydl.ydlcommon.router.IYDLRouterConstant
import com.ydl.ydlcommon.utils.BuryPointUtils import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import com.ydl.ydlcommon.utils.remind.ToastHelper import com.ydl.ydlcommon.utils.remind.ToastHelper
import com.ydl.ydlcommon.view.DrawableRightTextView import com.ydl.ydlcommon.view.DrawableRightTextView
import com.ydl.ydlcommon.view.WrapContentLinearLayoutManager import com.ydl.ydlcommon.view.WrapContentLinearLayoutManager
import com.yidianling.common.tools.RxImageTool import com.yidianling.common.tools.RxImageTool
import com.yidianling.common.tools.ToastUtil import com.yidianling.common.tools.ToastUtil
import com.yidianling.im.api.service.IImService import com.yidianling.im.api.service.IImService
import com.yidianling.user.api.service.IUserService
import de.greenrobot.event.EventBus import de.greenrobot.event.EventBus
import kotlinx.android.synthetic.main.confide_home_activity.* import kotlinx.android.synthetic.main.confide_home_activity.*
import kotlinx.android.synthetic.main.confide_title_bar.* import kotlinx.android.synthetic.main.confide_title_bar.*
...@@ -60,7 +58,7 @@ import kotlinx.android.synthetic.main.confide_title_bar.* ...@@ -60,7 +58,7 @@ import kotlinx.android.synthetic.main.confide_title_bar.*
* @Company 壹点灵 * @Company 壹点灵
* @date 2018/8/10 * @date 2018/8/10
*/ */
@Route(path = "/confide/home") @Route(path = ConfideRoute.R_CONFIDE_HOME)
class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHomeContract.Presenter>(),IConfideHomeContract.View,XRecyclerView.LoadingListener { class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHomeContract.Presenter>(),IConfideHomeContract.View,XRecyclerView.LoadingListener {
override fun getContentViewId(): Int { override fun getContentViewId(): Int {
...@@ -208,15 +206,22 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo ...@@ -208,15 +206,22 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo
initStatusBar() initStatusBar()
// ModularServiceManager.provide(IConsultantService::class.java).showConfideListDialog(this) // ModularServiceManager.provide(IConsultantService::class.java).showConfideListDialog(this)
// ActionCountUtils.count("daoyi_advertisement_page|daoyi_advertisement_visit","17") // ActionCountUtils.count("daoyi_advertisement_page|daoyi_advertisement_visit","17")
Glide.with(this) // Glide.with(this)
.load(R.drawable.confide__free) // .load(R.drawable.confide__free)
.diskCacheStrategy(DiskCacheStrategy.RESOURCE) // .diskCacheStrategy(DiskCacheStrategy.RESOURCE)
.into(confide_Free) // .into(confide_Free)
if (isFromRed){ if (isFromRed){
ToastUtil.toastLong(this@ConfideHomeActivity,"红包已领取成功 可立即点击拨打") ToastUtil.toastLong(this@ConfideHomeActivity,"红包已领取成功 可立即点击拨打")
} }
} }
override fun onResume() {
super.onResume()
//登录了回来之后就不显示了
val isLogin = (findRouteService(IUserService::class.java).isLogin())
findViewById<View>(R.id.confide_Free).visibility = if (isLogin) View.GONE else View.VISIBLE
}
/** /**
* 初始化状态栏位置 * 初始化状态栏位置
...@@ -270,6 +275,10 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo ...@@ -270,6 +275,10 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo
*/ */
private fun initClick() { private fun initClick() {
quick_consult_card.setOnClickListener { quick_consult_card.setOnClickListener {
ActionCountUtils.record("listen_counselor_list_page", "akey_consult_icon_click")
if (!PhoneCallIn.loginByOneKeyLogin(this,true)) {
return@setOnClickListener
}
bottomSheetDialogFragment=ConfideBottomSheetDialogFragment() bottomSheetDialogFragment=ConfideBottomSheetDialogFragment()
bottomSheetDialogFragment.showBottomSheetDialog(this as FragmentActivity, HttpConfig.MH5_URL + ConfideRoute.h5ConfideIntro("0"),"0",true) bottomSheetDialogFragment.showBottomSheetDialog(this as FragmentActivity, HttpConfig.MH5_URL + ConfideRoute.h5ConfideIntro("0"),"0",true)
...@@ -285,21 +294,21 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo ...@@ -285,21 +294,21 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo
} }
img_mine.setOnClickListener { img_mine.setOnClickListener {
//跳转倾诉列表 //跳转倾诉列表
ActionCountUtils.record("listen_counselor_list_page", "topright_corner_icon_click","1")
if (!PhoneCallIn.loginByOneKeyLogin(this,true)) { if (!PhoneCallIn.loginByOneKeyLogin(this,true)) {
return@setOnClickListener return@setOnClickListener
} }
BuryPointUtils.getInstance().createMap()
.put("mine_name", "倾诉记录")
.burryPoint("mine")
val h5Paramsqing = H5Params(YDL_H5 + "confideOrderList", null) val h5Paramsqing = H5Params(YDL_H5 + "confideOrderList", null)
NewH5Activity.start(this, h5Paramsqing) NewH5Activity.start(this, h5Paramsqing)
} }
findViewById<View>(R.id.img_customer)?.setOnClickListener { findViewById<View>(R.id.img_customer)?.setOnClickListener {
ActionCountUtils.record("listen_counselor_list_page", "topright_corner_icon_click","2")
val imService = findRouteService(IImService::class.java) val imService = findRouteService(IImService::class.java)
imService?.startP2PXiaoYi(this) imService.startP2PXiaoYi(this)
} }
findViewById<View>(R.id.img_help)?.setOnClickListener { findViewById<View>(R.id.img_help)?.setOnClickListener {
val params = H5Params(H5_URL + "help/", "") ActionCountUtils.record("listen_counselor_list_page", "topright_corner_icon_click","3")
val params = H5Params("https://activity.yidianling.com/activity/qs", "")//倾诉指南
params.isShowMenu = true params.isShowMenu = true
NewH5Activity.start(this, params) NewH5Activity.start(this, params)
} }
...@@ -495,6 +504,7 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo ...@@ -495,6 +504,7 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo
} }
override fun showSortPopupWindow(v_line_top: View, tvSort: DrawableRightTextView, bodyBean: ConfideHomeBodyBean?) { override fun showSortPopupWindow(v_line_top: View, tvSort: DrawableRightTextView, bodyBean: ConfideHomeBodyBean?) {
ActionCountUtils.record("listen_counselor_list_page", "choice_filter_click")
if (null == allFiltersBean) { if (null == allFiltersBean) {
return return
} }
...@@ -505,6 +515,7 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo ...@@ -505,6 +515,7 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo
} }
override fun showSexAgePopupWindow(v_line_top: View, tvSexAge: DrawableRightTextView, bodyBean: ConfideHomeBodyBean?) { override fun showSexAgePopupWindow(v_line_top: View, tvSexAge: DrawableRightTextView, bodyBean: ConfideHomeBodyBean?) {
ActionCountUtils.record("listen_counselor_list_page", "choice_filter_click")
if (null == allFiltersBean) { if (null == allFiltersBean) {
return return
} }
...@@ -515,6 +526,7 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo ...@@ -515,6 +526,7 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo
} }
override fun showGoodPopupWindow(v_line_top: View, tvGood: DrawableRightTextView, bodyBean: ConfideHomeBodyBean?) { override fun showGoodPopupWindow(v_line_top: View, tvGood: DrawableRightTextView, bodyBean: ConfideHomeBodyBean?) {
ActionCountUtils.record("listen_counselor_list_page", "choice_filter_click")
if (null == allFiltersBean) { if (null == allFiltersBean) {
return return
} }
......
...@@ -7,13 +7,12 @@ import androidx.databinding.ObservableField ...@@ -7,13 +7,12 @@ import androidx.databinding.ObservableField
import androidx.databinding.ObservableInt import androidx.databinding.ObservableInt
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.ydl.confide.R import com.ydl.confide.R
import com.ydl.confide.api.ConfideRoute
import com.ydl.confide.databinding.ItemConfideHomeRecentBinding import com.ydl.confide.databinding.ItemConfideHomeRecentBinding
import com.ydl.confide.databinding.ItemVideoShowBinding import com.ydl.confide.databinding.ItemVideoShowBinding
import com.ydl.confide.home.bean.ConfideHomeBodyBean import com.ydl.confide.home.bean.ConfideHomeBodyBean
import com.ydl.confide.home.event.IConfideHomeEvent import com.ydl.confide.home.event.IConfideHomeEvent
import com.ydl.confide.intro.BindingViewHolder import com.ydl.confide.intro.BindingViewHolder
import com.ydl.ydlcommon.base.config.HttpConfig import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
class VideoShowAdapter(private val data: List<ConfideHomeBodyBean>?, private val event: IConfideHomeEvent) : class VideoShowAdapter(private val data: List<ConfideHomeBodyBean>?, private val event: IConfideHomeEvent) :
RecyclerView.Adapter<BindingViewHolder<ItemVideoShowBinding>>() { RecyclerView.Adapter<BindingViewHolder<ItemVideoShowBinding>>() {
...@@ -31,7 +30,10 @@ class VideoShowAdapter(private val data: List<ConfideHomeBodyBean>?, private val ...@@ -31,7 +30,10 @@ class VideoShowAdapter(private val data: List<ConfideHomeBodyBean>?, private val
override fun onBindViewHolder(holder: BindingViewHolder<ItemVideoShowBinding>, position: Int) { override fun onBindViewHolder(holder: BindingViewHolder<ItemVideoShowBinding>, position: Int) {
val itemVideoShowViewModel = dataList[position] val itemVideoShowViewModel = dataList[position]
holder.binding.item = itemVideoShowViewModel holder.binding.item = itemVideoShowViewModel
holder.itemView.setOnClickListener { event.videoShowClick(position, data) } holder.itemView.setOnClickListener {
ActionCountUtils.record("listen_counselor_list_page", "video_card_click")
event.videoShowClick(position, data)
}
} }
override fun getItemCount() = dataList.size override fun getItemCount() = dataList.size
...@@ -58,30 +60,43 @@ class RecentConfideAdapter(val data: List<ItemVideoShowViewModel>, private val e ...@@ -58,30 +60,43 @@ class RecentConfideAdapter(val data: List<ItemVideoShowViewModel>, private val e
override fun onBindViewHolder(holder: BindingViewHolder<ItemConfideHomeRecentBinding>, position: Int) { override fun onBindViewHolder(holder: BindingViewHolder<ItemConfideHomeRecentBinding>, position: Int) {
val itemVideoShowViewModel = data[position] val itemVideoShowViewModel = data[position]
holder.binding.item = itemVideoShowViewModel holder.binding.item = itemVideoShowViewModel
holder.itemView.setOnClickListener { event.consultantClick(itemVideoShowViewModel.linkUrl,itemVideoShowViewModel.doctorId) } holder.itemView.setOnClickListener {
ActionCountUtils.record("listen_counselor_list_page", "head_portrait_click", "1")
ActionCountUtils.record(
"listen_counselor_popupwindows_page",
"popupwindows_page_visit",
itemVideoShowViewModel.confideId ?: "", "2"
)
event.consultantClick(
itemVideoShowViewModel.doctorId,
itemVideoShowViewModel.confideId
)
}
} }
override fun getItemCount() = data.size override fun getItemCount() = data.size
} }
class ItemVideoShowViewModel { class ItemVideoShowViewModel {
var linkUrl: String? = null
val name = ObservableField<String>("") val name = ObservableField<String>("")
val coverUrl = ObservableField<String>("") val coverUrl = ObservableField<String>("")
val videoCoverUrl = ObservableField<String>("") val videoCoverUrl = ObservableField<String>("")
val state = ObservableInt() val state = ObservableInt()
var doctorId: String? = null var doctorId: String? = null
var confideId: String? = null
} }
internal fun ItemVideoShowViewModel.mapOf(bean: ConfideHomeBodyBean): ItemVideoShowViewModel { internal fun ItemVideoShowViewModel.mapOf(bean: ConfideHomeBodyBean): ItemVideoShowViewModel {
name.set(bean.confidedName) name.set(bean.confidedName)
coverUrl.set(bean.confidedIcon) coverUrl.set(bean.confidedIcon)
if (bean.coverVideoPicture.isNullOrBlank()) {
videoCoverUrl.set(bean.coverPicture)
} else {
videoCoverUrl.set(bean.coverVideoPicture) videoCoverUrl.set(bean.coverVideoPicture)
}
state.set(bean.confideLine ?: 0) state.set(bean.confideLine ?: 0)
doctorId = bean.doctorId doctorId = bean.doctorId
doctorId?.let { confideId = bean.confidedId
linkUrl = HttpConfig.MH5_URL + ConfideRoute.h5ConfideIntro(it)
}
return this return this
} }
......
...@@ -132,9 +132,15 @@ class ConfideHomeEventImpl(context: Context, var confideHomeView: IConfideHomeCo ...@@ -132,9 +132,15 @@ class ConfideHomeEventImpl(context: Context, var confideHomeView: IConfideHomeCo
* 最佳倾诉榜单--点我倾诉 * 最佳倾诉榜单--点我倾诉
* @param linkUrl 跳转地址 * @param linkUrl 跳转地址
*/ */
override fun consultantClick(linkUrl: String?, doctorId: String?) { override fun consultantClick(doctorId: String?, confideId: String?) {
confideId?.let {
ConfideBottomSheetDialogFragment() ConfideBottomSheetDialogFragment()
.showBottomSheetDialog(mContext as FragmentActivity, HttpConfig.MH5_URL + ConfideRoute.h5ConfideIntro(doctorId.toString()), doctorId!!) .showBottomSheetDialog(
mContext as FragmentActivity,
HttpConfig.MH5_URL + ConfideRoute.h5ConfideIntro(it),
doctorId!!
)
}
} }
...@@ -271,10 +277,11 @@ class ConfideHomeEventImpl(context: Context, var confideHomeView: IConfideHomeCo ...@@ -271,10 +277,11 @@ class ConfideHomeEventImpl(context: Context, var confideHomeView: IConfideHomeCo
* 私聊 * 私聊
*/ */
override fun toChatForMsg(doctorId: String?) { override fun toChatForMsg(doctorId: String?) {
if (null != mContext && mContext is Activity){ if (null != mContext && mContext is Activity) {
PhoneCallIn.loginByOneKeyLogin(mContext as Activity,true) if (!PhoneCallIn.loginByOneKeyLogin(mContext as Activity, true)) {
return return
} }
}
if (mContext is AppCompatActivity && !TextUtils.isEmpty(doctorId)) { if (mContext is AppCompatActivity && !TextUtils.isEmpty(doctorId)) {
PhoneCallIn.startChat(mContext as AppCompatActivity, doctorId!!, 0x001, 0) PhoneCallIn.startChat(mContext as AppCompatActivity, doctorId!!, 0x001, 0)
} }
......
...@@ -73,7 +73,7 @@ interface IConfideHomeEvent { ...@@ -73,7 +73,7 @@ interface IConfideHomeEvent {
* 咨询师推荐--点我倾诉 * 咨询师推荐--点我倾诉
* @param linkUrl 跳转地址 * @param linkUrl 跳转地址
*/ */
fun consultantClick(linkUrl: String?,doctorId: String?) fun consultantClick(doctorId: String?, confideId: String?)
fun videoShowClick(index: Int, data: List<ConfideHomeBodyBean>?) fun videoShowClick(index: Int, data: List<ConfideHomeBodyBean>?)
......
...@@ -18,6 +18,7 @@ import com.ydl.confide.home.ConfideHomeActivity ...@@ -18,6 +18,7 @@ import com.ydl.confide.home.ConfideHomeActivity
import com.ydl.webview.TellData import com.ydl.webview.TellData
import com.ydl.ydlcommon.base.BaseApp import com.ydl.ydlcommon.base.BaseApp
import com.ydl.ydlcommon.base.config.YDLConstants import com.ydl.ydlcommon.base.config.YDLConstants
import com.ydl.ydlcommon.ui.Loading
import com.ydl.ydlcommon.utils.YDLCacheUtils import com.ydl.ydlcommon.utils.YDLCacheUtils
/** /**
...@@ -52,6 +53,7 @@ class ConfdieServiceImpl : IConfideService { ...@@ -52,6 +53,7 @@ class ConfdieServiceImpl : IConfideService {
} }
override fun connectionJava(id: Int, type: Int, activity: Activity, tellData: String?, callType: String?) { override fun connectionJava(id: Int, type: Int, activity: Activity, tellData: String?, callType: String?) {
Loading.show(activity)
val myTellData: TellData? = if (tellData == null ) null else Gson().fromJson(tellData, TellData::class.java) val myTellData: TellData? = if (tellData == null ) null else Gson().fromJson(tellData, TellData::class.java)
ConfideWebServiceImpl().connectionJava(id, type, activity, myTellData, callType) ConfideWebServiceImpl().connectionJava(id, type, activity, myTellData, callType)
} }
......
...@@ -17,6 +17,7 @@ import com.ydl.webview.H5Params ...@@ -17,6 +17,7 @@ import com.ydl.webview.H5Params
import com.ydl.webview.NewH5Activity import com.ydl.webview.NewH5Activity
import com.ydl.webview.TellData import com.ydl.webview.TellData
import com.ydl.ydlcommon.modular.ModularServiceManager import com.ydl.ydlcommon.modular.ModularServiceManager
import com.ydl.ydlcommon.ui.Loading
import com.ydl.ydlcommon.utils.remind.ToastHelper import com.ydl.ydlcommon.utils.remind.ToastHelper
import com.ydl.ydlcommon.view.dialog.CommonDialog import com.ydl.ydlcommon.view.dialog.CommonDialog
import com.yidianling.common.tools.ToastUtil import com.yidianling.common.tools.ToastUtil
...@@ -182,6 +183,7 @@ class ConfideWebServiceImpl { ...@@ -182,6 +183,7 @@ class ConfideWebServiceImpl {
ExpertInfoBean.ListenRemainingTime(expertInfo.totalDuration); ExpertInfoBean.ListenRemainingTime(expertInfo.totalDuration);
} }
YDLavManager.instances.callEventSave("10","用户点击拨打",expertInfo.channelId,"7") YDLavManager.instances.callEventSave("10","用户点击拨打",expertInfo.channelId,"7")
Loading.close()
ARouter.getInstance().build("/av/AudioHomeActivity") ARouter.getInstance().build("/av/AudioHomeActivity")
.withString(IntentConstants.INTENT_EXPERT_HEAD_URL, expertInfo.expertHeadUrl) .withString(IntentConstants.INTENT_EXPERT_HEAD_URL, expertInfo.expertHeadUrl)
.withString(IntentConstants.INTENT_EXPERT_NAME, expertInfo.expertName) .withString(IntentConstants.INTENT_EXPERT_NAME, expertInfo.expertName)
......
...@@ -10,13 +10,13 @@ import android.view.ViewGroup ...@@ -10,13 +10,13 @@ import android.view.ViewGroup
import android.widget.FrameLayout import android.widget.FrameLayout
import android.widget.LinearLayout import android.widget.LinearLayout
import android.widget.TextView import android.widget.TextView
import com.ydl.ydl_image.module.GlideApp
import com.yidianling.common.tools.RxImageTool
import com.ydl.confide.R import com.ydl.confide.R
import com.ydl.confide.home.bean.ConfideHomeBodyBean import com.ydl.confide.home.bean.ConfideHomeBodyBean
import com.ydl.confide.home.config.IConfideHomeConfig import com.ydl.confide.home.config.IConfideHomeConfig
import com.ydl.confide.home.event.IConfideHomeEvent import com.ydl.confide.home.event.IConfideHomeEvent
import com.ydl.ydl_image.module.GlideApp
import com.ydl.ydlcommon.utils.ScreenUtil import com.ydl.ydlcommon.utils.ScreenUtil
import com.yidianling.common.tools.RxImageTool
import kotlinx.android.synthetic.main.confide_recommend_expert_item_view.view.* import kotlinx.android.synthetic.main.confide_recommend_expert_item_view.view.*
/** /**
...@@ -243,7 +243,7 @@ class ConfideHomeRecommendExpertItemView(mContext: Context, private var confideH ...@@ -243,7 +243,7 @@ class ConfideHomeRecommendExpertItemView(mContext: Context, private var confideH
private fun click(bodyBean: ConfideHomeBodyBean) { private fun click(bodyBean: ConfideHomeBodyBean) {
when (bodyBean.confideLine) {//1在线 2离线 3通话中 when (bodyBean.confideLine) {//1在线 2离线 3通话中
1, 3, 4 -> { 1, 3, 4 -> {
confideHomeEvent.consultantClick(bodyBean.linkUrl,bodyBean.doctorId) confideHomeEvent.consultantClick(bodyBean.doctorId, bodyBean.confidedId)
} }
2 -> { 2 -> {
//跳转私聊 并发送自定义消息 //跳转私聊 并发送自定义消息
......
package com.ydl.confide.home.widget package com.ydl.confide.home.widget
import android.content.Context import android.content.Context
import android.graphics.Color
import android.text.TextUtils import android.text.TextUtils
import android.util.TypedValue
import android.view.Gravity
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.TextView
import com.blankj.utilcode.util.SpanUtils import com.blankj.utilcode.util.SpanUtils
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.bumptech.glide.load.engine.DiskCacheStrategy import com.bumptech.glide.load.engine.DiskCacheStrategy
...@@ -19,6 +14,8 @@ import com.ydl.confide.home.config.IConfideHomeConfig ...@@ -19,6 +14,8 @@ import com.ydl.confide.home.config.IConfideHomeConfig
import com.ydl.confide.home.contract.IConfideHomeContract import com.ydl.confide.home.contract.IConfideHomeContract
import com.ydl.confide.home.event.IConfideHomeEvent import com.ydl.confide.home.event.IConfideHomeEvent
import com.ydl.ydl_image.module.GlideApp import com.ydl.ydl_image.module.GlideApp
import com.ydl.ydlcommon.utils.Utils
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import com.yidianling.common.tools.RxImageTool import com.yidianling.common.tools.RxImageTool
import kotlinx.android.synthetic.main.confide_recommend_view_new.view.* import kotlinx.android.synthetic.main.confide_recommend_view_new.view.*
...@@ -84,8 +81,24 @@ class ConfideHomeRecommendView(var view: IConfideHomeContract.View, context: Con ...@@ -84,8 +81,24 @@ class ConfideHomeRecommendView(var view: IConfideHomeContract.View, context: Con
setListenAndScore(bodyBean) setListenAndScore(bodyBean)
//设置页面点击事件 //设置页面点击事件
this.setOnClickListener { this.setOnClickListener {
ActionCountUtils.record(
"listen_counselor_list_page",
"listen_counselor_card_click",
bodyBean.confidedId ?: ""
)
confideHomeEvent.consultantClick(bodyBean.linkUrl,bodyBean.doctorId) ActionCountUtils.record(
"listen_counselor_popupwindows_page",
"popupwindows_page_visit",
bodyBean.confidedId ?: "",
"1"
)
confideHomeEvent.consultantClick(bodyBean.doctorId, bodyBean.confidedId)
}
img_head.setOnClickListener {
ActionCountUtils.record("listen_counselor_list_page", "head_portrait_click", "2")
this.performClick()
} }
} }
...@@ -98,7 +111,7 @@ class ConfideHomeRecommendView(var view: IConfideHomeContract.View, context: Con ...@@ -98,7 +111,7 @@ class ConfideHomeRecommendView(var view: IConfideHomeContract.View, context: Con
.setFontSize(11, true) .setFontSize(11, true)
.create() .create()
tv_score.text = bodyBean.confidePraiseScore tv_score.text = bodyBean.confidePraiseScore
if (bodyBean.listenFree == true) { if (bodyBean.listenFree == true && bodyBean.confideLine == 1) {
confide_free_logo.visibility = VISIBLE confide_free_logo.visibility = VISIBLE
Glide.with(context) Glide.with(context)
.load(R.drawable.confide__free) .load(R.drawable.confide__free)
...@@ -162,6 +175,12 @@ class ConfideHomeRecommendView(var view: IConfideHomeContract.View, context: Con ...@@ -162,6 +175,12 @@ class ConfideHomeRecommendView(var view: IConfideHomeContract.View, context: Con
iv_play.setImageResource(R.drawable.confide_sond_play) iv_play.setImageResource(R.drawable.confide_sond_play)
} }
iv_play.setOnClickListener { iv_play.setOnClickListener {
ActionCountUtils.record(
"listen_counselor_list_page",
"listen_counselor_icon_click",
bodyBean.confidedId ?: "",
"4"
)
if (bodyBean.confideIsPlay!!) { if (bodyBean.confideIsPlay!!) {
confideHomeEvent.pauseVoice() confideHomeEvent.pauseVoice()
} else { } else {
...@@ -222,42 +241,35 @@ class ConfideHomeRecommendView(var view: IConfideHomeContract.View, context: Con ...@@ -222,42 +241,35 @@ class ConfideHomeRecommendView(var view: IConfideHomeContract.View, context: Con
// tv_price.text = sb.toString() // tv_price.text = sb.toString()
// } // }
/**
* 设置标签 todo 待优化
*/
private fun setConfideTag(bodyBean: ConfideHomeBodyBean) { private fun setConfideTag(bodyBean: ConfideHomeBodyBean) {
flowlayout_tag.removeAllViews()
if (null == bodyBean.confidedTag || bodyBean.confidedTag.isEmpty()) { if (null == bodyBean.confidedTag || bodyBean.confidedTag.isEmpty()) {
return return
} }
var i = 0 var i = 0
for (tag in bodyBean.confidedTag!!) { val sb = StringBuilder()
for (tag in bodyBean.confidedTag) {
if (i > 4) break if (i > 4) break
var params = LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, dp16) sb.append(tag).append(" | ")
params.setMargins(0, 0, dp4, 0)
var textView = TextView(context)
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10f)
textView.setTextColor(Color.parseColor("#808080"))
textView.gravity = Gravity.CENTER
textView.setPadding(dp3, 0, dp3, 0)
textView.setBackgroundResource(R.drawable.confide_bg_tag)
textView.layoutParams = params
textView.text = tag
flowlayout_tag.addView(textView)
i++ i++
} }
if (sb.length > 3) {
sb.setLength(sb.length - 3)
}
flowlayout_tag.text = sb.toString()
} }
/** /**
* 设置向TA倾诉按钮状态 * 设置向TA倾诉按钮状态
*/ */
private fun setConfideButton(bodyBean: ConfideHomeBodyBean) { private fun setConfideButton(bodyBean: ConfideHomeBodyBean) {
var sign2 = 1
when (bodyBean.confideLine) {//1在线 2离线 3通话中 4继续倾诉 when (bodyBean.confideLine) {//1在线 2离线 3通话中 4继续倾诉
1 -> { 1 -> {
tv_confide.setBackgroundResource(R.drawable.confide_line_1) tv_confide.setBackgroundResource(R.drawable.confide_line_1)
} }
2 -> { 2 -> {
//男他女她 //男他女她
sign2 = 3
if (bodyBean.confideSex == 1) { if (bodyBean.confideSex == 1) {
tv_confide.setBackgroundResource(R.drawable.confide_line_sex_boy) tv_confide.setBackgroundResource(R.drawable.confide_line_sex_boy)
} else { } else {
...@@ -265,6 +277,7 @@ class ConfideHomeRecommendView(var view: IConfideHomeContract.View, context: Con ...@@ -265,6 +277,7 @@ class ConfideHomeRecommendView(var view: IConfideHomeContract.View, context: Con
} }
} }
3 -> { 3 -> {
sign2 = 2
tv_confide.setBackgroundResource(R.drawable.confide_line_3) tv_confide.setBackgroundResource(R.drawable.confide_line_3)
} }
4 -> { 4 -> {
...@@ -272,9 +285,17 @@ class ConfideHomeRecommendView(var view: IConfideHomeContract.View, context: Con ...@@ -272,9 +285,17 @@ class ConfideHomeRecommendView(var view: IConfideHomeContract.View, context: Con
} }
} }
tv_confide.setOnClickListener { tv_confide.setOnClickListener {
if (!Utils.isFastClick()) {
ActionCountUtils.record(
"listen_counselor_list_page",
"listen_counselor_icon_click",
bodyBean.confidedId ?: "",
sign2.toString()
)
click(bodyBean) click(bodyBean)
} }
} }
}
/** /**
* 设置红包、原价 * 设置红包、原价
...@@ -323,7 +344,7 @@ class ConfideHomeRecommendView(var view: IConfideHomeContract.View, context: Con ...@@ -323,7 +344,7 @@ class ConfideHomeRecommendView(var view: IConfideHomeContract.View, context: Con
if (bodyBean.confideLine == 3) { if (bodyBean.confideLine == 3) {
} }
confideHomeEvent.consultantClick(bodyBean.linkUrl,bodyBean.doctorId) confideHomeEvent.consultantClick(bodyBean.doctorId, bodyBean.confidedId)
} }
2 -> { 2 -> {
//跳转私聊 并发送自定义消息 //跳转私聊 并发送自定义消息
......
...@@ -73,12 +73,15 @@ class ExpertIntroActivity : AppCompatActivity() { ...@@ -73,12 +73,15 @@ class ExpertIntroActivity : AppCompatActivity() {
} }
if (initData != null) { if (initData != null) {
val beans = JSON.parseArray(initData, ConfideHomeBodyBean::class.java) val beans = JSON.parseArray(initData, ConfideHomeBodyBean::class.java)
val isLogin = findRouteService(IUserService::class.java)?.isLogin() ?: false val isLogin = findRouteService(IUserService::class.java).isLogin()
val vms = beans.map { val vms = beans.map {
VideoViewModel().mapOf(it).apply { showFreeTag.set(!isLogin) } VideoViewModel().mapOf(it).apply { showFreeTag.set(!isLogin) }
} }
data.addAll(vms) data.addAll(vms)
} }
if (data.isEmpty()) {
loadMore()
}
binding.ivBack.setOnClickListener { onBackPressed() } binding.ivBack.setOnClickListener { onBackPressed() }
binding.tvConfideRecord.setOnClickListener { binding.tvConfideRecord.setOnClickListener {
if (!PhoneCallIn.loginByOneKeyLogin(this, true)) { if (!PhoneCallIn.loginByOneKeyLogin(this, true)) {
...@@ -104,7 +107,7 @@ class ExpertIntroActivity : AppCompatActivity() { ...@@ -104,7 +107,7 @@ class ExpertIntroActivity : AppCompatActivity() {
} }
}) })
adapter.checkNetwork() adapter.checkNetwork()
binding.viewPager.currentItem = initPos binding.viewPager.setCurrentItem(initPos, false)
} }
private fun loadMore() { private fun loadMore() {
...@@ -119,7 +122,7 @@ class ExpertIntroActivity : AppCompatActivity() { ...@@ -119,7 +122,7 @@ class ExpertIntroActivity : AppCompatActivity() {
if (resp.code == "200") { if (resp.code == "200") {
page++ page++
val body = resp.data.body val body = resp.data.body
val isLogin = findRouteService(IUserService::class.java)?.isLogin() ?: false val isLogin = findRouteService(IUserService::class.java).isLogin() ?: false
val map = body?.map { VideoViewModel().mapOf(it).apply { showFreeTag.set(!isLogin) } } val map = body?.map { VideoViewModel().mapOf(it).apply { showFreeTag.set(!isLogin) } }
map?.let { map?.let {
data.addAll(it) data.addAll(it)
......
...@@ -3,6 +3,7 @@ package com.ydl.confide.intro ...@@ -3,6 +3,7 @@ package com.ydl.confide.intro
import android.app.Activity import android.app.Activity
import android.content.Context import android.content.Context
import android.net.Uri import android.net.Uri
import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.ViewGroup import android.view.ViewGroup
import androidx.databinding.DataBindingUtil import androidx.databinding.DataBindingUtil
...@@ -16,13 +17,16 @@ import com.ydl.confide.R ...@@ -16,13 +17,16 @@ import com.ydl.confide.R
import com.ydl.confide.databinding.ItemExpertIntroBinding import com.ydl.confide.databinding.ItemExpertIntroBinding
import com.ydl.confide.home.http.ConfideHomeApi import com.ydl.confide.home.http.ConfideHomeApi
import com.ydl.confide.home.util.ConfideNetworkUtil import com.ydl.confide.home.util.ConfideNetworkUtil
import com.ydl.ydlcommon.ui.Loading
import com.ydl.ydlcommon.utils.TimeUtil import com.ydl.ydlcommon.utils.TimeUtil
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import com.ydl.ydlcommon.view.dialog.CommonDialog import com.ydl.ydlcommon.view.dialog.CommonDialog
import com.ydl.ydlnet.YDLHttpUtils import com.ydl.ydlnet.YDLHttpUtils
import com.yidianling.common.tools.ToastUtil import com.yidianling.common.tools.ToastUtil
import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers import io.reactivex.schedulers.Schedulers
import tv.danmaku.ijk.media.player.IMediaPlayer
internal class IntroAdapter( internal class IntroAdapter(
private val context: Context, private val context: Context,
...@@ -32,12 +36,16 @@ internal class IntroAdapter( ...@@ -32,12 +36,16 @@ internal class IntroAdapter(
private val videoViews = hashMapOf<Int, IjkVideoView>() private val videoViews = hashMapOf<Int, IjkVideoView>()
private val onInfoListener = OnVideoInfo()
private var hasAgreePlayWithoutWiFi = false private var hasAgreePlayWithoutWiFi = false
private var curPos = 0 private var curPos = 0
private var dispose: Disposable? = null private var dispose: Disposable? = null
private val keySp = "check_network_continue"
init { init {
lifecycleOwner.lifecycle.addObserver(this) lifecycleOwner.lifecycle.addObserver(this)
} }
...@@ -73,16 +81,24 @@ internal class IntroAdapter( ...@@ -73,16 +81,24 @@ internal class IntroAdapter(
videoView.tag = playUrl videoView.tag = playUrl
} }
} }
videoView.setOnInfoListener(onInfoListener)
videoViews.put(adapterPosition, videoView) videoViews.put(adapterPosition, videoView)
holder.onAttach(videoView) holder.onAttach(videoView)
} }
internal fun checkNetwork() { internal fun checkNetwork() {
if (!ConfideNetworkUtil.isWifi(context)) { if (!ConfideNetworkUtil.isWifi(context)) {
val lastCheck = context.getSharedPreferences("temp_test", Context.MODE_PRIVATE).getLong(keySp, 0)
val duration = System.currentTimeMillis() - lastCheck
if (duration < 24 * 60 * 60 * 1000) {
return
}
val dialog = CommonDialog.create(context) val dialog = CommonDialog.create(context)
.setTitle(context.getString(R.string.confide_tip)) .setTitle(context.getString(R.string.confide_tip))
.setMessage(context.getString(R.string.confide_video_wifi_tip)) .setMessage(context.getString(R.string.confide_video_wifi_tip))
.setLeftOnclick("继续播放") { .setLeftOnclick("继续播放") {
context.getSharedPreferences("temp_test", Context.MODE_PRIVATE).edit()
.putLong(keySp, System.currentTimeMillis()).apply()
hasAgreePlayWithoutWiFi = true hasAgreePlayWithoutWiFi = true
for (entry in videoViews.entries) { for (entry in videoViews.entries) {
val value = entry.value val value = entry.value
...@@ -98,8 +114,11 @@ internal class IntroAdapter( ...@@ -98,8 +114,11 @@ internal class IntroAdapter(
.setLeftButton_color(R.color.platform_but_text_color_selected) .setLeftButton_color(R.color.platform_but_text_color_selected)
.setRightButton_color(R.color.platform_text_bright_color) .setRightButton_color(R.color.platform_text_bright_color)
.setRightClick("取消") { .setRightClick("取消") {
if (context is Activity) { for (entry in videoViews.entries) {
context.onBackPressed() val value = entry.value
if (value.canPause()) {
value.pause()
}
} }
} }
.setCancelAble(true) .setCancelAble(true)
...@@ -136,6 +155,7 @@ internal class IntroAdapter( ...@@ -136,6 +155,7 @@ internal class IntroAdapter(
private fun onResume() { private fun onResume() {
val ijkVideoView = videoViews[curPos] val ijkVideoView = videoViews[curPos]
ijkVideoView?.start() ijkVideoView?.start()
onLoadDialStatus(curPos)
} }
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE) @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
...@@ -163,10 +183,19 @@ internal class IntroAdapter( ...@@ -163,10 +183,19 @@ internal class IntroAdapter(
private fun onLoadDialStatus(position: Int) { private fun onLoadDialStatus(position: Int) {
val confideApi = YDLHttpUtils.obtainApi(ConfideHomeApi::class.java) val confideApi = YDLHttpUtils.obtainApi(ConfideHomeApi::class.java)
val curUid = data[position].uid val doctorId = data[position].doctorId
if (curUid != null) { val confideId = data[position].confideId
val video = data[position].isVideo
ActionCountUtils.record(
"listen_counselor_content_play_page",
"listen_counselor_content_play_visit",
confideId ?: "",
if (video) "1" else "2",
"1"
)
if (doctorId != null) {
dispose?.dispose() dispose?.dispose()
dispose = confideApi.getDialStatus(curUid) dispose = confideApi.getDialStatus(doctorId)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe({ resp -> .subscribe({ resp ->
...@@ -194,4 +223,17 @@ internal class IntroAdapter( ...@@ -194,4 +223,17 @@ internal class IntroAdapter(
} }
} }
private inner class OnVideoInfo : IMediaPlayer.OnInfoListener {
override fun onInfo(mp: IMediaPlayer?, what: Int, extra: Int): Boolean {
Log.d("OnVideoInfo", "OnInfo:${what},${extra},${curPos}")
if (videoViews[curPos]?.mMediaPlayer == mp && data[curPos].isVideo) {
if (what == IMediaPlayer.MEDIA_INFO_BUFFERING_START) {
Loading.show(context)
} else if (what == IMediaPlayer.MEDIA_INFO_BUFFERING_END) {
Loading.close()
}
}
return true
}
}
} }
\ No newline at end of file
...@@ -18,6 +18,7 @@ import com.ydl.confide.home.bean.ConfideHomeBodyBean ...@@ -18,6 +18,7 @@ import com.ydl.confide.home.bean.ConfideHomeBodyBean
import com.ydl.ydlcommon.base.config.HttpConfig import com.ydl.ydlcommon.base.config.HttpConfig
import com.ydl.ydlcommon.modular.findRouteService import com.ydl.ydlcommon.modular.findRouteService
import com.ydl.ydlcommon.utils.LogUtil import com.ydl.ydlcommon.utils.LogUtil
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import com.ydl.ydlcommon.view.dialog.YDLShareDialog import com.ydl.ydlcommon.view.dialog.YDLShareDialog
import com.yidianling.im.api.service.IImService import com.yidianling.im.api.service.IImService
import io.reactivex.Observable import io.reactivex.Observable
...@@ -49,34 +50,81 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) : ...@@ -49,34 +50,81 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) :
fun onBind(item: VideoViewModel) { fun onBind(item: VideoViewModel) {
vm = item vm = item
binding.layoutCall.setOnClickListener { binding.layoutCall.setOnClickListener {
ActionCountUtils.record(
"listen_counselor_content_play_page",
"listen_counselor_content_play_icon_click",
item.confideId.toString(),
if (item.isVideo) "1" else "2",
"6"
)
showDoctorDetail(item) showDoctorDetail(item)
} }
binding.btnChat.setOnClickListener { binding.btnChat.setOnClickListener {
val aty = it.context as? Activity val aty = it.context as? Activity
if (aty != null && !item.uid.isNullOrEmpty()) { if (aty != null && !item.uid.isNullOrEmpty()) {
findRouteService(IImService::class.java)?.startChat(aty, item.uid!!, 0, 0) ActionCountUtils.record(
"listen_counselor_content_play_page",
"listen_counselor_content_play_icon_click",
item.confideId.toString(),
if (item.isVideo) "1" else "2",
"7"
)
findRouteService(IImService::class.java).startChat(aty, item.uid!!, 0, 0)
} }
} }
binding.btnEvaluate.setOnClickListener { binding.btnEvaluate.setOnClickListener {
item.doctorId?.let { item.doctorId?.let {
ActionCountUtils.record(
"listen_counselor_content_play_page",
"listen_counselor_content_play_icon_click",
item.confideId ?: "",
if (item.isVideo) "1" else "2",
"8"
)
ConfideBottomSheetDialogFragment() ConfideBottomSheetDialogFragment()
.showBottomSheetDialog( .showBottomSheetDialog(
itemView.context as FragmentActivity, itemView.context as FragmentActivity,
HttpConfig.MH5_URL + ConfideRoute.h5ExpertEval(it), HttpConfig.MH5_URL + ConfideRoute.h5ExpertEval(it, item.confideId ?: ""),
it it
) )
} }
} }
binding.tvName.setOnClickListener { binding.tvName.setOnClickListener {
ActionCountUtils.record(
"listen_counselor_popupwindows_page",
"popupwindows_page_visit",
item.confideId ?: "",
"4"
)
showDoctorDetail(item) showDoctorDetail(item)
} }
binding.ivAvatar.setOnClickListener { binding.ivAvatar.setOnClickListener {
ActionCountUtils.record(
"listen_counselor_content_play_page",
"listen_counselor_content_play_icon_click",
item.confideId ?: "",
if (item.isVideo) "1" else "2",
"10"
)
ActionCountUtils.record(
"listen_counselor_popupwindows_page",
"popupwindows_page_visit",
item.confideId ?: "",
"3"
)
showDoctorDetail(item) showDoctorDetail(item)
} }
binding.vDisableClick.setOnClickListener { } binding.vDisableClick.setOnClickListener { }
binding.btnShare.setOnClickListener { binding.btnShare.setOnClickListener {
val aty = it.context as? Activity val aty = it.context as? Activity
if (aty != null) { if (aty != null) {
ActionCountUtils.record(
"listen_counselor_content_play_page",
"listen_counselor_content_play_icon_click",
item.confideId ?: "",
if (item.isVideo) "1" else "2",
"9"
)
var shareUrl = "${HttpConfig.MH5_URL}experts/${item.doctorId}" var shareUrl = "${HttpConfig.MH5_URL}experts/${item.doctorId}"
if (!item.confideId.isNullOrBlank()) { if (!item.confideId.isNullOrBlank()) {
shareUrl += "?id=${item.confideId}" shareUrl += "?id=${item.confideId}"
...@@ -89,6 +137,13 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) : ...@@ -89,6 +137,13 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) :
} }
} }
binding.videoView.setOnClickListener { binding.videoView.setOnClickListener {
ActionCountUtils.record(
"listen_counselor_content_play_page",
"listen_counselor_content_play_icon_click",
item.confideId ?: "",
if (item.isVideo) "1" else "2",
if (item.isVideo) "4" else "2"
)
if (video?.canPause() == true) { if (video?.canPause() == true) {
video?.pause() video?.pause()
if (item.isVideo) { if (item.isVideo) {
...@@ -99,6 +154,13 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) : ...@@ -99,6 +154,13 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) :
} }
} }
binding.ivPlay.setOnClickListener { binding.ivPlay.setOnClickListener {
ActionCountUtils.record(
"listen_counselor_content_play_page",
"listen_counselor_content_play_icon_click",
item.confideId.toString(),
if (item.isVideo) "1" else "2",
if (item.isVideo) "3" else "1"
)
video?.start() video?.start()
if (item.isVideo) { if (item.isVideo) {
binding.ivPlay.visibility = View.GONE binding.ivPlay.visibility = View.GONE
...@@ -107,6 +169,13 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) : ...@@ -107,6 +169,13 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) :
} }
} }
binding.voicePlay.setOnClickListener { binding.voicePlay.setOnClickListener {
ActionCountUtils.record(
"listen_counselor_content_play_page",
"listen_counselor_content_play_icon_click",
item.confideId.toString(),
if (item.isVideo) "1" else "2",
if (item.isVideo) "3" else "1"
)
if (video?.isPlaying == true) { if (video?.isPlaying == true) {
video?.pause() video?.pause()
binding.voicePlay.stop() binding.voicePlay.stop()
...@@ -132,6 +201,14 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) : ...@@ -132,6 +201,14 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) :
video?.start() video?.start()
binding.ivPlay.visibility = View.GONE binding.ivPlay.visibility = View.GONE
} }
ActionCountUtils.record(
"listen_counselor_content_play_page",
"listen_counselor_content_play_icon_click",
item.confideId.toString(),
if (item.isVideo) "1" else "2",
"5"
)
} }
}) })
binding.voicePlay.visibility = binding.voicePlay.visibility =
...@@ -150,10 +227,6 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) : ...@@ -150,10 +227,6 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) :
binding.seekbar.visibility = View.GONE binding.seekbar.visibility = View.GONE
} }
} }
video?.setOnInfoListener { mp, what, extra ->
Log.d(TAG, "OnInfo:${what},${extra}")
return@setOnInfoListener true
}
video?.setOnCompletionListener { video?.setOnCompletionListener {
video?.seekTo(0) video?.seekTo(0)
video?.start() video?.start()
...@@ -200,9 +273,10 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) : ...@@ -200,9 +273,10 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) :
} }
private fun showDoctorDetail(item: VideoViewModel) { private fun showDoctorDetail(item: VideoViewModel) {
if (!item.linkUrl.isNullOrBlank()) { item.confideId?.let {
val url = HttpConfig.MH5_URL + ConfideRoute.h5ConfideIntro(it)
ConfideBottomSheetDialogFragment() ConfideBottomSheetDialogFragment()
.showBottomSheetDialog(itemView.context as FragmentActivity, item.linkUrl!!, item.doctorId!!) .showBottomSheetDialog(itemView.context as FragmentActivity, url, item.doctorId!!)
} }
} }
} }
...@@ -223,7 +297,6 @@ class VideoViewModel { ...@@ -223,7 +297,6 @@ class VideoViewModel {
var uid: String? = null var uid: String? = null
var doctorId: String? = null var doctorId: String? = null
var confideId: String? = null var confideId: String? = null
var linkUrl: String? = null
} }
private fun genMinProgramPath(url: String): String { private fun genMinProgramPath(url: String): String {
...@@ -240,7 +313,7 @@ internal fun VideoViewModel.mapOf(bean: ConfideHomeBodyBean): VideoViewModel { ...@@ -240,7 +313,7 @@ internal fun VideoViewModel.mapOf(bean: ConfideHomeBodyBean): VideoViewModel {
title.set(bean.title) title.set(bean.title)
val sb = StringBuilder() val sb = StringBuilder()
bean.confidedTag?.forEach { sb.append(it).append(" | ") } bean.confidedTag?.forEach { sb.append(it).append(" | ") }
if (sb.isNotEmpty()) { if (sb.length > 3) {
sb.setLength(sb.length - 3) sb.setLength(sb.length - 3)
} }
tag.set(sb.toString()) tag.set(sb.toString())
...@@ -256,9 +329,6 @@ internal fun VideoViewModel.mapOf(bean: ConfideHomeBodyBean): VideoViewModel { ...@@ -256,9 +329,6 @@ internal fun VideoViewModel.mapOf(bean: ConfideHomeBodyBean): VideoViewModel {
uid = bean.uid?.toString() uid = bean.uid?.toString()
doctorId = bean.doctorId doctorId = bean.doctorId
confideId = bean.confidedId confideId = bean.confidedId
doctorId?.let {
linkUrl = HttpConfig.MH5_URL + ConfideRoute.h5ExpertEval(it)
}
return this return this
} }
......
...@@ -2,9 +2,11 @@ package com.ydl.confide.api ...@@ -2,9 +2,11 @@ package com.ydl.confide.api
object ConfideRoute { object ConfideRoute {
const val R_VIDEO_SHOW = "confide/expert_video" const val R_VIDEO_SHOW = "/confide/expert_video"
const val R_CONFIDE_HOME = "/confide/home"
fun h5ConfideIntro(id: String) = "jy/listenMask?listenerId=${id}" fun h5ConfideIntro(id: String) = "jy/listenMask?listenerId=${id}"
fun h5ExpertEval(id: String) = "comment/evaList/${id}?listenerId=${id}" fun h5ExpertEval(doctorId: String, confideId: String) =
"comment/evaList/${doctorId}?listenerId=${confideId}&fromVideo=1"
} }
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:endColor="#33000000"
android:startColor="#00000000" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:bottomRightRadius="6dp"/> <corners android:bottomRightRadius="6dp"/>
<solid android:color="#BBC1CD" /> <solid android:color="#B3BBC1CD" />
</shape> </shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:bottomRightRadius="6dp"/> <corners android:bottomRightRadius="6dp"/>
<solid android:color="#FF994B"/> <solid android:color="#CCFF994B"/>
</shape> </shape>
\ No newline at end of file
...@@ -5,9 +5,6 @@ ...@@ -5,9 +5,6 @@
<corners <corners
android:radius="8dp"/> android:radius="8dp"/>
<solid android:color="#eaffffff"/> <solid android:color="#ffffff"/>
<stroke android:width="0.5dp"
android:color="#cccccc"/>
</shape> </shape>
\ No newline at end of file
...@@ -4,4 +4,7 @@ ...@@ -4,4 +4,7 @@
<gradient <gradient
android:endColor="#48CC95" android:endColor="#48CC95"
android:startColor="#61CEAC" /> android:startColor="#61CEAC" />
<stroke
android:width="1dp"
android:color="#69FFFFFF" />
</shape> </shape>
\ No newline at end of file
...@@ -4,4 +4,7 @@ ...@@ -4,4 +4,7 @@
<gradient <gradient
android:endColor="#BBC1CD" android:endColor="#BBC1CD"
android:startColor="#D5D6D7" /> android:startColor="#D5D6D7" />
<stroke
android:width="1dp"
android:color="#69FFFFFF" />
</shape> </shape>
\ No newline at end of file
...@@ -4,4 +4,7 @@ ...@@ -4,4 +4,7 @@
<gradient <gradient
android:endColor="#FF994B" android:endColor="#FF994B"
android:startColor="#F6B37F" /> android:startColor="#F6B37F" />
<stroke
android:width="1dp"
android:color="#69FFFFFF" />
</shape> </shape>
\ No newline at end of file
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
app:shapeBg="@{0x26000000}" app:shapeBg="@{0x26000000}"
app:shapeRadius="@{15}" app:shapeRadius="@{15}"
app:shapeStrokeWidth="@{1}" app:shapeStrokeWidth="@{1}"
app:shapeStrokeColor="@{0xFFFFFFFF}" /> app:shapeStrokeColor="@{0x69FFFFFF}" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</layout> </layout>
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
android:layout_marginStart="@dimen/platform_dp_15" android:layout_marginStart="@dimen/platform_dp_15"
android:layout_marginEnd="@dimen/platform_dp_15" android:layout_marginEnd="@dimen/platform_dp_15"
android:background="@color/transparent" android:background="@color/transparent"
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:orientation="horizontal"> android:orientation="horizontal">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/layoutCall" android:id="@+id/layoutCall"
android:layout_width="150dp" android:layout_width="150dp"
android:layout_height="42dp" android:layout_height="44dp"
android:layout_marginBottom="32dp" android:layout_marginBottom="32dp"
android:background="@drawable/confide_line_bg_1" android:background="@drawable/confide_line_bg_1"
android:visibility="gone" android:visibility="gone"
tools:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/layoutChange" app:layout_constraintRight_toLeftOf="@id/layoutChange"
> tools:visibility="visible">
<ImageView <ImageView
android:id="@+id/ivCall" android:id="@+id/ivCall"
...@@ -45,7 +45,9 @@ ...@@ -45,7 +45,9 @@
app:layout_constraintBottom_toTopOf="@+id/tvTime" app:layout_constraintBottom_toTopOf="@+id/tvTime"
app:layout_constraintLeft_toRightOf="@+id/ivCall" app:layout_constraintLeft_toRightOf="@+id/ivCall"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/> app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed" />
<TextView <TextView
android:id="@+id/tvTime" android:id="@+id/tvTime"
android:layout_width="wrap_content" android:layout_width="wrap_content"
...@@ -60,7 +62,9 @@ ...@@ -60,7 +62,9 @@
app:layout_constraintTop_toBottomOf="@+id/tvCall" app:layout_constraintTop_toBottomOf="@+id/tvCall"
tools:text="剩余1分40秒" /> tools:text="剩余1分40秒" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<TextView <TextView
android:id="@+id/first_order"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/bg_confide_free" android:background="@drawable/bg_confide_free"
...@@ -71,7 +75,6 @@ ...@@ -71,7 +75,6 @@
android:text="首单免费" android:text="首单免费"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="11sp" android:textSize="11sp"
android:id="@+id/first_order"
android:visibility="gone" android:visibility="gone"
app:layout_constraintCircle="@+id/layoutCall" app:layout_constraintCircle="@+id/layoutCall"
app:layout_constraintCircleAngle="70" app:layout_constraintCircleAngle="70"
...@@ -81,34 +84,32 @@ ...@@ -81,34 +84,32 @@
<LinearLayout <LinearLayout
android:id="@+id/layoutChange" android:id="@+id/layoutChange"
android:layout_width="150dp" android:layout_width="150dp"
android:layout_height="42dp" android:layout_height="44dp"
android:layout_marginStart="@dimen/platform_dp_23" android:layout_marginStart="@dimen/platform_dp_23"
android:layout_marginBottom="32dp" android:layout_marginBottom="32dp"
android:visibility="gone"
tools:visibility="visible"
android:background="@drawable/confide_line_bg_change" android:background="@drawable/confide_line_bg_change"
app:layout_constraintTop_toTopOf="@id/layoutCall"
app:layout_constraintLeft_toRightOf="@id/layoutCall"
app:layout_constraintRight_toRightOf="parent"
android:gravity="center" android:gravity="center"
android:paddingLeft="28dp" android:paddingLeft="28dp"
android:paddingRight="28dp"> android:paddingRight="28dp"
android:visibility="gone"
app:layout_constraintLeft_toRightOf="@id/layoutCall"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/layoutCall"
tools:visibility="visible">
<TextView <TextView
android:id="@+id/layout_change_text"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="再换一位" android:text="再换一位"
android:id="@+id/layout_change_text"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="17sp" android:textSize="17sp" />
/>
<ProgressBar <ProgressBar
android:id="@+id/confide_progress"
android:layout_width="@dimen/platform_dp_20" android:layout_width="@dimen/platform_dp_20"
android:layout_height="@dimen/platform_dp_20" android:layout_height="@dimen/platform_dp_20"
android:id="@+id/confide_progress"
android:visibility="gone"
android:indeterminateDrawable="@drawable/confide_progress" android:indeterminateDrawable="@drawable/confide_progress"
> android:visibility="gone"></ProgressBar>
</ProgressBar>
</LinearLayout> </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -22,14 +22,16 @@ ...@@ -22,14 +22,16 @@
android:id="@+id/quick_consult_card" android:id="@+id/quick_consult_card"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentBottom="true" android:layout_alignParentBottom="true"
android:layout_marginLeft="15dp" android:layout_marginLeft="15dp"
android:layout_marginRight="15dp" android:layout_marginRight="15dp"
android:layout_marginBottom="30dp" android:layout_marginBottom="20dp"
android:background="@drawable/confide_card_consult_bg" android:background="@drawable/confide_card_consult_bg"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingLeft="@dimen/platform_dp_8" android:paddingLeft="@dimen/platform_dp_8"
android:paddingTop="1dp"
android:elevation="2dp"
android:paddingBottom="1dp"
android:paddingRight="@dimen/platform_dp_8" android:paddingRight="@dimen/platform_dp_8"
android:visibility="gone" android:visibility="gone"
tools:visibility="visible"> tools:visibility="visible">
...@@ -75,27 +77,32 @@ ...@@ -75,27 +77,32 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="30dp" android:layout_height="30dp"
android:background="@drawable/confide_consult_btn_bg" android:background="@drawable/confide_consult_btn_bg"
android:layout_marginRight="24dp"
android:gravity="center" android:gravity="center"
android:paddingTop="@dimen/platform_dp_5" android:paddingTop="@dimen/platform_dp_5"
android:paddingBottom="@dimen/platform_dp_5" android:paddingBottom="@dimen/platform_dp_5"
android:paddingLeft="@dimen/platform_dp_7" android:paddingLeft="@dimen/platform_dp_7"
android:paddingRight="@dimen/platform_dp_7" android:paddingRight="@dimen/platform_dp_7"
android:text="我要倾诉" android:text="我要倾诉"
android:layout_marginTop="@dimen/platform_dp_15" android:layout_marginTop="@dimen/platform_dp_12"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="13sp" android:textSize="13sp"
android:drawableRight="@drawable/confide_right_arrow" android:drawableRight="@drawable/confide_right_arrow" />
/> <TextView
<ImageView
android:layout_width="@dimen/platform_dp_40"
android:layout_height="@dimen/confide_dp_25"
android:src="@drawable/confide__free"
android:layout_marginStart="@dimen/platform_dp_40"
android:id="@+id/confide_Free" android:id="@+id/confide_Free"
> android:layout_width="wrap_content"
android:layout_height="wrap_content"
</ImageView> android:background="@drawable/bg_confide_free"
android:layout_gravity="right|top"
android:paddingLeft="5dp"
android:paddingTop="2dp"
android:paddingRight="5dp"
android:paddingBottom="2dp"
android:text="首单免费"
android:visibility="gone"
android:textColor="@color/white"
android:textSize="11sp" />
</FrameLayout> </FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:cardElevation="0dp" app:cardElevation="0dp"
app:cardCornerRadius="6dp" app:cardCornerRadius="6dp"
android:layout_marginTop="@dimen/platform_dp_15" android:layout_marginTop="@dimen/platform_dp_24"
android:layout_marginStart="@dimen/platform_dp_15" android:layout_marginStart="@dimen/platform_dp_15"
android:id="@+id/img_bg" android:id="@+id/img_bg"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
...@@ -116,7 +116,7 @@ ...@@ -116,7 +116,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textSize="@dimen/platform_sp_12" android:textSize="@dimen/platform_sp_12"
android:textColor="#BCBCBC" android:textColor="#BCBCBC"
android:text="向TA倾诉" android:text="倾诉人次"
/> />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
...@@ -147,25 +147,30 @@ ...@@ -147,25 +147,30 @@
/> />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<LinearLayout
<TextView
android:id="@+id/flowlayout_tag" android:id="@+id/flowlayout_tag"
android:orientation="horizontal" android:layout_width="0dp"
android:layout_width="wrap_content"
android:layout_height="16dp" android:layout_height="16dp"
app:layout_constraintStart_toEndOf="@id/img_bg"
android:layout_marginStart="14dp" android:layout_marginStart="14dp"
app:layout_constraintBottom_toBottomOf="@id/img_bg" android:layout_marginEnd="12dp"
/> android:textColor="#9495A0"
android:textSize="12sp"
app:layout_constraintBottom_toBottomOf="@+id/img_bg"
app:layout_constraintEnd_toStartOf="@+id/price_content"
app:layout_constraintStart_toEndOf="@+id/img_bg" />
<TextView <TextView
android:id="@+id/price_content"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:layout_marginRight="16dp"
android:text="50元/25分钟" android:text="50元/25分钟"
android:id="@+id/price_content"
android:textSize="@dimen/platform_sp_12" android:textSize="@dimen/platform_sp_12"
app:layout_constraintStart_toEndOf="@id/flowlayout_tag" app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="@id/flowlayout_tag" app:layout_constraintTop_toBottomOf="@+id/ll_confide_data" />
>
</TextView>
<TextView <TextView
android:id="@+id/tv_content" android:id="@+id/tv_content"
android:layout_width="wrap_content" android:layout_width="wrap_content"
...@@ -182,6 +187,7 @@ ...@@ -182,6 +187,7 @@
<FrameLayout <FrameLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
> >
...@@ -194,8 +200,8 @@ ...@@ -194,8 +200,8 @@
android:gravity="center" android:gravity="center"
tools:background="@drawable/confide_line_1"/> tools:background="@drawable/confide_line_1"/>
<ImageView <ImageView
android:layout_width="wrap_content" android:layout_width="42dp"
android:layout_height="wrap_content" android:layout_height="21dp"
android:id="@+id/confide_free_logo" android:id="@+id/confide_free_logo"
android:layout_marginTop="@dimen/platform_dp_5" android:layout_marginTop="@dimen/platform_dp_5"
android:layout_marginStart="@dimen/platform_dp_8" android:layout_marginStart="@dimen/platform_dp_8"
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rl_confide_title_layout" android:id="@+id/rl_confide_title_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="48dp" android:layout_height="48dp"
...@@ -42,44 +41,44 @@ ...@@ -42,44 +41,44 @@
android:layout_width="40dp" android:layout_width="40dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_marginBottom="2dp"
android:drawableTop="@drawable/ic_action_confide_order" android:drawableTop="@drawable/ic_action_confide_order"
android:drawablePadding="4dp" android:drawablePadding="4dp"
android:gravity="center" android:gravity="center"
android:text="订单" android:text="订单"
android:textColor="@color/_9" android:textColor="@color/_9"
android:textSize="7sp" android:textSize="8sp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toLeftOf="@+id/img_customer" app:layout_constraintRight_toLeftOf="@+id/img_customer"/>
app:layout_constraintTop_toTopOf="parent" />
<TextView <TextView
android:id="@+id/img_customer" android:id="@+id/img_customer"
android:layout_width="40dp" android:layout_width="40dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_marginBottom="2dp"
android:drawableTop="@drawable/ic_action_confide_customer" android:drawableTop="@drawable/ic_action_confide_customer"
android:drawablePadding="4dp" android:drawablePadding="4dp"
android:gravity="center" android:gravity="center"
android:text="客服" android:text="客服"
android:textColor="@color/_9" android:textColor="@color/_9"
android:textSize="7sp" android:textSize="8sp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toLeftOf="@+id/img_help" app:layout_constraintRight_toLeftOf="@+id/img_help" />
app:layout_constraintTop_toTopOf="parent" />
<TextView <TextView
android:id="@+id/img_help" android:id="@+id/img_help"
android:layout_width="40dp" android:layout_width="40dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_marginBottom="2dp"
android:drawableTop="@drawable/ic_action_confide_help" android:drawableTop="@drawable/ic_action_confide_help"
android:drawablePadding="4dp" android:drawablePadding="4dp"
android:gravity="center" android:gravity="center"
android:text="帮助" android:text="帮助"
android:textColor="@color/_9" android:textColor="@color/_9"
android:textSize="7sp" android:textSize="8sp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent" />
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</RelativeLayout> </RelativeLayout>
...@@ -66,11 +66,12 @@ ...@@ -66,11 +66,12 @@
android:id="@+id/vDisableClick" android:id="@+id/vDisableClick"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
android:background="@drawable/bg_expert_video_bottom_cover"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@+id/tvName" app:layout_constraintTop_toTopOf="@+id/tvName"
tools:visibility="gone" /> tools:visibility="visible" />
<SeekBar <SeekBar
android:id="@+id/seekbar" android:id="@+id/seekbar"
...@@ -90,7 +91,7 @@ ...@@ -90,7 +91,7 @@
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/layoutCall" android:id="@+id/layoutCall"
android:layout_width="160dp" android:layout_width="160dp"
android:layout_height="42dp" android:layout_height="44dp"
android:layout_marginBottom="32dp" android:layout_marginBottom="32dp"
android:background="@{item.lineStatus==3?@drawable/confide_line_bg_3:(item.lineStatus==2?@drawable/confide_line_bg_2:@drawable/confide_line_bg_1)}" android:background="@{item.lineStatus==3?@drawable/confide_line_bg_3:(item.lineStatus==2?@drawable/confide_line_bg_2:@drawable/confide_line_bg_1)}"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
...@@ -115,6 +116,7 @@ ...@@ -115,6 +116,7 @@
android:id="@+id/tvCall" android:id="@+id/tvCall"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="立即拨打"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="16sp" android:textSize="16sp"
app:confideLineText="@{item.lineStatus}" app:confideLineText="@{item.lineStatus}"
...@@ -122,7 +124,7 @@ ...@@ -122,7 +124,7 @@
app:layout_constraintLeft_toRightOf="@+id/ivCall" app:layout_constraintLeft_toRightOf="@+id/ivCall"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:text="通话中" /> app:layout_constraintVertical_chainStyle="packed" />
<TextView <TextView
android:id="@+id/tvTime" android:id="@+id/tvTime"
...@@ -157,15 +159,18 @@ ...@@ -157,15 +159,18 @@
<TextView <TextView
android:id="@+id/tvTag" android:id="@+id/tvTag"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="12dp" android:layout_marginLeft="12dp"
android:layout_marginRight="40dp"
android:layout_marginBottom="60dp" android:layout_marginBottom="60dp"
android:maxLines="1"
android:text="@{item.tag}" android:text="@{item.tag}"
android:textColor="#99FFFFFF" android:textColor="#99FFFFFF"
android:textSize="13sp" android:textSize="13sp"
app:layout_constraintBottom_toTopOf="@+id/layoutCall" app:layout_constraintBottom_toTopOf="@+id/layoutCall"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@+id/btnShare"
tools:text="tag|tag|tag" /> tools:text="tag|tag|tag" />
<TextView <TextView
...@@ -174,6 +179,7 @@ ...@@ -174,6 +179,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginRight="40dp" android:layout_marginRight="40dp"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:maxLines="3"
android:text="@{item.intro}" android:text="@{item.intro}"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="15sp" android:textSize="15sp"
...@@ -199,6 +205,7 @@ ...@@ -199,6 +205,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="8dp" android:layout_marginLeft="8dp"
android:layout_marginBottom="1dp"
android:text="@{item.count}" android:text="@{item.count}"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="13sp" android:textSize="13sp"
......
<resources> <resources>
<string name="confide_title">即时倾诉</string> <string name="confide_title">倾诉热线</string>
<string name="confide_video_wifi_tip">当前处于非wifi环境下,播放会消耗流量,确定继续播放?</string> <string name="confide_video_wifi_tip">当前处于非wifi环境下,播放会消耗流量,确定继续播放?</string>
<string name="confide_tip">提示</string> <string name="confide_tip">提示</string>
<string name="confide_tip_remain_time">(剩余%s)</string> <string name="confide_tip_remain_time">(剩余%s)</string>
......
...@@ -10,6 +10,7 @@ import com.ydl.ydl_router.manager.YDLRouterManager ...@@ -10,6 +10,7 @@ import com.ydl.ydl_router.manager.YDLRouterManager
import com.ydl.ydlcommon.data.http.RxUtils import com.ydl.ydlcommon.data.http.RxUtils
import com.ydl.ydlcommon.data.http.ThrowableConsumer import com.ydl.ydlcommon.data.http.ThrowableConsumer
import com.ydl.ydlcommon.router.IYDLRouterConstant import com.ydl.ydlcommon.router.IYDLRouterConstant
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import com.yidianling.course.R import com.yidianling.course.R
import com.yidianling.course.bean.RedListParam import com.yidianling.course.bean.RedListParam
import com.yidianling.course.net.CourseRetrofitUtils import com.yidianling.course.net.CourseRetrofitUtils
...@@ -62,6 +63,7 @@ class CourseRedPacketView : RelativeLayout { ...@@ -62,6 +63,7 @@ class CourseRedPacketView : RelativeLayout {
} }
JUMP_CONFIDE_HOME -> {//跳转倾诉频道页 JUMP_CONFIDE_HOME -> {//跳转倾诉频道页
// ARouter.getInstance().build("/confide/home").navigation() // ARouter.getInstance().build("/confide/home").navigation()
ActionCountUtils.record("listen_counselor_list_page", "listen_counselor_list_page_visit", "3")
YDLRouterManager.router(IYDLRouterConstant.ROUTER_CONFIDE_HOME) YDLRouterManager.router(IYDLRouterConstant.ROUTER_CONFIDE_HOME)
} }
JUMP_EXPERT_INFO -> {//跳转专家详情页 JUMP_EXPERT_INFO -> {//跳转专家详情页
......
...@@ -7,11 +7,9 @@ import android.os.Bundle ...@@ -7,11 +7,9 @@ import android.os.Bundle
import android.text.TextUtils import android.text.TextUtils
import android.view.View import android.view.View
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.FragmentActivity
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.alibaba.android.arouter.launcher.ARouter import com.alibaba.android.arouter.launcher.ARouter
import com.ydl.confide.api.ConfideRoute import com.ydl.confide.api.ConfideRoute
import com.ydl.confide.api.IConfideService
import com.ydl.media.audio.AudioPlayer import com.ydl.media.audio.AudioPlayer
import com.ydl.media.audio.model.Music import com.ydl.media.audio.model.Music
import com.ydl.media.view.PlayTypeEnum import com.ydl.media.view.PlayTypeEnum
...@@ -26,7 +24,7 @@ import com.ydl.ydlcommon.base.config.HttpConfig ...@@ -26,7 +24,7 @@ import com.ydl.ydlcommon.base.config.HttpConfig
import com.ydl.ydlcommon.bean.ShareData import com.ydl.ydlcommon.bean.ShareData
import com.ydl.ydlcommon.data.PlatformRamImpl import com.ydl.ydlcommon.data.PlatformRamImpl
import com.ydl.ydlcommon.modular.ModularServiceManager import com.ydl.ydlcommon.modular.ModularServiceManager
import com.ydl.ydlcommon.modular.findRouteService import com.ydl.ydlcommon.modular.route
import com.ydl.ydlcommon.router.IYDLRouterConstant import com.ydl.ydlcommon.router.IYDLRouterConstant
import com.ydl.ydlcommon.utils.LogUtil import com.ydl.ydlcommon.utils.LogUtil
import com.ydl.ydlcommon.utils.Utils import com.ydl.ydlcommon.utils.Utils
...@@ -296,7 +294,7 @@ open class HomeBaseImpl : IHomeBaseEvent { ...@@ -296,7 +294,7 @@ open class HomeBaseImpl : IHomeBaseEvent {
ActionCountUtils.count(HomeBIConstants.YDL_USER_CONSULT_CLICK) ActionCountUtils.count(HomeBIConstants.YDL_USER_CONSULT_CLICK)
} }
override fun nowConfideClick() { override fun nowConfideClick(listenFree: Boolean) {
if (Utils.isFastClick()) { if (Utils.isFastClick()) {
//防止连击 //防止连击
return return
...@@ -304,7 +302,8 @@ open class HomeBaseImpl : IHomeBaseEvent { ...@@ -304,7 +302,8 @@ open class HomeBaseImpl : IHomeBaseEvent {
ActionCountUtils.count(HomeBIConstants.YDL_USER_TALK_IN_TIME_CLICK) ActionCountUtils.count(HomeBIConstants.YDL_USER_TALK_IN_TIME_CLICK)
//倾诉首页 ydl-user://confide/home //倾诉首页 ydl-user://confide/home
YDLRouterManager.router(IYDLRouterConstant.ROUTER_CONFIDE_HOME) ActionCountUtils.record("listen_counselor_list_page", "listen_counselor_list_page_visit", "1")
route(mContext, ConfideRoute.R_CONFIDE_HOME)
} }
override fun psychologyClassClick() { override fun psychologyClassClick() {
...@@ -360,12 +359,14 @@ open class HomeBaseImpl : IHomeBaseEvent { ...@@ -360,12 +359,14 @@ open class HomeBaseImpl : IHomeBaseEvent {
doctorId.toString() doctorId.toString()
) )
findRouteService(IConfideService::class.java) if (linkUrl.startsWith("http")) {
?.showExpertDetailDialog( YDLRouterManager.router(
mContext as FragmentActivity, IYDLRouterConstant.ROUTER_H5_H5,
HttpConfig.MH5_URL + ConfideRoute.h5ConfideIntro(doctorId.toString()), YDLRouterParams().putExtra(IYDLRouterConstant.EXTRA_URL, linkUrl), ""
doctorId.toString()
) )
} else {
YDLRouterManager.router(linkUrl)
}
} }
/** /**
......
package com.yidianling.home.event package com.yidianling.home.event
import androidx.recyclerview.widget.RecyclerView
import android.view.View import android.view.View
import androidx.recyclerview.widget.RecyclerView
import com.yidianling.home.model.bean.* import com.yidianling.home.model.bean.*
/** /**
...@@ -82,7 +82,7 @@ interface IHomeBaseEvent { ...@@ -82,7 +82,7 @@ interface IHomeBaseEvent {
/** /**
* 即可倾诉点击事件 * 即可倾诉点击事件
*/ */
fun nowConfideClick() fun nowConfideClick(listenFree: Boolean)
/** /**
* 心理课堂点击事件 * 心理课堂点击事件
......
...@@ -41,7 +41,6 @@ import com.yidianling.home.ui.view.HomeSpaceItemDecoration ...@@ -41,7 +41,6 @@ import com.yidianling.home.ui.view.HomeSpaceItemDecoration
import com.yidianling.home.utils.HomeAnimUtils import com.yidianling.home.utils.HomeAnimUtils
import com.yidianling.user.api.service.IUserService import com.yidianling.user.api.service.IUserService
import kotlinx.android.synthetic.ydl.home_fragment.* import kotlinx.android.synthetic.ydl.home_fragment.*
import kotlin.properties.Delegates
/** /**
...@@ -204,7 +203,7 @@ open class YdlHomeFragment : BaseMvpFragment<IHomeContract.View, HomePresenterIm ...@@ -204,7 +203,7 @@ open class YdlHomeFragment : BaseMvpFragment<IHomeContract.View, HomePresenterIm
homeEvent?.reservationExpertsClick() homeEvent?.reservationExpertsClick()
} }
tv_confide.setOnClickListener { tv_confide.setOnClickListener {
homeEvent?.nowConfideClick() homeEvent?.nowConfideClick(adapter?.listenFree ?: false)
} }
tv_course.setOnClickListener { tv_course.setOnClickListener {
homeEvent?.psychologyClassClick() homeEvent?.psychologyClassClick()
......
...@@ -8,10 +8,9 @@ import android.widget.LinearLayout ...@@ -8,10 +8,9 @@ import android.widget.LinearLayout
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.bumptech.glide.load.engine.DiskCacheStrategy import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.yidianling.common.tools.LogUtil import com.yidianling.common.tools.RxDeviceTool
import com.yidianling.home.R import com.yidianling.home.R
import com.yidianling.home.event.IHomeBaseEvent import com.yidianling.home.event.IHomeBaseEvent
import com.yidianling.common.tools.RxDeviceTool
import kotlinx.android.synthetic.ydl.home_button_banner_view.view.* import kotlinx.android.synthetic.ydl.home_button_banner_view.view.*
/** /**
...@@ -54,7 +53,7 @@ class HomeButtonBannerView(private val mContext: Context, private var homeEvent: ...@@ -54,7 +53,7 @@ class HomeButtonBannerView(private val mContext: Context, private var homeEvent:
homeEvent?.reservationExpertsClick() homeEvent?.reservationExpertsClick()
} }
homeModuleButtonBannerSecond.setOnClickListener { homeModuleButtonBannerSecond.setOnClickListener {
homeEvent?.nowConfideClick() homeEvent?.nowConfideClick(listenFree)
} }
homeModuleButtonBannerThird.setOnClickListener { homeModuleButtonBannerThird.setOnClickListener {
homeEvent?.psychologyClassClick() homeEvent?.psychologyClassClick()
......
...@@ -10,6 +10,7 @@ import android.widget.TextView ...@@ -10,6 +10,7 @@ import android.widget.TextView
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayout
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import com.yidianling.common.tools.LogUtil import com.yidianling.common.tools.LogUtil
import com.yidianling.home.R import com.yidianling.home.R
import com.yidianling.home.constract.HomeViewConfig import com.yidianling.home.constract.HomeViewConfig
...@@ -47,6 +48,7 @@ class HomeConfideView(private val mContext: Context, private var homeEvent: IHom ...@@ -47,6 +48,7 @@ class HomeConfideView(private val mContext: Context, private var homeEvent: IHom
View.inflate(mContext, R.layout.home_confide_view, this) View.inflate(mContext, R.layout.home_confide_view, this)
homeModuleConfideViewHomeCommonTitleView.setTitle(HomeViewConfig.getOrder().confideTitle) homeModuleConfideViewHomeCommonTitleView.setTitle(HomeViewConfig.getOrder().confideTitle)
homeModuleConfideViewHomeCommonTitleView.setOnClickListener { homeModuleConfideViewHomeCommonTitleView.setOnClickListener {
ActionCountUtils.record("listen_counselor_list_page", "listen_counselor_list_page_visit", "2")
homeEvent?.confideMoreClick() homeEvent?.confideMoreClick()
} }
} }
......
...@@ -5,6 +5,7 @@ import android.os.Bundle ...@@ -5,6 +5,7 @@ import android.os.Bundle
import android.os.Parcelable import android.os.Parcelable
import com.alibaba.android.arouter.facade.template.IProvider import com.alibaba.android.arouter.facade.template.IProvider
import com.alibaba.android.arouter.launcher.ARouter import com.alibaba.android.arouter.launcher.ARouter
import com.ydl.ydlcommon.BuildConfig
import com.ydl.ydlcommon.utils.LogUtil import com.ydl.ydlcommon.utils.LogUtil
...@@ -12,8 +13,14 @@ import com.ydl.ydlcommon.utils.LogUtil ...@@ -12,8 +13,14 @@ import com.ydl.ydlcommon.utils.LogUtil
* Created by haorui on 2019-09-21 . * Created by haorui on 2019-09-21 .
* Des:查找 Arouter 服务封装类 * Des:查找 Arouter 服务封装类
*/ */
fun <T> findRouteService(clz: Class<T>): T? = fun <T> findRouteService(clz: Class<T>): T {
ARouter.getInstance().navigation(clz) val service = ARouter.getInstance().navigation(clz)
if (service != null) return service
if (BuildConfig.DEBUG) {
throw IllegalStateException("check module dependency by [${clz.simpleName}]")
}
return service
}
fun route(context: Context?, route: String, vararg params: Pair<String, Any?>) { fun route(context: Context?, route: String, vararg params: Pair<String, Any?>) {
......
package com.ydl.ydlcommon.ui
import android.content.Context
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.FragmentActivity
object Loading {
private var loadingDialogFragment: DialogFragment? = null
fun show(context: Context?, msg: String? = null) {
if (context !is FragmentActivity) return
if (loadingDialogFragment == null) {
loadingDialogFragment = LoadingDialogFragment2.newInstance(msg)
}
if (loadingDialogFragment?.isAdded!!) {
return
}
// if (Looper.myLooper() == Looper.getMainLooper()) {
loadingDialogFragment?.show(context.supportFragmentManager, Loading::class.java.simpleName)
// } else
// context.runOnUiThread {
// loadingDialogFragment?.show(context.supportFragmentManager, Loading::class.java.simpleName)
// }
}
fun close() {
loadingDialogFragment?.dismissAllowingStateLoss()
}
}
package com.ydl.ydlcommon.ui
import android.animation.ObjectAnimator
import android.animation.ValueAnimator
import android.os.Bundle
import android.text.TextUtils
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.Window
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import com.ydl.ydlcommon.R
import kotlinx.android.synthetic.main.platform_fragment_loading_dialog.view.*
/**
* A simple [Fragment] subclass.
* Use the [LoadingDialogFragment2.newInstance] factory method to
* create an instance of this fragment.
*/
class LoadingDialogFragment2 : DialogFragment() {
private var msg: String? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
msg = arguments?.getString(ARG_MSG)
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
dialog?.requestWindowFeature(Window.FEATURE_NO_TITLE)
return inflater.inflate(R.layout.platform_fragment_loading_dialog2, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
startAnim(view)
if (!TextUtils.isEmpty(msg)) {
view.tvMsg.text = msg
} else {
view.tvMsg.visibility = View.GONE
}
}
override fun onStart() {
super.onStart()
dialog?.window?.setBackgroundDrawable(null)
val dp100 = (resources.displayMetrics.density * 100).toInt()
dialog?.window?.setLayout(dp100, dp100)
dialog?.window?.setDimAmount(0F)
}
private fun startAnim(view: View) {
val ivLoading = view.findViewById<View>(R.id.ivLoading)
val anim = ObjectAnimator.ofFloat(ivLoading, "rotation", 0F, 360F)
anim.duration = 1000
anim.repeatMode = ValueAnimator.RESTART
anim.repeatCount = ValueAnimator.INFINITE
anim.start()
}
companion object {
private val ARG_MSG = "arg_msg"
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param msg 要显示的信息.
* @return LoadingDialogFragment 实例
*/
fun newInstance(msg: String?): LoadingDialogFragment2 {
val fragment = LoadingDialogFragment2()
val args = Bundle()
args.putString(ARG_MSG, msg)
fragment.arguments = args
return fragment
}
}
override fun show(manager: FragmentManager, tag: String?) {
try {
//在每个add事务前增加一个remove事务,防止连续的add
manager.beginTransaction().remove(this).commitAllowingStateLoss()
super.show(manager, tag)
} catch (e: Exception) {
//同一实例使用不同的tag会异常,这里捕获一下
e.printStackTrace()
}
}
fun hide() {
dismissAllowingStateLoss()
}
}
...@@ -106,6 +106,11 @@ class ActionCountUtils { ...@@ -106,6 +106,11 @@ class ActionCountUtils {
count(uid, partId, position, url, api, signs = *arrayOf(sign1)) count(uid, partId, position, url, api, signs = *arrayOf(sign1))
} }
fun record(partId: String, position: String, vararg signs: String) {
val userId = ModularServiceManager.getPlatformUserService()?.getUser()?.userId ?: ""
count(userId, partId, position, url = "", api = "", signs = *signs)
}
/* /*
* *
* 测试用埋点,现在服务端统一用百度埋点 * 测试用埋点,现在服务端统一用百度埋点
...@@ -155,7 +160,7 @@ class ActionCountUtils { ...@@ -155,7 +160,7 @@ class ActionCountUtils {
DeviceIDHelper.getInstance().deviceId DeviceIDHelper.getInstance().deviceId
} }
actionDataParams.deviceId(deviceId) actionDataParams.deviceId(deviceId)
signs == null ?: signs.forEachIndexed { index, s -> signs.forEachIndexed { index, s ->
//拓展参数个数确定,暂不使用反射调用 //拓展参数个数确定,暂不使用反射调用
//actionDataParams.javaClass.getMethod("sign$index").invoke(s) //actionDataParams.javaClass.getMethod("sign$index").invoke(s)
when (index) { when (index) {
......
<?xml version="1.0" encoding="utf-8" ?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="100dp"
android:layout_height="100dp"
app:cardBackgroundColor="#66000000"
app:cardElevation="0dp"
app:contentPadding="0dp"
app:cardCornerRadius="8dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/ivLoading"
android:layout_width="32dp"
android:layout_height="32dp"
android:src="@drawable/ic_loading" />
<TextView
android:id="@+id/tvMsg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="18dp"
android:textColor="@color/white"
android:textSize="17sp"
tools:text="@string/platform_dialog_loading" />
</LinearLayout>
</androidx.cardview.widget.CardView>
\ No newline at end of file
...@@ -127,6 +127,8 @@ public class WebUrlParamsUtils { ...@@ -127,6 +127,8 @@ public class WebUrlParamsUtils {
if (userInfo != null) { if (userInfo != null) {
mTree.put("uid", userInfo.getUserId()); mTree.put("uid", userInfo.getUserId());
mTree.put("accessToken", userInfo.getToken()); mTree.put("accessToken", userInfo.getToken());
} else {
mTree.put("uid", "0");
} }
mTree.put("v", RxAppTool.getAppVersionName(BaseApp.Companion.getApp())); mTree.put("v", RxAppTool.getAppVersionName(BaseApp.Companion.getApp()));
mTree.put("isFromApp", "1");//1表示用户版调用接口 mTree.put("isFromApp", "1");//1表示用户版调用接口
......
...@@ -40,6 +40,7 @@ class H5JsBean { ...@@ -40,6 +40,7 @@ class H5JsBean {
var isFromQingShu = 0//是否是从专家倾述主页跳转私聊界面 0: 不是 1:是 var isFromQingShu = 0//是否是从专家倾述主页跳转私聊界面 0: 不是 1:是
var docHead: String? = null//聊天头像 var docHead: String? = null//聊天头像
var doctorId: Int = 0//医生id var doctorId: Int = 0//医生id
var confidedId: String?=null//医生id
var listenerId: Int = 0 var listenerId: Int = 0
var orderStatus: Int = 0 var orderStatus: Int = 0
var orderStatusDesc: String? = null var orderStatusDesc: String? = null
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment