申述订单后台管理

# 申述后台审核 ## 功能简介  用户对于某笔正在进行的订单进行申述,管理人员介入之后进行操作。 ## 代码流程 1. 订单成立 1. 申述订单成立接口 1.  接口:admin/exchange/otcapptransaction/orderCompleted.do 2.  代码结构:hry/admin/exchange/controller/OtcAppTransactionController/orderCompleted 3.  实现内容: 1. 根据订单号查询订单信息,根据订单状态是否为5或者14来判断订单是否失效。 2. 设置订单状态为14,以及支付时间,更新订单表信息。 3. 将订单存到redis"otc:queue"队列中,发布名为"otcCompletionRate"的消息,用于计算用户的订单完成率。 4. 判断如果此笔订单的广告如果是卖单,则发送消息队列来扣除对应订单数量卖家被冻结的币,加上手续费。但是如果是买单,则将手续费退还给卖家。 5. 发送消息队列来增加买家的热钱包的数量。 6. 记录手续费的流水账单到手续费台账数据库。 2. 订单取消 1. 申述订单取消接口 1.  接口:admin/exchange/otcapptransaction/cancleOrder.do 2.  代码结构: hry/admin/exchange/controller/OtcAppTransactionController/cancleOrder 3.  实现内容: 1. 查询订单状态是否为5,判断是否重复取消。 2. 在redis中加入"cancleOrderLock:"分布式锁。 3. 查询订单的状态是否为15或者16,判断订单是否在申述状态。 4. 修改订单状态为5,已取消,更新订单表数据。添加到"otc:queue"队列,发送消息到"otcCompletionRate",用于计算用户订单完成率。 5. 拿到订单相关广告,回复广告状态为开启和未交易。判断如果是吃卖单,则设置广告的币的最大数量加上交易金额和手续费。 6. 如果订单的总价大于等于广告的单价*百分比汇率。将广告的属性返回到这笔订单发生前的属性。如果最大可交易的币大约等于最小可交易的币则重新开启广告,并且从redis拿到用户钱包信息,以及"otc:ReleaseAdvertisementAfterColse:"将要关闭的订单信息。冻结卖家钱包,删除"otc:ReleaseAdvertisementAfterColse:" redis。 7. 如果是发布的购买广告则不会有冻结币,所以返还步骤6中卖家冻结的币。 8. 释放锁,返回信息。 3. 申述驳回 1. 申述驳回接口 1.  接口:admin/exchange/otcapptransaction/examineAndreject.do 2.  代码结构:hry/admin/exchange/controller/OtcAppTransactionController/examineAndreject 3.  实现内容: 1. 根据订单号等信息查询数据库订单信息。 2. 判断如果平台回复信息是否为空,更新订单的平台回复信息。更改订单状态为前台传过来的值。 3. 修改订单数据库信息,判断状态码,返回相应提示。