Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
聂康
local-rnr-fp
Commits
015d4257
Commit
015d4257
authored
Jun 17, 2025
by
kang.nie@inzymeits.com
Browse files
初始化代码
parent
bd38ff8b
Pipeline
#3108
failed with stages
in 0 seconds
Changes
404
Pipelines
1
Show whitespace changes
Inline
Side-by-side
local-rnr-fp-server/src/main/java/com/cusc/nirvana/user/rnr/fp/dto/T1CarInfoCMCCDTO.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.dto
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* Description: T1开户信息DTO
* <br />
* CreateDate 2022-04-02 15:13:40
*
* @author yuyi
**/
@Data
@ApiModel
(
"T1车辆信息DTO"
)
public
class
T1CarInfoCMCCDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
267145861320351989L
;
@ApiModelProperty
(
"请求标识 M"
)
@JSONField
(
name
=
"RequestID"
)
private
String
requestId
;
@ApiModelProperty
(
"道路机动车辆生产企业编码 M"
)
@JSONField
(
name
=
"Code"
)
private
String
code
;
@ApiModelProperty
(
"车辆加密信息 M"
)
@JSONField
(
name
=
"EncryptCarInfo"
)
private
String
encryptCarInfo
;
@ApiModelProperty
(
value
=
"认证信息 M"
)
@JSONField
(
name
=
"Auth"
)
private
T1AuthDTO
Auth
;
}
local-rnr-fp-server/src/main/java/com/cusc/nirvana/user/rnr/fp/dto/T1CarInfoDTO.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.dto
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* Description: T1开户信息DTO
* <br />
* CreateDate 2022-04-02 15:13:40
*
* @author yuyi
**/
@Data
@ApiModel
(
"T1车辆信息DTO"
)
public
class
T1CarInfoDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
267145861320351989L
;
@ApiModelProperty
(
"请求标识 M"
)
@JSONField
(
name
=
"RequestID"
)
private
String
requestId
;
@ApiModelProperty
(
"道路机动车辆生产企业编码 M"
)
@JSONField
(
name
=
"Code"
)
private
String
code
;
@ApiModelProperty
(
"车辆加密信息 M"
)
@JSONField
(
name
=
"EncryptCarInfo"
)
private
String
encryptCarInfo
;
@ApiModelProperty
(
"卡所属运营商 M"
)
@JSONField
(
name
=
"ServiceProvider"
)
private
String
serviceProvider
;
}
local-rnr-fp-server/src/main/java/com/cusc/nirvana/user/rnr/fp/dto/T1CommonResponseDTO.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.dto
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.*
;
/**
* Description: T1公共响应
* <br />
* CreateDate 2022-03-11 15:42:31
*
* @author yuyi
**/
@ApiModel
(
value
=
"T1公共响应"
,
description
=
"T1公共响应"
)
@Data
public
class
T1CommonResponseDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
36413222636238414L
;
@ApiModelProperty
(
value
=
"请求标识"
)
@JSONField
(
name
=
"RequestID"
)
private
String
RequestID
;
@ApiModelProperty
(
value
=
"操作结果"
)
@JSONField
(
name
=
"OprRst"
)
private
String
OprRst
;
@ApiModelProperty
(
value
=
"失败原因"
)
@JSONField
(
name
=
"FailureCause"
)
private
String
FailureCause
;
@ApiModelProperty
(
value
=
"文件系统响应的唯一id"
)
@JSONField
(
name
=
"FileId"
)
private
String
FileId
;
@ApiModelProperty
(
value
=
"一证十卡校验结果"
)
@JSONField
(
name
=
"CustomerCheck"
)
private
String
CustomerCheck
;
public
T1CommonResponseDTO
()
{
}
public
T1CommonResponseDTO
(
String
requestID
,
String
oprRst
,
String
failureCause
)
{
RequestID
=
requestID
;
OprRst
=
oprRst
;
FailureCause
=
failureCause
;
}
public
T1CommonResponseDTO
(
String
requestID
,
String
oprRst
)
{
RequestID
=
requestID
;
OprRst
=
oprRst
;
}
/**
* Description: 创建成功响应对象
* <br />
* CreateDate 2022-03-11 16:18:13
*
* @author yuyi
**/
public
static
T1CommonResponseDTO
createSuccess
(
String
requestID
)
{
return
new
T1CommonResponseDTO
(
requestID
,
"1"
);
}
/**
* Description: 创建失败响应对象
* <br />
* CreateDate 2022-03-11 16:18:13
*
* @author yuyi
**/
public
static
T1CommonResponseDTO
createError
(
String
requestID
,
String
failureCause
)
{
return
new
T1CommonResponseDTO
(
requestID
,
"2"
,
failureCause
);
}
}
local-rnr-fp-server/src/main/java/com/cusc/nirvana/user/rnr/fp/dto/T1FileReqDTO.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.dto
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.*
;
/**
* Description: T1开户信息上报请求dto
* <br />
* CreateDate 2022-03-11 15:42:31
*
* @author yuyi
**/
@ApiModel
(
value
=
"T1开户信息上报请求dto"
,
description
=
"T1开户信息上报请求dto"
)
@Data
public
class
T1FileReqDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
36413222636238414L
;
@ApiModelProperty
(
value
=
"请求标识"
)
@JSONField
(
name
=
"RequestID"
)
private
String
RequestID
;
@ApiModelProperty
(
value
=
"道路机动车辆生产企业编码"
)
@JSONField
(
name
=
"Code"
)
private
String
Code
;
@ApiModelProperty
(
value
=
"图片文件加密信息"
)
@JSONField
(
name
=
"EncryptFile"
)
private
File
EncryptFile
;
@ApiModelProperty
(
value
=
"卡所属运营商"
)
@JSONField
(
name
=
"ServiceProvider"
)
private
String
ServiceProvider
=
"3000"
;
@ApiModelProperty
(
value
=
"车企标识"
)
@JSONField
(
name
=
"PlatformID"
)
private
String
PlatformID
;
}
local-rnr-fp-server/src/main/java/com/cusc/nirvana/user/rnr/fp/dto/T1UserInfoDTO.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.dto
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* Description: T1开户信息DTO
* <br />
* CreateDate 2022-04-02 15:13:40
*
* @author yuyi
**/
@Data
@ApiModel
(
"T1开户信息DTO"
)
public
class
T1UserInfoDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
267145861320351989L
;
@ApiModelProperty
(
"车联网卡MSISDN M"
)
@JSONField
(
name
=
"MSISDN"
)
private
String
MSISDN
;
@ApiModelProperty
(
"车联网卡ICCID M"
)
@JSONField
(
name
=
"ICCID"
)
private
String
ICCID
;
@ApiModelProperty
(
"车辆识别代号或车架号 M"
)
@JSONField
(
name
=
"VIN"
)
private
String
VIN
;
@ApiModelProperty
(
"车辆状态 M"
)
@JSONField
(
name
=
"VehicleStatus"
)
private
String
VehicleStatus
;
@ApiModelProperty
(
"状态变更时间 C"
)
@JSONField
(
name
=
"StatusUpdateTime"
)
private
String
StatusUpdateTime
;
@ApiModelProperty
(
"受理时间 M"
)
@JSONField
(
name
=
"AcceptTime"
)
private
String
AcceptTime
;
@ApiModelProperty
(
"用户类型 M 1表示个人用户 2表示单位用户"
)
@JSONField
(
name
=
"CustomerType"
)
private
String
CustomerType
;
@ApiModelProperty
(
"用户姓名 M"
)
@JSONField
(
name
=
"CustomerName"
)
private
String
CustomerName
;
@ApiModelProperty
(
"用户证件类型 M"
)
@JSONField
(
name
=
"CustomerCertType"
)
private
String
CustomerCertType
;
@ApiModelProperty
(
"用户证件号码 M"
)
@JSONField
(
name
=
"CustomerCertNumber"
)
private
String
CustomerCertNumber
;
@ApiModelProperty
(
"用户证件地址 M"
)
@JSONField
(
name
=
"CustomerCertAddress"
)
private
String
CustomerCertAddress
;
@ApiModelProperty
(
"用户证件有效期 M"
)
@JSONField
(
name
=
"CustomerCertDate"
)
private
String
CustomerCertDate
;
@ApiModelProperty
(
"用户通讯地址 C 获取到时必须上报"
)
@JSONField
(
name
=
"CustomerPosterAddress"
)
private
String
CustomerPosterAddress
;
@ApiModelProperty
(
"用户通信号码 C 获取到时必须上报"
)
@JSONField
(
name
=
"CustomerPosterTelephone"
)
private
String
CustomerPosterTelephone
;
@ApiModelProperty
(
"单位名称 C 销售给单位用户时必填"
)
@JSONField
(
name
=
"CompanyName"
)
private
String
CompanyName
;
@ApiModelProperty
(
"单位证件类型 C 销售给单位用户时必填"
)
@JSONField
(
name
=
"CompanyCertType"
)
private
String
CompanyCertType
;
@ApiModelProperty
(
"单位证件号码 C 销售给单位用户时必填"
)
@JSONField
(
name
=
"CompanyCertNumber"
)
private
String
CompanyCertNumber
;
@ApiModelProperty
(
"单位证件地址 C 销售给单位用户时必填"
)
@JSONField
(
name
=
"CompanyCertAddress"
)
private
String
CompanyCertAddress
;
@ApiModelProperty
(
"单位通讯地址 C 销售给单位用户时必填"
)
@JSONField
(
name
=
"CompanyPosterAddress"
)
private
String
CompanyPosterAddress
;
@ApiModelProperty
(
"责任人姓名 C 销售给单位用户时必填"
)
@JSONField
(
name
=
"CorporationName"
)
private
String
CorporationName
;
@ApiModelProperty
(
"责任人证件类型 C 销售给单位用户时必填"
)
@JSONField
(
name
=
"CorporationCertType"
)
private
String
CorporationCertType
;
@ApiModelProperty
(
"责任人证件号码 C 销售给单位用户时必填"
)
@JSONField
(
name
=
"CorporationCertNumber"
)
private
String
CorporationCertNumber
;
@ApiModelProperty
(
"责任人证件地址 C 销售给单位用户时必填"
)
@JSONField
(
name
=
"CorporationCertAddress"
)
private
String
CorporationCertAddress
;
@ApiModelProperty
(
"责任人通讯地址 C 销售给单位用户情况下,企业获取到时必填"
)
@JSONField
(
name
=
"CorporationPosterAddress"
)
private
String
CorporationPosterAddress
;
@ApiModelProperty
(
"责任人电话 C 销售给单位用户时必填"
)
@JSONField
(
name
=
"CorporationTelephone"
)
private
String
CorporationTelephone
;
@ApiModelProperty
(
"代/经办人姓名 C 个人委托代办时必填"
)
@JSONField
(
name
=
"OperatorName"
)
private
String
OperatorName
;
@ApiModelProperty
(
"代/经办人证件类型 C 个人委托代办时必填"
)
@JSONField
(
name
=
"OperatorCertType"
)
private
String
OperatorCertType
;
@ApiModelProperty
(
"代/经办人证件号码 C 个人委托代办时必填"
)
@JSONField
(
name
=
"OperatorCertNumber"
)
private
String
OperatorCertNumber
;
@ApiModelProperty
(
"代/经办人证件地址 C 个人委托代办时必填"
)
@JSONField
(
name
=
"OperatorCertAddress"
)
private
String
OperatorCertAddress
;
@ApiModelProperty
(
"代/经办人通讯地址 C 个人委托代办时必填"
)
@JSONField
(
name
=
"OperatorPosterAddress"
)
private
String
OperatorPosterAddress
;
@ApiModelProperty
(
"代/经办人电话 C 个人委托代办时必填"
)
@JSONField
(
name
=
"OperatorTelephone"
)
private
String
OperatorTelephone
;
@ApiModelProperty
(
"照片文件名 C 填写用户对应照片的压缩包名,命名规则ICCID+xcz.zip"
)
@JSONField
(
name
=
"PhoName"
)
private
String
PhoName
;
@ApiModelProperty
(
"运营商 M"
)
@JSONField
(
name
=
"ServiceProvider"
)
private
String
serviceProvider
;
@ApiModelProperty
(
"扩展字段 O 可选字段,可扩展任意若干字段"
)
@JSONField
(
name
=
"ExtendPara"
)
private
String
ExtendPara
;
}
local-rnr-fp-server/src/main/java/com/cusc/nirvana/user/rnr/fp/dto/T1UserInfoReqDTO.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.dto
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.*
;
/**
* Description: T1开户信息上报请求dto
* <br />
* CreateDate 2022-03-11 15:42:31
*
* @author yuyi
**/
@ApiModel
(
value
=
"T1开户信息上报请求dto"
,
description
=
"T1开户信息上报请求dto"
)
@Data
public
class
T1UserInfoReqDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
36413222636238414L
;
@ApiModelProperty
(
value
=
"认证信息"
)
@JSONField
(
name
=
"Auth"
)
private
T1AuthDTO
Auth
;
@ApiModelProperty
(
value
=
"数据操作类型"
)
@JSONField
(
name
=
"OperType"
)
private
String
OperType
;
@ApiModelProperty
(
value
=
"请求标识"
)
@JSONField
(
name
=
"RequestID"
)
private
String
RequestID
;
@ApiModelProperty
(
value
=
"道路机动车辆生产企业编码"
)
@JSONField
(
name
=
"Code"
)
private
String
Code
;
@ApiModelProperty
(
value
=
"开户加密信息"
)
@JSONField
(
name
=
"EncryptUserInfo"
)
private
String
EncryptUserInfo
;
@ApiModelProperty
(
value
=
"卡所属运营商"
)
@JSONField
(
name
=
"ServiceProvider"
)
private
String
ServiceProvider
=
"3000"
;
}
local-rnr-fp-server/src/main/java/com/cusc/nirvana/user/rnr/fp/dto/T1VehicleInfoReqDTO.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.dto
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* Description: T1车辆信息上传
* <br />
* CreateDate 2022-06-15 15:42:31
*
* @author zx
**/
@ApiModel
(
value
=
"T1车辆信息上传dto"
,
description
=
"T1车辆信息上传dto"
)
@Data
public
class
T1VehicleInfoReqDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
36413222636238414L
;
@ApiModelProperty
(
value
=
"认证信息"
)
@JSONField
(
name
=
"Auth"
)
private
T1AuthDTO
Auth
;
@ApiModelProperty
(
value
=
"请求标识"
)
@JSONField
(
name
=
"RequestID"
)
private
String
RequestID
;
@ApiModelProperty
(
value
=
"道路机动车辆生产企业编码"
)
@JSONField
(
name
=
"Code"
)
private
String
Code
;
@ApiModelProperty
(
value
=
"车辆加密信息"
)
@JSONField
(
name
=
"EncryptCarInfo"
)
private
String
EncryptCarInfo
;
@ApiModelProperty
(
value
=
"卡所属运营商"
)
@JSONField
(
name
=
"ServiceProvider"
)
private
String
ServiceProvider
=
"3000"
;
}
local-rnr-fp-server/src/main/java/com/cusc/nirvana/user/rnr/fp/dto/VinCardExcelData.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.dto
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
lombok.Data
;
/**
* @author stayAnd
* @date 2022/5/18
*/
@Data
public
class
VinCardExcelData
{
@ExcelProperty
(
value
=
"vin"
,
index
=
0
)
private
String
vin
;
@ExcelProperty
(
value
=
"iccid"
,
index
=
1
)
private
String
iccid
;
}
local-rnr-fp-server/src/main/java/com/cusc/nirvana/user/rnr/fp/handler/EnterpriseUnBindCallBackHandler.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.handler
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.cusc.nirvana.common.result.Response
;
import
com.cusc.nirvana.user.eiam.dto.OrganizationDTO
;
import
com.cusc.nirvana.user.exception.CuscUserException
;
import
com.cusc.nirvana.user.rnr.fp.dto.FpRnrSmsInfoDTO
;
import
com.cusc.nirvana.user.rnr.fp.dto.UnbindReceiceSMSDTO
;
import
com.cusc.nirvana.user.rnr.fp.service.IFpCardUnBindService
;
import
com.cusc.nirvana.user.rnr.fp.service.IOrganService
;
import
com.cusc.nirvana.user.rnr.fp.service.IRnrService
;
import
com.cusc.nirvana.user.rnr.mg.client.MgRnrCardInfoClient
;
import
com.cusc.nirvana.user.rnr.mg.client.MgRnrInfoClient
;
import
com.cusc.nirvana.user.rnr.mg.client.MgSurplusBindClient
;
import
com.cusc.nirvana.user.rnr.mg.client.RnrOrderClient
;
import
com.cusc.nirvana.user.rnr.mg.constants.RnrOrderStatusEnum
;
import
com.cusc.nirvana.user.rnr.mg.constants.RnrStatus
;
import
com.cusc.nirvana.user.rnr.mg.dto.MgCardNoticeDTO
;
import
com.cusc.nirvana.user.rnr.mg.dto.MgRnrCardInfoDTO
;
import
com.cusc.nirvana.user.rnr.mg.dto.MgRnrInfoDTO
;
import
com.cusc.nirvana.user.rnr.mg.dto.RnrOrderDTO
;
import
com.cusc.nirvana.user.util.DateUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* @className: EnterpriseUnBindCallBackHandler
* @description: 企业解绑短信回调
* @author: jk
* @date: 2022/6/17 16:36
* @version: 1.0
**/
@Slf4j
@Service
public
class
EnterpriseUnBindCallBackHandler
implements
MessageCallbackHandler
{
@Resource
private
MgRnrCardInfoClient
mgRnrCardInfoClient
;
@Resource
private
MgRnrInfoClient
mgRnrInfoClient
;
@Resource
private
RnrOrderClient
rnrOrderClient
;
@Resource
private
IFpCardUnBindService
cardUnBindService
;
@Value
(
"${message.callback.timeout:120}"
)
private
int
timeOut
;
@Resource
private
MgSurplusBindClient
mgSurplusBindClient
;
@Resource
private
IRnrService
iRnrService
;
@Autowired
private
IOrganService
organService
;
@Transactional
@Override
public
Response
callBack
(
FpRnrSmsInfoDTO
rnrSmsInfoDTOResponseData
,
UnbindReceiceSMSDTO
bean
,
long
receiveTIme
)
{
log
.
warn
(
"rnrSmsInfoDTOResponseData-------{},UnbindReceiceSMSDTO-------{}"
,
JSONObject
.
toJSONString
(
rnrSmsInfoDTOResponseData
),
JSONObject
.
toJSONString
(
bean
));
RnrOrderDTO
rnrOrderDTO
=
new
RnrOrderDTO
();
rnrOrderDTO
.
setUuid
(
rnrSmsInfoDTOResponseData
.
getOrderId
());
Response
<
RnrOrderDTO
>
orderStatus
=
cardUnBindService
.
getOrderStatus
(
rnrOrderDTO
);
if
(!
orderStatus
.
isSuccess
()
||
orderStatus
.
getData
()
==
null
)
{
return
Response
.
createError
(
orderStatus
.
getMsg
(),
orderStatus
.
getData
());
}
RnrOrderDTO
orderDTO
=
orderStatus
.
getData
();
long
startTime
=
rnrSmsInfoDTOResponseData
.
getCreateTime
().
getTime
();
log
.
info
(
"当前时间: {},短信发送时间: {}"
,
DateUtils
.
currentTimeStr
(),
receiveTIme
);
boolean
isTimeOut
=
receiveTIme
-
timeOut
*
1000
>
startTime
;
if
(
isTimeOut
)
{
//更新工单 超时
orderDTO
.
setOrderStatus
(
RnrOrderStatusEnum
.
CANCEL
.
getCode
());
return
cardUnBindService
.
updateOrder
(
orderDTO
);
}
//获取rnrId
String
rnrId
=
rnrSmsInfoDTOResponseData
.
getRnrId
();
MgRnrCardInfoDTO
mgRnrCardInfoDTO
=
new
MgRnrCardInfoDTO
();
mgRnrCardInfoDTO
.
setRnrId
(
rnrId
);
//根据rnrId查询carInfo信息
Response
<
List
<
MgRnrCardInfoDTO
>>
mgRnrCardInfoResponse
=
mgRnrCardInfoClient
.
queryByList
(
mgRnrCardInfoDTO
);
if
(!
mgRnrCardInfoResponse
.
isSuccess
())
{
throw
new
CuscUserException
(
mgRnrCardInfoResponse
.
getCode
(),
mgRnrCardInfoResponse
.
getMsg
());
}
List
<
MgRnrCardInfoDTO
>
mgRnrCardInfoDTOList
=
mgRnrCardInfoResponse
.
getData
();
if
(!
bean
.
getReplyContent
().
toLowerCase
().
equals
(
"y"
))
{
RnrOrderDTO
rnrOrder
=
new
RnrOrderDTO
();
rnrOrder
.
setUuid
(
mgRnrCardInfoDTOList
.
get
(
0
).
getOrderId
());
iRnrService
.
updateRnrInValid
(
rnrOrder
);
orderDTO
.
setOrderStatus
(
RnrOrderStatusEnum
.
NOT_PASS
.
getCode
());
return
cardUnBindService
.
updateOrder
(
orderDTO
);
}
//查询车企信息
String
manufacturerOrgId
;
OrganizationDTO
organ
=
new
OrganizationDTO
();
organ
.
setTenantNo
(
orderDTO
.
getTenantNo
());
organ
.
setUuid
(
orderDTO
.
getOrgId
());
Response
<
OrganizationDTO
>
organResp
=
organService
.
getCarSubOrganByOrgId
(
organ
);
if
(
organResp
!=
null
&&
organResp
.
isSuccess
()
&&
organResp
.
getData
()
!=
null
)
{
manufacturerOrgId
=
organResp
.
getData
().
getUuid
();
}
else
{
log
.
warn
(
"EnterpriseUnBindCallBackHandler 获取车企组织失败,{}"
,
JSON
.
toJSONString
(
organResp
));
manufacturerOrgId
=
"0"
;
}
List
<
MgCardNoticeDTO
>
cardNoticeDTOS
=
new
ArrayList
<>();
MgCardNoticeDTO
mgCardNoticeDTO
;
List
<
MgRnrCardInfoDTO
>
newCardIdList
=
new
ArrayList
<>();
MgRnrCardInfoDTO
cardInfoDTO
;
//新卡uuid
for
(
MgRnrCardInfoDTO
cardTemp
:
mgRnrCardInfoDTOList
)
{
cardInfoDTO
=
new
MgRnrCardInfoDTO
();
cardInfoDTO
.
setUuid
(
cardTemp
.
getUuid
());
newCardIdList
.
add
(
cardInfoDTO
);
//构建消息通知
mgCardNoticeDTO
=
new
MgCardNoticeDTO
();
mgCardNoticeDTO
.
setIccid
(
cardTemp
.
getIccid
());
mgCardNoticeDTO
.
setTenantNo
(
orderDTO
.
getTenantNo
());
mgCardNoticeDTO
.
setVin
(
cardTemp
.
getIotId
());
mgCardNoticeDTO
.
setRnrBizzType
(
orderDTO
.
getRnrBizzType
());
mgCardNoticeDTO
.
setOrderId
(
orderDTO
.
getUuid
());
mgCardNoticeDTO
.
setManufacturerOrgId
(
manufacturerOrgId
);
mgCardNoticeDTO
.
setResultCode
(
RnrOrderStatusEnum
.
PASS
.
getCode
());
mgCardNoticeDTO
.
setOrgId
(
orderDTO
.
getOrgId
());
cardNoticeDTOS
.
add
(
mgCardNoticeDTO
);
}
//老卡uuid
List
<
MgRnrCardInfoDTO
>
oldCardIdList
=
mgRnrCardInfoDTOList
.
stream
().
map
(
a
->
{
MgRnrCardInfoDTO
mg
=
new
MgRnrCardInfoDTO
();
mg
.
setUuid
(
a
.
getOldCardId
());
return
mg
;
}).
collect
(
Collectors
.
toList
());
//批量更新老数据
mgRnrCardInfoClient
.
updateBatch
(
oldCardIdList
);
//批量更新新数据
mgRnrCardInfoClient
.
updateBatch
(
newCardIdList
);
//更新info
MgRnrInfoDTO
mgRnrInfoDTO
=
new
MgRnrInfoDTO
();
mgRnrInfoDTO
.
setUuid
(
rnrId
);
mgRnrInfoDTO
.
setRnrStatus
(
RnrStatus
.
UNBOUND
.
getCode
());
mgRnrInfoClient
.
update
(
mgRnrInfoDTO
);
//更新order
RnrOrderDTO
rnrOrder
=
new
RnrOrderDTO
();
rnrOrder
.
setUuid
(
mgRnrCardInfoDTOList
.
get
(
0
).
getOrderId
());
rnrOrder
.
setOrderStatus
(
RnrOrderStatusEnum
.
PASS
.
getCode
());
rnrOrderClient
.
updateOrderStatus
(
rnrOrder
);
mgSurplusBindClient
.
sendMQ
(
cardNoticeDTOS
);
return
Response
.
createSuccess
(
"解绑成功"
);
}
}
local-rnr-fp-server/src/main/java/com/cusc/nirvana/user/rnr/fp/handler/MessageCallBackContext.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.handler
;
import
com.cusc.nirvana.user.rnr.fp.dto.MessageBizTypeEnum
;
import
org.springframework.beans.BeansException
;
import
org.springframework.beans.factory.InitializingBean
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.ApplicationContextAware
;
import
org.springframework.stereotype.Component
;
import
java.util.Map
;
/**
* @author stayAnd
* @date 2022/3/31
*/
@Component
public
class
MessageCallBackContext
implements
ApplicationContextAware
,
InitializingBean
{
private
ApplicationContext
context
;
private
Map
<
String
,
MessageCallbackHandler
>
messageCallbackHandlerMap
;
@Override
public
void
setApplicationContext
(
ApplicationContext
applicationContext
)
throws
BeansException
{
this
.
context
=
applicationContext
;
}
public
MessageCallbackHandler
getWorkBackHandler
(
int
bizType
)
{
MessageBizTypeEnum
messageBizTypeEnum
=
MessageBizTypeEnum
.
getBizType
(
bizType
);
if
(
null
!=
messageBizTypeEnum
)
{
return
messageCallbackHandlerMap
.
get
(
messageBizTypeEnum
.
getMessageCallBackHandlerName
());
}
return
null
;
}
@Override
public
void
afterPropertiesSet
()
throws
Exception
{
messageCallbackHandlerMap
=
context
.
getBeansOfType
(
MessageCallbackHandler
.
class
);
}
}
local-rnr-fp-server/src/main/java/com/cusc/nirvana/user/rnr/fp/handler/MessageCallbackHandler.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.handler
;
import
com.cusc.nirvana.common.result.Response
;
import
com.cusc.nirvana.user.rnr.fp.dto.FpRnrSmsInfoDTO
;
import
com.cusc.nirvana.user.rnr.fp.dto.UnbindReceiceSMSDTO
;
/**
* @author yubo
* @since 2022-05-04 16:16
*/
public
interface
MessageCallbackHandler
{
/**
* 短信回调处理逻辑
* @param rnrSmsInfoDTOResponseData
* @param bean
* @return
*/
Response
callBack
(
FpRnrSmsInfoDTO
rnrSmsInfoDTOResponseData
,
UnbindReceiceSMSDTO
bean
,
long
receiveTIme
);
}
local-rnr-fp-server/src/main/java/com/cusc/nirvana/user/rnr/fp/handler/VinCardCheckMessageHandler.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.handler
;
import
com.cusc.nirvana.user.rnr.fp.common.constant.VinCardCheckBussinessDetailType
;
import
com.cusc.nirvana.user.rnr.fp.dto.VinCardCheckMessageResultDTO
;
import
java.util.List
;
/**
* @author stayAnd
* @date 2022/6/1
*/
public
interface
VinCardCheckMessageHandler
{
/**
* 车卡关系校验
* @param vin vin
* @param iccidList iccidList
* @param type 类型
* @return
*/
VinCardCheckMessageResultDTO
checkVinCard
(
String
vin
,
List
<
String
>
iccidList
,
VinCardCheckBussinessDetailType
type
);
}
local-rnr-fp-server/src/main/java/com/cusc/nirvana/user/rnr/fp/handler/impl/CardUnBindMessageCallBackHandler.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.handler.impl
;
import
com.alibaba.fastjson.JSON
;
import
com.cusc.nirvana.common.result.Response
;
import
com.cusc.nirvana.user.eiam.dto.OrganizationDTO
;
import
com.cusc.nirvana.user.rnr.fp.constants.ResultCodeEnum
;
import
com.cusc.nirvana.user.rnr.fp.dto.FpRnrSmsInfoDTO
;
import
com.cusc.nirvana.user.rnr.fp.dto.UnbindReceiceSMSDTO
;
import
com.cusc.nirvana.user.rnr.fp.handler.MessageCallbackHandler
;
import
com.cusc.nirvana.user.rnr.fp.service.IFpCardUnBindService
;
import
com.cusc.nirvana.user.rnr.fp.service.IFpChangeTboxService
;
import
com.cusc.nirvana.user.rnr.fp.service.IOrganService
;
import
com.cusc.nirvana.user.rnr.fp.service.IRnrService
;
import
com.cusc.nirvana.user.rnr.fp.service.impl.RnrServiceImpl
;
import
com.cusc.nirvana.user.rnr.mg.client.MgRnrCardInfoClient
;
import
com.cusc.nirvana.user.rnr.mg.client.MgSurplusBindClient
;
import
com.cusc.nirvana.user.rnr.mg.constants.RnrBizzTypeEnum
;
import
com.cusc.nirvana.user.rnr.mg.constants.RnrOrderStatusEnum
;
import
com.cusc.nirvana.user.rnr.mg.constants.RnrStatus
;
import
com.cusc.nirvana.user.rnr.mg.dto.MgCardNoticeDTO
;
import
com.cusc.nirvana.user.rnr.mg.dto.MgRnrCardInfoDTO
;
import
com.cusc.nirvana.user.rnr.mg.dto.RnrOrderDTO
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.UUID
;
import
java.util.stream.Collectors
;
/**
* @author yubo
* @since 2022-05-04 16:20
*/
@Service
@Slf4j
public
class
CardUnBindMessageCallBackHandler
implements
MessageCallbackHandler
{
@Value
(
"${message.callback.timeout:120}"
)
private
int
timeOut
;
@Resource
private
IFpCardUnBindService
cardUnBindService
;
@Autowired
private
IFpChangeTboxService
changeTboxService
;
@Resource
private
MgRnrCardInfoClient
cardInfoClient
;
@Resource
private
MgSurplusBindClient
mgSurplusBindClient
;
@Autowired
private
IRnrService
rnrService
;
@Autowired
private
IOrganService
organService
;
@Override
public
Response
callBack
(
FpRnrSmsInfoDTO
rnrSmsInfoDTOResponseData
,
UnbindReceiceSMSDTO
bean
,
long
receiveTIme
)
{
RnrOrderDTO
rnrOrderDTO
=
new
RnrOrderDTO
();
rnrOrderDTO
.
setUuid
(
rnrSmsInfoDTOResponseData
.
getOrderId
());
com
.
cusc
.
nirvana
.
common
.
result
.
Response
<
RnrOrderDTO
>
orderStatus
=
cardUnBindService
.
getOrderStatus
(
rnrOrderDTO
);
log
.
info
(
"获取解绑工单信息: {}"
,
JSON
.
toJSONString
(
orderStatus
));
if
(!
orderStatus
.
isSuccess
()
||
orderStatus
.
getData
()
==
null
)
{
return
Response
.
createError
(
orderStatus
.
getMsg
(),
orderStatus
.
getData
());
}
long
startTime
=
rnrSmsInfoDTOResponseData
.
getCreateTime
().
getTime
();
log
.
info
(
"当前时间: {},短信发送时间: {}"
,
receiveTIme
,
toString
());
boolean
isTimeOut
=
receiveTIme
-
timeOut
*
1000
>
startTime
;
if
(
isTimeOut
)
{
//更新工单 超时
RnrOrderDTO
orderDTO
=
orderStatus
.
getData
();
orderDTO
.
setOrderStatus
(
RnrOrderStatusEnum
.
CANCEL
.
getCode
());
return
cardUnBindService
.
updateOrder
(
orderDTO
);
}
//根据工单id获取工单
if
(!
bean
.
getReplyContent
().
toLowerCase
().
equals
(
"y"
))
{
//更新工单 失败
RnrOrderDTO
orderDTO
=
orderStatus
.
getData
();
orderDTO
.
setOrderStatus
(
RnrOrderStatusEnum
.
NOT_PASS
.
getCode
());
return
cardUnBindService
.
updateOrder
(
orderDTO
);
}
else
{
//更新工单
RnrOrderDTO
orderDTO
=
orderStatus
.
getData
();
orderDTO
.
setOrderStatus
(
RnrOrderStatusEnum
.
PASS
.
getCode
());
Response
<
RnrOrderDTO
>
orderResponse
=
cardUnBindService
.
updateOrder
(
orderDTO
);
//查询卡信息
MgRnrCardInfoDTO
query
=
new
MgRnrCardInfoDTO
();
query
.
setOrderId
(
rnrOrderDTO
.
getUuid
());
//解绑新插入的卡信息
List
<
MgRnrCardInfoDTO
>
cardInfoList
=
cardInfoClient
.
queryByList
(
query
).
getData
();
//关联的需要解绑卡信息
List
<
String
>
toUnbindCardUuIdList
=
cardInfoList
.
stream
().
map
(
MgRnrCardInfoDTO:
:
getOldCardId
).
collect
(
Collectors
.
toList
());
//新插入的卡信息和 原先需要解绑卡信息 全部解绑
List
<
String
>
cardInfoUuidList
=
cardInfoList
.
stream
().
map
(
MgRnrCardInfoDTO:
:
getUuid
).
collect
(
Collectors
.
toList
());
toUnbindCardUuIdList
.
addAll
(
cardInfoUuidList
);
log
.
info
(
"原车主解绑 orderId = {}, toUnbindCardUuIdList = {}"
,
rnrOrderDTO
.
getUuid
(),
JSON
.
toJSONString
(
toUnbindCardUuIdList
));
List
<
MgRnrCardInfoDTO
>
allUnBindCardList
=
toUnbindCardUuIdList
.
stream
().
map
(
uuid
->
{
MgRnrCardInfoDTO
unBindCard
=
new
MgRnrCardInfoDTO
();
unBindCard
.
setUuid
(
uuid
);
return
unBindCard
;
}).
collect
(
Collectors
.
toList
());
//解绑所有的卡
Response
unBindCardResult
=
changeTboxService
.
unbindCardList
(
allUnBindCardList
);
String
manufacturerOrgId
;
OrganizationDTO
organ
=
new
OrganizationDTO
();
organ
.
setTenantNo
(
orderDTO
.
getTenantNo
());
organ
.
setUuid
(
orderDTO
.
getOrgId
());
Response
<
OrganizationDTO
>
organResp
=
organService
.
getCarSubOrganByOrgId
(
organ
);
if
(
organResp
!=
null
&&
organResp
.
isSuccess
()
&&
organResp
.
getData
()
!=
null
)
{
manufacturerOrgId
=
organResp
.
getData
().
getUuid
();
}
else
{
log
.
warn
(
"sendCardNoticeByOrderId 获取车企组织失败,{}"
,
JSON
.
toJSONString
(
organResp
));
manufacturerOrgId
=
"0"
;
}
//发送mq通知
List
<
MgCardNoticeDTO
>
mgCardNoticeList
=
createMqDTO
(
cardInfoList
,
orderDTO
,
manufacturerOrgId
);
mgSurplusBindClient
.
sendMQ
(
mgCardNoticeList
);
if
(
unBindCardResult
.
isSuccess
()
&&
orderResponse
.
isSuccess
())
{
//将实名结果回传给智网
rnrService
.
notifyResult
(
cardInfoList
,
RnrBizzTypeEnum
.
Unbound
.
getCode
().
toString
(),
UUID
.
randomUUID
().
toString
(),
null
,
ResultCodeEnum
.
PASS
.
getCode
());
return
com
.
cusc
.
nirvana
.
common
.
result
.
Response
.
createSuccess
(
"解绑卡/更新工单成功"
);
}
else
{
return
com
.
cusc
.
nirvana
.
common
.
result
.
Response
.
createError
(
"解绑卡/更新工单失败"
);
}
}
}
private
List
<
MgCardNoticeDTO
>
createMqDTO
(
List
<
MgRnrCardInfoDTO
>
cardList
,
RnrOrderDTO
orderDTO
,
String
manufacturerOrgId
)
{
List
<
MgCardNoticeDTO
>
cardNoticeList
=
new
ArrayList
<>();
MgCardNoticeDTO
mgCardNoticeDTO
;
for
(
MgRnrCardInfoDTO
cardInfoDTO:
cardList
)
{
mgCardNoticeDTO
=
new
MgCardNoticeDTO
();
mgCardNoticeDTO
.
setIccid
(
cardInfoDTO
.
getIccid
());
mgCardNoticeDTO
.
setTenantNo
(
cardInfoDTO
.
getTenantNo
());
mgCardNoticeDTO
.
setVin
(
cardInfoDTO
.
getIotId
());
mgCardNoticeDTO
.
setRnrBizzType
(
orderDTO
.
getRnrBizzType
());
mgCardNoticeDTO
.
setOrderId
(
orderDTO
.
getUuid
());
mgCardNoticeDTO
.
setManufacturerOrgId
(
manufacturerOrgId
);
mgCardNoticeDTO
.
setResultCode
(
orderDTO
.
getOrderStatus
());
mgCardNoticeDTO
.
setOrgId
(
orderDTO
.
getOrgId
());
cardNoticeList
.
add
(
mgCardNoticeDTO
);
}
return
cardNoticeList
;
}
}
local-rnr-fp-server/src/main/java/com/cusc/nirvana/user/rnr/fp/handler/impl/ChangeTBoxMessageCallBackHandler.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.handler.impl
;
import
com.alibaba.fastjson.JSON
;
import
com.cusc.nirvana.common.result.Response
;
import
com.cusc.nirvana.user.eiam.dto.OrganizationDTO
;
import
com.cusc.nirvana.user.rnr.fp.constants.ResultCodeEnum
;
import
com.cusc.nirvana.user.rnr.fp.dto.BindRequestDTO
;
import
com.cusc.nirvana.user.rnr.fp.dto.FpRnrSmsInfoDTO
;
import
com.cusc.nirvana.user.rnr.fp.dto.UnbindReceiceSMSDTO
;
import
com.cusc.nirvana.user.rnr.fp.handler.MessageCallbackHandler
;
import
com.cusc.nirvana.user.rnr.fp.service.*
;
import
com.cusc.nirvana.user.rnr.mg.client.MgRnrCardInfoClient
;
import
com.cusc.nirvana.user.rnr.mg.client.MgSurplusBindClient
;
import
com.cusc.nirvana.user.rnr.mg.client.OrgSimRelClient
;
import
com.cusc.nirvana.user.rnr.mg.constants.RnrBizzTypeEnum
;
import
com.cusc.nirvana.user.rnr.mg.constants.RnrOrderStatusEnum
;
import
com.cusc.nirvana.user.rnr.mg.constants.RnrStatus
;
import
com.cusc.nirvana.user.rnr.mg.dto.MgCardNoticeDTO
;
import
com.cusc.nirvana.user.rnr.mg.dto.MgRnrCardInfoDTO
;
import
com.cusc.nirvana.user.rnr.mg.dto.RnrOrderDTO
;
import
com.cusc.nirvana.user.util.CuscStringUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.UUID
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
@Service
@Slf4j
public
class
ChangeTBoxMessageCallBackHandler
implements
MessageCallbackHandler
{
@Value
(
"${message.callback.timeout:120}"
)
private
int
timeOut
;
@Resource
private
IFpCardUnBindService
cardUnBindService
;
@Resource
private
IFpChangeTboxService
changeTboxService
;
@Resource
private
MgRnrCardInfoClient
cardInfoClient
;
@Resource
private
MgSurplusBindClient
mgSurplusBindClient
;
@Autowired
private
IRnrService
rnrService
;
@Autowired
private
ISimVehicleRelService
simVehicleRelService
;
@Autowired
private
IOrganService
organService
;
@Resource
private
OrgSimRelClient
orgSimRelClient
;
@Override
public
Response
callBack
(
FpRnrSmsInfoDTO
rnrSmsInfoDTOResponseData
,
UnbindReceiceSMSDTO
bean
,
long
receiveTIme
)
{
RnrOrderDTO
rnrOrderDTO
=
new
RnrOrderDTO
();
rnrOrderDTO
.
setUuid
(
rnrSmsInfoDTOResponseData
.
getOrderId
());
Response
<
RnrOrderDTO
>
orderStatus
=
cardUnBindService
.
getOrderStatus
(
rnrOrderDTO
);
if
(!
orderStatus
.
isSuccess
()
||
orderStatus
.
getData
()
==
null
)
{
return
Response
.
createError
(
orderStatus
.
getMsg
(),
orderStatus
.
getData
());
}
RnrOrderDTO
orderDTO
=
orderStatus
.
getData
();
long
startTime
=
rnrSmsInfoDTOResponseData
.
getCreateTime
().
getTime
();
log
.
info
(
"当前时间: {},短信发送时间: {}"
,
receiveTIme
,
toString
());
boolean
isTimeOut
=
receiveTIme
-
timeOut
*
1000
>
startTime
;
if
(
isTimeOut
)
{
//更新工单 超时
orderDTO
.
setOrderStatus
(
RnrOrderStatusEnum
.
CANCEL
.
getCode
());
return
cardUnBindService
.
updateOrder
(
orderDTO
);
}
//根据工单id获取工单
if
(!
bean
.
getReplyContent
().
toLowerCase
().
equals
(
"y"
))
{
//更新工单 失败
orderDTO
.
setOrderStatus
(
RnrOrderStatusEnum
.
NOT_PASS
.
getCode
());
return
cardUnBindService
.
updateOrder
(
orderDTO
);
}
else
{
//更新工单
orderDTO
.
setOrderStatus
(
RnrOrderStatusEnum
.
PASS
.
getCode
());
cardUnBindService
.
updateOrder
(
orderDTO
);
//根据工单查询 卡信息
MgRnrCardInfoDTO
query
=
new
MgRnrCardInfoDTO
();
query
.
setOrderId
(
rnrOrderDTO
.
getUuid
());
List
<
MgRnrCardInfoDTO
>
newCardList
=
cardInfoClient
.
queryByList
(
query
).
getData
();
//获取老卡信息
List
<
String
>
oldUuIdList
=
newCardList
.
stream
().
map
(
MgRnrCardInfoDTO:
:
getOldCardId
).
collect
(
Collectors
.
toList
());
List
<
MgRnrCardInfoDTO
>
oldCardList
=
oldUuIdList
.
parallelStream
().
map
(
oldUuid
->
{
MgRnrCardInfoDTO
oldQuery
=
new
MgRnrCardInfoDTO
();
oldQuery
.
setUuid
(
oldUuid
);
return
cardInfoClient
.
getByUuid
(
oldQuery
).
getData
();
}).
collect
(
Collectors
.
toList
());
//新卡设置绑定成功
//log.info("换件 新卡设置绑定成功:{}");
newCardList
.
parallelStream
().
forEach
(
card
->{
MgRnrCardInfoDTO
bindUpdate
=
new
MgRnrCardInfoDTO
();
bindUpdate
.
setUuid
(
card
.
getUuid
());
bindUpdate
.
setRnrStatus
(
RnrStatus
.
RNR
.
getCode
());
cardInfoClient
.
update
(
bindUpdate
);
log
.
info
(
"换件 新卡设置绑定 orderId = {},uuid= {},iccid = {}"
,
rnrOrderDTO
.
getUuid
(),
card
.
getUuid
(),
card
.
getIccid
());
});
//更新卡和VIN数据
MgRnrCardInfoDTO
mgRnrCardInfoDTO
=
new
MgRnrCardInfoDTO
();
List
<
MgRnrCardInfoDTO
>
mgRnrCardInfoDTOList
=
newCardList
.
stream
().
map
(
a
->{
mgRnrCardInfoDTO
.
setIccid
(
a
.
getIccid
());
mgRnrCardInfoDTO
.
setIotId
(
a
.
getIotId
());
return
mgRnrCardInfoDTO
;
}).
collect
(
Collectors
.
toList
());
orgSimRelClient
.
updateVin
(
mgRnrCardInfoDTOList
);
//老卡设置解绑
oldCardList
.
parallelStream
().
forEach
(
card
->{
MgRnrCardInfoDTO
unBind
=
new
MgRnrCardInfoDTO
();
unBind
.
setUuid
(
card
.
getUuid
());
unBind
.
setRnrStatus
(
RnrStatus
.
UNBOUND
.
getCode
());
cardInfoClient
.
update
(
unBind
);
log
.
info
(
"换件 老卡设置解绑 orderId = {},uuid= {},iccid = {}"
,
rnrOrderDTO
.
getUuid
(),
card
.
getUuid
(),
card
.
getIccid
());
});
oldCardList
.
parallelStream
().
forEach
(
oldCard
->{
//删除原有vin iccid 关联关系
BindRequestDTO
bindRequestDTO
=
new
BindRequestDTO
();
bindRequestDTO
.
setVin
(
oldCard
.
getIotId
());
bindRequestDTO
.
setIccid
(
oldCard
.
getIccid
());
Response
response
=
simVehicleRelService
.
unbind
(
bindRequestDTO
);
if
(!
response
.
isSuccess
())
{
log
.
error
(
"解绑车卡关系失败,iccid:{}, vin:{}"
,
oldCard
.
getIccid
(),
oldCard
.
getIotId
());
}
});
List
<
String
>
oldIccid
=
oldCardList
.
stream
().
map
(
a
->
a
.
getIccid
()).
collect
(
Collectors
.
toList
());
//换件需要将老卡VIN置空
orgSimRelClient
.
updateBindIccid
(
oldIccid
);
//查询车企信息
String
manufacturerOrgId
;
OrganizationDTO
organ
=
new
OrganizationDTO
();
organ
.
setTenantNo
(
orderDTO
.
getTenantNo
());
organ
.
setUuid
(
orderDTO
.
getOrgId
());
Response
<
OrganizationDTO
>
organResp
=
organService
.
getCarSubOrganByOrgId
(
organ
);
if
(
organResp
!=
null
&&
organResp
.
isSuccess
()
&&
organResp
.
getData
()
!=
null
)
{
manufacturerOrgId
=
organResp
.
getData
().
getUuid
();
}
else
{
log
.
warn
(
"sendCardNoticeByOrderId 获取车企组织失败,{}"
,
JSON
.
toJSONString
(
organResp
));
manufacturerOrgId
=
"0"
;
}
//发送mq通知
List
<
MgCardNoticeDTO
>
mgCardNoticeList
=
createMqDTO
(
newCardList
,
oldCardList
,
orderDTO
,
manufacturerOrgId
);
mgSurplusBindClient
.
sendMQ
(
mgCardNoticeList
);
List
<
MgRnrCardInfoDTO
>
dtoList
=
new
ArrayList
<>();
mgCardNoticeList
.
forEach
(
e
->{
MgRnrCardInfoDTO
dto
=
new
MgRnrCardInfoDTO
();
dto
.
setIotId
(
e
.
getVin
());
dto
.
setIccid
(
e
.
getIccid
());
dto
.
setOldCardId
(
e
.
getOldIccid
());
dtoList
.
add
(
dto
);
});
rnrService
.
notifyResult
(
dtoList
,
RnrBizzTypeEnum
.
ChangeBinding
.
getCode
().
toString
(),
UUID
.
randomUUID
().
toString
(),
null
,
ResultCodeEnum
.
PASS
.
getCode
());
return
com
.
cusc
.
nirvana
.
common
.
result
.
Response
.
createSuccess
(
"解绑卡/更新工单成功"
);
}
}
private
List
<
MgCardNoticeDTO
>
createMqDTO
(
List
<
MgRnrCardInfoDTO
>
newCardList
,
List
<
MgRnrCardInfoDTO
>
oldCardList
,
RnrOrderDTO
orderDTO
,
String
manufacturerOrgId
)
{
Map
<
String
,
MgRnrCardInfoDTO
>
oldCardMap
=
oldCardList
.
stream
().
collect
(
Collectors
.
toMap
(
MgRnrCardInfoDTO:
:
getUuid
,
Function
.
identity
(),
(
o1
,
o2
)
->
o1
));
List
<
MgCardNoticeDTO
>
cardNoticeList
=
new
ArrayList
<>();
for
(
MgRnrCardInfoDTO
newCard:
newCardList
)
{
MgCardNoticeDTO
mgCardNoticeDTO
=
new
MgCardNoticeDTO
();
mgCardNoticeDTO
.
setIccid
(
newCard
.
getIccid
());
MgRnrCardInfoDTO
oldCard
=
oldCardMap
.
get
(
newCard
.
getOldCardId
());
if
(
null
!=
oldCard
)
{
mgCardNoticeDTO
.
setOldIccid
(
oldCard
.
getIccid
());
}
mgCardNoticeDTO
.
setTenantNo
(
newCard
.
getTenantNo
());
mgCardNoticeDTO
.
setVin
(
newCard
.
getIotId
());
mgCardNoticeDTO
.
setRnrBizzType
(
orderDTO
.
getRnrBizzType
());
mgCardNoticeDTO
.
setOrderId
(
orderDTO
.
getUuid
());
mgCardNoticeDTO
.
setManufacturerOrgId
(
manufacturerOrgId
);
mgCardNoticeDTO
.
setResultCode
(
orderDTO
.
getOrderStatus
());
mgCardNoticeDTO
.
setOrgId
(
orderDTO
.
getOrgId
());
cardNoticeList
.
add
(
mgCardNoticeDTO
);
}
return
cardNoticeList
;
}
}
local-rnr-fp-server/src/main/java/com/cusc/nirvana/user/rnr/fp/handler/impl/CheckVinExistCheckHandler.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.handler.impl
;
import
com.cusc.nirvana.common.result.Response
;
import
com.cusc.nirvana.user.exception.CuscUserException
;
import
com.cusc.nirvana.user.rnr.mg.client.MgRnrCardInfoClient
;
import
com.cusc.nirvana.user.rnr.mg.constants.RnrStatus
;
import
com.cusc.nirvana.user.rnr.mg.dto.MgRnrCardInfoDTO
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
java.util.List
;
/**
* @author stayAnd
* @date 2022/6/7
*/
@Component
(
"checkVinExistCheckHandler"
)
public
class
CheckVinExistCheckHandler
extends
CommonBindVinCardCheckHandlerImpl
{
@Resource
private
MgRnrCardInfoClient
cardInfoClient
;
@Override
protected
void
checkVin
(
String
vin
)
{
MgRnrCardInfoDTO
query
=
new
MgRnrCardInfoDTO
();
query
.
setIotId
(
vin
);
Response
<
List
<
MgRnrCardInfoDTO
>>
response
=
cardInfoClient
.
queryByList
(
query
);
if
(
null
==
response
||
!
response
.
isSuccess
())
{
throw
new
CuscUserException
(
""
,
"查询卡信息失败"
);
}
List
<
MgRnrCardInfoDTO
>
mgRnrCardInfoList
=
response
.
getData
();
//自然人 - 新车 || 企业实名 || 车企实名
if
(
mgRnrCardInfoList
.
stream
().
anyMatch
(
card
->
RnrStatus
.
INIT
.
getCode
()
==
card
.
getRnrStatus
()
||
RnrStatus
.
RNR
.
getCode
()
==
card
.
getRnrStatus
()))
{
// throw new CuscUserException("", "vin已经存在实名信息,请走一车多卡流程");
throw
new
CuscUserException
(
""
,
"您提交的VIN号已实名,请勿重复提交实名!"
);
}
}
}
local-rnr-fp-server/src/main/java/com/cusc/nirvana/user/rnr/fp/handler/impl/CheckVinNotExistCheckHandler.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.handler.impl
;
import
com.cusc.nirvana.common.result.Response
;
import
com.cusc.nirvana.user.exception.CuscUserException
;
import
com.cusc.nirvana.user.rnr.mg.client.MgRnrCardInfoClient
;
import
com.cusc.nirvana.user.rnr.mg.constants.RnrStatus
;
import
com.cusc.nirvana.user.rnr.mg.dto.MgRnrCardInfoDTO
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* @author stayAnd
* @date 2022/6/7
*/
@Component
(
"checkVinNotExistCheckHandler"
)
public
class
CheckVinNotExistCheckHandler
extends
CommonBindVinCardCheckHandlerImpl
{
@Resource
private
MgRnrCardInfoClient
cardInfoClient
;
@Override
protected
void
checkVin
(
String
vin
)
{
MgRnrCardInfoDTO
query
=
new
MgRnrCardInfoDTO
();
query
.
setIotId
(
vin
);
Response
<
List
<
MgRnrCardInfoDTO
>>
response
=
cardInfoClient
.
queryByList
(
query
);
if
(
null
==
response
||
!
response
.
isSuccess
())
{
throw
new
CuscUserException
(
""
,
"查询卡信息失败"
);
}
List
<
MgRnrCardInfoDTO
>
mgRnrCardInfoList
=
response
.
getData
();
List
<
MgRnrCardInfoDTO
>
rnrCardList
=
mgRnrCardInfoList
.
stream
()
.
filter
(
card
->
card
.
getRnrStatus
()
==
RnrStatus
.
RNR
.
getCode
()).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
rnrCardList
))
{
throw
new
CuscUserException
(
""
,
"该vin号未查询到实名的卡信息"
);
}
}
}
local-rnr-fp-server/src/main/java/com/cusc/nirvana/user/rnr/fp/handler/impl/CommonBindVinCardCheckHandlerImpl.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.handler.impl
;
import
com.alibaba.fastjson.JSONObject
;
import
com.cusc.nirvana.common.result.Response
;
import
com.cusc.nirvana.user.exception.CuscUserException
;
import
com.cusc.nirvana.user.rnr.fp.common.constant.VinCardCheckBussinessDetailType
;
import
com.cusc.nirvana.user.rnr.fp.dto.*
;
import
com.cusc.nirvana.user.rnr.fp.handler.VinCardCheckMessageHandler
;
import
com.cusc.nirvana.user.rnr.fp.service.ISimVehicleRelService
;
import
com.cusc.nirvana.user.rnr.mg.client.MgRnrCardInfoClient
;
import
com.cusc.nirvana.user.rnr.mg.constants.RnrStatus
;
import
com.cusc.nirvana.user.rnr.mg.dto.MgRnrCardInfoDTO
;
import
com.google.common.collect.Lists
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* @author stayAnd
* @date 2022/6/1
* 通用绑卡业务 车卡关系校验实现
*/
@Component
(
"commonBindVinCardCheckHandler"
)
@Slf4j
public
class
CommonBindVinCardCheckHandlerImpl
implements
VinCardCheckMessageHandler
{
@Resource
private
MgRnrCardInfoClient
cardInfoClient
;
@Resource
private
ISimVehicleRelService
simVehicleRelService
;
@Override
public
VinCardCheckMessageResultDTO
checkVinCard
(
String
vin
,
List
<
String
>
iccidList
,
VinCardCheckBussinessDetailType
type
)
{
VinCardCheckMessageResultDTO
resultDTO
=
new
VinCardCheckMessageResultDTO
();
checkVin
(
vin
);
List
<
VinCardCheckMessageFailDTO
>
failDTOList
=
new
ArrayList
<>();
//输入的卡是否存在 已实名/初始化(认证中)的记录
List
<
VinCardCheckMessageFailDTO
>
localCheckList
=
checkCardFromLocal
(
iccidList
);
if
(!
CollectionUtils
.
isEmpty
(
localCheckList
))
{
failDTOList
.
addAll
(
localCheckList
);
}
//查询卡是否存在
List
<
VinCardCheckMessageFailDTO
>
exsitCheckList
=
checkCardExist
(
iccidList
);
if
(!
CollectionUtils
.
isEmpty
(
exsitCheckList
))
{
failDTOList
.
addAll
(
exsitCheckList
);
}
//查询车卡关系
List
<
VinCardCheckMessageFailDTO
>
vinRelationCheckList
=
checkVinCardRelation
(
iccidList
,
vin
);
if
(!
CollectionUtils
.
isEmpty
(
vinRelationCheckList
))
{
failDTOList
.
addAll
(
vinRelationCheckList
);
}
//构建参数
resultDTO
.
build
(
failDTOList
);
return
resultDTO
;
}
protected
void
checkVin
(
String
vin
){
//子类有特殊判断实现此方法
}
/**
* 通过mg 查询本地库是否存在车卡关系
* @param iccidList
* @return
*/
private
List
<
VinCardCheckMessageFailDTO
>
checkCardFromLocal
(
List
<
String
>
iccidList
)
{
MgRnrCardInfoDTO
query
=
new
MgRnrCardInfoDTO
();
query
.
setIccidList
(
iccidList
);
Response
<
List
<
MgRnrCardInfoDTO
>>
response
=
cardInfoClient
.
queryByList
(
query
);
if
(
null
==
response
||
!
response
.
isSuccess
())
{
throw
new
CuscUserException
(
""
,
"查询实名库卡信息失败"
);
}
List
<
MgRnrCardInfoDTO
>
cardInfoDTOList
=
response
.
getData
();
if
(
CollectionUtils
.
isEmpty
(
cardInfoDTOList
))
{
return
new
ArrayList
<>();
}
return
cardInfoDTOList
.
stream
()
.
filter
(
card
->
RnrStatus
.
INIT
.
getCode
()
==
card
.
getRnrStatus
()
||
RnrStatus
.
RNR
.
getCode
()
==
card
.
getRnrStatus
()
).
map
(
card
->
new
VinCardCheckMessageFailDTO
().
setIccid
(
card
.
getIccid
()).
setErrorMsg
(
"输入的卡信息已存在实名记录"
)
).
collect
(
Collectors
.
toList
());
}
/**
* 判断绑业务的卡 是不是 存在
* @param iccidList
* @return
*/
private
List
<
VinCardCheckMessageFailDTO
>
checkCardExist
(
List
<
String
>
iccidList
)
{
List
<
VinCardCheckMessageFailDTO
>
returnList
=
Collections
.
synchronizedList
(
new
ArrayList
<>());
if
(
CollectionUtils
.
isEmpty
(
iccidList
))
{
return
returnList
;
}
List
<
List
<
String
>>
partitionIccIdList
=
Lists
.
partition
(
iccidList
,
100
);
partitionIccIdList
.
parallelStream
().
forEach
(
list
->
{
IccidListDTO
dto
=
new
IccidListDTO
();
dto
.
setIccidList
(
list
);
Response
<
List
<
IccidDetailDTO
>>
detailResponse
=
simVehicleRelService
.
queryByIccids
(
dto
);
log
.
info
(
"checkCardExist,request = {},response = {}"
,
JSONObject
.
toJSONString
(
list
),
JSONObject
.
toJSONString
(
detailResponse
));
if
(
null
==
detailResponse
||
!
detailResponse
.
isSuccess
())
{
throw
new
CuscUserException
(
""
,
"查询卡详情失败"
);
}
//查询到详情的iccid列表
List
<
String
>
detailIccidList
=
detailResponse
.
getData
().
stream
().
map
(
IccidDetailDTO:
:
getIccid
).
collect
(
Collectors
.
toList
());
//过滤出未查询到详情的iccid卡
List
<
VinCardCheckMessageFailDTO
>
notExsitList
=
list
.
stream
()
.
filter
(
iccid
->
!
detailIccidList
.
contains
(
iccid
)
).
map
(
iccid
->
new
VinCardCheckMessageFailDTO
().
setIccid
(
iccid
).
setErrorMsg
(
""
)
).
collect
(
Collectors
.
toList
());
returnList
.
addAll
(
notExsitList
);
});
return
returnList
;
}
/**
* 判断绑定的卡的 vin 是否一致
* @param iccidList
* @param vin
* @return
*/
private
List
<
VinCardCheckMessageFailDTO
>
checkVinCardRelation
(
List
<
String
>
iccidList
,
String
vin
)
{
return
iccidList
.
parallelStream
().
filter
(
iccid
->{
Response
<
VinIccidDTO
>
response
=
simVehicleRelService
.
getVinByIccid
(
iccid
);
log
.
info
(
"checkVinCardRelation request = {} , response = {}"
,
iccid
,
JSONObject
.
toJSONString
(
response
));
if
(
null
==
response
||
!
response
.
isSuccess
())
{
throw
new
CuscUserException
(
""
,
"根据iccid查询vin失败,iccid:"
+
iccid
);
}
return
null
!=
response
.
getData
()
&&
!
vin
.
equals
(
response
.
getData
().
getVin
());
}).
map
(
iccid
->
new
VinCardCheckMessageFailDTO
().
setIccid
(
iccid
).
setErrorMsg
(
"卡信息的vin码和输入的vin不一致"
)).
collect
(
Collectors
.
toList
());
}
}
local-rnr-fp-server/src/main/java/com/cusc/nirvana/user/rnr/fp/handler/impl/CommonUnBindVinCardCheckHandlerImpl.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.handler.impl
;
import
com.cusc.nirvana.common.result.Response
;
import
com.cusc.nirvana.user.exception.CuscUserException
;
import
com.cusc.nirvana.user.rnr.fp.common.constant.VinCardCheckBussinessDetailType
;
import
com.cusc.nirvana.user.rnr.fp.dto.*
;
import
com.cusc.nirvana.user.rnr.fp.handler.VinCardCheckMessageHandler
;
import
com.cusc.nirvana.user.rnr.fp.service.ISimVehicleRelService
;
import
com.cusc.nirvana.user.rnr.mg.client.MgRnrCardInfoClient
;
import
com.cusc.nirvana.user.rnr.mg.constants.RnrStatus
;
import
com.cusc.nirvana.user.rnr.mg.dto.MgRnrCardInfoDTO
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* @author stayAnd
* @date 2022/6/1
* 通用绑卡业务 车卡关系校验实现
*/
@Component
(
"commonUnBindVinCardCheckHandler"
)
@Slf4j
public
class
CommonUnBindVinCardCheckHandlerImpl
implements
VinCardCheckMessageHandler
{
@Resource
private
MgRnrCardInfoClient
cardInfoClient
;
@Resource
private
ISimVehicleRelService
simVehicleRelService
;
@Override
public
VinCardCheckMessageResultDTO
checkVinCard
(
String
vin
,
List
<
String
>
iccidList
,
VinCardCheckBussinessDetailType
type
)
{
VinCardCheckMessageResultDTO
resultDTO
=
new
VinCardCheckMessageResultDTO
();
MgRnrCardInfoDTO
query
=
new
MgRnrCardInfoDTO
();
query
.
setIccidList
(
iccidList
);
Response
<
List
<
MgRnrCardInfoDTO
>>
response
=
cardInfoClient
.
queryByList
(
query
);
if
(
null
==
response
||
!
response
.
isSuccess
())
{
throw
new
CuscUserException
(
""
,
"查询卡信息失败"
);
}
List
<
MgRnrCardInfoDTO
>
cardInfoDTOList
=
response
.
getData
();
List
<
String
>
hasRnrIccidList
=
cardInfoDTOList
.
stream
()
.
filter
(
card
->
RnrStatus
.
RNR
.
getCode
()
==
card
.
getRnrStatus
()).
map
(
MgRnrCardInfoDTO:
:
getIccid
)
.
collect
(
Collectors
.
toList
());
//失败错误的卡
List
<
VinCardCheckMessageFailDTO
>
failDTOList
=
new
ArrayList
<>();
//非实名的卡
List
<
MgRnrCardInfoDTO
>
notRnrCardList
=
cardInfoDTOList
.
stream
().
filter
(
card
->
!
hasRnrIccidList
.
contains
(
card
.
getIccid
())).
collect
(
Collectors
.
toList
());
List
<
VinCardCheckMessageFailDTO
>
notRnrErrorList
=
notRnrCardList
.
stream
().
map
(
card
->
{
VinCardCheckMessageFailDTO
failDTO
=
new
VinCardCheckMessageFailDTO
();
failDTO
.
setIccid
(
card
.
getIccid
());
failDTO
.
setErrorMsg
(
"输入的卡信息存在非实名的卡"
);
return
failDTO
;
}).
collect
(
Collectors
.
toList
());
if
(!
CollectionUtils
.
isEmpty
(
notRnrErrorList
))
{
failDTOList
.
addAll
(
notRnrErrorList
);
}
//构建参数
resultDTO
.
build
(
failDTOList
);
return
resultDTO
;
}
protected
void
checkVin
(
String
vin
){
//子类有特殊判断实现此方法
}
}
local-rnr-fp-server/src/main/java/com/cusc/nirvana/user/rnr/fp/handler/impl/SurplusMessageCallBackHandler.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.handler.impl
;
import
com.cusc.nirvana.common.result.Response
;
import
com.cusc.nirvana.user.rnr.fp.dto.FpRnrSmsInfoDTO
;
import
com.cusc.nirvana.user.rnr.fp.dto.UnbindReceiceSMSDTO
;
import
com.cusc.nirvana.user.rnr.fp.handler.MessageCallbackHandler
;
import
com.cusc.nirvana.user.rnr.fp.service.IFpSurplusCardBindService
;
import
com.cusc.nirvana.user.rnr.mg.constants.MessageCallbackStatusEnum
;
import
com.cusc.nirvana.user.rnr.mg.dto.SurplusConfirmDto
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
/**
* @author yubo
* @since 2022-05-04 16:27
*/
@Service
@Slf4j
public
class
SurplusMessageCallBackHandler
implements
MessageCallbackHandler
{
@Value
(
"${message.callback.timeout:120}"
)
private
int
timeOut
;
@Autowired
IFpSurplusCardBindService
cardBindService
;
@Override
public
Response
callBack
(
FpRnrSmsInfoDTO
rnrSmsInfoDTOResponseData
,
UnbindReceiceSMSDTO
bean
,
long
receiveTIme
)
{
SurplusConfirmDto
surplusConfirmDto
=
new
SurplusConfirmDto
();
long
startTime
=
rnrSmsInfoDTOResponseData
.
getCreateTime
().
getTime
();
log
.
info
(
"当前时间: {},短信发送时间: {}"
,
receiveTIme
,
toString
());
boolean
isTimeOut
=
receiveTIme
-
timeOut
*
1000
>
startTime
;
if
(
isTimeOut
)
{
surplusConfirmDto
.
setCallbackStatusEnum
(
MessageCallbackStatusEnum
.
TIMEOUT
.
getCode
());
}
else
{
surplusConfirmDto
.
setCallbackStatusEnum
(
StringUtils
.
equalsIgnoreCase
(
bean
.
getReplyContent
(),
"y"
)
?
MessageCallbackStatusEnum
.
Y
.
getCode
()
:
MessageCallbackStatusEnum
.
N
.
getCode
());
}
surplusConfirmDto
.
setOrderId
(
rnrSmsInfoDTOResponseData
.
getOrderId
());
return
Response
.
createSuccess
(
cardBindService
.
confirm
(
surplusConfirmDto
));
}
}
local-rnr-fp-server/src/main/java/com/cusc/nirvana/user/rnr/fp/scheduled/OrderScheduledService.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.scheduled
;
import
com.cache.CacheFactory
;
import
com.cache.exception.CacheException
;
import
com.cusc.nirvana.common.result.PageResult
;
import
com.cusc.nirvana.common.result.Response
;
import
com.cusc.nirvana.user.rnr.fp.common.constant.FpRedisConstant
;
import
com.cusc.nirvana.user.rnr.fp.service.IRnrService
;
import
com.cusc.nirvana.user.rnr.mg.client.RnrOrderClient
;
import
com.cusc.nirvana.user.rnr.mg.constants.RnrOrderStatusEnum
;
import
com.cusc.nirvana.user.rnr.mg.dto.RnrOrderDTO
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
javax.annotation.Resource
;
import
java.util.Calendar
;
@Service
@Slf4j
@EnableScheduling
public
class
OrderScheduledService
{
@Autowired
private
IRnrService
rnrService
;
@Resource
private
RnrOrderClient
orderClient
;
@Resource
private
CacheFactory
cacheFactory
;
/**
* 定时任务,从数据库中获取已提交并,每隔5分钟执行一次
*/
//@Scheduled(fixedRateString = "${rnr.order.invalid:60000}")
public
void
execInvalidOrder
()
{
try
{
cacheFactory
.
getLockService
()
.
lock
(
FpRedisConstant
.
ORDER_SCHEDULED_LOCK
,
FpRedisConstant
.
ORDER_SCHEDULED_LOCK_EXPIRE
);
RnrOrderDTO
orderDTO
=
new
RnrOrderDTO
();
orderDTO
.
setPageSize
(
1000
);
orderDTO
.
setCurrPage
(
1
);
orderDTO
.
setOrderStatus
(
RnrOrderStatusEnum
.
COMMIT
.
getCode
());
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
add
(
Calendar
.
HOUR_OF_DAY
,
-
1
);
orderDTO
.
setCreateTime
(
calendar
.
getTime
());
Response
<
PageResult
<
RnrOrderDTO
>>
orderPageResp
=
orderClient
.
queryByPage
(
orderDTO
);
if
(
orderPageResp
.
isSuccess
()
&&
orderPageResp
.
getData
()
!=
null
&&
!
CollectionUtils
.
isEmpty
(
orderPageResp
.
getData
().
getList
()))
{
for
(
RnrOrderDTO
order
:
orderPageResp
.
getData
().
getList
()){
rnrService
.
updateRnrInValid
(
order
);
}
}
}
catch
(
CacheException
e
)
{
log
.
error
(
"OrderScheduledService execInvalidOrder lock "
,
e
);
}
finally
{
try
{
cacheFactory
.
getLockService
().
unLock
(
FpRedisConstant
.
ORDER_SCHEDULED_LOCK
);
}
catch
(
CacheException
e
)
{
log
.
error
(
"OrderScheduledService execInvalidOrder unlock "
,
e
);
}
}
}
public
static
void
main
(
String
[]
args
)
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
add
(
Calendar
.
HOUR_OF_DAY
,
-
1
);
System
.
out
.
println
(
calendar
.
getTime
());
}
}
Prev
1
…
11
12
13
14
15
16
17
18
19
…
21
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment