From 4420086918b722f1b825180bc5293dbdf4aeb555 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Tue, 12 Nov 2024 18:37:21 +0800 Subject: [PATCH] =?UTF-8?q?[6.8.0]=20[fea]=20[=E6=A0=B8=E9=94=80]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manager/socket/lan/bean/DataBean.kt | 22 +- .../com/mogo/och/weaknet/model/TicketModel.kt | 197 ++++++++++++++++-- .../weaknet/repository/RepositoryManager.kt | 12 +- .../repository/exception/DataException.kt | 8 +- .../weaknet/repository/net/NetInterface.java | 12 +- .../dali/shuttle/DaliShuttleServiceManager.kt | 55 +++-- .../project/saas/bus/SaasBusServiceManager.kt | 30 +-- .../saas/shuttle/SaasShuttleServiceManager.kt | 27 --- .../writeoff/IWriteOffRepository.kt | 7 +- .../writeoff/impl/WriteOffCacheRepository.kt | 12 +- .../impl/WriteOffNormallRepository.kt | 18 +- .../weaknet/passenger/model/TicketModel.kt | 101 +-------- .../network/PassengerServiceManager.kt | 47 +---- 13 files changed, 295 insertions(+), 253 deletions(-) diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/lan/bean/DataBean.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/lan/bean/DataBean.kt index 4d365e6e59..c229ad68c8 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/lan/bean/DataBean.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/lan/bean/DataBean.kt @@ -71,16 +71,18 @@ data class WriteOffMsg( ) : BaseDPMsg(DPMsgType.TYPE_WRITEOFF_INFO.type) data class WriteOffDetialMsg( - val expiryTime: Long?, - val bookingTime: Long?, - val businessType: Int?, - val lineId: Long?, - val remainingTimes: Int?, - val orderNo: String?, - val uid: String?, - val phone: String?, - val ticketSize: String?, - val ticketName: String?, + val code:Int, + val msg:String?, + val expiryTime: Long?=null, + val bookingTime: Long?=null, + val businessType: Int?=null, + val lineId: Long?=null, + val remainingTimes: Int?=null, + val orderNo: String?=null, + val uid: String?=null, + val phone: String?=null, + val ticketSize: String?=null, + val ticketName: String?=null, ) : BaseDPMsg(DPMsgType.TYPE_WRITEOFF_INFO_DETAIL.type) data class WriteOffDevicesMsg( diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/TicketModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/TicketModel.kt index 00176e97d8..6934c92ef5 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/TicketModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/TicketModel.kt @@ -2,15 +2,16 @@ package com.mogo.och.weaknet.model import com.elegant.network.utils.GsonUtil import com.mogo.commons.AbsMogoApplication -import com.mogo.commons.env.ProjectUtils import com.mogo.eagle.core.data.enums.EventTypeEnumNew import com.mogo.eagle.core.data.msgbox.MsgBoxBean import com.mogo.eagle.core.data.msgbox.MsgBoxType import com.mogo.eagle.core.data.msgbox.V2XMsg import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager.saveMsgBox +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P import com.mogo.och.common.module.manager.autopilot.line.LineManager import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.common.module.manager.loop.BizLoopManager @@ -20,16 +21,22 @@ import com.mogo.och.common.module.manager.socket.cloud.OCHSocketMessageManager import com.mogo.och.common.module.manager.socket.lan.ILanMessageListener import com.mogo.och.common.module.manager.socket.lan.LanSocketManager import com.mogo.och.common.module.manager.socket.lan.bean.DPMsgType +import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffDetialMsg import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffDevicesMsg import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffMsg import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.weaknet.bean.response.WriteOffCountResponse import com.mogo.och.weaknet.bean.WriteOffPassenger import com.mogo.och.weaknet.repository.RepositoryManager +import com.mogo.och.weaknet.repository.exception.DataException +import com.mogo.och.weaknet.repository.net.bean.response.PassengerWriteOffResponse import com.mogo.och.weaknet.util.ShuttleVoiceManager import io.reactivex.Observable import io.reactivex.ObservableEmitter import io.reactivex.ObservableOnSubscribe +import io.reactivex.Observer +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers object TicketModel : IOchOnMessageListener{ @@ -42,26 +49,27 @@ object TicketModel : IOchOnMessageListener{ private val observable = Observable.create(ObservableOnSubscribe> { emitter -> emitterMain = emitter }) - private val writeOffMsg = object : ILanMessageListener { - override fun targetLan(): Class = WriteOffMsg::class.java - override fun onLanMsgReceived(obj: WriteOffMsg?) = receiveWrteOffInfo(obj) - } - private val writeOfDevicefMsg = object : ILanMessageListener { override fun targetLan(): Class = WriteOffDevicesMsg::class.java override fun onLanMsgReceived(obj: WriteOffDevicesMsg?) = receiveWrteOffDevicesInfo(obj) } + private val writeOfDevicefDetialMsg = object : ILanMessageListener { + override fun targetLan(): Class = WriteOffDetialMsg::class.java + override fun onLanMsgReceived(obj: WriteOffDetialMsg?) = receiveWrteOffDefailtInfo(obj) + } + + fun load(){ - // 3s轮训站点核销人数 - if(RepositoryManager.supportWriteOff()) { + // 3s轮训站点核销人数 人数本地核销 直接计算就好 + if (RepositoryManager.supportWriteOff() && RepositoryManager.supportWriteOffDb()) { BizLoopManager.setLoopFunction( SELECTWRITEOFFCOUNT, LoopInfo(3, TicketModel::selectWriteOffCount, scheduler = Schedulers.io()) ) } // 核销信息 - LanSocketManager.registerSocketMessageListener(DPMsgType.TYPE_WRITEOFF_INFO.type,writeOffMsg) + LanSocketManager.registerSocketMessageListener(DPMsgType.TYPE_WRITEOFF_INFO_DETAIL.type,writeOfDevicefDetialMsg) // 核销设备信息 LanSocketManager.registerSocketMessageListener(DPMsgType.TYPE_WRITEOFF_DEVICES_INFO.type,writeOfDevicefMsg) //监听核销乘客 @@ -72,7 +80,7 @@ object TicketModel : IOchOnMessageListener{ if(RepositoryManager.supportWriteOff()) { BizLoopManager.removeLoopFunction(SELECTWRITEOFFCOUNT) } - LanSocketManager.unRegisterSocketMessageListener(DPMsgType.TYPE_WRITEOFF_INFO.type,writeOffMsg) + LanSocketManager.unRegisterSocketMessageListener(DPMsgType.TYPE_WRITEOFF_INFO_DETAIL.type,writeOfDevicefDetialMsg) LanSocketManager.unRegisterSocketMessageListener(DPMsgType.TYPE_WRITEOFF_DEVICES_INFO.type,writeOfDevicefMsg) OCHSocketMessageManager.releaseSocketMessageListener(OCHSocketMessageManager.msgWriteOffPassengerType) } @@ -92,8 +100,8 @@ object TicketModel : IOchOnMessageListener{ passenger.passengerSize, passenger.phone ?: "", passenger.ticketName?:"", - passenger.orderNo?:"" ) + TODO("服务器端核销需要在本地报备一下 用于计算数据") selectWriteOffCount() } @@ -172,12 +180,167 @@ object TicketModel : IOchOnMessageListener{ } } } + private fun receiveWrteOffDefailtInfo(writeOffDetialMsg: WriteOffDetialMsg?) { + writeOffDetialMsg?.let { + if(writeOffDetialMsg.code!=0){ + sendMessage2Driver( + writeOffDetialMsg.msg?:"", + writeOffDetialMsg.phone ?: "" + ) + }else { + RepositoryManager.writeOff(writeOffDetialMsg) + ?.subscribeOn(Schedulers.io()) + ?.observeOn(AndroidSchedulers.mainThread()) + ?.subscribe(object : Observer { + override fun onSubscribe(d: Disposable) { + d(TAG, "receiveWrteOffDefailtInfo onSubscribe") + } - private fun receiveWrteOffDevicesInfo(writeOffMsg: WriteOffDevicesMsg?) { - writeOffMsg?.let { - if (writeOffMsg.isConnectScanner != null) { - val reason = if (writeOffMsg.reason == null) "" else writeOffMsg.reason!! - if (writeOffMsg.isConnectScanner==true) { // 链接成功 + override fun onError(e: Throwable) { + d(TAG, "receiveWrteOffDefailtInfo onError${e.printStackTrace()}") + if (e is DataException) { + CallerLogger.d(M_BUS_P + TAG, "核销失败 ${e.code}-----${e.msg}") + when (e.code) { + 6002 -> { + sendMessage2Driver( + "同一订单核销间隔时间需大于2分钟", + writeOffDetialMsg.phone ?: "" + ) + } + + 1009 -> { + sendMessage2Driver( + "车票所选乘车日期非今日", + writeOffDetialMsg.phone ?: "" + ) + } + + 1005 -> { + sendMessage2Driver( + "车辆未登录、或没有任务", + writeOffDetialMsg.phone ?: "" + ) + } + + 1006 -> { + sendMessage2Driver( + "车票路线信息与当前车辆执行任务的路线信息不符合", + writeOffDetialMsg.phone ?: "" + ) + } + + 1008 -> { + sendMessage2Driver( + "车票剩余可用次数为0", + writeOffDetialMsg.phone ?: "" + ) + } + + 6001 -> { + sendMessage2Driver( + "二维码已过期", + writeOffDetialMsg.phone ?: "" + ) + } + + 1012 -> { + sendMessage2Driver( + "当前用户下单路线非当前的车辆所属公司", + writeOffDetialMsg.phone ?: "" + ) + } + + else -> { + when (e.msg) { + "6002" -> { + sendMessage2Driver( + "同一订单核销间隔时间需大于2分钟", + writeOffDetialMsg.phone ?: "" + ) + } + + "1009" -> { + sendMessage2Driver( + "车票所选乘车日期非今日", + writeOffDetialMsg.phone ?: "" + ) + } + + "1005" -> { + sendMessage2Driver( + "车辆未登录、或没有任务", + writeOffDetialMsg.phone ?: "" + ) + } + + "1006" -> { + sendMessage2Driver( + "车票路线信息与当前车辆执行任务的路线信息不符合", + writeOffDetialMsg.phone ?: "" + ) + } + + "1008" -> { + sendMessage2Driver( + "车票剩余可用次数为0", + writeOffDetialMsg.phone ?: "" + ) + } + + "6001" -> { + sendMessage2Driver( + "二维码已过期", + writeOffDetialMsg.phone ?: "" + ) + } + + "1012" -> { + sendMessage2Driver( + "当前用户下单路线非当前的车辆所属公司", + writeOffDetialMsg.phone ?: "" + ) + } + + else -> { + sendMessage2Driver( + e.msg, + writeOffDetialMsg.phone ?: "" + ) + } + } + } + } + } + } + + override fun onComplete() { + d(TAG, "receiveWrteOffDefailtInfo onComplete") + } + + override fun onNext(data: PassengerWriteOffResponse.Result) { + d(TAG, "queryBusLines onNext ${data}") + selectWriteOffCount() + playPassenger( + data.ticketSize ?: 0, + data.phone ?: "", + data.ticketName ?: "" + ) + } + + }) + } + } + } + private fun sendMessage2Driver(message:String,phone:String){ + val msg = WriteOffMsg(false, phone, 0, "", "验票失败,${message}","") + receiveWrteOffInfo(msg) + } + + private fun receiveWrteOffDevicesInfo(writeOffDevicesMsg: WriteOffDevicesMsg?) { + writeOffDevicesMsg?.let { + if (writeOffDevicesMsg.isConnectScanner != null) { + val reason = if (writeOffDevicesMsg.reason == null) "" else writeOffDevicesMsg.reason!! + if (writeOffDevicesMsg.isConnectScanner==true) { // 链接成功 saveMsgBox( MsgBoxBean( MsgBoxType.V2X, @@ -206,7 +369,7 @@ object TicketModel : IOchOnMessageListener{ } } - private fun playPassenger(ticketSize: Int,phone:String,ticketName:String,orderNo:String) { + private fun playPassenger(ticketSize: Int,phone:String,ticketName:String) { ShuttleVoiceManager.writeOffCount(ticketSize) diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt index c816ef009f..c3194c786c 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt @@ -7,6 +7,7 @@ import com.mogo.eagle.core.data.BaseData import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffDetialMsg import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.weaknet.bean.request.ShuttleEventRequest import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse @@ -18,6 +19,7 @@ import com.mogo.och.weaknet.repository.db.repository.EventDb import com.mogo.och.weaknet.repository.line.ILineRepository import com.mogo.och.weaknet.repository.line.impl.NormalRepository import com.mogo.och.weaknet.repository.line.impl.WeaknetRepository +import com.mogo.och.weaknet.repository.net.bean.response.PassengerWriteOffResponse import com.mogo.och.weaknet.repository.writeoff.IWriteOffRepository import com.mogo.och.weaknet.repository.writeoff.impl.WriteOffCacheRepository import com.mogo.och.weaknet.repository.writeoff.impl.WriteOffNormallRepository @@ -151,6 +153,12 @@ object RepositoryManager { } return false } + fun supportWriteOffDb():Boolean{ + if(supportWriteOff()){ + return ProjectUtils.isSaas() + } + return false + } fun queryCarExecutableTaskList( ochCommonServiceCallback: OchCommonServiceCallback @@ -170,8 +178,8 @@ object RepositoryManager { } } - fun writeOff(){ - writeOffRepository?.writeOffEvent() + fun writeOff(writeOffDetialMsg: WriteOffDetialMsg): Observable? { + return writeOffRepository?.writeOffEvent(writeOffDetialMsg) } fun closeDb() { diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/exception/DataException.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/exception/DataException.kt index 64b423bc46..91d5e1333a 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/exception/DataException.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/exception/DataException.kt @@ -1,8 +1,14 @@ package com.mogo.och.weaknet.repository.exception class DataException: RuntimeException { + var code:Int = 0 + var msg:String = "" constructor() : super() - constructor(code:Int,message: String?) : super("${code}_${message}") + constructor(code:Int, message: String) : super("${code}_${message}"){ + this.code = code + this.msg = message + } + companion object{ val startTaskErrorCode = 10010 } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/NetInterface.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/NetInterface.java index b7b5f8583c..11e5c5da1a 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/NetInterface.java +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/NetInterface.java @@ -6,10 +6,11 @@ import com.mogo.och.common.module.network.OchCommonServiceCallback; import com.mogo.och.data.bean.BusRoutesResult; import com.mogo.och.weaknet.bean.request.ShuttleEventRequest; import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse; -import com.mogo.och.weaknet.bean.response.WriteOffCountResponse; import com.mogo.eagle.core.data.BaseData; import com.mogo.och.weaknet.repository.db.bean.LineDataBean; import com.mogo.och.weaknet.repository.db.bean.TaskDataBean; +import com.mogo.och.weaknet.repository.net.bean.request.PassengerWriteOffRequest; +import com.mogo.och.weaknet.repository.net.bean.response.PassengerWriteOffResponse; import java.util.ArrayList; import java.util.List; @@ -47,7 +48,14 @@ public interface NetInterface { return Observable.just(new BusRoutesResult()); } - default void writeOffCount(Context context , Long taskId, Long siteId, OchCommonServiceCallback callback){} + default Observable writeOffCount(Context context , Long taskId, Long siteId){ + return Observable.just(0); + } + + default Observable writeOffTicket(Context context, + PassengerWriteOffRequest ticketInfo){ + return Observable.just(new PassengerWriteOffResponse.Result("",0,"",0L)); + } default void queryCarExecutableTaskList(Context context , OchCommonServiceCallback callback){} diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/dali/shuttle/DaliShuttleServiceManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/dali/shuttle/DaliShuttleServiceManager.kt index ad0a3bb7c7..bbb7d5e50a 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/dali/shuttle/DaliShuttleServiceManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/dali/shuttle/DaliShuttleServiceManager.kt @@ -6,6 +6,7 @@ import com.mogo.commons.storage.SharedPrefsMgr import com.mogo.eagle.core.data.BaseData import com.mogo.eagle.core.network.MoGoRetrofitFactory import com.mogo.och.common.module.constant.OchCommonConst +import com.mogo.och.common.module.manager.cache.OchSPManager import com.mogo.och.common.module.network.OchCommonNet import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.common.module.network.OchCommonSubscribeImpl @@ -14,56 +15,53 @@ import com.mogo.och.data.bean.BusRoutesResult import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest import com.mogo.och.weaknet.bean.request.ShuttleEventRequest import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse -import com.mogo.och.weaknet.bean.response.WriteOffCountResponse import com.mogo.och.weaknet.repository.net.NetInterface +import com.mogo.och.weaknet.repository.net.bean.request.PassengerWriteOffRequest +import com.mogo.och.weaknet.repository.net.bean.response.PassengerWriteOffResponse import io.reactivex.Observable /** * @author: wangmingjun * @date: 2021/10/20 */ -object DaliShuttleServiceManager: NetInterface { +object DaliShuttleServiceManager : NetInterface { - private val mService: IDaliShuttleApiService = MoGoRetrofitFactory.getInstance(OchCommonConst.getShuttleUrl()).create( - IDaliShuttleApiService::class.java - ) + private val mService: IDaliShuttleApiService = + MoGoRetrofitFactory.getInstance(OchCommonConst.getShuttleUrl()).create( + IDaliShuttleApiService::class.java + ) /** * 查询小巴车当前任务 - * @param context - * @param callback */ override fun queryBusRoutes(): Observable? { //获取当前高德坐标 - return mService.queryBusRoutes( + return mService.queryBusRoutes( MoGoAiCloudClientConfig.getInstance().serviceAppId, SharedPrefsMgr.getInstance().token, BusQueryLineStationsRequest() - ) .transformIoTry() - .flatMap(OchCommonNet("saas shuttle queryBusRoutes",false)) + ).transformIoTry() + .flatMap(OchCommonNet("saas shuttle queryBusRoutes", false)) .flatMap { - Observable.just(it.data?:BusRoutesResult()) + Observable.just(it.data ?: BusRoutesResult()) } } /** * 只发生在大理和saas环境 查询当前站点核销的人数 */ - override fun writeOffCount( - context: Context, - taskId: Long?, - siteId: Long?, - callback: OchCommonServiceCallback? - ) { - mService.writeOffCount( + override fun writeOffCount(context: Context?, taskId: Long?, siteId: Long?): Observable { + return mService.writeOffCount( MoGoAiCloudClientConfig.getInstance().serviceAppId, SharedPrefsMgr.getInstance().token, taskId?.toString(), siteId?.toString() ) - .transformIoTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "writeOffCount")) + .flatMap(OchCommonNet("saas shuttle writeOffCount", false)) + .flatMap { + Observable.just(it.data ?: 0) + } } /** @@ -98,5 +96,22 @@ object DaliShuttleServiceManager: NetInterface { .subscribe(OchCommonSubscribeImpl(context, callback, "reportCabinEvent")) } + override fun writeOffTicket( + context: Context, + ticketInfo: PassengerWriteOffRequest, + ): Observable? { + ticketInfo.sn = OchSPManager.getSn() + return mService.daliwriteOffTicket( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + SharedPrefsMgr.getInstance().token, + ticketInfo + ) + .transformIoTry() + .flatMap(OchCommonNet("dali shuttle writeOffCount",false)) + .flatMap { + Observable.just(it.data) + } + } + } \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/bus/SaasBusServiceManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/bus/SaasBusServiceManager.kt index 61ae1bc97c..1c0a6170ad 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/bus/SaasBusServiceManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/bus/SaasBusServiceManager.kt @@ -14,7 +14,6 @@ import com.mogo.och.common.module.network.interceptor.transformIoTry import com.mogo.och.data.bean.BusRoutesResult import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse import com.mogo.och.weaknet.bean.request.ShuttleEventRequest -import com.mogo.och.weaknet.bean.response.WriteOffCountResponse import com.mogo.och.weaknet.repository.net.bean.request.WriteOffCountReqBean import com.mogo.och.weaknet.repository.net.NetInterface import io.reactivex.Observable @@ -51,24 +50,17 @@ object SaasBusServiceManager: NetInterface { /** * 只发生在大理和saas环境 查询当前站点核销的人数 */ - override fun writeOffCount( - context: Context, - taskId: Long, - siteId: Long, - callback: OchCommonServiceCallback? - ) { - OchSPManager.getSn()?.let { - mService.writeOffCount( - MoGoAiCloudClientConfig.getInstance().serviceAppId, - SharedPrefsMgr.getInstance().token, - WriteOffCountReqBean(it,taskId, - siteId, - ) - ) - .transformIoTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "writeOffCount")) - } - + override fun writeOffCount(context: Context?, taskId: Long?, siteId: Long?): Observable { + return mService.writeOffCount( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + SharedPrefsMgr.getInstance().token, + WriteOffCountReqBean(OchSPManager.getSn()?:"",taskId?:0, siteId?:0,) + ) + .transformIoTry() + .flatMap(OchCommonNet("saas shuttle writeOffCount",false)) + .flatMap { + Observable.just(it.data?:0) + } } /** diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/shuttle/SaasShuttleServiceManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/shuttle/SaasShuttleServiceManager.kt index ae2dbcd25f..9af031601d 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/shuttle/SaasShuttleServiceManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/shuttle/SaasShuttleServiceManager.kt @@ -15,8 +15,6 @@ import com.mogo.och.data.bean.BusRoutesResult import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse import com.mogo.och.weaknet.bean.request.ShuttleEventRequest -import com.mogo.och.weaknet.bean.response.WriteOffCountResponse -import com.mogo.och.weaknet.repository.net.bean.request.WriteOffCountReqBean import com.mogo.och.weaknet.repository.net.NetInterface import io.reactivex.Observable @@ -33,8 +31,6 @@ object SaasShuttleServiceManager: NetInterface { /** * 查询小巴车当前任务 - * @param context - * @param callback */ override fun queryBusRoutes(): Observable? { //获取当前高德坐标 @@ -49,29 +45,6 @@ object SaasShuttleServiceManager: NetInterface { } } - /** - * 只发生在大理和saas环境 查询当前站点核销的人数 - */ - override fun writeOffCount( - context: Context, - taskId: Long, - siteId: Long, - callback: OchCommonServiceCallback? - ) { - OchSPManager.getSn()?.let { - mService.writeOffCount( - MoGoAiCloudClientConfig.getInstance().serviceAppId, - SharedPrefsMgr.getInstance().token, - WriteOffCountReqBean( - it, taskId, - siteId, - ) - ) - .transformIoTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "writeOffCount")) - } - } - /** * 同步 线路、站点、任务、自驾轨迹信息 */ diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/IWriteOffRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/IWriteOffRepository.kt index 06c4bdfa78..aa7c7f0275 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/IWriteOffRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/IWriteOffRepository.kt @@ -1,14 +1,17 @@ package com.mogo.och.weaknet.repository.writeoff import android.content.Context +import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffDetialMsg import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.weaknet.bean.response.WriteOffCountResponse +import com.mogo.och.weaknet.repository.net.bean.response.PassengerWriteOffResponse +import io.reactivex.Observable interface IWriteOffRepository { - fun queryWriteoffCount(context: Context, taskId: Long, siteId: Long, callback: OchCommonServiceCallback?) + fun queryWriteoffCount(context: Context, taskId: Long, siteId: Long, callback: OchCommonServiceCallback?): Observable? - fun writeOffEvent() + fun writeOffEvent(writeOffDetialMsg: WriteOffDetialMsg): Observable? fun release() diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffCacheRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffCacheRepository.kt index 75eb33622f..7fa2b1376f 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffCacheRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffCacheRepository.kt @@ -7,14 +7,16 @@ import com.mogo.commons.env.ProjectUtils import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffDetialMsg import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.weaknet.bean.response.WriteOffCountResponse import com.mogo.och.weaknet.repository.net.exception.NetException import com.mogo.och.weaknet.repository.net.NetInterface -import com.mogo.och.weaknet.repository.net.project.dali.shuttle.DaliShuttleServiceManager +import com.mogo.och.weaknet.repository.net.bean.response.PassengerWriteOffResponse import com.mogo.och.weaknet.repository.net.project.saas.bus.SaasBusServiceManager import com.mogo.och.weaknet.repository.net.project.saas.shuttle.SaasShuttleServiceManager import com.mogo.och.weaknet.repository.writeoff.IWriteOffRepository +import io.reactivex.Observable class WriteOffCacheRepository : IWriteOffRepository { private val TAG = "ShuttleSaasRepository" @@ -51,12 +53,12 @@ class WriteOffCacheRepository : IWriteOffRepository { taskId: Long, siteId: Long, callback: OchCommonServiceCallback? - ) { - weakNetInterface?.writeOffCount(context,taskId,siteId,callback) + ): Observable? { + TODO("本地计算核销数量 数据来源有两个地方 1、本地数据库计算 + 2、服务器核销") } - override fun writeOffEvent() { - + override fun writeOffEvent(writeOffDetialMsg: WriteOffDetialMsg): Observable? { + TODO("Not yet implemented") } override fun release() { diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffNormallRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffNormallRepository.kt index 9c4b484ae6..ac14e39e2d 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffNormallRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffNormallRepository.kt @@ -1,20 +1,23 @@ package com.mogo.och.weaknet.repository.writeoff.impl import android.content.Context +import com.mogo.commons.AbsMogoApplication import com.mogo.commons.env.Project import com.mogo.commons.env.ProjectUtils import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffDetialMsg import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.weaknet.bean.response.WriteOffCountResponse import com.mogo.och.weaknet.repository.net.NetInterface +import com.mogo.och.weaknet.repository.net.bean.request.PassengerWriteOffRequest +import com.mogo.och.weaknet.repository.net.bean.response.PassengerWriteOffResponse import com.mogo.och.weaknet.repository.net.exception.NetException import com.mogo.och.weaknet.repository.net.project.dali.bus.DaliBusServiceManager import com.mogo.och.weaknet.repository.net.project.dali.shuttle.DaliShuttleServiceManager -import com.mogo.och.weaknet.repository.net.project.mogo.bus.MogoBusServiceManager -import com.mogo.och.weaknet.repository.net.project.mogo.shuttle.MogoShuttleServiceManager import com.mogo.och.weaknet.repository.writeoff.IWriteOffRepository +import io.reactivex.Observable class WriteOffNormallRepository: IWriteOffRepository { @@ -55,12 +58,17 @@ class WriteOffNormallRepository: IWriteOffRepository { taskId: Long, siteId: Long, callback: OchCommonServiceCallback? - ) { - normalNetInterface?.writeOffCount(context,taskId,siteId,callback) + ): Observable? { + return normalNetInterface?.writeOffCount(context,taskId,siteId) } - override fun writeOffEvent() { + override fun writeOffEvent(writeOffDetialMsg: WriteOffDetialMsg): Observable? { + val passengerWriteOffRequest = PassengerWriteOffRequest(writeOffDetialMsg.orderNo, writeOffDetialMsg.uid) + return normalNetInterface?.writeOffTicket( + AbsMogoApplication.getApp(), + passengerWriteOffRequest, + ) } override fun release() { diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/TicketModel.kt b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/TicketModel.kt index d848ddc538..17ca6e69b2 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/TicketModel.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/TicketModel.kt @@ -1,19 +1,13 @@ package com.mogo.och.shuttle.weaknet.passenger.model -import com.mogo.commons.AbsMogoApplication import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P import com.mogo.eagle.core.utilcode.util.GsonUtils import com.mogo.eagle.core.utilcode.util.RegexUtils -import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffMsg import com.mogo.och.common.module.manager.socket.lan.LanSocketManager -import com.mogo.och.common.module.network.OchCommonServiceCallback -import com.mogo.och.shuttle.weaknet.passenger.bean.request.PassengerWriteOffRequest -import com.mogo.och.shuttle.weaknet.passenger.bean.response.PassengerWriteOffResponse import com.mogo.och.common.module.manager.scnner.ScannerManager import com.mogo.och.common.module.manager.scnner.StateChangeListener import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffDetialMsg -import com.mogo.och.shuttle.weaknet.passenger.network.PassengerServiceManager object TicketModel : StateChangeListener { @@ -46,103 +40,16 @@ object TicketModel : StateChangeListener { phoneNum = phone } } - val writeOffDetail = WriteOffDetialMsg(expiryTime as Long,bookingTime as Long, + val writeOffDetail = WriteOffDetialMsg(0,"",expiryTime as Long,bookingTime as Long, businessType as Int,lineId as Long,remainingTimes as Int, orderNo,uid,phoneNum,ticketSize as String,ticketName as String) CallerLogger.d(M_BUS_P + TAG, "sendTaskDetailsToClients = " + GsonUtils.toJson(writeOffDetail)) LanSocketManager.sendMsgToServer(writeOffDetail) }else{ // 通知司机屏二维码错误 - sendMessage2Driver("参数错误:${payload}","") + val writeOffDetail = WriteOffDetialMsg(code = -1, msg = "参数错误:${payload}") + CallerLogger.d(M_BUS_P + TAG, "sendTaskDetailsToClients = " + GsonUtils.toJson(writeOffDetail)) + LanSocketManager.sendMsgToServer(writeOffDetail) } } - - private fun writeOffTicket(orderNo: String, uid: String, phoneNum: String) { - val passengerWriteOffRequest = PassengerWriteOffRequest(orderNo, uid) - PassengerServiceManager.writeOffTicket(AbsMogoApplication.getApp(), - passengerWriteOffRequest, - object : OchCommonServiceCallback { - override fun onSuccess(data: PassengerWriteOffResponse?) { - if (data?.data == null) return - val ticketInfo = - "核销成功:票种名称:${data.data.ticketName},车票数量:${data.data.ticketSize},预留手机号:${data.data.phone},时间:${data.data.remainingTimes}" - CallerLogger.d(M_BUS_P + TAG, ticketInfo) - sendMessage2DriverSuccess(data.data,orderNo) - } - - override fun onFail(code: Int, msg: String?) { - CallerLogger.d(M_BUS_P + TAG, "核销失败 ${code}-----${msg}") - - when (code) { - 6002 -> { - sendMessage2Driver("同一订单核销间隔时间需大于2分钟",phoneNum) - } - 1009 -> { - sendMessage2Driver("车票所选乘车日期非今日",phoneNum) - } - 1005 -> { - sendMessage2Driver("车辆未登录、或没有任务",phoneNum) - } - 1006 -> { - sendMessage2Driver("车票路线信息与当前车辆执行任务的路线信息不符合",phoneNum) - } - 1008 -> { - sendMessage2Driver("车票剩余可用次数为0",phoneNum) - } - 6001 -> { - sendMessage2Driver("二维码已过期",phoneNum) - } - 1012 -> { - sendMessage2Driver("当前用户下单路线非当前的车辆所属公司",phoneNum) - } - else -> { - when (msg) { - "6002" -> { - sendMessage2Driver("同一订单核销间隔时间需大于2分钟",phoneNum) - } - "1009" -> { - sendMessage2Driver("车票所选乘车日期非今日",phoneNum) - } - "1005" -> { - sendMessage2Driver("车辆未登录、或没有任务",phoneNum) - } - "1006" -> { - sendMessage2Driver("车票路线信息与当前车辆执行任务的路线信息不符合",phoneNum) - } - "1008" -> { - sendMessage2Driver("车票剩余可用次数为0",phoneNum) - } - "6001" -> { - sendMessage2Driver("二维码已过期",phoneNum) - } - "1012" -> { - sendMessage2Driver("当前用户下单路线非当前的车辆所属公司",phoneNum) - } - else -> { - sendMessage2Driver(msg?:"",phoneNum) - } - } - } - } - } - - override fun onError(message: String) { - sendMessage2Driver("网络错误",phoneNum) - } - } - ) - } - - private fun sendMessage2Driver(message:String,phone:String){ - val msg = WriteOffMsg(false, phone, 0, "", "验票失败,${message}","") - CallerLogger.d(M_BUS_P + TAG, "sendTaskDetailsToClients = " + GsonUtils.toJson(msg)) - LanSocketManager.sendMsgToServer(msg) - } - private fun sendMessage2DriverSuccess(message: PassengerWriteOffResponse.Result, orderNo: String){ - val msg = WriteOffMsg(true, message.phone, message.ticketSize, message.ticketName, "",orderNo) - CallerLogger.d(M_BUS_P + TAG, "sendTaskDetailsToClients = " + GsonUtils.toJson(msg)) - LanSocketManager.sendMsgToServer(msg) - } - - } \ No newline at end of file diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/network/PassengerServiceManager.kt b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/network/PassengerServiceManager.kt index c6bd01848c..5f6e5c705c 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/network/PassengerServiceManager.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/network/PassengerServiceManager.kt @@ -2,22 +2,13 @@ package com.mogo.och.shuttle.weaknet.passenger.network import android.content.Context import com.mogo.cloud.passport.MoGoAiCloudClientConfig -import com.mogo.commons.env.ProjectUtils import com.mogo.eagle.core.network.MoGoRetrofitFactory import com.mogo.commons.storage.SharedPrefsMgr -import com.mogo.eagle.core.utilcode.util.StringUtils -import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.common.module.biz.lansocket.LoginLanPassengerSocket import com.mogo.och.common.module.constant.OchCommonConst -import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.common.module.network.OchCommonSubscribeImpl import com.mogo.och.common.module.network.interceptor.transformTry -import com.mogo.och.shuttle.weaknet.passenger.bean.request.PassengerQueryLineRequest -import com.mogo.och.shuttle.weaknet.passenger.bean.request.PassengerWriteOffRequest -import com.mogo.och.shuttle.weaknet.passenger.bean.response.PassengerOperationStatusResponse -import com.mogo.och.shuttle.weaknet.passenger.bean.response.PassengerRoutesResponse -import com.mogo.och.shuttle.weaknet.passenger.bean.response.PassengerWriteOffResponse import com.mogo.och.shuttle.weaknet.passenger.bean.response.ResponseSiteIntroduce /** @@ -32,43 +23,7 @@ object PassengerServiceManager { ServiceApi::class.java) /** - * 查询司机端出车收车状态,以及车牌号 - * @param context - * @param callback - */ - @JvmStatic - fun writeOffTicket( - context: Context, - ticketInfo: PassengerWriteOffRequest, - callback: OchCommonServiceCallback?, - ) { - ticketInfo.sn = LoginLanPassengerSocket.driverSn - if(StringUtils.isEmpty(LoginLanPassengerSocket.driverSn)){ - ToastUtils.showShort("请链接司机屏${ticketInfo.uid}") - OchChainLogManager.writeChainLogScanner(TAG +"onError","无司机屏sn请处理") - return - } - if(ProjectUtils.isSaas()) { - mShuttleBusPassengerServiceApi.saaswriteOffTicket( - MoGoAiCloudClientConfig.getInstance().serviceAppId, - SharedPrefsMgr.getInstance().token, - ticketInfo - ) - .transformTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "writeOff")) - }else if(ProjectUtils.isDali()) { - mShuttleBusPassengerServiceApi.daliwriteOffTicket( - MoGoAiCloudClientConfig.getInstance().serviceAppId, - SharedPrefsMgr.getInstance().token, - ticketInfo - ) - .transformTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "writeOff")) - } - } - - /** - * 查询绑定行驶的小巴车路线 + * 查询绑定行驶的小巴车路线包含站点的站点广告 * @param context * @param callback */