[fea]
[核销]
This commit is contained in:
yangyakun
2024-11-12 18:37:21 +08:00
parent 13aa8b4d5c
commit 4420086918
13 changed files with 295 additions and 253 deletions

View File

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

View File

@@ -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<WriteOffPassenger>{
@@ -42,26 +49,27 @@ object TicketModel : IOchOnMessageListener<WriteOffPassenger>{
private val observable = Observable.create(ObservableOnSubscribe<Pair<Int,Int>> { emitter -> emitterMain = emitter })
private val writeOffMsg = object : ILanMessageListener<WriteOffMsg> {
override fun targetLan(): Class<WriteOffMsg> = WriteOffMsg::class.java
override fun onLanMsgReceived(obj: WriteOffMsg?) = receiveWrteOffInfo(obj)
}
private val writeOfDevicefMsg = object : ILanMessageListener<WriteOffDevicesMsg> {
override fun targetLan(): Class<WriteOffDevicesMsg> = WriteOffDevicesMsg::class.java
override fun onLanMsgReceived(obj: WriteOffDevicesMsg?) = receiveWrteOffDevicesInfo(obj)
}
private val writeOfDevicefDetialMsg = object : ILanMessageListener<WriteOffDetialMsg> {
override fun targetLan(): Class<WriteOffDetialMsg> = 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<WriteOffPassenger>{
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<WriteOffPassenger>{
passenger.passengerSize,
passenger.phone ?: "",
passenger.ticketName?:"",
passenger.orderNo?:""
)
TODO("服务器端核销需要在本地报备一下 用于计算数据")
selectWriteOffCount()
}
@@ -172,12 +180,167 @@ object TicketModel : IOchOnMessageListener<WriteOffPassenger>{
}
}
}
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<PassengerWriteOffResponse.Result?> {
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<WriteOffPassenger>{
}
}
private fun playPassenger(ticketSize: Int,phone:String,ticketName:String,orderNo:String) {
private fun playPassenger(ticketSize: Int,phone:String,ticketName:String) {
ShuttleVoiceManager.writeOffCount(ticketSize)

View File

@@ -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<CarExecutableTaskResponse>
@@ -170,8 +178,8 @@ object RepositoryManager {
}
}
fun writeOff(){
writeOffRepository?.writeOffEvent()
fun writeOff(writeOffDetialMsg: WriteOffDetialMsg): Observable<PassengerWriteOffResponse.Result>? {
return writeOffRepository?.writeOffEvent(writeOffDetialMsg)
}
fun closeDb() {

View File

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

View File

@@ -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<WriteOffCountResponse> callback){}
default Observable<Integer> writeOffCount(Context context , Long taskId, Long siteId){
return Observable.just(0);
}
default Observable<PassengerWriteOffResponse.Result> writeOffTicket(Context context,
PassengerWriteOffRequest ticketInfo){
return Observable.just(new PassengerWriteOffResponse.Result("",0,"",0L));
}
default void queryCarExecutableTaskList(Context context , OchCommonServiceCallback<CarExecutableTaskResponse> callback){}

View File

@@ -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<BusRoutesResult?>? {
//获取当前高德坐标
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<WriteOffCountResponse>?
) {
mService.writeOffCount(
override fun writeOffCount(context: Context?, taskId: Long?, siteId: Long?): Observable<Int> {
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<PassengerWriteOffResponse.Result?>? {
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)
}
}
}

View File

@@ -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<WriteOffCountResponse>?
) {
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<Int> {
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)
}
}
/**

View File

@@ -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<BusRoutesResult?>? {
//获取当前高德坐标
@@ -49,29 +45,6 @@ object SaasShuttleServiceManager: NetInterface {
}
}
/**
* 只发生在大理和saas环境 查询当前站点核销的人数
*/
override fun writeOffCount(
context: Context,
taskId: Long,
siteId: Long,
callback: OchCommonServiceCallback<WriteOffCountResponse>?
) {
OchSPManager.getSn()?.let {
mService.writeOffCount(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
WriteOffCountReqBean(
it, taskId,
siteId,
)
)
.transformIoTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "writeOffCount"))
}
}
/**
* 同步 线路、站点、任务、自驾轨迹信息
*/

View File

@@ -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<WriteOffCountResponse>?)
fun queryWriteoffCount(context: Context, taskId: Long, siteId: Long, callback: OchCommonServiceCallback<WriteOffCountResponse>?): Observable<Int>?
fun writeOffEvent()
fun writeOffEvent(writeOffDetialMsg: WriteOffDetialMsg): Observable<PassengerWriteOffResponse.Result>?
fun release()

View File

@@ -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<WriteOffCountResponse>?
) {
weakNetInterface?.writeOffCount(context,taskId,siteId,callback)
): Observable<Int>? {
TODO("本地计算核销数量 数据来源有两个地方 1、本地数据库计算 + 2、服务器核销")
}
override fun writeOffEvent() {
override fun writeOffEvent(writeOffDetialMsg: WriteOffDetialMsg): Observable<PassengerWriteOffResponse.Result>? {
TODO("Not yet implemented")
}
override fun release() {

View File

@@ -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<WriteOffCountResponse>?
) {
normalNetInterface?.writeOffCount(context,taskId,siteId,callback)
): Observable<Int>? {
return normalNetInterface?.writeOffCount(context,taskId,siteId)
}
override fun writeOffEvent() {
override fun writeOffEvent(writeOffDetialMsg: WriteOffDetialMsg): Observable<PassengerWriteOffResponse.Result>? {
val passengerWriteOffRequest = PassengerWriteOffRequest(writeOffDetialMsg.orderNo, writeOffDetialMsg.uid)
return normalNetInterface?.writeOffTicket(
AbsMogoApplication.getApp(),
passengerWriteOffRequest,
)
}
override fun release() {

View File

@@ -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<PassengerWriteOffResponse> {
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)
}
}

View File

@@ -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<PassengerWriteOffResponse>?,
) {
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
*/