TaskController.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338
  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. * 监听处理用户TRC子钱包存币(转账-进账)
  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. $cachekey = "caches:wallet:trc_";
  28. $page = RedisService::get($cachekey."rechargePage");
  29. $page = $page? $page : 1;
  30. $members = MemberService::make()->getCatchMember($page, 500);
  31. if(empty($members)){
  32. RedisService::set($cachekey."rechargePage", 1, 600);
  33. return showJson(1019, false);
  34. }
  35. $count = 0;
  36. $failedCount = 0;
  37. foreach ($members as $v){
  38. $result = UsdtWalletService::make()->getTrc20RechargeLog($v['id'], $v['trc_address']);
  39. if($result){
  40. $count++;
  41. RedisService::set($cachekey."catchRecharge:{$v['id']}_result", $result, 600);
  42. }else{
  43. $failedCount++;
  44. $error = lang(UsdtWalletService::make()->getError());
  45. RedisService::set($cachekey."catchRecharge:{$v['id']}_result", $error, 600);
  46. }
  47. }
  48. RedisService::set($cachekey."rechargePage", $page+1, 600);
  49. if($count>0){
  50. return showJson(1020, true,['success'=> $count,'fail'=> $failedCount]);
  51. }else{
  52. return showJson(1021, false);
  53. }
  54. }
  55. /**
  56. * 监听处理用户ERC子钱包存币(转账-进账)
  57. * @return array|mixed
  58. */
  59. public function catchErcRecharge()
  60. {
  61. $key = md5('OTC');
  62. $checkKey = request()->get('key');
  63. if($checkKey != $key){
  64. return showJson(1003, false);
  65. }
  66. $cachekey = "caches:wallet:erc_";
  67. $page = RedisService::get($cachekey."rechargePage");
  68. $page = $page? $page : 1;
  69. $members = MemberService::make()->getCatchMember($page, 500);
  70. if(empty($members)){
  71. RedisService::set($cachekey."rechargePage", 1, 600);
  72. return showJson(1019, false);
  73. }
  74. $count = 0;
  75. $failedCount = 0;
  76. foreach ($members as $v){
  77. $result = UsdtWalletService::make()->getErc20RechargeLog($v['id'], $v['trc_address']);
  78. if($result){
  79. $count++;
  80. RedisService::set($cachekey."catchRecharge:{$v['id']}_result", $result, 600);
  81. }else{
  82. $failedCount++;
  83. $error = lang(UsdtWalletService::make()->getError());
  84. RedisService::set($cachekey."catchRecharge:{$v['id']}_result", $error, 600);
  85. }
  86. }
  87. RedisService::set($cachekey."rechargePage", $page+1, 600);
  88. if($count>0){
  89. return showJson(1020, true,['success'=> $count,'fail'=> $failedCount]);
  90. }else{
  91. return showJson(1021, false);
  92. }
  93. }
  94. /**
  95. * 监听平台TRC平台出账钱包交易记录(提币回调确认完成交易)
  96. * @return array|mixed
  97. */
  98. public function catchTrcTransferByOtc()
  99. {
  100. $key = md5('OTC');
  101. $checkKey = request()->get('key');
  102. if($checkKey != $key){
  103. return showJson(1003, false);
  104. }
  105. // 出账手续费钱包
  106. $otcOutAddress = ConfigService::make()->getConfigByCode('trc_out_address');
  107. if(empty($otcOutAddress)){
  108. return showJson(2210, false);
  109. }
  110. $cacheKey = "caches:wallets:listen:trc_{$otcOutAddress}";
  111. if(RedisService::get($cacheKey.'_lock')){
  112. return showJson(1025, false);
  113. }
  114. $result = UsdtWalletService::make()->getTrc20TransferLogByOtc($otcOutAddress, 1,200);
  115. RedisService::set($cacheKey.'_lock', 1, rand(5, 10));
  116. if($result){
  117. RedisService::set($cacheKey, $result, 3600);
  118. return showJson(1020, true,['success'=> count($result)]);
  119. }else{
  120. return showJson(1021, false);
  121. }
  122. }
  123. /**
  124. * 监听平台TRC平台入账钱包交易记录(提币回调确认完成交易)
  125. * @return array|mixed
  126. */
  127. public function catchTrcTransferByOtcIn()
  128. {
  129. $key = md5('OTC');
  130. $checkKey = request()->get('key');
  131. if($checkKey != $key){
  132. return showJson(1003, false);
  133. }
  134. // 出账手续费钱包
  135. $otcOutAddress = ConfigService::make()->getConfigByCode('trc_out_address');
  136. if(empty($otcOutAddress)){
  137. return showJson(2210, false);
  138. }
  139. $cacheKey = "caches:wallets:listen:trc_in_{$otcOutAddress}";
  140. if(RedisService::get($cacheKey.'_lock')){
  141. return showJson(1025, false);
  142. }
  143. $result = UsdtWalletService::make()->getTrc20TransferLogByOtc($otcOutAddress, 2,200);
  144. RedisService::set($cacheKey.'_lock', 1, rand(5, 10));
  145. if($result){
  146. RedisService::set($cacheKey, $result, 3600);
  147. return showJson(1020, true,['success'=> count($result)]);
  148. }else{
  149. return showJson(1021, false);
  150. }
  151. }
  152. /**
  153. * 监听平台ERC平台出账钱包交易记录(提币回调确认完成交易)
  154. * @return array|mixed
  155. */
  156. public function catchErcTransferByOtc()
  157. {
  158. $key = md5('OTC');
  159. $checkKey = request()->get('key');
  160. if($checkKey != $key){
  161. return showJson(1003, false);
  162. }
  163. // 出账手续费钱包
  164. $otcOutAddress = ConfigService::make()->getConfigByCode('erc_out_address');
  165. if(empty($otcOutAddress)){
  166. return showJson(2210, false);
  167. }
  168. $cacheKey = "caches:wallets:listen:erc_{$otcOutAddress}";
  169. if(RedisService::get($cacheKey.'_lock')){
  170. return showJson(1025, false);
  171. }
  172. $result = UsdtWalletService::make()->getErc20TransferLogByOtc($otcOutAddress,1, 200);
  173. RedisService::set($cacheKey.'_lock', 1, rand(5, 10));
  174. if($result){
  175. RedisService::set($cacheKey, $result, 3600);
  176. return showJson(1020, true,['success'=> count($result)]);
  177. }else{
  178. return showJson(1021, false);
  179. }
  180. }
  181. /**
  182. * 监听平台ERC平台入账钱包交易记录(提币回调确认完成交易)
  183. * @return array|mixed
  184. */
  185. public function catchErcTransferByOtcIn()
  186. {
  187. $key = md5('OTC');
  188. $checkKey = request()->get('key');
  189. if($checkKey != $key){
  190. return showJson(1003, false);
  191. }
  192. // 出账手续费钱包
  193. $otcOutAddress = ConfigService::make()->getConfigByCode('erc_out_address');
  194. if(empty($otcOutAddress)){
  195. return showJson(2210, false);
  196. }
  197. $cacheKey = "caches:wallets:listen:erc_in_{$otcOutAddress}";
  198. if(RedisService::get($cacheKey.'_lock')){
  199. return showJson(1025, false);
  200. }
  201. $result = UsdtWalletService::make()->getErc20TransferLogByOtc($otcOutAddress,2, 200);
  202. RedisService::set($cacheKey.'_lock', 1, rand(5, 10));
  203. if($result){
  204. RedisService::set($cacheKey, $result, 3600);
  205. return showJson(1020, true,['success'=> count($result)]);
  206. }else{
  207. return showJson(1021, false);
  208. }
  209. }
  210. /**
  211. * 自动归集TRC总钱包
  212. * @return array
  213. * @throws \Tron\Exceptions\TransactionException
  214. * @throws \Tron\Exceptions\TronErrorException
  215. */
  216. public function catchTrcTruggerByOtc()
  217. {
  218. $key = md5('OTC');
  219. $checkKey = request()->get('key');
  220. if($checkKey != $key){
  221. return showJson(1003, false);
  222. }
  223. if($result = UsdtWalletService::make()->usdtTrcTrigger()){
  224. return showJson(1002, true, $result);
  225. }else{
  226. return showJson(UsdtWalletService::make()->getError(), false);
  227. }
  228. }
  229. /**
  230. * 自动归集ERC总钱包
  231. * @return array
  232. * @throws \Tron\Exceptions\TransactionException
  233. * @throws \Tron\Exceptions\TronErrorException
  234. */
  235. public function catchErcTruggerByOtc()
  236. {
  237. $key = md5('OTC');
  238. $checkKey = request()->get('key');
  239. if($checkKey != $key){
  240. return showJson(1003, false);
  241. }
  242. if($result = UsdtWalletService::make()->usdtErcTrigger()){
  243. return showJson(1002, true, $result);
  244. }else{
  245. return showJson(UsdtWalletService::make()->getError(), false);
  246. }
  247. }
  248. /**
  249. * 自动取消派单订单任务
  250. * @return array|mixed
  251. */
  252. public function catchTradeOrderCancel()
  253. {
  254. $key = md5('OTC');
  255. $checkKey = request()->get('key');
  256. if ($checkKey != $key) {
  257. return showJson(1003, false);
  258. }
  259. if($result = TradeOrderService::make()->catchInvalidOrder()){
  260. return showJson(1002, true, $result);
  261. }else{
  262. return showJson(TradeOrderService::make()->getError(), false);
  263. }
  264. }
  265. /**
  266. * 自动取消派单订单任务
  267. * @return array|mixed
  268. */
  269. public function catchAdvertOrderCancel()
  270. {
  271. $key = md5('OTC');
  272. $checkKey = request()->get('key');
  273. if ($checkKey != $key) {
  274. return showJson(1003, false);
  275. }
  276. if($result = AdvertOrderService::make()->catchInvalidOrder()){
  277. return showJson(1002, true, $result);
  278. }else{
  279. return showJson(AdvertOrderService::make()->getError(), false);
  280. }
  281. }
  282. /**
  283. * 派单订单状态通知
  284. * @return array|mixed
  285. */
  286. public function catchTradeOrderNotify()
  287. {
  288. $key = md5('OTC');
  289. $checkKey = request()->get('key');
  290. if ($checkKey != $key) {
  291. return showJson(1003, false);
  292. }
  293. if($result = TradeOrderService::make()->catchOrderNotify()){
  294. return showJson(1002, true, $result);
  295. }else{
  296. return showJson(TradeOrderService::make()->getError(), false);
  297. }
  298. }
  299. }