撤销委托功能
# 币币交易撤销委托功能文档
## 功能简介
已有当前委托单的条件下,用户撤销委托的功能简介。
## 代码流程
### 1.发布撤销委托消息
#### a.发起撤销委托申请
##### 1)代码结构:app/trade/tradeController/cancelExEntrust
##### 2)实现功能
###### i. 判断委托是否计划委托,如果是则判断当前价格和触发价格大小关系,返回失败。
###### ii.构造EntrustTrade对象,注意这里的time设为空,然后调用撤销委托方法
#### b.撤销委托方法
##### 1)代码结构:trade/entrust/service/impl/ExEntrustServiceImpl
##### 2)内容实现
###### i. 将构造的trade对象发送到消息队列toTrade中。
### 2.消费委托消息
#### a.监听消息队列
##### 1)代码结构:trade/mq/messagetrade
##### 2)实现内容:在mq中配置的消息监听totrade消息,调用匹配委托方法
#### b.匹配委托
##### 1) 代码结构:trade/entrust/tradeserviceimpl/matchExtrustToOrderQueue
##### 2)实现内容
###### i 判断委托时间,为空撤销委托。
#### c.根据类型撤销委托
##### 1) 代码结构 trade/entrust/service/impl/tradeServiceImpl/canceltype
##### 2) 内容实现
###### i. 根据是否有委托单号判断是否批量撤销。
###### ii. 有委托单号则直接调用撤销接口
#### d.撤销委托
##### 1) 代码结构 trade/entrust/service/impl/tradeServiceImpl/cancelExEntrust
##### 2) 内容实现
###### i. 判断是否未触发
###### ii. 如果未触发调用撤销未触发委托接口从待触发列表中撤销。
###### iii. 从交易对+交易价格委托作为key的列表中删除
###### iv. 将委托单状态设为取消或者部分取消、然后解冻用户资金。
###### v. 将委托修改日志保存,然后存入用户委托单列表中。