CoinsController.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. /**
  3. * 金币套餐控制器.
  4. * @author zhangjunbao <junbaoz1314@gmail.com>
  5. * @date 2020-01-29 10:13:09
  6. */
  7. declare(strict_types=1);
  8. namespace Modules\Api\Controllers;
  9. use App\Repositories\CoinsRepository;
  10. use App\Repositories\Service\PaymentService;
  11. use App\Repositories\UserRepository;
  12. use Hyperf\Validation\Contract\ValidatorFactoryInterface;
  13. class CoinsController extends BaseController
  14. {
  15. /**
  16. * 金币套餐页面接口
  17. * @param CoinsRepository $coinsRepository
  18. * @return mixed
  19. */
  20. public function lists(CoinsRepository $coinsRepository)
  21. {
  22. $userInfo = make(UserRepository::class)->getUserInfoFromCache($this->getUserId());
  23. $result = $coinsRepository->getUserCoinsPackageData($userInfo['device_type']);
  24. return json_success($result);
  25. }
  26. /**
  27. * 购买金币套餐
  28. * @param CoinsRepository $coinsRepository
  29. * @return mixed
  30. */
  31. public function buycoins(CoinsRepository $coinsRepository)
  32. {
  33. $inputData = $this->getJsonData();
  34. $rules = [
  35. 'coin_id' => 'required|integer',
  36. 'pay_id' => 'required|integer',
  37. 'pay_type' => 'integer',
  38. ];
  39. $validator = make(ValidatorFactoryInterface::class)->make($inputData, $rules);
  40. if ($validator->fails()) {
  41. // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
  42. return json_fail($validator->errors()->first());
  43. }
  44. $inputData['user_id'] = $this->getUserId();
  45. $order = $coinsRepository->createCoinsOrder($inputData);
  46. if ($order) {
  47. //去生成支付链接
  48. $order['order_type'] = 2;
  49. $payLink = make(PaymentService::class)->getGateway($order, $inputData['pay_id']);
  50. if ($payLink) {
  51. $data = array(
  52. 'jump'=>'y',
  53. 'link'=>checkPayUrl($payLink),
  54. );
  55. return json_success($data);
  56. }
  57. }
  58. return json_fail('亲,请重试');
  59. }
  60. }