状态切换
2021-06-25 13:53:16 0 举报
xiaoneng
作者其他创作
大纲/内容
如果2002请求修改为0和4则清空自己所有会话
广播修改成功状态
1、取消超时定时器2、客服isWaiter = false3、等待接待组清空4、2002消息内容清空
接待组不等待
是否等待
不等待
waiterTemplate
加载所有接待组
无后续操作
是
等待
修改成功
否
在线online或离线offline
存在&&预修改客服与当前客服一致
备注:接待组的状态1、在线人数>1 ==设置在线2、在线人数=1 && 当前客服=请求客服 ==设置在线3、在线人数=0 && 忙碌人数=1 && 当前客服=请求客服 ==设置忙碌4、在线人数=0 && 忙碌人数=0 && 离开人数=1 && 当前客服=请求客服 ==设置离开5、在线人数=0 && 忙碌人数=0 && 离开人数=0 && 请求客服状态=离开(0) ==设置退出6、在线人数=0 && 忙碌人数>0 ==设置忙碌7、在线人数=0 && 忙碌人数=0 && 离开人数>0 ==设置离开
客服正在等待isWaiter=true
广播修改失败状态
接收的为false
当前客服启动定时器,查询setting
懒加载
校验参数
预修改
备注:状态为预状态
含有该接待组
判断预修改是否存在
客服当前状态通知IM5008
获取当前接待组的在线状态
不含任何接待组
修改超时
满足1和2
1、客服等待isWaiter=是2、2002消息保留waiterChangeMessage=mCommand
启动超时定时器定时3分钟
2002消息
false
当前isWaiter
接收的为true
客服更新为2002请求状态通知IM5008
查询数据库恢复客服状态
现-on &&(需-busy||需-off)
通知supplier
接收广播消息
依旧含有其他接待组
集合空
不含
预状态=成功开始 && 修改未超时
定时任务statusChangeRequest
1-预修改重置2-终止查询
客服已不再等待isWaiter=false
接待组预修改是否被使用
循环所有接待组得到waiterTemplate
无客服使用
true
查询咚咚状态
1、接待组挂起2、prestatus!=3 && prestatus!=43、客服不存在4、接待组保存的客服状态=null || 非在线5、遍历所有客服(不含机器人),如果在线人数>16、接待组某个客服已占用预修改
BasicConversationTemplate(接待组)
客服不在任何接待组
当前isWaiter
Supplier(客服)
请求修改咚咚状态
请求成功
备注:需要等待的接待组集合
接待组是否存在当前客服
如果为第一次修改
判断客服状态
置为true
接收isWaiter
waiterTemplate移除刚接收的接待组
集合不为空
1、客服prestatus==1&&ddstatus==12、(客服prestatus==3 ||客服prestatus==4) && (ddstatus==2 ||ddstatus==3 ||ddstatus==4)
修改客服状态
有客服使用
SysReceiver(接收器)
1、开关-关(强制不等待)2、现-off ||需-on||需-off
结束本次查询
修改状态
直接修改
延时2秒启动每5秒查询一次
客服isWaiter
0 条评论
下一页