TaskController.php 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Services\Api\MemberService;
  4. use App\Services\Common\AdvertOrderService;
  5. use App\Services\Common\TradeOrderService;
  6. use App\Services\ConfigService;
  7. use App\Services\RedisService;
  8. use App\Services\UsdtWalletService;
  9. /**
  10. * 任务
  11. * Class TaskController
  12. * @package App\Http\Controllers\Api
  13. */
  14. class TaskController extends webApp
  15. {
  16. /**
  17. * 监听处理存币(转账-进账)
  18. * @return array|mixed
  19. */
  20. public function catchTrcRecharge()
  21. {
  22. $key = md5('OTC');
  23. $checkKey = request()->get('key');
  24. if($checkKey != $key){
  25. return showJson(1003, false);
  26. }
  27. $page = RedisService::get("caches:wallet:rechargePage");
  28. $page = $page? $page : 1;
  29. $members = MemberService::make()->getCatchMember($page, 500);
  30. if(empty($members)){
  31. RedisService::set("caches:wallet:rechargePage", 1, 600);
  32. return showJson(1019, false);
  33. }
  34. $count = 0;
  35. $failedCount = 0;
  36. foreach ($members as $v){
  37. $result = UsdtWalletService::make()->getTrc20RechargeLog($v['id'], $v['trc_address']);
  38. if($result){
  39. $count++;
  40. RedisService::set("caches:wallet:catchRecharge:{$v['id']}_result", $result, 600);
  41. }else{
  42. $failedCount++;
  43. $error = lang(UsdtWalletService::make()->getError());
  44. RedisService::set("caches:wallet:catchRecharge:{$v['id']}_result", $error, 600);
  45. }
  46. }
  47. RedisService::set("caches:wallet:rechargePage", $page+1, 600);
  48. if($count>0){
  49. return showJson(1020, true,['success'=> $count,'fail'=> $failedCount]);
  50. }else{
  51. return showJson(1021, false);
  52. }
  53. }
  54. /**
  55. * 监听处理提币(转账-出账)
  56. * @return array|mixed
  57. */
  58. public function catchTrcTransfer()
  59. {
  60. $key = md5('OTC');
  61. $checkKey = request()->get('key');
  62. if($checkKey != $key){
  63. return showJson(1003, false);
  64. }
  65. $page = RedisService::get("caches:wallet:transferPage");
  66. $page = $page? $page : 1;
  67. $members = MemberService::make()->getCatchMember($page, 500);
  68. if(empty($members)){
  69. RedisService::set("caches:wallet:transferPage", 1, 600);
  70. return showJson(1019, false);
  71. }
  72. $count = 0;
  73. $failedCount = 0;
  74. foreach ($members as $v){
  75. $result = UsdtWalletService::make()->getTrc20TransferLogByUser($v['id'], $v['trc_address']);
  76. if($result){
  77. $count++;
  78. RedisService::set("caches:wallet:catchTransfer:{$v['id']}_result", $result, 600);
  79. }else{
  80. $failedCount++;
  81. $error = lang(UsdtWalletService::make()->getError());
  82. RedisService::set("caches:wallet:catchTransfer:{$v['id']}_result", $error, 600);
  83. }
  84. }
  85. RedisService::set("caches:wallet:transferPage", $page+1, 600);
  86. if($count>0){
  87. return showJson(1020, true,['success'=> $count,'fail'=> $failedCount]);
  88. }else{
  89. return showJson(1021, false);
  90. }
  91. }
  92. /**
  93. * 监听平台TRC出账钱包交易记录(提币回调确认完成交易)
  94. * @return array|mixed
  95. */
  96. public function catchTrcTransferByOtc()
  97. {
  98. $key = md5('OTC');
  99. $checkKey = request()->get('key');
  100. if($checkKey != $key){
  101. return showJson(1003, false);
  102. }
  103. // 出账手续费钱包
  104. $otcOutAddress = ConfigService::make()->getConfigByCode('trc_out_address');
  105. if(empty($otcOutAddress)){
  106. return showJson(2210, false);
  107. }
  108. $cacheKey = "caches:wallets:listen:trc_{$otcOutAddress}";
  109. if(RedisService::get($cacheKey.'_lock')){
  110. return showJson(1025, false);
  111. }
  112. $result = UsdtWalletService::make()->getTrc20TransferLogByOtc($otcOutAddress, 500);
  113. RedisService::set($cacheKey.'_lock', 1, rand(5, 10));
  114. if($result){
  115. RedisService::set($cacheKey, $result, 3600);
  116. return showJson(1020, true,['success'=> count($result)]);
  117. }else{
  118. return showJson(1021, false);
  119. }
  120. }
  121. /**
  122. * 监听平台ERC出账钱包交易记录(提币回调确认完成交易)
  123. * @return array|mixed
  124. */
  125. public function catchErcTransferByOtc()
  126. {
  127. $key = md5('OTC');
  128. $checkKey = request()->get('key');
  129. if($checkKey != $key){
  130. return showJson(1003, false);
  131. }
  132. // 出账手续费钱包
  133. $otcOutAddress = ConfigService::make()->getConfigByCode('trc_out_address');
  134. if(empty($otcOutAddress)){
  135. return showJson(2210, false);
  136. }
  137. $cacheKey = "caches:wallets:listen:erc_{$otcOutAddress}";
  138. if(RedisService::get($cacheKey.'_lock')){
  139. return showJson(1025, false);
  140. }
  141. $result = UsdtWalletService::make()->getErc20TransferLogByOtc($otcOutAddress, 500);
  142. RedisService::set($cacheKey.'_lock', 1, rand(5, 10));
  143. if($result){
  144. RedisService::set($cacheKey, $result, 3600);
  145. return showJson(1020, true,['success'=> count($result)]);
  146. }else{
  147. return showJson(1021, false);
  148. }
  149. }
  150. /**
  151. * 自动归集TRC总钱包
  152. * @return array
  153. * @throws \Tron\Exceptions\TransactionException
  154. * @throws \Tron\Exceptions\TronErrorException
  155. */
  156. public function catchTrcTruggerByOtc()
  157. {
  158. $key = md5('OTC');
  159. $checkKey = request()->get('key');
  160. if($checkKey != $key){
  161. return showJson(1003, false);
  162. }
  163. if($result = UsdtWalletService::make()->usdtTrcTrigger()){
  164. return showJson(1002, true, $result);
  165. }else{
  166. return showJson(UsdtWalletService::make()->getError(), false);
  167. }
  168. }
  169. /**
  170. * 自动归集ERC总钱包
  171. * @return array
  172. * @throws \Tron\Exceptions\TransactionException
  173. * @throws \Tron\Exceptions\TronErrorException
  174. */
  175. public function catchErcTruggerByOtc()
  176. {
  177. $key = md5('OTC');
  178. $checkKey = request()->get('key');
  179. if($checkKey != $key){
  180. return showJson(1003, false);
  181. }
  182. if($result = UsdtWalletService::make()->usdtErcTrigger()){
  183. return showJson(1002, true, $result);
  184. }else{
  185. return showJson(UsdtWalletService::make()->getError(), false);
  186. }
  187. }
  188. /**
  189. * 自动取消派单订单任务
  190. * @return array|mixed
  191. */
  192. public function catchTradeOrderCancel()
  193. {
  194. $key = md5('OTC');
  195. $checkKey = request()->get('key');
  196. if ($checkKey != $key) {
  197. return showJson(1003, false);
  198. }
  199. if($result = TradeOrderService::make()->catchInvalidOrder()){
  200. return showJson(1002, true, $result);
  201. }else{
  202. return showJson(TradeOrderService::make()->getError(), false);
  203. }
  204. }
  205. /**
  206. * 自动取消派单订单任务
  207. * @return array|mixed
  208. */
  209. public function catchAdvertOrderCancel()
  210. {
  211. $key = md5('OTC');
  212. $checkKey = request()->get('key');
  213. if ($checkKey != $key) {
  214. return showJson(1003, false);
  215. }
  216. if($result = AdvertOrderService::make()->catchInvalidOrder()){
  217. return showJson(1002, true, $result);
  218. }else{
  219. return showJson(AdvertOrderService::make()->getError(), false);
  220. }
  221. }
  222. }