From ab5fba039282afbbd8ef4859613eb385e12c5b69 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Tue, 20 Aug 2024 18:52:39 +0800 Subject: [PATCH] =?UTF-8?q?[1.0.0]=20[=E6=8E=A5=E5=8F=A3=E4=BF=A1=E6=81=AF?= =?UTF-8?q?]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../passenger/bean/ResponseSiteIntroduce.kt | 16 +++++ .../och/bus/passenger/model/OrderModel.kt | 42 +++++++++++++ .../network/BusPassengerServiceManager.kt | 18 +++++- .../network/PassengerSAASServiceApi.java | 11 +++- .../common/module/biz/media/IMediaDispatch.kt | 7 +++ .../common/module/biz/media/MediaManager.kt | 15 +++++ .../manager/download/DownloadManager.kt | 5 ++ .../wigets/media/MediaPlayerFragment.kt | 15 +++-- .../mogo/och/data/bean/BusStationBean.java | 14 ++++- .../com/mogo/och/data/bean/SiteIntroduce.java | 59 +++++++++++++++++++ 10 files changed, 194 insertions(+), 8 deletions(-) create mode 100644 OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/bean/ResponseSiteIntroduce.kt create mode 100644 OCH/common/common/src/main/java/com/mogo/och/common/module/biz/media/IMediaDispatch.kt create mode 100644 OCH/common/common/src/main/java/com/mogo/och/common/module/biz/media/MediaManager.kt create mode 100644 OCH/common/data/src/main/java/com/mogo/och/data/bean/SiteIntroduce.java diff --git a/OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/bean/ResponseSiteIntroduce.kt b/OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/bean/ResponseSiteIntroduce.kt new file mode 100644 index 0000000000..d9ab5c0209 --- /dev/null +++ b/OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/bean/ResponseSiteIntroduce.kt @@ -0,0 +1,16 @@ +package com.mogo.och.bus.passenger.bean + +import com.mogo.eagle.core.data.BaseData + +/** + * 网约车小巴路线接口请求响应结果 返回的是对应司机屏的线路信息 + * + * @author tongchenfei + */ +data class ResponseSiteIntroduce(val data: MutableList?) : BaseData(){ + + data class SiteIntroduceInfo(val siteId:Long,val introduceList:MutableList) + + data class IntroduceInfo(val type:Int,val url :String,val seq:Int) + +} diff --git a/OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/model/OrderModel.kt b/OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/model/OrderModel.kt index b8597b9f64..3a416b0bbe 100644 --- a/OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/model/OrderModel.kt +++ b/OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/model/OrderModel.kt @@ -14,6 +14,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.util.GsonUtils import com.mogo.och.bus.passenger.bean.PM2RoutesResponse +import com.mogo.och.bus.passenger.bean.ResponseSiteIntroduce import com.mogo.och.bus.passenger.callback.IAutopilotStatusCallback import com.mogo.och.bus.passenger.callback.IBusPassegerDriverStatusCallback import com.mogo.och.bus.passenger.callback.IDrivingInfoCallback @@ -26,12 +27,14 @@ import com.mogo.och.common.module.biz.login.ILoginCallback import com.mogo.och.common.module.biz.login.LoginStatusEnum import com.mogo.och.common.module.biz.login.LoginStatusManager import com.mogo.och.common.module.biz.login.OpenOrderStatusEnum +import com.mogo.och.common.module.biz.media.MediaManager import com.mogo.och.common.module.manager.autopilot.autopilot.IOchAutopilotStatusListener import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotStatusListenerManager import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager import com.mogo.och.common.module.manager.distance.IDistanceListener import com.mogo.och.common.module.manager.distance.TrajectoryAndDistanceManager import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager +import com.mogo.och.common.module.manager.download.DownloadManager import com.mogo.och.common.module.manager.loop.BizLoopManager import com.mogo.och.common.module.manager.loop.LoopInfo import com.mogo.och.common.module.manager.socket.cloud.AbnormalFactorsLoopManager @@ -43,6 +46,8 @@ import com.mogo.och.common.module.manager.socket.lan.bean.TaskDetailsMsg import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.common.module.utils.OCHThreadPoolManager import com.mogo.och.common.module.utils.PinYinUtil +import com.mogo.och.common.module.utils.ProjectUtils +import com.mogo.och.common.module.wigets.media.MediaItem import com.mogo.och.data.bean.BusRoutesResult import com.mogo.och.data.bean.BusStationBean import com.mogo.och.data.bean.BusTransferData @@ -202,6 +207,9 @@ object OrderModel { "onReceivedServerSn = $sn" ) mDriverStatusCallback?.updateDriverSn(sn) + sn?.let { + querySiteIntroduce() + } } } @@ -213,6 +221,33 @@ object OrderModel { LanSocketManager.sendMsgToServer(msg) } + private fun querySiteIntroduce(){ + mContext?.let { + if (ProjectUtils.isSaas()) { + BusPassengerServiceManager.querySiteIntroduceBySn(it,object : OchCommonServiceCallback{ + override fun onSuccess(response: ResponseSiteIntroduce?) { + response?.let {response-> + downloadSiteIntroduce(response) + } + } + + override fun onFail(code: Int, msg: String?) { + + } + + }) + } + } + } + + private fun downloadSiteIntroduce(response: ResponseSiteIntroduce) { + response.data?.forEach {siteIntroduceInfo -> + siteIntroduceInfo.introduceList.forEach {introduceInfo -> + DownloadManager.downloadVideoFile(introduceInfo.url,null) + } + } + } + private fun queryDriverOperationStatus() { LoginStatusManager.addListener(TAG,object: ILoginCallback{ @@ -319,6 +354,13 @@ object OrderModel { endStation.longitude = endStationInfo.gcjLon endStation.latitude = endStationInfo.gcjLat TrajectoryAndDistanceManager.setStationPoint(startStation, endStation, lineId.toLong()) + val introductionList = mutableListOf() + endStationInfo.videoList.forEach { + if(it.type==1) { + introductionList.add(MediaItem(MediaItem.PrioritySite, it.url,MediaItem.MEDIA_TYPE_VIDEO,"","")) + } + } + MediaManager.postSiteIntroduceInfo(introductionList) } fun cleanStation(type: String) { diff --git a/OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt b/OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt index f7f2644a68..ce49576e04 100644 --- a/OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt +++ b/OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt @@ -6,9 +6,9 @@ import com.mogo.och.bus.passenger.bean.PM2RoutesResponse import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.commons.debug.DebugConfig import com.mogo.och.bus.passenger.bean.BusPassengerQueryLineRequest -import com.mogo.och.bus.passenger.bean.BusPassengerOperationStatusResponse import com.mogo.eagle.core.network.MoGoRetrofitFactory import com.mogo.commons.storage.SharedPrefsMgr +import com.mogo.och.bus.passenger.bean.ResponseSiteIntroduce import com.mogo.och.common.module.biz.lansocket.LoginLanPassengerSocket import com.mogo.och.common.module.constant.OchCommonConst import com.mogo.och.common.module.network.OchCommonServiceCallback @@ -51,5 +51,21 @@ object BusPassengerServiceManager { .subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverSiteByCoordinate",false)) } } + /** + * 查询绑定行驶的小巴车路线 + * @param context + * @param callback + */ + @JvmStatic + fun querySiteIntroduceBySn( + context: Context, callback: OchCommonServiceCallback? + ) { + mBusPassengerSaasServiceApi.querySiteIntroduceBySn( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + SharedPrefsMgr.getInstance().token, + LoginLanPassengerSocket.driverSn + ).transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "querySiteIntroduceBySn")) + } } \ No newline at end of file diff --git a/OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/network/PassengerSAASServiceApi.java b/OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/network/PassengerSAASServiceApi.java index bcb7156d00..4c3ab1a8c7 100644 --- a/OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/network/PassengerSAASServiceApi.java +++ b/OCH/bus/passenger/src/main/java/com/mogo/och/bus/passenger/network/PassengerSAASServiceApi.java @@ -1,8 +1,7 @@ package com.mogo.och.bus.passenger.network; -import com.mogo.och.bus.passenger.bean.BusPassengerOperationStatusResponse; -import com.mogo.och.bus.passenger.bean.BusPassengerQueryLineRequest; import com.mogo.och.bus.passenger.bean.PM2RoutesResponse; +import com.mogo.och.bus.passenger.bean.ResponseSiteIntroduce; import io.reactivex.Observable; import retrofit2.http.Body; @@ -26,4 +25,12 @@ public interface PassengerSAASServiceApi { @GET( "/och-bus-cabin/api/business/v1/driver/bus/lineDataWithDriver/query" ) Observable queryDriverSiteByCoordinate(@Header("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn); + /** + * 查询车辆对应站点的所有视频介绍视频 + * @return 接口返回数据 + */ + @Headers( {"Content-Type:application/json;charset=UTF-8"} ) + @GET( "/och-bus-cabin/api/business/v1/querySiteIntroduceBySn" ) + Observable querySiteIntroduceBySn(@Header("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn); + } diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/media/IMediaDispatch.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/media/IMediaDispatch.kt new file mode 100644 index 0000000000..d779b9a0a2 --- /dev/null +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/media/IMediaDispatch.kt @@ -0,0 +1,7 @@ +package com.mogo.och.common.module.biz.media + +import com.mogo.och.common.module.wigets.media.MediaItem + +interface IMediaDispatch { + fun diapatchMedia(list :MutableList) +} \ No newline at end of file diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/media/MediaManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/media/MediaManager.kt new file mode 100644 index 0000000000..5c2cb4c178 --- /dev/null +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/media/MediaManager.kt @@ -0,0 +1,15 @@ +package com.mogo.och.common.module.biz.media + +import com.mogo.och.common.module.utils.CallerBase +import com.mogo.och.common.module.wigets.media.MediaItem + +object MediaManager : CallerBase() { + + fun postSiteIntroduceInfo(list: MutableList){ + M_LISTENERS.forEach { + val listener = it.value + listener.diapatchMedia(list) + } + } + +} \ No newline at end of file diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/download/DownloadManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/download/DownloadManager.kt index 3fae413463..052b8d62d4 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/download/DownloadManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/download/DownloadManager.kt @@ -9,6 +9,7 @@ import com.mogo.commons.AbsMogoApplication import com.mogo.eagle.core.utilcode.download.DownloadUtils import com.mogo.eagle.core.utilcode.download.callback.IDownloadListener import com.mogo.eagle.core.utilcode.util.EncryptUtils +import com.mogo.eagle.core.utilcode.util.RegexUtils import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.common.module.manager.loop.BizLoopManager import com.mogo.och.common.module.manager.loop.LoopInfo @@ -81,6 +82,10 @@ object DownloadManager { fun downloadVideoFile(mediaUrl: String, listener: IDownloadListener?) { + if (!RegexUtils.isURL(mediaUrl)) { + OchChainLogManager.writechainLogDownload("准备下载","url 错误 ${mediaUrl}") + return + } val downloadUrl = mediaUrl val downloadDir = getFileCacheDir() val downloadFileName = getCacheFileName(mediaUrl)+"_temp" diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/media/MediaPlayerFragment.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/media/MediaPlayerFragment.kt index e74f347705..3ff9250609 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/media/MediaPlayerFragment.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/media/MediaPlayerFragment.kt @@ -11,8 +11,9 @@ import com.mogo.eagle.core.utilcode.util.GsonUtils import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.common.module.R +import com.mogo.och.common.module.biz.media.IMediaDispatch +import com.mogo.och.common.module.biz.media.MediaManager import com.mogo.och.common.module.manager.download.DownloadManager -import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.shuyu.gsyvideoplayer.GSYVideoManager import kotlinx.android.synthetic.main.fragment_video_player.acb_add_site_video import kotlinx.android.synthetic.main.fragment_video_player.imageVideoRotationView @@ -22,7 +23,7 @@ import kotlinx.android.synthetic.main.fragment_video_player.imageVideoRotationVi * @date: 2022/4/12 */ class MediaPlayerFragment : - MvpFragment() { + MvpFragment(), IMediaDispatch { companion object { private val TAG = MediaPlayerFragment::class.java.simpleName @@ -45,10 +46,11 @@ class MediaPlayerFragment : override fun initViews() { acb_add_site_video.onClick { val siteList = mutableListOf() - siteList.add(MediaItem(MediaItem.PrioritySite,"https://img.zhidaozhixing.com/fileServer/defaultPath/b47f361c3de6ea490f3086407fc0376f/a1%E8%B7%AF%E7%BA%BF%281%29.mp4",MediaItem.MEDIA_TYPE_VIDEO,"","title")) - siteList.add(MediaItem(MediaItem.PrioritySite,"https://img.zhidaozhixing.com/fileServer/defaultPath/a6376a452df030ee97770688f6fea4c0/a2%E8%B7%AF%E7%BA%BF.mp4",MediaItem.MEDIA_TYPE_VIDEO,"","title")) +// siteList.add(MediaItem(MediaItem.PrioritySite,"https://img.zhidaozhixing.com/fileServer/defaultPath/b47f361c3de6ea490f3086407fc0376f/a1%E8%B7%AF%E7%BA%BF%281%29.mp4",MediaItem.MEDIA_TYPE_VIDEO,"","title")) + siteList.add(MediaItem(MediaItem.PrioritySite,"https://img.zhidaozhixing.com/fileServer/online_car_hailing/1676357557335/3.mp4",MediaItem.MEDIA_TYPE_VIDEO,"","title")) setHightPriorityMediaItem(siteList) } + MediaManager.addListener(TAG,this) MediaFileCacheManager.createFileCacheDir(MainMoGoApplication.getApp().applicationContext) MediaDataSourceManager.init(TAG, object : IMediaDataSourceListener { override fun onMediaDataSourceChanged(list: List) { @@ -98,8 +100,13 @@ class MediaPlayerFragment : override fun onDestroy() { MediaDataSourceManager.unInit(TAG) GSYVideoManager.releaseAllVideos() + MediaManager.removeListener(TAG) super.onDestroy() } + + override fun diapatchMedia(list: MutableList) { + setHightPriorityMediaItem(list) + } } class MediaPlayerPresenter(view: MediaPlayerFragment?) : diff --git a/OCH/common/data/src/main/java/com/mogo/och/data/bean/BusStationBean.java b/OCH/common/data/src/main/java/com/mogo/och/data/bean/BusStationBean.java index 2d40aeaf63..cd622edac6 100644 --- a/OCH/common/data/src/main/java/com/mogo/och/data/bean/BusStationBean.java +++ b/OCH/common/data/src/main/java/com/mogo/och/data/bean/BusStationBean.java @@ -1,5 +1,6 @@ package com.mogo.och.data.bean; +import java.util.List; import java.util.Objects; /** @@ -21,6 +22,7 @@ public class BusStationBean { private String introduction;// 站点简介 private boolean isPlayTts; private int pointType; // 1:途径点 2:禁行点 3:站点 + private List videoList; public String getNameKr() { return nameKr; @@ -118,6 +120,14 @@ public class BusStationBean { isPlayTts = playTts; } + public List getVideoList() { + return videoList; + } + + public void setVideoList(List videoList) { + this.videoList = videoList; + } + public int getPointType() { return pointType; } @@ -141,6 +151,7 @@ public class BusStationBean { && leaving == that.leaving && pointType == that.pointType && name.equals(that.name) + && videoList.equals(that.videoList) && (nameKr == null || nameKr.equals(that.nameKr)); } @@ -162,9 +173,10 @@ public class BusStationBean { ", lat=" + lat + ", drivingStatus=" + drivingStatus + ", leaving=" + leaving + - ", introduction='" + introduction + '\'' + ", isPlayTts=" + isPlayTts + ", pointType=" + pointType + + ", introduction='" + introduction + '\'' + + ", videoList=" + videoList + '}'; } } diff --git a/OCH/common/data/src/main/java/com/mogo/och/data/bean/SiteIntroduce.java b/OCH/common/data/src/main/java/com/mogo/och/data/bean/SiteIntroduce.java new file mode 100644 index 0000000000..375769d687 --- /dev/null +++ b/OCH/common/data/src/main/java/com/mogo/och/data/bean/SiteIntroduce.java @@ -0,0 +1,59 @@ +package com.mogo.och.data.bean; + +import java.util.Objects; + +public class SiteIntroduce { + private int type; + private String url; + private int seq; + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public int getSeq() { + return seq; + } + + public void setSeq(int seq) { + this.seq = seq; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + SiteIntroduce that = (SiteIntroduce) o; + return type == that.type && seq == that.seq && Objects.equals(url, that.url); + } + + @Override + public int hashCode() { + int result = type; + result = 31 * result + Objects.hashCode(url); + result = 31 * result + seq; + return result; + } + + @Override + public String toString() { + return "SiteIntroduce{" + + "type=" + type + + ", url='" + url + '\'' + + ", seq=" + seq + + '}'; + } +}