[接口信息]
This commit is contained in:
yangyakun
2024-08-20 18:52:39 +08:00
parent e72fca23c4
commit ab5fba0392
10 changed files with 194 additions and 8 deletions

View File

@@ -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<SiteIntroduceInfo>?) : BaseData(){
data class SiteIntroduceInfo(val siteId:Long,val introduceList:MutableList<IntroduceInfo>)
data class IntroduceInfo(val type:Int,val url :String,val seq:Int)
}

View File

@@ -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<ResponseSiteIntroduce>{
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<MediaItem>()
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) {

View File

@@ -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<ResponseSiteIntroduce>?
) {
mBusPassengerSaasServiceApi.querySiteIntroduceBySn(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
LoginLanPassengerSocket.driverSn
).transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "querySiteIntroduceBySn"))
}
}

View File

@@ -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<PM2RoutesResponse> 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<ResponseSiteIntroduce> querySiteIntroduceBySn(@Header("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn);
}

View File

@@ -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<MediaItem>)
}

View File

@@ -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<IMediaDispatch>() {
fun postSiteIntroduceInfo(list: MutableList<MediaItem>){
M_LISTENERS.forEach {
val listener = it.value
listener.diapatchMedia(list)
}
}
}

View File

@@ -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"

View File

@@ -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<MediaPlayerFragment?, MediaPlayerPresenter?>() {
MvpFragment<MediaPlayerFragment?, MediaPlayerPresenter?>(), 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<MediaItem>()
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<MediaItem>) {
@@ -98,8 +100,13 @@ class MediaPlayerFragment :
override fun onDestroy() {
MediaDataSourceManager.unInit(TAG)
GSYVideoManager.releaseAllVideos()
MediaManager.removeListener(TAG)
super.onDestroy()
}
override fun diapatchMedia(list: MutableList<MediaItem>) {
setHightPriorityMediaItem(list)
}
}
class MediaPlayerPresenter(view: MediaPlayerFragment?) :

View File

@@ -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<SiteIntroduce> videoList;
public String getNameKr() {
return nameKr;
@@ -118,6 +120,14 @@ public class BusStationBean {
isPlayTts = playTts;
}
public List<SiteIntroduce> getVideoList() {
return videoList;
}
public void setVideoList(List<SiteIntroduce> 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 +
'}';
}
}

View File

@@ -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 +
'}';
}
}