ConsultantServiceImp.kt 6.48 KB
Newer Older
1 2
package com.yidianling.consultant.modular

严久程 committed
3
import android.annotation.SuppressLint
4 5
import android.app.Activity
import android.content.Context
konghaorui committed
6
import android.content.Intent
YKai committed
7
import android.graphics.Rect
严久程 committed
8
import android.text.TextUtils
YKai committed
9
import androidx.fragment.app.Fragment
10
import com.alibaba.android.arouter.facade.annotation.Route
YKai committed
11
import com.blankj.utilcode.util.ScreenUtils
严久程 committed
12 13
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
YKai committed
14
import com.ydl.webview.H5JsBean
15 16
import com.ydl.ydlcommon.base.BaseApp
import com.ydl.ydlcommon.data.http.RxUtils
严久程 committed
17
import com.ydl.ydlcommon.utils.SharedPreferencesEditor
18
import com.ydl.ydlcommon.utils.remind.HttpErrorUtils
konghaorui committed
19
import com.yidianling.consultant.ExpertSearchActivity
ydl committed
20
import com.yidianling.consultant.ExpertSearchFragment
YKai committed
21
import com.yidianling.consultant.OnBottomWordListener
22
import com.yidianling.consultant.api.IConsultantService
严久程 committed
23
import com.yidianling.consultant.bean.GuideBean
konghaorui committed
24 25
import com.yidianling.consultant.bean.Keyworks
import com.yidianling.consultant.data.ConsultantDataManager
严久程 committed
26
import com.yidianling.consultant.model.SearchApi
27
import com.yidianling.consultant.modular.singlton.ConsultAssistantDialogUtils
严久程 committed
28
import com.yidianling.consultant.modular.utils.ConsultAssistantEntryUtils
YKai committed
29 30
import com.yidianling.consultant.preview.GPreviewBuilder
import com.yidianling.consultant.preview.UserViewInfo
严久程 committed
31 32 33
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers

34 35 36 37 38 39

/**
 * Created by xj on 2019/11/14.
 */

@Route(path = "/consultant/ConsultantService")
严久程 committed
40
class ConsultantServiceImp : IConsultantService {
ydl committed
41

42 43 44
    override fun init(context: Context?) {
    }

严久程 committed
45 46
    override fun expertSearchIntent(
        activity: Activity,
47
        category: String,
严久程 committed
48 49 50
        showType: Int,
        isInitShowHot: Boolean
    ): Intent {
konghaorui committed
51 52 53 54 55 56 57 58 59 60 61
        return ExpertSearchActivity.newIntent(activity, category, showType, isInitShowHot)
    }

    override fun getHotSearch(): MutableList<Keyworks> {
        return ConsultantDataManager.getRam().getHotSearch();
    }

    override fun setHotSearch(hotSearch: MutableList<Keyworks>) {
        return ConsultantDataManager.getRam().setHotSearch(hotSearch);
    }

徐健 committed
62 63 64
    /**
     * 首页咨询助理入口
     */
65
    override fun showConsultAssistantDialog(activity: Activity) {
徐健 committed
66
        ConsultAssistantDialogUtils.INSTANCE.fitRequest(activity, "home_index")
67 68 69
    }

    override fun hideConsultAssistantDialog() {
徐健 committed
70
        ConsultAssistantDialogUtils.INSTANCE.hideFromHomePage()
71 72
    }

严久程 committed
73 74 75 76 77 78 79 80
    override fun showConsultAssistantMineDialog(activity: Activity) {
        ConsultAssistantDialogUtils.INSTANCE.fitRequest(activity, "mine_index")
    }

    override fun hideConsultAssistantMineDialog() {
        ConsultAssistantDialogUtils.INSTANCE.hideFromMine()
    }

ydl committed
81 82
    override fun startExpertSearchActivity(
        mContext: Context,
83
        category: String,
ydl committed
84 85 86 87 88 89
        categoryName: String,
        showType: Int
    ) {
        ExpertSearchActivity.start(mContext, category, categoryName, showType)
    }

90
    override fun startExpertSearchActivity(mContext: Context, category: String) {
ydl committed
91 92 93 94 95 96 97
        ExpertSearchActivity.start(mContext, category)
    }

