Commit 4f823ebc by 万齐军

Merge branch 'feat/qj/confide_2.0' into 'd/v_confide_2.0'

Feat/qj/confide 2.0

See merge request app_android_lib/YDL-Component!46
parents b3e227f2 31897a3d
...@@ -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
......
...@@ -2,7 +2,9 @@ package com.ydl.confide.home ...@@ -2,7 +2,9 @@ package com.ydl.confide.home
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.Dialog import android.app.Dialog
import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.view.Gravity import android.view.Gravity
import android.view.LayoutInflater import android.view.LayoutInflater
...@@ -16,10 +18,7 @@ import com.google.android.material.bottomsheet.BottomSheetBehavior ...@@ -16,10 +18,7 @@ import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.bottomsheet.BottomSheetDialog
import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.tencent.smtt.export.external.interfaces.JsResult import com.tencent.smtt.export.external.interfaces.JsResult
import com.tencent.smtt.sdk.ValueCallback import com.tencent.smtt.sdk.*
import com.tencent.smtt.sdk.WebChromeClient
import com.tencent.smtt.sdk.WebSettings
import com.tencent.smtt.sdk.WebView
import com.ydl.confide.R import com.ydl.confide.R
import com.ydl.confide.home.http.ConfideHomeApi import com.ydl.confide.home.http.ConfideHomeApi
import com.ydl.utils.WebUrlParamsUtils import com.ydl.utils.WebUrlParamsUtils
...@@ -29,12 +28,12 @@ import com.ydl.webview.WebModularServiceUtils ...@@ -29,12 +28,12 @@ import com.ydl.webview.WebModularServiceUtils
import com.ydl.ydlcommon.modular.findRouteService import com.ydl.ydlcommon.modular.findRouteService
import com.ydl.ydlcommon.utils.TimeUtil import com.ydl.ydlcommon.utils.TimeUtil
import com.ydl.ydlnet.YDLHttpUtils import com.ydl.ydlnet.YDLHttpUtils
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 com.yidianling.user.api.service.IUserService
import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers import io.reactivex.schedulers.Schedulers
import java.util.*
class ConfideBottomSheetDialogFragment : BottomSheetDialogFragment() { class ConfideBottomSheetDialogFragment : BottomSheetDialogFragment() {
companion object { companion object {
...@@ -43,6 +42,8 @@ class ConfideBottomSheetDialogFragment : BottomSheetDialogFragment() { ...@@ -43,6 +42,8 @@ class ConfideBottomSheetDialogFragment : BottomSheetDialogFragment() {
private const val KEY_SHOULD_SHOW = "should_show" private const val KEY_SHOULD_SHOW = "should_show"
} }
private var firstVisitWXH5PayUrl = true
lateinit var wv_content: ProgressWebView lateinit var wv_content: ProgressWebView
lateinit var text_title: TextView lateinit var text_title: TextView
lateinit var line: View lateinit var line: View
...@@ -55,6 +56,7 @@ class ConfideBottomSheetDialogFragment : BottomSheetDialogFragment() { ...@@ -55,6 +56,7 @@ class ConfideBottomSheetDialogFragment : BottomSheetDialogFragment() {
lateinit var first_order: View lateinit var first_order: View
lateinit var confideProgress: View lateinit var confideProgress: View
lateinit var layout_change_text: View lateinit var layout_change_text: View
lateinit var itemView: View
lateinit var jumpUrl: String lateinit var jumpUrl: String
...@@ -65,12 +67,12 @@ class ConfideBottomSheetDialogFragment : BottomSheetDialogFragment() { ...@@ -65,12 +67,12 @@ class ConfideBottomSheetDialogFragment : BottomSheetDialogFragment() {
activity: FragmentActivity, activity: FragmentActivity,
jumpUrl: String, jumpUrl: String,
doctorId: String, doctorId: String,
shouldShow: Boolean? = false shouldShow: Boolean = false
) { ) {
arguments = Bundle().apply { arguments = Bundle().apply {
putString(KEY_JUMP_URL, jumpUrl) putString(KEY_JUMP_URL, jumpUrl)
putString(KEY_DOCTOR_ID, doctorId) putString(KEY_DOCTOR_ID, doctorId)
shouldShow?.let { putBoolean(KEY_SHOULD_SHOW, it) } putBoolean(KEY_SHOULD_SHOW, shouldShow)
} }
show(activity.supportFragmentManager, "confide_bottom_showdialog") show(activity.supportFragmentManager, "confide_bottom_showdialog")
} }
...@@ -132,11 +134,8 @@ class ConfideBottomSheetDialogFragment : BottomSheetDialogFragment() { ...@@ -132,11 +134,8 @@ class ConfideBottomSheetDialogFragment : BottomSheetDialogFragment() {
} }
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { private fun onShowReady(){
val dialog = super.onCreateDialog(savedInstanceState) as BottomSheetDialog itemView = LayoutInflater.from(context).inflate(R.layout.confide_bottom_two, null, false)
dialog.setOnShowListener {
val itemView =
LayoutInflater.from(context).inflate(R.layout.confide_bottom_two, null, false)
layoutCall = itemView.findViewById<View>(R.id.layoutCall) layoutCall = itemView.findViewById<View>(R.id.layoutCall)
layoutChange = itemView.findViewById<View>(R.id.layoutChange) layoutChange = itemView.findViewById<View>(R.id.layoutChange)
confideProgress = itemView.findViewById<View>(R.id.confide_progress) confideProgress = itemView.findViewById<View>(R.id.confide_progress)
...@@ -146,11 +145,6 @@ class ConfideBottomSheetDialogFragment : BottomSheetDialogFragment() { ...@@ -146,11 +145,6 @@ class ConfideBottomSheetDialogFragment : BottomSheetDialogFragment() {
first_order = itemView.findViewById<TextView>(R.id.first_order) first_order = itemView.findViewById<TextView>(R.id.first_order)
val isLogin = findRouteService(IUserService::class.java)?.isLogin() ?: false val isLogin = findRouteService(IUserService::class.java)?.isLogin() ?: false
first_order.visibility = if (isLogin) View.GONE else View.VISIBLE first_order.visibility = if (isLogin) View.GONE else View.VISIBLE
if (shouldShow == true) {
layoutChange.visibility = View.VISIBLE
} else {
layoutChange.visibility = View.GONE
}
layoutCall.setOnClickListener { layoutCall.setOnClickListener {
callJsFun(wv_content, "listenCallClick()") callJsFun(wv_content, "listenCallClick()")
} }
...@@ -159,6 +153,18 @@ class ConfideBottomSheetDialogFragment : BottomSheetDialogFragment() { ...@@ -159,6 +153,18 @@ class ConfideBottomSheetDialogFragment : BottomSheetDialogFragment() {
confideProgress.visibility = View.VISIBLE confideProgress.visibility = View.VISIBLE
callJsFun(wv_content, "handleNext()") callJsFun(wv_content, "handleNext()")
} }
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val dialog = super.onCreateDialog(savedInstanceState) as BottomSheetDialog
onShowReady()
dialog.setOnShowListener {
if (shouldShow == true) {
layoutChange.visibility = View.VISIBLE
} else {
layoutChange.visibility = View.GONE
}
val layoutParams = FrameLayout.LayoutParams( val layoutParams = FrameLayout.LayoutParams(
FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT,
FrameLayout.LayoutParams.WRAP_CONTENT FrameLayout.LayoutParams.WRAP_CONTENT
...@@ -167,7 +173,7 @@ class ConfideBottomSheetDialogFragment : BottomSheetDialogFragment() { ...@@ -167,7 +173,7 @@ class ConfideBottomSheetDialogFragment : BottomSheetDialogFragment() {
val bottomSheet = val bottomSheet =
(it as BottomSheetDialog).findViewById<View>(com.google.android.material.R.id.design_bottom_sheet) as FrameLayout? (it as BottomSheetDialog).findViewById<View>(com.google.android.material.R.id.design_bottom_sheet) as FrameLayout?
val behavior = BottomSheetBehavior.from(bottomSheet!!) val behavior = BottomSheetBehavior.from(bottomSheet!!)
behavior.peekHeight = RxImageTool.dp2px(600f) behavior.peekHeight = resources.displayMetrics.heightPixels / 2
//true是跳过peekHeight,直接滑下去,false是可以滑动到顶部还可以保持peekHeight在滑下去 //true是跳过peekHeight,直接滑下去,false是可以滑动到顶部还可以保持peekHeight在滑下去
// behavior?.skipCollapsed=true // behavior?.skipCollapsed=true
behavior.addBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() { behavior.addBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() {
...@@ -250,7 +256,13 @@ class ConfideBottomSheetDialogFragment : BottomSheetDialogFragment() { ...@@ -250,7 +256,13 @@ class ConfideBottomSheetDialogFragment : BottomSheetDialogFragment() {
} else { } else {
wv_content.requestDisallowInterceptTouchEvent(true); wv_content.requestDisallowInterceptTouchEvent(true);
} }
false; false
}
wv_content.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(webview: WebView, url: String?): Boolean {
if (url.isNullOrBlank()) return false
return shouldOverridePayUrl(webview, url)
}
} }
wv_content.webChromeClient = object : WebChromeClient() { wv_content.webChromeClient = object : WebChromeClient() {
override fun onJsAlert( override fun onJsAlert(
...@@ -306,6 +318,74 @@ class ConfideBottomSheetDialogFragment : BottomSheetDialogFragment() { ...@@ -306,6 +318,74 @@ class ConfideBottomSheetDialogFragment : BottomSheetDialogFragment() {
} }
} }
} }
private fun shouldOverridePayUrl(view: WebView, url: String): Boolean {
if (url.startsWith("weixin://")) {
return try {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))
true
} catch (e: java.lang.Exception) {
// 防止手机没有安装处理某个 scheme 开头的 url 的 APP 导致 crash
ToastUtil.toastShort("该手机没有安装微信")
true
}
} else if (url.startsWith("alipays://") || url.startsWith("alipay")) {
return try {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))
true
} catch (e: java.lang.Exception) {
// 防止手机没有安装处理某个 scheme 开头的 url 的 APP 导致 crash
// 启动支付宝 App 失败,会自行跳转支付宝网页支付
true
}
}
// 处理普通 http 请求跳转
// if (!(url.startsWith("http") || url.startsWith("https"))) {
// return true;
// }
// 处理微信 H5 支付跳转时验证请求头 referer 失效
// 验证不通过会出现“商家参数格式有误,请联系商家解决”
if (url.contains("wx.tenpay.com")) {
// 申请微信 H5 支付时填写的域名
// 比如经常用来测试网络连通性的 http://www.baidu.com
val parse = Uri.parse(url)
//从url 中获取 域名信息
val redirectUrlStr = parse.getQueryParameter("redirect_url")
val redirectUrl = Uri.parse(redirectUrlStr)
// 申请微信 H5 支付时填写的域名
val referer = redirectUrl.scheme + "://" + redirectUrl.host
// 兼容 Android 4.4.3 和 4.4.4 两个系统版本设置 referer 无效的问题
return if ("4.4.3" == Build.VERSION.RELEASE
|| "4.4.4" == Build.VERSION.RELEASE
) {
if (firstVisitWXH5PayUrl) {
view.loadDataWithBaseURL(
referer, "<script>window.location.href=\"$url\";</script>",
"text/html", "utf-8", null
)
// 修改标记位状态,避免循环调用
// 再次进入微信H5支付流程时记得重置状态 firstVisitWXH5PayUrl = true
firstVisitWXH5PayUrl = false
}
// 返回 false 由系统 WebView 自己处理该 url
false
} else {
// HashMap 指定容量初始化,避免不必要的内存消耗
val map = HashMap<String, String>(1)
map["Referer"] = referer
view.loadUrl(url, map)
true
}
} else if (url.contains("alipay")) {
return false
}
return false
}
fun getUnReadByUid(uid:String):Int{ fun getUnReadByUid(uid:String):Int{
return ARouter.getInstance().navigation(IImService::class.java).getUnReadByUid(uid) return ARouter.getInstance().navigation(IImService::class.java).getUnReadByUid(uid)
} }
......
...@@ -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 {
...@@ -191,6 +189,7 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo ...@@ -191,6 +189,7 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo
override fun initDataAndEvent() { override fun initDataAndEvent() {
//来自首页倾诉红包入口 //来自首页倾诉红包入口
val isFromRed = intent.getBooleanExtra(IYDLRouterConstant.EXTRA_RED_PACKET,false) val isFromRed = intent.getBooleanExtra(IYDLRouterConstant.EXTRA_RED_PACKET,false)
val listenFree = intent.getBooleanExtra("listenFree",false)
isSplash = intent.getBooleanExtra("isSplash", false) isSplash = intent.getBooleanExtra("isSplash", false)
//初始化View //初始化View
...@@ -208,10 +207,13 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo ...@@ -208,10 +207,13 @@ 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)
val isLogin = (findRouteService(IUserService::class.java)?.isLogin()) ?: false
findViewById<View>(R.id.confide_Free).visibility =
if (isFromRed || listenFree || !isLogin) View.VISIBLE else View.GONE
if (isFromRed){ if (isFromRed){
ToastUtil.toastLong(this@ConfideHomeActivity,"红包已领取成功 可立即点击拨打") ToastUtil.toastLong(this@ConfideHomeActivity,"红包已领取成功 可立即点击拨打")
} }
...@@ -270,6 +272,10 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo ...@@ -270,6 +272,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 +291,21 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo ...@@ -285,21 +291,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 +501,7 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo ...@@ -495,6 +501,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 +512,7 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo ...@@ -505,6 +512,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 +523,7 @@ class ConfideHomeActivity : BaseLceActivity<IConfideHomeContract.View,IConfideHo ...@@ -515,6 +523,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,19 +60,30 @@ class RecentConfideAdapter(val data: List<ItemVideoShowViewModel>, private val e ...@@ -58,19 +60,30 @@ 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 {
...@@ -79,9 +92,7 @@ internal fun ItemVideoShowViewModel.mapOf(bean: ConfideHomeBodyBean): ItemVideoS ...@@ -79,9 +92,7 @@ internal fun ItemVideoShowViewModel.mapOf(bean: ConfideHomeBodyBean): ItemVideoS
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!!
)
}
} }
......
...@@ -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>?)
......
...@@ -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 -> {
//跳转私聊 并发送自定义消息 //跳转私聊 并发送自定义消息
......
...@@ -19,6 +19,7 @@ import com.ydl.confide.home.config.IConfideHomeConfig ...@@ -19,6 +19,7 @@ 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.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 +85,24 @@ class ConfideHomeRecommendView(var view: IConfideHomeContract.View, context: Con ...@@ -84,8 +85,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()
} }
} }
...@@ -162,6 +179,12 @@ class ConfideHomeRecommendView(var view: IConfideHomeContract.View, context: Con ...@@ -162,6 +179,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 {
...@@ -252,12 +275,14 @@ class ConfideHomeRecommendView(var view: IConfideHomeContract.View, context: Con ...@@ -252,12 +275,14 @@ class ConfideHomeRecommendView(var view: IConfideHomeContract.View, context: Con
* 设置向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 +290,7 @@ class ConfideHomeRecommendView(var view: IConfideHomeContract.View, context: Con ...@@ -265,6 +290,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,6 +298,12 @@ class ConfideHomeRecommendView(var view: IConfideHomeContract.View, context: Con ...@@ -272,6 +298,12 @@ class ConfideHomeRecommendView(var view: IConfideHomeContract.View, context: Con
} }
} }
tv_confide.setOnClickListener { tv_confide.setOnClickListener {
ActionCountUtils.record(
"listen_counselor_list_page",
"listen_counselor_icon_click",
bodyBean.confidedId ?: "",
sign2.toString()
)
click(bodyBean) click(bodyBean)
} }
} }
...@@ -323,7 +355,7 @@ class ConfideHomeRecommendView(var view: IConfideHomeContract.View, context: Con ...@@ -323,7 +355,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 -> {
//跳转私聊 并发送自定义消息 //跳转私聊 并发送自定义消息
......
...@@ -79,6 +79,9 @@ class ExpertIntroActivity : AppCompatActivity() { ...@@ -79,6 +79,9 @@ class ExpertIntroActivity : AppCompatActivity() {
} }
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)) {
......
...@@ -17,6 +17,7 @@ import com.ydl.confide.databinding.ItemExpertIntroBinding ...@@ -17,6 +17,7 @@ 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.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
...@@ -164,6 +165,15 @@ internal class IntroAdapter( ...@@ -164,6 +165,15 @@ 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 curUid = data[position].uid
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 (curUid != null) { if (curUid != null) {
dispose?.dispose() dispose?.dispose()
dispose = confideApi.getDialStatus(curUid) dispose = confideApi.getDialStatus(curUid)
......
...@@ -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,16 +50,37 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) : ...@@ -49,16 +50,37 @@ 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()) {
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) 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,
...@@ -68,15 +90,41 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) : ...@@ -68,15 +90,41 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) :
} }
} }
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 =
...@@ -200,9 +277,10 @@ internal class ItemIntroHolder(binding: ItemExpertIntroBinding) : ...@@ -200,9 +277,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 +301,6 @@ class VideoViewModel { ...@@ -223,7 +301,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 {
...@@ -256,9 +333,6 @@ internal fun VideoViewModel.mapOf(bean: ConfideHomeBodyBean): VideoViewModel { ...@@ -256,9 +333,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,10 @@ package com.ydl.confide.api ...@@ -2,9 +2,10 @@ 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(id: String) = "comment/evaList/${id}?listenerId=${id}&fromVideo=1"
} }
\ No newline at end of file
...@@ -26,10 +26,12 @@ ...@@ -26,10 +26,12 @@
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: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,33 @@ ...@@ -75,27 +77,33 @@
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"
/> />
<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"
>
</ImageView> <TextView
android:id="@+id/confide_Free"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
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:textColor="@color/white"
android:textSize="11sp" />
</FrameLayout> </FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
......
...@@ -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
...@@ -156,16 +156,17 @@ ...@@ -156,16 +156,17 @@
android:layout_marginStart="14dp" android:layout_marginStart="14dp"
app:layout_constraintBottom_toBottomOf="@id/img_bg" app:layout_constraintBottom_toBottomOf="@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: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_constraintStart_toEndOf="@id/flowlayout_tag"
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"
...@@ -194,8 +195,8 @@ ...@@ -194,8 +195,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"
......
<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>
......
...@@ -27,6 +27,7 @@ import com.ydl.ydlcommon.bean.ShareData ...@@ -27,6 +27,7 @@ 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.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 +297,7 @@ open class HomeBaseImpl : IHomeBaseEvent { ...@@ -296,7 +297,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 +305,7 @@ open class HomeBaseImpl : IHomeBaseEvent { ...@@ -304,7 +305,7 @@ 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) route(mContext, ConfideRoute.R_CONFIDE_HOME, "listenFree" to listenFree)
} }
override fun psychologyClassClick() { override fun psychologyClassClick() {
......
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()
......
...@@ -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) {
......
...@@ -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表示用户版调用接口
......
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