[6.8.0]
[fea] [核销次数校验]
This commit is contained in:
@@ -71,21 +71,21 @@ data class WriteOffMsg(
|
||||
) : BaseDPMsg(DPMsgType.TYPE_WRITEOFF_INFO.type)
|
||||
|
||||
data class WriteOffDetialMsg(
|
||||
val code:Int,
|
||||
val msg:String?,
|
||||
val expiryTime: Long?=null,
|
||||
val bookingTime: Long?=null,
|
||||
val lineId: Long?=null,
|
||||
val availableTimes: Int?=null,//剩余票数
|
||||
val orderNo: String?=null,
|
||||
val uid: String?=null,
|
||||
val phone: String?=null,
|
||||
val ticketSize: Int?=null,
|
||||
val ticketName: String?=null,
|
||||
val typeBiz: String?=null,
|
||||
val pipe:String?=null,
|
||||
val startStationId:Long?=null,
|
||||
val tenantId:Long?=null
|
||||
val code:Int, // 0 乘客端参加校验成功 给司机屏 3001 乘客屏校验失败
|
||||
val msg:String?,// code 非0时具体错误信息
|
||||
val expiryTime: Long?=null, // 二维码有效期
|
||||
val bookingTime: Long?=null,// 预定时间
|
||||
val lineId: Long?=null, // 线路id
|
||||
val availableTimes: Int?=null,//总票数
|
||||
val orderNo: String?=null, // 订单Id
|
||||
val uid: String?=null,// 服务器端唯一码
|
||||
val phone: String?=null,// 手机号码
|
||||
val ticketSize: Int?=null,// 票上几个人
|
||||
val ticketName: String?=null,// 票的名称
|
||||
val typeBiz: String?=null,//bus shuttle
|
||||
val pipe:String?=null,// 渠道ehsafety mogogosafety
|
||||
val startStationId:Long?=null,// 开始站点名称
|
||||
val tenantId:Long?=null// 租户id
|
||||
) : BaseDPMsg(DPMsgType.TYPE_WRITEOFF_INFO_DETAIL.type)
|
||||
|
||||
|
||||
|
||||
@@ -193,10 +193,9 @@ object TicketModel {
|
||||
1009 -> sendMessage2Driver("车票所选乘车日期非今日", phone,1009)
|
||||
1005 -> sendMessage2Driver("车辆未登录、或没有任务", phone,1005)
|
||||
1006 -> sendMessage2Driver("车票路线信息与当前车辆执行任务的路线信息不符合", phone,1006)
|
||||
1008 -> sendMessage2Driver("车票剩余可用次数为0", phone,1008)
|
||||
1008 -> sendMessage2Driver("车票剩余可用次数为0", phone,99)
|
||||
6001 -> sendMessage2Driver("二维码已过期", phone,6001)
|
||||
1012 -> sendMessage2Driver("当前用户下单路线非当前的车辆所属公司", phone,1012)
|
||||
99 -> sendMessage2Driver("已核验、请勿重新核验", phone,99)
|
||||
else -> {
|
||||
try {
|
||||
val tempcode=msg.toInt()
|
||||
|
||||
@@ -19,7 +19,7 @@ interface WriteOffDataDao {
|
||||
@Delete
|
||||
fun delete(vararg eventDataBean: WriteOffDataBean)
|
||||
|
||||
@Query("SELECT * FROM ${WriteOffDataBean.writeoffDataTable} WHERE event_save_time > :zeroTime and order_no = :orderNo")
|
||||
@Query("SELECT * FROM ${WriteOffDataBean.writeoffDataTable} WHERE event_save_time > :zeroTime and order_no = :orderNo order by event_save_time")
|
||||
fun queryWriteOffByOrderNo(zeroTime: Long = DateTimeUtil.getCurrentDateZero(),orderNo:String): List<WriteOffDataBean>?
|
||||
|
||||
@Query("SELECT * FROM ${WriteOffDataBean.writeoffDataTable} WHERE event_save_time > :zeroTime and task_id = :taskId and update_status = ${WriteOffDataBean.notUpdate}")
|
||||
|
||||
@@ -28,12 +28,9 @@ object WriteOffDb: IDbRepository {
|
||||
}
|
||||
|
||||
|
||||
fun queryWaitUpdateEventCount(orderNo:String): WriteOffDataBean?{
|
||||
fun queryWaitUpdateEventCount(orderNo:String): List<WriteOffDataBean>? {
|
||||
val queryWriteOffByOrderNo = writeOffDataDao?.queryWriteOffByOrderNo(orderNo = orderNo)
|
||||
if(!queryWriteOffByOrderNo.isNullOrEmpty()){
|
||||
return queryWriteOffByOrderNo.last()
|
||||
}
|
||||
return null
|
||||
return queryWriteOffByOrderNo
|
||||
}
|
||||
|
||||
fun queryWaitUpdateEvent(): List<WriteOffDataBean>? {
|
||||
|
||||
@@ -129,33 +129,36 @@ class WriteOffCacheRepository : IWriteOffRepository {
|
||||
}else{
|
||||
throw DataException(1006,"车票路线信息与当前车辆执行任务的路线信息不符合")
|
||||
}
|
||||
|
||||
if(AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) {
|
||||
if (!it.orderNo.isNullOrEmpty()) {
|
||||
val lastWriteOff = WriteOffDb.queryWaitUpdateEventCount(it.orderNo!!)
|
||||
// 7、校验次数
|
||||
if((it.availableTimes?:0)<=0){
|
||||
throw DataException(1008,"车票剩余可用次数为0")
|
||||
if ((it.availableTimes ?: 0) >= (lastWriteOff?.size ?: 0)) {
|
||||
throw DataException(1008, "车票剩余可用次数为0")
|
||||
}
|
||||
// 8、同一个订单2分钟内只能核销一次
|
||||
if (!it.orderNo.isNullOrEmpty()) {
|
||||
val lastWriteOff = WriteOffDb.queryWaitUpdateEventCount(it.orderNo!!)
|
||||
if(lastWriteOff!=null){
|
||||
if(System.currentTimeMillis()-lastWriteOff.eventSaveTime<=120_000){
|
||||
throw DataException(6002,"同一订单核销间隔时间需大于2分钟")
|
||||
if (AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) {
|
||||
// 8、同一个订单2分钟内只能核销一次
|
||||
if (lastWriteOff != null && lastWriteOff.size > 0) {
|
||||
if (System.currentTimeMillis() - lastWriteOff.last().eventSaveTime <= 120_000) {
|
||||
throw DataException(6002, "同一订单核销间隔时间需大于2分钟")
|
||||
}
|
||||
}
|
||||
}else{
|
||||
throw DataException(11000,"缺少orderNo")
|
||||
}
|
||||
val (start, _) = LineManager.getStations()
|
||||
siteId = start?.siteId?.toLong()?:0
|
||||
}else if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) {
|
||||
// 7、校验起始站点
|
||||
val (start, _) = LineManager.getStations()
|
||||
if(start?.siteId?.toLong()==it.startStationId){
|
||||
siteId = it.startStationId
|
||||
}else{
|
||||
throw DataException(1006,"车票站点信息与当前车辆执行任务的站点信息不符合")
|
||||
|
||||
val (start, _) = LineManager.getStations()
|
||||
siteId = start?.siteId?.toLong() ?: 0
|
||||
} else if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) {
|
||||
// 8、校验起始站点
|
||||
val (start, _) = LineManager.getStations()
|
||||
if (start?.siteId?.toLong() == it.startStationId) {
|
||||
siteId = it.startStationId
|
||||
} else {
|
||||
throw DataException(
|
||||
1006,
|
||||
"车票站点信息与当前车辆执行任务的站点信息不符合"
|
||||
)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
throw DataException(11000, "缺少orderNo")
|
||||
}
|
||||
|
||||
val addWrite = WriteOffDataBean()
|
||||
|
||||
Reference in New Issue
Block a user