Commit aae77395 by 刘鹏

Merge branch 'feat/lp/lp_expert_status' into 'd/v4.0.57_xlzx'

专家状态合并心理咨询发版分支

See merge request app_android_lib/YDL-Component!357
parents 1f2c8055 0931152d
......@@ -14,7 +14,7 @@ buildscript {
ydlrouter_version = '1.2.3'
constrait_support_version = '1.0.2'
componentVersion = "0.3.0.49.1-lp-SNAPSHOT"
componentVersion = "0.3.0.49.1-SNAPSHOT"
}
repositories {
mavenCentral()
......
......@@ -9,7 +9,6 @@ import android.app.Activity
import android.content.Context
import android.content.Intent
import android.graphics.Typeface
import android.os.Bundle
import android.os.Handler
import android.text.TextUtils
import android.view.View
......@@ -1800,7 +1799,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
tv.setCompoundDrawablesWithIntrinsicBounds(
0,
0,
R.drawable.platform_ic_arrow_drop_down_grey_500_18dp,
R.drawable.consult_ic_arrow_drwn_gray,
0
)
}
......@@ -1810,7 +1809,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
tv.setCompoundDrawablesWithIntrinsicBounds(
0,
0,
R.drawable.platform_arrow_drop_down_en,
R.drawable.consult_ic_arrow_drwn_en,
0
)
}
......@@ -1820,7 +1819,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
tv.setCompoundDrawablesWithIntrinsicBounds(
0,
0,
R.drawable.platform_arrow_drop_down_en,
R.drawable.consult_ic_arrow_drwn_en,
0
)
}
......@@ -1836,7 +1835,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
tv.setCompoundDrawablesWithIntrinsicBounds(
0,
0,
R.drawable.filter_up_grey,
R.drawable.filter_up_gray,
0
)
}
......
......@@ -6,9 +6,7 @@ import android.animation.ObjectAnimator
import android.animation.PropertyValuesHolder
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.graphics.Typeface
import android.net.Uri
import android.os.Handler
import android.text.TextUtils
import android.view.View
......@@ -31,9 +29,7 @@ import com.ydl.ydl_image.config.SimpleImageOpConfiger
import com.ydl.ydl_image.listener.YDLImageRecyclerOnScrollListener
import com.ydl.ydl_image.manager.YDLImageCacheManager
import com.ydl.ydlcommon.base.BaseMvpFragment
import com.ydl.ydlcommon.base.config.ChannelConfig
import com.ydl.ydlcommon.base.config.HttpConfig
import com.ydl.ydlcommon.data.PlatformDataManager
import com.ydl.ydlcommon.modular.findRouteService
import com.ydl.ydlcommon.ui.LogoLoadingView
import com.ydl.ydlcommon.utils.BuryPointUtils
......@@ -54,12 +50,8 @@ import com.yidianling.consultant.constants.ConsultBIConstants
import com.yidianling.consultant.constants.ConsultBIConstants.ConsultEvent.Companion.PRICE_TYPE_CLICK
import com.yidianling.consultant.constants.ConsultBIConstants.ConsultantLocationAuth.Companion.REFUSE_ALREADY
import com.yidianling.consultant.constants.ConsultBIConstants.ConsultantLocationAuth.Companion.WHETHER_LOCATION_AUTH
import com.yidianling.consultant.listener.*
import com.yidianling.consultant.dialog.ConsultSubPayDialog
import com.yidianling.consultant.listener.OnCategoriesSelectedListener
import com.yidianling.consultant.listener.OnExpertClickListener
import com.yidianling.consultant.listener.OnFilterConfirmListener
import com.yidianling.consultant.listener.OnSortItemSelectedListener
import com.yidianling.consultant.listener.*
import com.yidianling.consultant.model.SearchApi
import com.yidianling.consultant.model.bean.*
import com.yidianling.consultant.modular.singlton.ConsultAssistantDialogUtils
......@@ -501,20 +493,20 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
textView.setOnClickListener {
if (textView.isSelected) {
dealHotSelect(hot, false)
textView!!.isSelected = false
textView.paint.isFakeBoldText = false
textView.isSelected = false
} else {
dealHotSelect(hot, true)
textView.isSelected = true
textView.paint.isFakeBoldText = true
// 埋点
ActionCountUtils.baiDuCountSign3(
ConsultBIConstants.PART_ID_CONSULT_COUNSELOR_LIST_PAGE,
ConsultBIConstants.ConsultEvent.POSITION_CHOICE_FILTER_CLICK,
hot.value!!,
"app",
""
)
hot.value?.let { it1 ->
ActionCountUtils.baiDuCountSign3(
ConsultBIConstants.PART_ID_CONSULT_COUNSELOR_LIST_PAGE,
ConsultBIConstants.ConsultEvent.POSITION_CHOICE_FILTER_CLICK,
it1,
"app",
""
)
}
}
filterLabelSet()
//开始筛选数据
......@@ -1611,12 +1603,12 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
private fun updateFilterTextViewStatus(tv: TextView, status: Int) {
when (status) {
FILTER_STATUS_NORMAL -> {
tv.typeface = Typeface.defaultFromStyle(Typeface.NORMAL)
tv.setTextColor(ContextCompat.getColor(mContext, R.color.platform_colorTextDefault))
tv.typeface = Typeface.defaultFromStyle(Typeface.BOLD)
tv.setTextColor(ContextCompat.getColor(mContext, R.color.platform_color_242424))
tv.setCompoundDrawablesWithIntrinsicBounds(
0,
0,
R.drawable.platform_ic_arrow_drop_down_grey_500_18dp,
R.drawable.consult_ic_arrow_drwn_gray,
0
)
}
......@@ -1626,7 +1618,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
tv.setCompoundDrawablesWithIntrinsicBounds(
0,
0,
R.drawable.platform_arrow_drop_down_en,
R.drawable.consult_ic_arrow_drwn_en,
0
)
}
......@@ -1636,7 +1628,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
tv.setCompoundDrawablesWithIntrinsicBounds(
0,
0,
R.drawable.platform_arrow_drop_down_en,
R.drawable.consult_ic_arrow_drwn_en,
0
)
}
......@@ -1647,12 +1639,12 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
private fun updateFilterRightTextViewStatus(tv: TextView, status: Int) {
when (status) {
FILTER_STATUS_NORMAL -> {
tv.typeface = Typeface.defaultFromStyle(Typeface.NORMAL)
tv.setTextColor(ContextCompat.getColor(mContext, R.color.platform_colorTextDefault))
tv.typeface = Typeface.defaultFromStyle(Typeface.BOLD)
tv.setTextColor(ContextCompat.getColor(mContext, R.color.platform_color_242424))
tv.setCompoundDrawablesWithIntrinsicBounds(
0,
0,
R.drawable.filter_up_grey,
R.drawable.filter_up_gray,
0
)
}
......
......@@ -8,7 +8,6 @@ import com.ydl.ydlcommon.data.http.RxUtils
import com.ydl.ydlcommon.data.http.ThrowableConsumer
import com.ydl.ydlcommon.modular.ModularServiceManager
import com.ydl.ydlcommon.mvp.base.SimplePresenter
import com.ydl.ydlcommon.utils.AnimUtils
import com.ydl.ydlcommon.utils.RxLifecycleUtils
import com.ydl.ydlcommon.utils.remind.HttpErrorUtils
import com.yidianling.common.tools.RxAppTool
......@@ -266,15 +265,28 @@ class ExpertSearchPresenter : SimplePresenter<IExpertSearchView>() {
fieldsMap["is_free_today"] = true
fieldsMap["display_region"] = true
fieldsMap["has_servicefree_experience"] = true
//专家头像下方文案:如 忙碌;现在有空;今日可约;最近可约;已约满;休息中
fieldsMap["consult_display_status_str"] = true
//咨询显示状态:1.忙碌;2.现在有空;3.今日可约;4.最近可约;5.已约满;6.休息中
fieldsMap["consult_display_status"] = true
//私聊下方时间描述:如 最快可约今天19:00
fieldsMap["today_time_des"] = true
//服务方式:如 当面/视频
fieldsMap["attr_combine"] = true
//是否开启代聊:1开启,2关闭
fieldsMap["open_chat_agency"] = true
//年审
fieldsMap["audit_tag"] = true
map["fields"] = fieldsMap
val optionsMap = HashMap<String, Any?>()
optionsMap["search_scene_id"] = "doctor_main_search"
optionsMap["uid"] = ModularServiceManager.provide(IUserService::class.java).getUserInfo()?.uid
optionsMap["uid"] =
ModularServiceManager.provide(IUserService::class.java).getUserInfo()?.uid
optionsMap["ffrom"] = PlatformDataManager.getRam().getChannelName()
optionsMap["version"]= RxAppTool.getAppVersionName(BaseApp.getApp())
optionsMap["os_type"]= 2
if (extras!=null){
optionsMap["version"] = RxAppTool.getAppVersionName(BaseApp.getApp())
optionsMap["os_type"] = 2
if (extras != null) {
optionsMap["extras"] = extras
}
map["options"] = optionsMap
......
......@@ -11,14 +11,12 @@ import android.text.style.StyleSpan
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
import com.ydl.webview.H5Params
import com.ydl.webview.NewH5Activity
import com.ydl.ydl_image.config.SimpleImageOpConfiger
import com.ydl.ydl_image.module.GlideApp
import com.ydl.ydlcommon.base.config.HttpConfig
import com.ydl.ydlcommon.modular.findRouteService
import com.ydl.ydlcommon.utils.URLUtils
......@@ -33,10 +31,8 @@ import com.yidianling.consultant.model.bean.ExpertServiceItem
import com.yidianling.consultant.modular.utils.TempH5RouteUtils
import com.yidianling.consultant.router.ConsultantIn
import com.yidianling.user.api.service.IUserService
import kotlinx.android.synthetic.main.consultant_expert_search_feedbackrate.view.*
import kotlinx.android.synthetic.main.consultant_expert_search_header_view.view.*
import kotlinx.android.synthetic.main.consultant_expert_search_item_view.view.*
import kotlinx.android.synthetic.main.consultant_expert_search_products_item.view.*
import kotlinx.android.synthetic.main.consultant_item_empty.view.*
import kotlinx.android.synthetic.main.consultant_item_footer.view.*
import kotlinx.android.synthetic.main.consultant_item_tag.view.*
......@@ -60,7 +56,7 @@ class ExpertSearchAdapter(
}
interface OnClickLister {
fun onClick(searchWords:String)
fun onClick(searchWords: String)
}
private lateinit var mOnClickLister: OnClickLister
......@@ -75,7 +71,7 @@ class ExpertSearchAdapter(
var hasMore = true
var pageIndex: Int = 0
var clickCount=0 // 搜索结果提示标签点击次数
var clickCount = 0 // 搜索结果提示标签点击次数
var mIsRecommendWords = false // 是否是推荐词
......@@ -83,340 +79,298 @@ class ExpertSearchAdapter(
this.pageIndex = pageIndex
}
fun setIsRecommendWords(isRecommend:Boolean){
fun setIsRecommendWords(isRecommend: Boolean) {
mIsRecommendWords = isRecommend
}
@SuppressLint("SetTextI18n")
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
if (holder is HeaderViewHolder) { // 搜索结果提示头部
if (listData.size>0){
if (listData[0].is_head_view){
if (clickCount==0){
holder.clSearchWords.visibility = View.VISIBLE
var text = "根据匹配,为您推荐“${listData[0].related_word}”的搜索结果"
holder.tvSearchRelatedWord.text = setTextBold(text,listData[0].related_word)
holder.tvSearchWord.text = listData[0].search_content
// 埋点
if (mIsRecommendWords){
ActionCountUtils.baiDuCountSign3(ConsultBIConstants.PART_ID_YDL_USER_MAIN_PAGE,"ydl_user_map_word_visit",listData[0].search_content,listData[0].related_word,"app")
}else{
ActionCountUtils.baiDuCountSign3(ConsultBIConstants.PART_ID_YDL_USER_MAIN_PAGE,"ydl_user_correction_word_visit",listData[0].search_content,listData[0].related_word,"app")
}
holder.tvSearchWord.setOnClickListener {
mOnClickLister.onClick(holder.tvSearchWord.text.toString())
++clickCount
if (clickCount==1){
text = "以下是“${listData[0].search_content}”的搜索结果"
holder.tvSearchRelatedWord.text = setTextBold(text,listData[0].search_content)
holder.tvSearchTips.text = "你要找的是不是"
holder.tvSearchWord.text = listData[0].related_word
// 埋点
if (mIsRecommendWords){
ActionCountUtils.baiDuCountSign3(ConsultBIConstants.PART_ID_YDL_USER_MAIN_PAGE,"ydl_user_map_inputword_click",listData[0].related_word,listData[0].search_content,"app")
}else{
ActionCountUtils.baiDuCountSign3(ConsultBIConstants.PART_ID_YDL_USER_MAIN_PAGE,"ydl_user_correction_inputword_click",listData[0].related_word,listData[0].search_content,"app")
}
}else if (clickCount==2){ // 第二次点击搜索标签隐藏搜索匹配结果提示
// 埋点
if (mIsRecommendWords){
ActionCountUtils.baiDuCountSign3(ConsultBIConstants.PART_ID_YDL_USER_MAIN_PAGE,"ydl_user_map_recommendword_click",listData[0].search_content,listData[0].related_word,"app")
}else{
ActionCountUtils.baiDuCountSign3(ConsultBIConstants.PART_ID_YDL_USER_MAIN_PAGE,"ydl_user_correction_recommendword_click",listData[0].search_content,listData[0].related_word,"app")
}
listData.removeAt(0)
clickCount = 0 // 点击两次后重置为0
}
}
}
}
}
if (holder is HeaderViewHolder) {
// 搜索结果提示头部
bindHeaderView(holder)
} else if (holder is NormalViewHolder) {
val itemBean = listData[position]
//头像
val headConfig = SimpleImageOpConfiger()
headConfig.loadingPic = R.drawable.consultant_avatar_def_circle
headConfig.errorPic = R.drawable.consultant_avatar_def_circle
expertSearchView.showImage(
itemBean.head,
holder.imgHead,
holder.imgHead.width,
holder.imgHead.height,
headConfig
)
//姓名
holder.tvName.text = itemBean.doctor_name
//服务中
if (itemBean.open_chat_agency == 2 && itemBean.service_status == 2) {
holder.imgHead_online_server.visibility = View.VISIBLE
holder.chat_people_in_question.visibility = View.GONE
holder.imgHead_online.visibility = View.GONE
} else {
//不是服务中且问询人数大于0
when {
itemBean.chat_num > 5 -> {
holder.chat_people_in_question.visibility = View.VISIBLE
holder.chat_people_in_question.text = "多人在问询"
}
itemBean.chat_num > 0 -> {
holder.chat_people_in_question.visibility = View.VISIBLE
holder.chat_people_in_question.text = "${itemBean.chat_num}人在问询"
}
else -> {
holder.chat_people_in_question.visibility = View.GONE
}
}
//可预约
holder.imgHead_online_server.visibility = View.GONE
if (itemBean.is_free_today== 1) {
holder.imgHead_online.visibility = View.VISIBLE
} else {
holder.imgHead_online.visibility = View.GONE
}
}
bindNormalView(position, holder)
//省市
if (!TextUtils.isEmpty(itemBean.display_region)) {
holder.tvCity.text = itemBean.display_region
} else {
holder.tvCity.text = ""
}
//公益图标,不与其他图标冲突
if (1 == itemBean.has_servicefree_experience) {
if (null != itemBean.icons && !TextUtils.isEmpty(itemBean.icons.service_free_icon)) {
expertSearchView.showImage(
itemBean.icons.service_free_icon,
holder.imgServiceFree
)
} else {
val sp = SimpleImageOpConfiger()
sp.loadingPic = R.drawable.consultant_service_free
sp.errorPic = R.drawable.consultant_service_free
expertSearchView.showImage("", holder.imgServiceFree, sp)
}
holder.imgServiceFree.visibility = View.VISIBLE
} else {
holder.imgServiceFree.visibility = View.GONE
}
// 展示了抗疫,就不展示其他标签
if (itemBean.fightEpidemicIconShow) {
itemBean.icons?.fight_epidemic_icon?.let {
GlideApp.with(context).load(itemBean.icons?.fight_epidemic_icon)
.into(holder.imgFightEpidemicIcon)
holder.imgFightEpidemicIcon.visibility = View.VISIBLE
}
} else if (holder is FooterViewHolder) {
bindFooterView(holder)
}
}
if (itemBean.joinActivity == true) {
//活动图标
if (!TextUtils.isEmpty(itemBean.activityImg)) {
holder.imgActivity.visibility = View.VISIBLE
GlideApp.with(context).load(itemBean.activityImg).into(holder.imgActivity)
} else {
holder.imgActivity.visibility = View.GONE
}
} else {
holder.imgActivity.visibility = View.GONE
}
/**底部布局*/
private fun bindFooterView(holder: FooterViewHolder) {
if (hasMore) {
holder.itemView.visibility = View.VISIBLE
holder.pbLoading.visibility = View.VISIBLE
holder.tvHint.text = context.getString(R.string.consultant_loading)
} else {
holder.pbLoading.visibility = View.GONE
holder.tvHint.text = context.getString(R.string.platform_no_more)
}
}
//影藏其余所有标签(除公益)
holder.imgAbilityLevel.visibility = View.GONE
holder.imgNewEnter.visibility = View.GONE
} else {
holder.imgFightEpidemicIcon.visibility = View.GONE
//能力等级标签
when (itemBean.abilityLevel) {
1 -> {
//实习
holder.imgAbilityLevel.background =
context.resources.getDrawable(R.drawable.consultant_expert_search_shixi)
holder.imgAbilityLevel.visibility = View.VISIBLE
}
2 -> {
//新手
holder.imgAbilityLevel.background =
context.resources.getDrawable(R.drawable.consultant_expert_search_xinshou)
holder.imgAbilityLevel.visibility = View.VISIBLE
}
else -> {
holder.imgAbilityLevel.visibility = View.GONE
}
}
//活动图标
if (!TextUtils.isEmpty(itemBean.activityImg)) {
holder.imgActivity.visibility = View.VISIBLE
GlideApp.with(context).load(itemBean.activityImg).into(holder.imgActivity)
} else {
holder.imgActivity.visibility = View.GONE
}
//新驻图标
if (itemBean.is_new_enter != null && itemBean.is_new_enter!!) {
if (null != itemBean.icons && !TextUtils.isEmpty(itemBean.icons.new_enter_icon)) {
expertSearchView.showImage(
itemBean.icons.new_enter_icon,
holder.imgNewEnter
)
} else {
val sp = SimpleImageOpConfiger()
sp.loadingPic = R.drawable.consultant_new_enter
sp.errorPic = R.drawable.consultant_new_enter
expertSearchView.showImage("", holder.imgNewEnter, sp)
}
holder.imgNewEnter.visibility = View.VISIBLE
} else {
holder.imgNewEnter.visibility = View.GONE
}
}
holder.ll_feedbackRate.removeAllViews()
for (num in 1..5) {
val view = LayoutInflater.from(context).inflate(
R.layout.consultant_expert_search_feedbackrate,
holder.ll_feedbackRate,
false
)
if (itemBean.evaluation_average_score >= num) {
(view.imgRate as ImageView).background =
context.resources.getDrawable(R.drawable.consultant_expert_search_full_star)
} else if (itemBean.evaluation_average_score < num && itemBean.evaluation_average_score > num - 1) {
(view.imgRate as ImageView).background =
context.resources.getDrawable(R.drawable.consultant_expert_search_half_star)
} else {
(view.imgRate as ImageView).background =
context.resources.getDrawable(R.drawable.consultant_expert_search_nothing_star)
}
holder.ll_feedbackRate.addView(view)
}
//XXX人点评
val numSb = StringBuffer()
holder.tv_zixunOrderNum.text =
numSb.append(itemBean.evaluate_num).append("").toString()
//咨询师简介
holder.tvTeamCertifications.text = itemBean.title
//咨询师标签
holder.ll_tags.removeAllViews()
itemBean.feature_tags?.let {
if (it.isNotEmpty()) {
for (tag in itemBean.feature_tags) {
val view = LayoutInflater.from(context)
.inflate(R.layout.consultant_item_tag, holder.ll_tags, false)
tag.tag_name.let { name ->
if (name.length > 4) {
view.tvTag.text = "${name.substring(0, 4)}…"
} else {
view.tvTag.text = name
}
}
if (tag.is_highlight) {
view.tvTag.setBackgroundResource(R.drawable.consultant_bg_radius_line_eb892c)
view.tvTag.setTextColor(
ContextCompat.getColor(
context,
R.color.color_EB892C
)
)
} else {
view.tvTag.setBackgroundResource(R.drawable.consultant_bg_radius_line_gray_1)
view.tvTag.setTextColor(
ContextCompat.getColor(
context,
R.color.platform_color_666666
)
)
}
holder.ll_tags.addView(view)
}
}
}
//帮助人数
val orderUser = StringBuffer()
holder.tvOrderNum.text = orderUser.append(itemBean.help_num).append("").toString()
//私聊文案
if (TextUtils.isEmpty(itemBean.chat_btn_text)) {
holder.tvChat.text = "私聊"
holder.tvChat.setTextColor(
/**item布局*/
private fun bindNormalView(position: Int, holder: NormalViewHolder) {
val itemBean = listData[position]
//头像
val headConfig = SimpleImageOpConfiger()
headConfig.loadingPic = R.drawable.consultant_avatar_def_circle
headConfig.errorPic = R.drawable.consultant_avatar_def_circle
expertSearchView.showImage(
itemBean.head,
holder.imgHead,
holder.imgHead.width,
holder.imgHead.height,
headConfig
)
//咨询显示状态:1.忙碌;2.现在有空;3.今日可约;4.最近可约;5.已约满;6.休息中
when (itemBean.consult_display_status) {
6 -> {
holder.consult_display_status_str.setBackgroundColor(
ContextCompat.getColor(
context,
R.color.platform_but_text_color
R.color.color_b6bece_90
)
)
holder.tvChat.setTextColor(
}
5, 1 -> {
holder.consult_display_status_str.setBackgroundColor(
ContextCompat.getColor(
context,
R.color.platform_but_text_color
R.color.color_f5a082_90
)
)
holder.tvChat.background =
ContextCompat.getDrawable(context, R.drawable.consultant_expert_search_chat)
} else {
holder.tvChat.text = itemBean.chat_btn_text
holder.tvChat.setTextColor(
}
else -> {
holder.consult_display_status_str.setBackgroundColor(
ContextCompat.getColor(
context,
R.color.platform_color_999999
R.color.color_6ec8f9_90
)
)
holder.tvChat.background = ContextCompat.getDrawable(
}
}
//专家头像下方文案:如 忙碌;现在有空;今日可约;最近可约;已约满;休息中
holder.consult_display_status_str.text = itemBean.consult_display_status_str
//姓名
holder.tvName.text = itemBean.doctor_name
//年审
if (!TextUtils.isEmpty(itemBean.audit_tag)) {
holder.audit_tag.visibility = View.VISIBLE
holder.audit_tag.text = itemBean.audit_tag
} else {
holder.audit_tag.visibility = View.GONE
}
//省市
if (!TextUtils.isEmpty(itemBean.display_region)) {
holder.tvCity.text = itemBean.display_region
holder.tvCity.visibility = View.VISIBLE
} else {
holder.tvCity.visibility = View.GONE
}
//咨询师tag
holder.tvTeamCertifications.text = itemBean.title
//服务时长 经验
val durationStringBuffer = StringBuffer()
holder.tvSaleDurationForMonth.text =
durationStringBuffer.append(itemBean.sum_service_time.toInt()).append("小时").toString()
//口碑
val numSb = StringBuffer()
holder.tv_zixunOrderNum.text =
numSb.append(itemBean.evaluate_num).append("条").toString()
//咨询师标签
holder.ll_tags.removeAllViews()
if (itemBean.feature_tags?.isNotEmpty() == true) {
holder.ll_tags.visibility = View.VISIBLE
for (tag in itemBean.feature_tags) {
val view = LayoutInflater.from(context)
.inflate(R.layout.consultant_item_tag, holder.ll_tags, false)
tag.tag_name.let { name ->
if (name.length > 4) {
view.tvTag.text = "${name.substring(0, 4)}…"
} else {
view.tvTag.text = name
}
}
if (tag.is_highlight) {
view.tvTag.setBackgroundResource(R.drawable.consultant_bg_radius_line_eb892c)
view.tvTag.setTextColor(
ContextCompat.getColor(
context,
R.color.color_EB892C
)
)
} else {
view.tvTag.setBackgroundResource(R.drawable.consultant_bg_radius_line_gray_1)
view.tvTag.setTextColor(
ContextCompat.getColor(
context,
R.color.color_1c1f28_50
)
)
}
holder.ll_tags.addView(view)
}
} else {
holder.ll_tags.visibility = View.GONE
}
//价格
val price = BigDecimal(itemBean.min_price)
// 去掉末尾无用的.00
val priceStr = "¥" + price.stripTrailingZeros().toPlainString()
holder.tvPrice.text = priceStr
//服务方式
holder.attr_combine.text = itemBean.attr_combine
if (1 == itemBean.open_chat_agency) {
//联系顾问
holder.tvChat.text = "联系顾问"
holder.card_chat.setCardBackgroundColor(
ContextCompat.getColor(
context,
R.drawable.consultant_expert_search_chat_rest
R.color.color_6ec8f9
)
}
//服务时长
val durationStringBuffer = StringBuffer()
holder.tvSaleDurationForMonth.text =
durationStringBuffer.append(itemBean.sum_service_time.toInt()).append("").toString()
//价格
val price = BigDecimal(itemBean.min_price)
// 去掉末尾无用的.00
holder.tvPrice.text = price.stripTrailingZeros().toPlainString()
//套餐
holder.ll_products.removeAllViews()
if (null != itemBean.doctor_products && itemBean.doctor_products.isNotEmpty()) {
for (item in itemBean.doctor_products) {
val view = LayoutInflater.from(context).inflate(
R.layout.consultant_expert_search_products_item,
holder.ll_tags,
false
)
} else {
//私聊状态:1.上线;2.离线;3.忙碌中
when (itemBean.chat_status) {
2, 3 -> {
holder.tvChat.text = "留 言"
holder.card_chat.setCardBackgroundColor(
ContextCompat.getColor(
context,
R.color.color_b6bece
)
)
when (item.product_type) {
"1" -> {
view.tvTitle.text = "单次"
view.tvTitle.setTextColor(context.resources.getColor(R.color.platform_color_1DA1F2))
view.tvTitle.background =
context.resources.getDrawable(R.drawable.consultant_expert_search_single)
view.tvContent.text = item.product_name
holder.ll_products.addView(view)
}
"2" -> {
view.tvTitle.text = "套餐"
view.tvTitle.setTextColor(context.resources.getColor(R.color.consultant_color_FF9500))
view.tvTitle.background =
context.resources.getDrawable(R.drawable.consultant_expert_search_menu)
view.tvContent.text = item.product_name
holder.ll_products.addView(view)
}
else -> {
}
else -> {
holder.tvChat.text = "私 聊"
holder.card_chat.setCardBackgroundColor(
ContextCompat.getColor(
context,
R.color.color_6ec8f9
)
)
}
}
}
//问询 可约
var bottomDec = if (itemBean.chat_num > 0) {
if (!TextUtils.isEmpty(itemBean.today_time_des)) {
"${itemBean.chat_num}人在问询·${itemBean.today_time_des}"
} else {
"${itemBean.chat_num}人在问询"
}
} else {
if (!TextUtils.isEmpty(itemBean.today_time_des)) {
itemBean.today_time_des
} else {
""
}
}
if (TextUtils.isEmpty(bottomDec)) {
holder.chat_people_in_question.visibility = View.GONE
} else {
holder.chat_people_in_question.visibility = View.VISIBLE
holder.chat_people_in_question.text = bottomDec
}
}
/**顶部根据匹配,为您推荐布局*/
private fun bindHeaderView(holder: HeaderViewHolder) {
if (listData.size > 0) {
if (listData[0].is_head_view) {
if (clickCount == 0) {
holder.clSearchWords.visibility = View.VISIBLE
var text = "根据匹配,为您推荐“${listData[0].related_word}”的搜索结果"
holder.tvSearchRelatedWord.text = setTextBold(text, listData[0].related_word)
holder.tvSearchWord.text = listData[0].search_content
// 埋点
if (mIsRecommendWords) {
ActionCountUtils.baiDuCountSign3(
ConsultBIConstants.PART_ID_YDL_USER_MAIN_PAGE,
"ydl_user_map_word_visit",
listData[0].search_content,
listData[0].related_word,
"app"
)
} else {
ActionCountUtils.baiDuCountSign3(
ConsultBIConstants.PART_ID_YDL_USER_MAIN_PAGE,
"ydl_user_correction_word_visit",
listData[0].search_content,
listData[0].related_word,
"app"
)
}
holder.tvSearchWord.setOnClickListener {
mOnClickLister.onClick(holder.tvSearchWord.text.toString())
++clickCount
if (clickCount == 1) {
text = "以下是“${listData[0].search_content}”的搜索结果"
holder.tvSearchRelatedWord.text =
setTextBold(text, listData[0].search_content)
holder.tvSearchTips.text = "你要找的是不是"
holder.tvSearchWord.text = listData[0].related_word
// 埋点
if (mIsRecommendWords) {
ActionCountUtils.baiDuCountSign3(
ConsultBIConstants.PART_ID_YDL_USER_MAIN_PAGE,
"ydl_user_map_inputword_click",
listData[0].related_word,
listData[0].search_content,
"app"
)
} else {
ActionCountUtils.baiDuCountSign3(
ConsultBIConstants.PART_ID_YDL_USER_MAIN_PAGE,
"ydl_user_correction_inputword_click",
listData[0].related_word,
listData[0].search_content,
"app"
)
}
} else if (clickCount == 2) { // 第二次点击搜索标签隐藏搜索匹配结果提示
// 埋点
if (mIsRecommendWords) {
ActionCountUtils.baiDuCountSign3(
ConsultBIConstants.PART_ID_YDL_USER_MAIN_PAGE,
"ydl_user_map_recommendword_click",
listData[0].search_content,
listData[0].related_word,
"app"
)
} else {
ActionCountUtils.baiDuCountSign3(
ConsultBIConstants.PART_ID_YDL_USER_MAIN_PAGE,
"ydl_user_correction_recommendword_click",
listData[0].search_content,
listData[0].related_word,
"app"
)
}
listData.removeAt(0)
clickCount = 0 // 点击两次后重置为0
}
}
}
}
} else if (holder is FooterViewHolder) {
if (hasMore) {
holder.itemView.visibility = View.VISIBLE
holder.pbLoading.visibility = View.VISIBLE
holder.tvHint.text = context.getString(R.string.consultant_loading)
} else {
holder.pbLoading.visibility = View.GONE
holder.tvHint.text = context.getString(R.string.platform_no_more)
}
}
}
override fun getItemCount(): Int =
// if (listData.size < ExpertSearchActivity.PAGE_SIZE && hasMore) {
if (listData.size==1) {
if (listData.size == 1) {
listData.size
} else {
listData.size + 1
......@@ -425,7 +379,8 @@ class ExpertSearchAdapter(
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder =
when (viewType) {
HEADER_VIEW -> {
val view = LayoutInflater.from(context).inflate(R.layout.consultant_expert_search_header_view, parent, false)
val view = LayoutInflater.from(context)
.inflate(R.layout.consultant_expert_search_header_view, parent, false)
HeaderViewHolder(view)
}
NORMAL_VIEW -> {
......@@ -447,7 +402,7 @@ class ExpertSearchAdapter(
override fun getItemViewType(position: Int): Int =
when {
position==0&&listData.size>0&&listData[0].is_head_view ->{
position == 0 && listData.size > 0 && listData[0].is_head_view -> {
HEADER_VIEW
}
position < listData.size -> {
......@@ -462,28 +417,18 @@ class ExpertSearchAdapter(
inner class NormalViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
//头像
val imgHead = itemView.imgHead!!
val cv_head_view = itemView.cv_head_view!!
//专家姓名
val tvName = itemView.tvName!!
//活动图标
val imgActivity = itemView.img_activity!!
//优质图标
val imgAbilityLevel = itemView.imgAbilityLevel!!
//年审
val audit_tag = itemView.audit_tag!!
//公益图标
val imgServiceFree = itemView.imgServiceFree!!
//头像下方文案
val consult_display_status_str = itemView.consult_display_status_str!!
//新驻图标
val imgNewEnter = itemView.imgNewEnter!!
//荣誉标签
val ll_honor_layout = itemView.ll_honor_layout!!
//好评率
val ll_feedbackRate = itemView.ll_feedbackRate!!
//服务方式
val attr_combine = itemView.attr_combine
//xxx人点评
val tv_zixunOrderNum = itemView.tv_zixunOrderNum!!
......@@ -494,49 +439,24 @@ class ExpertSearchAdapter(
//咨询师标签
val ll_tags = itemView.ll_tags!!
//帮助人数
val tvOrderNum = itemView.tvOrderNum!!
//帮助人数文案
val tvOrderNumContent = itemView.tvOrderNumContent
//服务时长
val tvSaleDurationForMonth = itemView.tvSaleDurationForMonth!!
//月售时长文案
val tvSaleDurationForMonthContent = itemView.tvSaleDurationForMonthContent
//价格
val tvPrice = itemView.tvPrice!!
val tvPriceContent = itemView.tvPriceContent!!
val tv_money_symbol = itemView.tv_money_symbol!!
//服务套餐
val ll_products = itemView.ll_products!!
//私聊按钮
val tvChat = itemView.tvChat!!
//个人铭言整个布局
val group_desc = itemView.group_desc!!
//个人铭言
val tvDesc = itemView.tvDesc!!
//私聊背景
val card_chat = itemView.card_chat!!
//省市
val tvCity = itemView.tvCity!!
//今日是否可约
val imgHead_online = itemView.imgHead_online!!
//服务中(咨询中或者聆听中)
val imgHead_online_server = itemView.imgHead_online_server!!
//多少人在问询
val chat_people_in_question = itemView.people_in_question!!
// 抗疫先锋图标
val imgFightEpidemicIcon = itemView.img_fightEpidemicIcon
init {
itemView.setOnClickListener {
......@@ -562,7 +482,7 @@ class ExpertSearchAdapter(
}
}
itemView.tvChat.setOnClickListener {
itemView.card_chat.setOnClickListener {
if (adapterPosition != RecyclerView.NO_POSITION) {
val doctor = listData[adapterPosition]
if (pageIndex == 0) {
......
package com.yidianling.consultant.model.bean
import com.yidianling.consultant.bean.ExpertSearchProductsBean
import com.yidianling.consultant.bean.ExpertSearchTagsIconBean
/**
* @author yuanWai
* @描述:
......@@ -23,153 +20,97 @@ data class ExpertServiceItem(
* 专家名称
*/
val doctor_name: String?,
/**
* 跳转路由地址(正常为专家主页地址)
*/
/*** 跳转路由地址(正常为专家主页地址)*/
val link_url: String?,
/**
* 专家头像地址
*/
/*** 专家头像地址*/
val head: String?,
/**
* 专家是否在线 1.在线
*/
/*** 私聊状态:1.上线;2.离线;3.忙碌中*/
val chat_status: Int?,
/**
* 能力等级 1.实习 2.新手 3.精英
*/
val abilityLevel: Int?,
/**
* 有免费咨询:1.有,2.无
*/
val has_servicefree_consult: Int?,
/**
* 活动图标
*/
val activityImg: String?,
/**
* 是否参加活动
*/
val joinActivity: Boolean?,
/**
* 是否新入驻:true:是,false:否
*/
var is_new_enter: Boolean?,
/**
* 好评率(倾诉+咨询)
*/
var evaluation_average_score: Float = 0f,
/**
* 是否抗疫先锋图标
*/
var fightEpidemicIconShow: Boolean = false,
/**
* 评价数(咨询订单数)
*/
/*** 评价数(咨询订单数)*/
var evaluate_num: Int = 0,
/**
* 咨询最低价
*/
/*** 咨询最低价*/
val min_price: String?,
/**
* 资质材料
*/
/*** 资质材料*/
val title: String?,
/**
* 已帮助人数(咨询人数)
*/
val help_num: String?,
/**
* 月售时长
*/
var p30d_sold_hour: Float = 0f,
/**
* 服务时长
*/
/*** 服务时长*/
var sum_service_time: Float = 0f,
/**
* 服务
*/
val doctor_products: MutableList<ExpertSearchProductsBean>?,
/**
* 标签图片
*/
val icons: ExpertSearchTagsIconBean?,
// /**
// * 今日是否可约
// */
// val booking_status: Int,
// /**
// * 咨询状态 1-待服务 2-服务中
// */
// var consult_status: Int,
// /**
// * 倾诉状态 1-待服务 2-服务中
// */
// var listen_status: Int,
var open_chat_agency: Int,
/***服务状态:1.空闲,2.忙碌*/
var service_status: Int,
var is_free_today: Int,
/**
* 私聊人数
*/
/*** 私聊人数*/
var chat_num: Int = 0,
/**
* 个人铭言
*/
val famous_remark: String?,
/**
* 省
*/
val province: String?,
/**
* 市
*/
val city: String?,
/**
* 私聊按钮的文案(如果不为空则取这个字段的值,如果为空 则默认为:“私聊”)
*/
/*** 私聊按钮的文案(如果不为空则取这个字段的值,如果为空 则默认为:“私聊”)*/
val chat_btn_text: String?,
/**
* 新标签分类
*/
/*** 新标签分类*/
val feature_tags: ArrayList<FeatureTag>?,
/**
* 是否是头部headView
*/
/*** 是否是头部headView*/
val is_head_view: Boolean = false,
/**
* 搜索词
*/
/*** 搜索词*/
val search_content: String,
/**
* 联想词
*/
/*** 联想词*/
val related_word: String,
/**
* 地区
*/
/*** 地区*/
val display_region: String,
/**
* 是否展示公益图标
*/
val has_servicefree_experience: Int?
/***咨询显示状态:1.忙碌;2.现在有空;3.今日可约;4.最近可约;5.已约满;6.休息中*/
val consult_display_status: Int,
/***专家头像下方文案:如 忙碌;现在有空;今日可约;最近可约;已约满;休息中*/
val consult_display_status_str: String,
/***私聊下方时间描述:如 最快可约今天19:00*/
val today_time_des: String,
/***服务方式:如 当面/视频*/
val attr_combine: String = "",
/***0:关闭代聊,1:开启代聊*/
val open_chat_agency: Int,
/***年审*/
val audit_tag: String,
) {
) {
constructor(is_head_view: Boolean, search_content: String, related_word: String) : this(
"", "", "", "", "",
1, 1, 1, "", false, true,
1f, false, 0, "", "", "", 1f, 1f,
null, null, 1, 1, 1, 1,
"", "", "", "", null, is_head_view, search_content, related_word, "", 1
id = "",
uid = "",
doctor_name = "",
link_url = "",
head = "",
chat_status = 1,
evaluate_num = 0,
min_price = "",
title = "",
sum_service_time = 0f,
service_status = 1,
chat_num = 0,
chat_btn_text = null,
feature_tags = null,
is_head_view = is_head_view,
search_content = search_content,
related_word = related_word,
display_region = "",
consult_display_status = 2,
consult_display_status_str = "",
today_time_des = "",
attr_combine = "",
open_chat_agency = 0,
audit_tag = ""
)
}
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="1dp"/>
<corners android:radius="4dp" />
<solid android:color="@color/color_1AEB892C" />
<stroke android:width="0.5dp" android:color="@color/color_EB892C"/>
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="1dp"/>
<corners android:radius="4dp" />
<solid android:color="@color/platform_white" />
<stroke android:width="0.5dp" android:color="@color/platform_color_E0E0E0"/>
<stroke
android:width="0.5dp"
android:color="@color/color_1c1f28_20" />
</shape>
\ No newline at end of file
......@@ -4,9 +4,9 @@
<shape android:shape="rectangle">
<solid android:color="@color/platform_main_theme_bright" />
<corners android:radius="11dp"/>
<stroke
<!--<stroke
android:width="0.5dp"
android:color="@color/platform_main_theme"/>
android:color="@color/platform_main_theme"/>-->
</shape>
</item>
<item android:state_enabled="true">
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/color_f6f6f7" />
<corners android:radius="2dp" />
<padding
android:bottom="2dp"
android:left="4dp"
android:right="4dp"
android:top="1.5dp" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/platform_dp_13"
android:paddingRight="@dimen/platform_dp_15"
android:paddingBottom="@dimen/platform_dp_8">
<!--头像-->
<LinearLayout
android:id="@+id/cvHead"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/platform_dp_15"
android:background="@drawable/consultant_bg_radius_line_gray_05"
android:orientation="vertical">
android:paddingLeft="@dimen/platform_dp_16"
android:paddingTop="@dimen/platform_dp_19"
android:paddingRight="@dimen/platform_dp_16">
<androidx.cardview.widget.CardView
android:id="@+id/cv_head_view"
android:layout_width="92dp"
android:layout_height="114dp"
app:cardCornerRadius="4dp"
app:cardElevation="0px">
<androidx.cardview.widget.CardView
android:id="@+id/cv_head_view"
android:layout_width="64dp"
android:layout_height="80dp"
android:layout_marginTop="3dp"
app:cardCornerRadius="8dp"
app:cardElevation="0px"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/imgHead"
......@@ -29,32 +30,22 @@
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/consultant_avatar_def_circle" />
</androidx.cardview.widget.CardView>
</LinearLayout>
<ImageView
android:id="@+id/imgHead_online"
android:layout_width="62dp"
android:layout_height="14dp"
android:layout_alignBottom="@+id/cvHead"
android:layout_gravity="bottom"
android:scaleType="centerCrop"
android:visibility="gone"
app:srcCompat="@drawable/consultant_online_yue"
tools:visibility="visible" />
<TextView
android:id="@+id/consult_display_status_str"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="#6EC8F9"
android:gravity="center"
android:paddingTop="1dp"
android:paddingBottom="2dp"
android:textColor="@color/white"
android:textSize="9dp"
tools:text="现在有空" />
</RelativeLayout>
<ImageView
android:id="@+id/imgHead_online_server"
android:layout_width="41dp"
android:layout_height="14dp"
android:layout_alignBottom="@+id/cvHead"
android:layout_gravity="bottom"
android:scaleType="centerCrop"
android:visibility="gone"
app:srcCompat="@drawable/consultant_online_server"
tools:visibility="visible" />
</androidx.cardview.widget.CardView>
<!--咨询师姓名-->
<TextView
......@@ -62,347 +53,211 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/platform_dp_12"
android:layout_marginLeft="@dimen/platform_dp_12"
android:layout_marginTop="@dimen/platform_dp_12"
android:layout_toEndOf="@+id/cvHead"
android:layout_toRightOf="@+id/cvHead"
android:gravity="center_vertical"
android:textColor="@color/platform_color_242424"
android:textSize="@dimen/platform_dp_18"
android:textColor="@color/color_1C1F28"
android:textSize="@dimen/platform_dp_16"
android:textStyle="bold"
tools:ignore="SpUsage"
app:layout_constraintLeft_toRightOf="@id/cv_head_view"
app:layout_constraintTop_toTopOf="parent"
tools:text="罗静" />
<LinearLayout
android:id="@+id/ll_honor_layout"
android:layout_width="match_parent"
<TextView
android:id="@+id/audit_tag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/tvName"
android:layout_alignBottom="@+id/tvName"
android:layout_marginStart="@dimen/platform_dp_2"
android:layout_toEndOf="@+id/tvName"
android:layout_toRightOf="@+id/tvName"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingLeft="8dp">
<ImageView
android:id="@+id/img_fightEpidemicIcon"
android:layout_width="53dp"
android:layout_height="@dimen/platform_dp_17"
android:layout_marginRight="4dp"
android:scaleType="centerCrop"
android:visibility="gone" />
<!--活动图标-->
<ImageView
android:id="@+id/img_activity"
android:layout_width="42dp"
android:layout_height="12dp"
android:layout_marginRight="4dp"
android:visibility="gone" />
<!--公益图标-->
<ImageView
android:id="@+id/imgServiceFree"
android:layout_width="26dp"
android:layout_height="@dimen/platform_dp_12"
android:layout_marginRight="4dp"
android:scaleType="centerCrop"
tools:background="@drawable/consultant_service_free" />
<!--新驻图标-->
<ImageView
android:id="@+id/imgNewEnter"
android:layout_width="26dp"
android:layout_height="@dimen/platform_dp_12"
android:layout_marginRight="4dp"
android:scaleType="fitCenter"
tools:background="@drawable/consultant_new_enter" />
<!--优质图标-->
<ImageView
android:id="@+id/imgAbilityLevel"
android:layout_width="26dp"
android:layout_height="@dimen/platform_dp_12"
android:layout_marginRight="4dp"
android:scaleType="fitCenter"
android:visibility="gone"
tools:background="@drawable/consultant_expert_search_shixi" />
</LinearLayout>
android:layout_marginStart="4dp"
android:background="@drawable/consultant_ns_bg"
android:textColor="@color/color_62636F"
android:textSize="10dp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/tvName"
app:layout_constraintLeft_toRightOf="@id/tvName"
app:layout_constraintTop_toTopOf="@id/tvName"
tools:text="2022年审"
tools:visibility="visible" />
<TextView
android:id="@+id/tvCity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/consult_location_icon"
android:drawablePadding="2dp"
android:gravity="right"
android:textColor="@color/color_1c1f28_40"
android:textSize="@dimen/platform_dp_11"
app:layout_constraintBottom_toBottomOf="@id/tvName"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/tvName"
tools:text="浙江.杭州" />
<!--咨询师简介-->
<TextView
android:id="@+id/tvTeamCertifications"
android:layout_width="wrap_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_below="@+id/tvName"
android:layout_marginLeft="@dimen/platform_dp_12"
android:layout_marginTop="@dimen/platform_dp_4"
android:layout_toEndOf="@+id/cvHead"
android:layout_toRightOf="@+id/cvHead"
android:ellipsize="end"
android:layout_toStartOf="@+id/tvCity"
android:lines="1"
android:textColor="@color/platform_color_242424"
android:textSize="@dimen/platform_dp_12"
tools:text="一级婚姻家庭咨询师,二级心理咨询师二级心理咨询师二级心理咨询师" />
<!--咨询师标签-->
<LinearLayout
android:id="@+id/ll_tags"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/tvName"
android:layout_alignTop="@+id/tvChat"
android:layout_alignBottom="@+id/tvChat"
android:layout_toLeftOf="@+id/tvChat"
android:gravity="center_vertical"
android:orientation="horizontal">
</LinearLayout>
<LinearLayout
android:id="@+id/ll_zixunOrderNum"
android:layout_width="match_parent"
android:layout_height="@dimen/platform_dp_16"
android:layout_below="@+id/tvTeamCertifications"
android:layout_marginStart="@dimen/platform_dp_12"
android:layout_marginLeft="@dimen/platform_dp_12"
android:layout_marginTop="@dimen/platform_dp_5"
android:layout_toEndOf="@+id/cvHead"
android:layout_toRightOf="@+id/cvHead"
android:orientation="horizontal">
<!--好评率-->
<LinearLayout
android:id="@+id/ll_feedbackRate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:orientation="horizontal" />
<!--61234人点评-->
<TextView
android:id="@+id/tv_zixunOrderNum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="@dimen/platform_dp_12"
android:textColor="@color/platform_color_242424"
android:textSize="@dimen/platform_dp_12"
android:textStyle="bold"
tools:text="61234" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="条评价"
android:textColor="@color/platform_color_999999"
android:textSize="@dimen/platform_dp_12" />
android:textColor="@color/color_1c1f28_60"
android:textSize="@dimen/platform_dp_13"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintLeft_toLeftOf="@id/tvName"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvName"
tools:text="一级婚姻家庭咨询师 | 二级心理咨询师二级心理咨询师二级心理咨询师" />
</LinearLayout>
<!--帮助人数-->
<TextView
android:id="@+id/tvOrderNumContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/ll_zixunOrderNum"
android:layout_marginStart="@dimen/platform_dp_12"
android:layout_marginLeft="@dimen/platform_dp_12"
android:layout_marginTop="5dp"
android:layout_toRightOf="@+id/cvHead"
android:text="帮助"
android:textColor="@color/platform_color_999999"
android:textSize="@dimen/platform_dp_12"
tools:ignore="SpUsage" />
<!--服务时长-->
<TextView
android:id="@+id/tvOrderNum"
android:id="@+id/tvSaleDurationForMonth"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/tvOrderNumContent"
android:layout_marginLeft="1dp"
android:layout_marginTop="4dp"
android:layout_marginRight="1dp"
android:layout_toRightOf="@+id/tvOrderNumContent"
android:textColor="@color/platform_color_242424"
android:textSize="@dimen/platform_dp_12"
android:textStyle="bold"
tools:ignore="SpUsage"
tools:text="2648" />
android:gravity="center"
android:textColor="@color/color_1C1F28"
android:textSize="@dimen/platform_dp_13"
app:layout_constraintLeft_toLeftOf="@id/tvName"
app:layout_constraintTop_toBottomOf="@id/tvTeamCertifications"
tools:text="134小时" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/tvOrderNumContent"
android:layout_toRightOf="@+id/tvOrderNum"
android:text="人"
android:textColor="@color/platform_color_999999"
android:textSize="@dimen/platform_dp_12"
tools:ignore="SpUsage" />
<!--服务时长-->
<TextView
android:id="@+id/tvSaleDurationForMonthContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/tvOrderNumContent"
android:layout_marginLeft="@dimen/platform_dp_20"
android:layout_toRightOf="@+id/tvOrderNum"
android:text="服务"
android:textColor="@color/platform_color_999999"
android:textSize="@dimen/platform_dp_12"
tools:ignore="SpUsage" />
android:text="经验"
android:textColor="@color/color_1c1f28_60"
android:textSize="@dimen/platform_dp_13"
app:layout_constraintBaseline_toBaselineOf="@id/tvSaleDurationForMonth"
app:layout_constraintLeft_toRightOf="@id/tvSaleDurationForMonth" />
<TextView
android:id="@+id/tvSaleDurationForMonth"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/tvOrderNumContent"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_toRightOf="@+id/tvSaleDurationForMonthContent"
android:gravity="center"
android:textColor="@color/platform_color_242424"
android:textSize="@dimen/platform_dp_12"
android:textStyle="bold"
tools:ignore="SpUsage"
tools:text="134" />
<TextView
android:id="@+id/tv_zixunOrderNum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/tvOrderNumContent"
android:layout_toRightOf="@+id/tvSaleDurationForMonth"
android:text="小时"
android:textColor="@color/platform_color_999999"
android:layout_gravity="center_vertical"
android:layout_marginStart="@dimen/platform_dp_13"
android:textColor="@color/color_1C1F28"
android:textSize="@dimen/platform_dp_12"
tools:ignore="SpUsage" />
app:layout_constraintBaseline_toBaselineOf="@id/tvSaleDurationForMonth"
app:layout_constraintLeft_toRightOf="@id/tvSaleDurationForMonthContent"
tools:text="61234条" />
<TextView
android:id="@+id/people_in_question"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/tvOrderNumContent"
android:layout_alignParentRight="true"
android:textColor="@color/platform_color_FF5040"
android:textSize="@dimen/platform_dp_12"
android:visibility="gone"
tools:ignore="SpUsage"
tools:text="多人在问询"
tools:visibility="visible" />
android:layout_gravity="center_vertical"
android:text="口碑"
android:textColor="@color/color_1c1f28_60"
android:textSize="@dimen/platform_dp_13"
app:layout_constraintBaseline_toBaselineOf="@id/tv_zixunOrderNum"
app:layout_constraintLeft_toRightOf="@id/tv_zixunOrderNum" />
<TextView
android:id="@+id/tv_money_symbol"
<!--咨询师标签-->
<LinearLayout
android:id="@+id/ll_tags"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/tvPrice"
android:layout_marginTop="3dp"
android:layout_marginRight="1dp"
android:layout_toLeftOf="@+id/tvPrice"
android:text="¥"
android:textColor="#FF5040"
android:textSize="@dimen/platform_dp_11"
android:textStyle="bold"
tools:ignore="SpUsage" />
android:layout_marginTop="8dp"
android:gravity="center_vertical"
android:orientation="horizontal"
app:layout_constraintLeft_toLeftOf="@id/tvName"
app:layout_constraintTop_toBottomOf="@id/tvSaleDurationForMonth"
tools:visibility="gone" />
<TextView
android:id="@+id/tvPrice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/tvName"
android:layout_toLeftOf="@+id/tvPriceContent"
android:fontFamily="@font/platform_din_bold"
android:textColor="#FF5040"
android:textSize="@dimen/platform_dp_20"
tools:text="250" />
android:layout_marginTop="8dp"
android:textColor="@color/color_ef8a4a"
android:textSize="@dimen/platform_dp_14"
app:layout_constraintLeft_toLeftOf="@id/tvName"
app:layout_constraintTop_toBottomOf="@id/ll_tags"
app:layout_goneMarginTop="10dp"
tools:text="¥250" />
<TextView
android:id="@+id/tvPriceContent"
android:id="@+id/tvPrice_unit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/tvPrice"
android:layout_alignParentRight="true"
android:layout_marginLeft="1dp"
android:layout_marginBottom="2.5dp"
android:layout_alignTop="@+id/tvName"
android:layout_marginTop="12dp"
android:text="起"
android:textColor="#FF5040"
android:textSize="@dimen/platform_dp_11" />
android:textColor="@color/color_ef8a4a"
android:textSize="@dimen/platform_dp_12"
app:layout_constraintBaseline_toBaselineOf="@id/tvPrice"
app:layout_constraintLeft_toRightOf="@id/tvPrice" />
<TextView
android:id="@+id/tvCity"
android:id="@+id/attr_combine"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tvName"
android:layout_alignParentRight="true"
android:layout_marginTop="@dimen/platform_dp_4"
android:gravity="right"
android:textColor="@color/platform_color_999999"
android:textSize="@dimen/platform_dp_12"
tools:text="浙江.杭州" />
<!--<View-->
<!--android:id="@+id/vLine"-->
<!--android:layout_below="@+id/tvPrice"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="2dp"-->
<!--android:layout_marginLeft="104dp"-->
<!--android:layout_marginStart="104dp"-->
<!--android:layout_marginTop="7dp"-->
<!--android:layerType="software"-->
<!--android:background="@drawable/expert_search_dash_line" />-->
<!--服务套餐-->
<LinearLayout
android:id="@+id/ll_products"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="104dp"
android:layout_marginLeft="104dp"
android:layout_marginTop="@dimen/platform_dp_5"
android:orientation="vertical"
android:visibility="gone">
</LinearLayout>
android:layout_marginStart="12dp"
android:textColor="@color/color_1c1f28_40"
android:textSize="12dp"
app:layout_constraintBaseline_toBaselineOf="@id/tvPrice"
app:layout_constraintLeft_toRightOf="@id/tvPrice_unit"
tools:text="面/视咨询" />
<!--私聊-->
<TextView
android:id="@+id/tvChat"
<androidx.cardview.widget.CardView
android:id="@+id/card_chat"
android:layout_width="wrap_content"
android:layout_height="@dimen/platform_dp_24"
android:layout_alignBottom="@+id/cvHead"
android:layout_alignParentRight="true"
android:gravity="center"
android:textSize="@dimen/platform_dp_13"
android:textStyle="bold"
android:background="@drawable/consultant_expert_search_chat"
android:textColor="@color/platform_but_text_color"
android:text="私聊"/>
<!--描述-->
<RelativeLayout
android:id="@+id/group_desc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tvChat"
android:layout_marginLeft="@dimen/platform_dp_15"
android:layout_marginTop="@dimen/platform_dp_10"
android:layout_toRightOf="@+id/cvHead"
android:background="@drawable/consultant_bg_radius_gray_2"
android:visibility="gone">
<ImageView
android:layout_width="12dp"
android:layout_height="11dp"
android:layout_marginLeft="@dimen/platform_dp_8"
android:layout_marginTop="@dimen/platform_dp_6"
android:src="@drawable/consultant_bg_item_desc" />
android:layout_height="24dp"
android:elevation="0dp"
android:minWidth="56dp"
android:paddingLeft="6dp"
android:paddingTop="4dp"
android:paddingRight="6dp"
android:paddingBottom="4dp"
app:cardBackgroundColor="@color/color_6ec8f9"
app:cardCornerRadius="12dp"
app:cardElevation="0dp"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/tvPrice">
<TextView
android:id="@+id/tvDesc"
android:layout_width="match_parent"
android:id="@+id/tvChat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:layout_marginTop="8dp"
android:layout_marginRight="12dp"
android:layout_marginBottom="8dp"
android:ellipsize="end"
android:maxLines="2"
android:textColor="@color/platform_color_999999"
android:layout_gravity="center"
android:gravity="center"
android:text="私 聊"
android:textColor="@color/white"
android:textSize="@dimen/platform_dp_11"
tools:text="的客人能够黄偶尔烦人呢日工俄日给你额鞥你让个汇入你哦个人会儿个黄胡蓉呢你个人给哦 而归黑人更换二给" />
</RelativeLayout>
app:layout_constraintBaseline_toBaselineOf="@id/tvPrice"
app:layout_constraintRight_toRightOf="parent" />
</androidx.cardview.widget.CardView>
<TextView
android:id="@+id/people_in_question"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:textColor="@color/color_1c1f28_40"
android:textSize="@dimen/platform_dp_10"
android:visibility="gone"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/card_chat"
tools:text="多人在问询"
tools:visibility="visible" />
<View
android:layout_width="0dp"
android:layout_height="1px"
android:layout_marginTop="20dp"
android:background="@color/color_EFEFF1"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintLeft_toLeftOf="@id/cv_head_view"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/people_in_question" />
</RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
......@@ -4,10 +4,13 @@
android:id="@+id/tvTag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:background="@drawable/consultant_bg_radius_line_gray_1"
android:gravity="center"
android:layout_marginEnd="6dp"
android:padding="3dp"
android:textColor="@color/platform_color_666666"
android:textSize="10sp"
android:paddingLeft="4dp"
android:paddingTop="2dp"
android:paddingRight="4dp"
android:paddingBottom="3dp"
android:textColor="@color/color_1c1f28_50"
android:textSize="11sp"
tools:text="恋爱情感" />
......@@ -3,7 +3,6 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
android:background="@color/platform_white"
android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
......@@ -29,12 +28,14 @@
android:id="@+id/tvSubject"
style="@style/consultant_FilterTextViewStyle"
android:layout_width="0dp"
android:drawablePadding="4dp"
android:layout_weight="1"
android:width="0dp"
android:ellipsize="end"
android:textStyle="bold"
android:singleLine="true"
android:drawableEnd="@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:drawableRight="@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:drawableEnd="@drawable/consult_ic_arrow_drwn_gray"
android:drawableRight="@drawable/consult_ic_arrow_drwn_gray"
android:text="困扰"
android:textColor="@color/platform_color_242424" />
......@@ -44,8 +45,10 @@
android:layout_width="0dp"
android:layout_weight="1"
android:width="0dp"
android:drawableEnd="@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:drawableRight="@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:textStyle="bold"
android:drawablePadding="4dp"
android:drawableEnd="@drawable/consult_ic_arrow_drwn_gray"
android:drawableRight="@drawable/consult_ic_arrow_drwn_gray"
android:text="城市"
android:textColor="@color/platform_color_242424" />
......@@ -55,8 +58,10 @@
android:layout_width="0dp"
android:layout_weight="1"
android:width="0dp"
android:drawableEnd="@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:drawableRight="@drawable/platform_ic_arrow_drop_down_grey_500_18dp"
android:textStyle="bold"
android:drawablePadding="4dp"
android:drawableEnd="@drawable/consult_ic_arrow_drwn_gray"
android:drawableRight="@drawable/consult_ic_arrow_drwn_gray"
android:text="价格"
android:textColor="@color/platform_color_242424" />
......@@ -66,8 +71,10 @@
android:layout_width="0dp"
android:layout_weight="1"
android:width="0dp"
android:drawableEnd="@drawable/filter_up_grey"
android:drawableRight="@drawable/filter_up_grey"
android:textStyle="bold"
android:drawablePadding="4dp"
android:drawableEnd="@drawable/filter_up_gray"
android:drawableRight="@drawable/filter_up_gray"
android:text="@string/platform_filter"
android:textColor="@color/platform_color_242424" />
</LinearLayout>
......
......@@ -26,5 +26,17 @@
<color name="consultant_colorBg">#f5f5f5</color>
<color name="color_EB892C">#EB892C</color>
<color name="color_1AEB892C">#1AEB892C</color>
<color name="color_1c1f28_60">#a61c1f28</color>
<color name="color_1c1f28_50">#801c1f28</color>
<color name="color_1c1f28_40">#661c1f28</color>
<color name="color_1c1f28_20">#331c1f28</color>
<color name="color_ef8a4a">#EF8A4A</color>
<color name="color_f6f6f7">#f6f6f7</color>
<color name="color_6ec8f9">#6ec8f9</color>
<color name="color_6ec8f9_90">#E66ec8f9</color>
<color name="color_b6bece">#B6BECE</color>
<color name="color_b6bece_90">#E6B6BECE</color>
<color name="color_f5a082">#F5A082</color>
<color name="color_f5a082_90">#E6F5A082</color>
<color name="color_f28e6b">#F28E6B</color>
</resources>
......@@ -550,49 +550,53 @@ object IMChatUtil {
val status = chatStatusBean.data.status
actionHandler.setDoctorStatus(status)
actionHandler.setDoctorBusyNum(chatStatusBean.data.busyTotal)
//1.在线,2.离线,3.忙碌 4咨询中, 5倾述中 6咨询前准备
if (status == 2) { //离线
tb.setMinTitleText("离线")
tb.setMinTitleColor(
ContextCompat.getColor(
context,
R.color.platform_color_666666
//1.在线,2.离线,3.服务中 4咨询中, 5倾述中 6咨询前准备
when (status) {
3 -> { //服务中
tb.setMinTitleText("服务中")
tb.setMinTitleColor(
ContextCompat.getColor(
context,
R.color.platform_color_666666
)
)
)
tb.setMinTitleDrawable(
ContextCompat.getDrawable(
context,
R.drawable.im_background_chat_top_status_off_line
tb.setMinTitleDrawable(
ContextCompat.getDrawable(
context,
R.drawable.im_background_chat_top_status_online_server
)
)
)
} else if (status == 4 || status == 5) { //服务中
tb.setMinTitleText("服务中")
tb.setMinTitleColor(
ContextCompat.getColor(
context,
R.color.platform_color_666666
}
2 -> { //离线
tb.setMinTitleText("离线")
tb.setMinTitleColor(
ContextCompat.getColor(
context,
R.color.platform_color_666666
)
)
)
tb.setMinTitleDrawable(
ContextCompat.getDrawable(
context,
R.drawable.im_background_chat_top_status_online_server
tb.setMinTitleDrawable(
ContextCompat.getDrawable(
context,
R.drawable.im_background_chat_top_status_off_line
)
)
)
} else { //在线 1,3,6..
tb.setMinTitleText("在线")
tb.setMinTitleColor(
ContextCompat.getColor(
context,
R.color.platform_color_666666
}
else -> { //在线 1
tb.setMinTitleText("在线")
tb.setMinTitleColor(
ContextCompat.getColor(
context,
R.color.platform_color_666666
)
)
)
tb.setMinTitleDrawable(
ContextCompat.getDrawable(
context,
R.drawable.im_background_chat_top_status_online
tb.setMinTitleDrawable(
ContextCompat.getDrawable(
context,
R.drawable.im_background_chat_top_status_online
)
)
)
}
}
initSystemMessage(
chatStatusBean.data.promptRule,
......
......@@ -4,6 +4,7 @@ import android.annotation.SuppressLint
import android.content.Context
import android.os.Build
import android.text.TextUtils
import android.util.Log
import com.google.gson.Gson
import com.ydl.devicesidlib.DeviceIDHelper
import com.ydl.devicesidlib.Utils
......@@ -259,14 +260,32 @@ class HttpConfig {
}
val message = originalResponse.message()
val api = request.url().encodedPath()
ActionCountUtils.baiDuCount("ydl_user_error_business","error_log",api,params,message)
ActionCountUtils.baiDuCount(
"ydl_user_error_business",
"error_log",
api,
params,
message
)
//阿里云忽略埋点接口
if (!api.contains("maidian/writeMaiDianData")){
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.API, "error_log---api:$api---params:$params ---- message:$message")
}else{
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.API, "writeMaiDianDataError:$api---params:$params ---- message:$message")
if (!api.contains("maidian/writeMaiDianData")) {
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.API,
"error_log---api:$api---params:$params ---- message:$message"
)
} else {
AliYunRichLogsHelper.getInstance().sendRichLog(
AliYunLogConfig.API,
"writeMaiDianDataError:$api---params:$params ---- message:$message"
)
}
}
} else {
Log.e(
"YDL",
"\n---------------------------------------------------------------------------\n" +
"| 请求地址:" + request.url() + " |\n--------------------------------------------------------------------------\n"
)
}
originalResponse
}
......
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