    override fun getExpertSearchFragment(): Fragment {
        return ExpertSearchFragment()
    }

严久程 committed
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
    override fun getGuideImage(source: Int): List<GuideBean>? {
        val dataString = SharedPreferencesEditor.getString("guide_data")
        return if (TextUtils.isEmpty(dataString)) {
            null
        } else {
            val gson = Gson()
            val map: java.util.HashMap<String, List<GuideBean>> =
                gson.fromJson(
                    dataString,
                    object : TypeToken<java.util.HashMap<String, List<GuideBean>>>() {}.type
                )
            map[source.toString()]
        }
    }

    @SuppressLint("CheckResult")
    override fun requestGuideData() {
        SearchApi.getSearchApi().getGuideData()
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe({
                if (it.data != null && it.data.isNotEmpty()) {
                    SharedPreferencesEditor.putString("guide_data", Gson().toJson(it.data))
                }
            }, {})
    }

    override fun jumpConsultAssistant(activity: Activity, location: Int) {
霍志良 committed
126
        ConsultAssistantEntryUtils.jumpConsultAssistant(activity,location,null)
严久程 committed
127 128
    }

129 130 131 132 133 134 135
    override fun dueToTypeJumpAutoOrGuide(
        activity: Activity,
        location: Int,
        doctorId: Int,
        url: String
    ) {
        ConsultAssistantEntryUtils.getTypeJump(activity, location, doctorId, url)
136 137
    }

138 139 140 141
    override fun showConfideListDialog(activity: Activity) {
        ConsultAssistantDialogUtils.INSTANCE.showFromConfideListHome(activity)
    }

142 143
    @SuppressLint("CheckResult")
    override fun getbottomWord(type: Int, listener: OnBottomWordListener) {
霍志良 committed
144
        val map = hashMapOf("type" to type)
145 146 147 148 149 150 151 152 153 154 155 156
        SearchApi.getSearchApi()
            .searchFunctionWordApi(map)
            .compose(RxUtils.resultJavaData())
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe({ resp ->
                listener.onBottomWord(resp)
            }, { t ->
                HttpErrorUtils.handleError(BaseApp.getApp(), t)
            })
    }

YKai committed
157
    override fun resourceToPreview(dataList: List<H5JsBean.MediaInfo>?, params: H5JsBean.H5JsCmd.Params, activity: Activity) {
YKai committed
158 159 160
        val mThumbViewInfoList: MutableList<UserViewInfo> = ArrayList()
        dataList?.let {
            for (mediaInfo in it) {
YKai committed
161 162
                val userViewInfo =
                    UserViewInfo(mediaInfo.cover, mediaInfo.url, mediaInfo.sourcesType)
YKai committed
163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
                val bounds = Rect()
                bounds.left = ScreenUtils.getScreenWidth() / 2
                bounds.top = ScreenUtils.getScreenHeight() / 2
                bounds.right = ScreenUtils.getScreenWidth() / 2
                bounds.bottom = ScreenUtils.getScreenHeight() / 2
                userViewInfo.bounds = bounds
                mThumbViewInfoList.add(userViewInfo)
            }

            GPreviewBuilder.form(activity)
                .setData(mThumbViewInfoList)
                .setCurrentIndex(params.preview_index)
                .setFullscreen(true)
                .setToUid(params.info?.toUid.toString() + "")
                .setDoctorId(params.info?.doctorId)
                .setType(GPreviewBuilder.IndicatorType.Dot)
                .start()
        }
    }

ydl committed
183 184 185 186
    override fun resetConsultAssistantDialogStatus() {
        ConsultAssistantDialogUtils.INSTANCE.resetStatus()
    }

187
}