发布广告

# OTC发布广告功能 ## 功能简介 &#8195;该接口用于用户在otc中的发布交易广告功能。 ## 代码流程 1. 获取最新市场价格 1. 获取市场价格接口 1. &#8195;接口:app/otc/user/releaseadvertisement/getPriceNow 2. &#8195;代码结构:hry/app/otc/ReleaseAdvertisementMobileController 3. &#8195;实现内容: 1. 判断币种信息是否为空 2. 判断汇率是否为空(为空设置为1) 3. 调用getPriceNew方法,返回信息 2. 获取市场价方法 1. &#8195;代码结构:hry/otc/remote/RemoteAdvertisementServiceImpl/getPriceNew 2. &#8195;实现内容: 1. 查询redis的"当前币种_USDT:currentExchangPrice"获取当前币种和USDT的汇率。<br>`String coinprice = redisService.get(coinCode + "_USDT:currentExchangPrice");` 2. 查询Redis里面的"hry:coinPrice"hash表里面的"USDT"得到USDT的法币价格。<br>`String usdtPrice = redisService.hget("hry:coinPrice","USDT");` 3. 根据coinprice和usdtPrice 以及传入的法币汇率可以算出当前币种的法币价格。 2. 发布广告信息 1. 发布广告接口 1. &#8195;接口:otc/user/releaseadvertisement/addreleaseadvertisement 2. &#8195;代码结构:hry/app/otc/ReleaseAdvertisementMobileController 3. &#8195;实现内容: 1. 查询redis的"otc:canNotBuy:"来判断用户是否被禁用。<br>`String ss = redisService.get("otc:canNotBuy:"+user.getCustomerId());` 2. 判断各种密码等信息是否正确。 3. 如果是卖单调用"getCoinAccountRedis"方法,判断热钱包币的数量是否足够。 4. 计算交易币种的当前市场价和处理溢价以后的市场价。 5. 根据固定费率或者百分比费率绑定相应的单价。(百分比费率为实时变动的市场价) 6. 调用getPersonalAsset方法拿到用户的支付方式,判断买卖方的支付方式是否符合。 7. 调用addReleaseAdvertisement方法将订单存入数据库,并且返回信息。 2. 获取用户钱包信息方法 1. &#8195;代码结构:hry/otc/remote/RemoteAdvertisementServiceImpl/getCoinAccountRedis 2. &#8195;实现内容: 1. 从"RedisDB:hry:front:redis:model:UserRedis"的redis里面查询到用户所有币种钱包的id。 2. 通过上述步骤中拿到的钱包id来查询"hry:trade:redis:model:ExDigitalmoneyAccountRedis"里面的钱包详细信息。 3. 返回钱包信息。 3. 获取用户支付方式方法 1. &#8195;代码结构:hry/otc/remote/RemoteAdvertisementServiceImpl/getPersonalAsset 2. &#8195;实现内容: 1. 通过数据库查询到用户支付方式。 2. 返回支付方式。 4. 添加广告方法 1. &#8195;代码结构:hry/otc/remote/RemoteAdvertisementServiceImpl/addReleaseAdvertisement 2. &#8195;实现内容: 1. 判断是否为卖,为卖则检查币的数量是否足够。 2. 从redis中查出"otc:coinCodeList"里面所有币种的币种信息。并筛选出此条广告的币种信息。 3. 判断是否为固定价格,如果是固定价格,判断其最低限额和最高限额。 4. 查询广告表是否已经有同币种同方向的广告。如果存在则不能再发。 5. 查询订单表,是否有正在处于交易中的同币种,同方向的广告订单。如果存在则不可以再发。 6. 推送消息队列来更新冷钱包和热钱包数量。<br>`otcService.publish(exDigitalmoneyAccount.getId(), coinNumMax, 2, 1, "", 60); otcService.publish(exDigitalmoneyAccount.getId(), coinNumMax.multiply(new BigDecimal(-1)), 1, 1, "", 60);` 7. 判断用户的支付方式,绑定相应的广告数据到广告对象。 8. 调用"releaseAdvertisementService"的"save"方法。 9. 返回信息。