全 BIP 写卡和短信写卡处理流程
短信写卡和全 BIP 写卡
短信写卡
特别注明会出现的意外情况:
如果服务在业务处理时突然停止,会导致部分正在处理的数据脱离业务处理边界,无法被继续处理,针对此种情况,后续需要根据实际情况制定特殊处理方案。
sequenceDiagram
远程写卡平台前端-->>远程写卡平台后台:准备短信写卡
alt 调用失败
远程写卡平台前端-->>远程写卡平台前端:服务出错,请联系管理员处理
else 成功
远程写卡平台后台->>远程写卡平台后台:记录短信写卡请求
end
远程写卡平台前端->>远程写卡平台后台:查看短信写卡任务
全 BIP 写卡
创建全 BIP 写卡任务
1、修改 message_writecard_request 表添加 type 字段区分短信写卡和全 BIP 写卡
2、添加全 BIP 写卡需要的其它字段,eid,newIccid,oldIccid
3、修改短信写卡,添加筛选字段 type
sequenceDiagram
远程写卡平台前端-->>远程写卡平台后台:批量创建全BIP写卡任务
alt 调用失败
远程写卡平台前端-->>远程写卡平台前端:服务出错,请联系管理员处理
else 成功
远程写卡平台后台->>远程写卡平台后台:在message_writecard_request表添加写卡记录
end
远程写卡平台前端->>远程写卡平台后台:查看已添加的全BIP写卡任务
领取全 BIP 写卡任务
sequenceDiagram
模组->>短信服务:建立TCP连接
alt 建立TCP连接成功
模组->>短信服务:发送写卡任务查询命令
短信服务->>远程写卡平台后台:转发写卡任务查询命令
远程写卡平台后台->>远程写卡平台后台:查询message_writecard_request是否存在对应全BIP写卡任务
远程写卡平台后台->>短信服务:一系列处理
模组-->>短信服务:关闭连接
else 建立TCP连接失败
模组-->>短信服务:关闭连接
end
alt 存在全BIP写卡任务
远程写卡平台后台->>短信服务:一系列处理
else 不存在全BIP写卡任务但存在写完卡后的eid和iccid任务
远程写卡平台后台-->>远程写卡平台后台:按照该任务已成功处理,结束
end
短息写卡和全 BIP 写卡共同处理部分
1、记录无效的写卡请求结果记录表(写卡指令未发送到卡的全部记录)
2、短信服务需要修改短信提交记录表,添加类型 type,区分短信写卡和全 BIP 写卡
sequenceDiagram
远程写卡平台后台-->>短信服务:准备投递写卡请求
alt 调用失败
远程写卡平台后台-->>远程写卡平台后台:服务出错,请联系管理员处理
else 成功
远程写卡平台后台->>短信服务:处理短信写卡请求和全BIP写卡请求
end
alt 短信写卡请求
远程写卡平台后台->>远程写卡平台后台:封装短信写卡请求
远程写卡平台后台->>短信服务:拼装短信内容
else 全BIP写卡请求
远程写卡平台后台-->>远程写卡平台后台:查询是否存在全BIP写卡任务
end
alt 存在全BIP写卡任务
远程写卡平台后台-->>远程写卡平台后台:封装全BIP写卡命令
远程写卡平台后台-->>短信服务:发送全BIP写卡指令
else 不存在全BIP写卡任务
远程写卡平台后台-->>远程写卡平台后台:查询是否存在卡数据
end
alt 不存在全BIP写卡任务但存在卡数据
远程写卡平台后台-->>远程写卡平台后台:封装全BIP写卡查询响应
远程写卡平台后台-->>短信服务:发送全BIP写卡查询响应
else 不存在全BIP写卡任务也不存在卡数据
远程写卡平台后台-->>远程写卡平台后台:记录全BIP写卡请求结果,无卡数据,结束
end
alt 调用短信服务失败
远程写卡平台后台->>远程写卡平台后台:根据写卡类型分别处理
else 成功
远程写卡平台后台->>短信服务:根据写卡类型分别处理
end
alt 短信写卡调用短信服务失败
远程写卡平台后台->>远程写卡平台后台:修改短信写卡请求状态为调用写卡服务失败,以备定时任务处理
远程写卡平台后台->>短信服务:定时处理调用写卡服务失败的写卡请求
else 全BIP写卡调用短信服务失败
远程写卡平台后台-->>远程写卡平台后台:修改短信写卡请求状态为调用写卡服务失败
远程写卡平台后台-->>远程写卡平台后台:记录全BIP写卡请求结果,调用短信服务失败,结束
end
alt 短信写卡调用短信服务成功
远程写卡平台后台->>短信服务:拼装短信内容
短信服务->>短信服务:调用短信网关发送短信并记录发送的内容
else 全BIP写卡调用短信服务成功
远程写卡平台后台-->>短信服务:拼装全BIP写卡指令
短信服务-->>模组:通过TCP连接下发写卡指令,记录下发内容
end
alt 调用短信网关失败
短信服务->>短信服务:未收到网关回复,处理结果为空
短信服务->>网关中心:定时处理处理结果为空的写卡请求
else 成功
短信服务->>网关中心:拼装短信头下发短信
end
alt 和模组通讯失败
短信服务-->>远程写卡平台后台:上报指令下发结果
远程写卡平台后台-->>远程写卡平台后台:记录写卡结果,指令下发失败,结束
else 成功
短信服务->>模组:下发写卡指令
end
网关中心->>模组:收到短信解析短信
alt 模组支持短信功能
模组->>网关中心:回复短信内容
else 模组不支持短信功能
模组->>短信服务:BIP上行,建立TCP或者UDP连接
end
alt 短信回复
网关中心->>短信服务:拼装短信头回复短信
else BIP上行
模组->>短信服务:TCP或者UDP上报写卡结果
end
alt 调用远程写卡平台后台失败
短信服务-->>短信服务:修改短信回复或者BIP回复状态为处理失败
短信服务-->>远程写卡平台后台:定时处理短信回复或者BIP回复状态为处理失败的数据
else 成功
短信服务-->>远程写卡平台后台:取出短信或者BIP内容
end
远程写卡平台后台->>远程写卡平台后台:解析短信或者BIP内容确定写卡结果
远程写卡平台前端->>远程写卡平台后台:查看写卡结果
BIP 结果上报
1、在短信服务区分开,本次上报针对的是短信写卡还是全 BIP 写卡
sequenceDiagram
模组->>短信服务:发送数据
短信服务->>短信服务:根据数据中包含的eid和时间查询提交记录表中对应的最近的提交记录
短信服务->>调用服务:根据提交记录,将模组上报的结果发送到对应的调用服务
BIP 数据传输步骤
模组发起的 TCP 连接并不需要服务端做出明确的相应,模组只会按照指定的操作步骤去处理。
sequenceDiagram
模组->>短信服务:建立TCP连接
alt 建立TCP连接成功
模组->>短信服务:发送数据
短信服务->>模组:关闭连接
else 建立TCP连接失败
模组-->>短信服务:关闭连接
end