TransactionService.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. namespace App\Module\AppGame\Service;
  3. use App\Module\System\Services\OrderNo;
  4. use App\Module\Transaction\Enums\ACCOUNT_TYPE;
  5. use App\Module\Transaction\Enums\TRANSACTION_TYPE;
  6. use Composer\DependencyResolver\Transaction;
  7. /**
  8. * 交易单
  9. */
  10. class TransactionService
  11. {
  12. /**
  13. * @param $coinType
  14. * @param TRANSACTION_TYPE $type
  15. * @param $userId
  16. * @param $amount
  17. * @param $addressId
  18. * @return true
  19. */
  20. public static function createTransaction($coinType, TRANSACTION_TYPE $type, $userId, $amount, $addressId = 0,$toAddress = '')
  21. {
  22. $service = new \App\Module\Transaction\Services\TransactionService();
  23. $amount = $amount * 10000000;
  24. $transactionId = 0;
  25. // 充值单
  26. if ($type->value == 1) {
  27. $transactionId = $service->createRecharge($userId, $coinType, $type, $amount, $addressId);
  28. }
  29. // 转赠单
  30. if ($type->value == TRANSACTION_TYPE::TRANSFER->value) {
  31. $transactionId = $service->createTransfer($userId, $coinType, $type, $amount, $addressId);
  32. }
  33. if ($type->value == TRANSACTION_TYPE::WITHDRAWAL->value) {
  34. $transactionId = $service->createWithdrawal($userId, $coinType, $type, $amount,toAddress: $toAddress);
  35. }
  36. return $transactionId;
  37. }
  38. /**
  39. * @param $userId
  40. * @param $transactionId
  41. * @param $isFirst
  42. * @return array
  43. * 订单详情
  44. */
  45. public static function getDetail($userId, $transactionId)
  46. {
  47. $service = new \App\Module\Transaction\Services\TransactionService();
  48. $transactionData = $service->getDetail($userId, $transactionId);
  49. // 判断交易单类型
  50. $return = [];
  51. $detailData = [];
  52. if ($transactionData->type == TRANSACTION_TYPE::RECHARGE->value) {
  53. $detailData = $service->getRechargeDetail($transactionId);
  54. }
  55. if ($transactionData->type == TRANSACTION_TYPE::TRANSFER->value) {
  56. $detailData = $service->getTransferDetail($transactionId);
  57. }
  58. if ($transactionData->type == TRANSACTION_TYPE::WITHDRAWAL->value) {
  59. $detailData = $service->getWithdrawalDetail($transactionId);
  60. }
  61. $return = [
  62. // deposit_id 充值单ID
  63. 'deposit_id' => $transactionData->id,
  64. // deposit_no 充值单,单号
  65. 'deposit_no' => $transactionData->transaction_no,
  66. // status 状态
  67. 'status' => $transactionData->status,
  68. // tx_hash 交易哈希
  69. 'tx_hash' => $detailData->tx_hash,
  70. // pay_address 付款地址(用户地址)
  71. 'pay_address' => $detailData->from_address,
  72. // receive_address 收款地址
  73. 'receive_address' => $detailData->to_address,
  74. // create_times 创建时间,时间戳(秒)
  75. 'create_times' => $transactionData->created_at,
  76. // ok_times 成交时间
  77. 'ok_times' => $transactionData->ok_time ?? 0,
  78. // amount 金额
  79. 'amount' => $transactionData->amount
  80. ];
  81. return $return;
  82. }
  83. /**
  84. * @param $id
  85. * @param $hash
  86. * @return bool
  87. * 充值单增加hash
  88. */
  89. public static function addTx($id,$hash)
  90. {
  91. $service = new \App\Module\Transaction\Services\TransactionService();
  92. $res = $service->addHash($id, $hash);
  93. if (!$res) {
  94. return false;
  95. }
  96. return true;
  97. }
  98. }