Modules_Api_Controllers_CoinsController.proxy.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. use \Hyperf\Di\Aop\ProxyTrait;
  16. use \Hyperf\Di\Aop\PropertyHandlerTrait;
  17. function __construct()
  18. {
  19. if (method_exists(parent::class, '__construct')) {
  20. parent::__construct(...func_get_args());
  21. }
  22. $this->__handlePropertyHandler(__CLASS__);
  23. }
  24. /**
  25. * 金币套餐页面接口
  26. * @param CoinsRepository $coinsRepository
  27. * @return mixed
  28. */
  29. public function lists(CoinsRepository $coinsRepository)
  30. {
  31. $userInfo = make(UserRepository::class)->getUserInfoFromCache($this->getUserId());
  32. $result = $coinsRepository->getUserCoinsPackageData($userInfo['device_type']);
  33. return json_success($result);
  34. }
  35. /**
  36. * 购买金币套餐
  37. * @param CoinsRepository $coinsRepository
  38. * @return mixed
  39. */
  40. public function buycoins(CoinsRepository $coinsRepository)
  41. {
  42. $inputData = $this->getJsonData();
  43. $rules = ['coin_id' => 'required|integer', 'pay_id' => 'required|integer', 'pay_type' => 'integer'];
  44. $validator = make(ValidatorFactoryInterface::class)->make($inputData, $rules);
  45. if ($validator->fails()) {
  46. // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
  47. return json_fail($validator->errors()->first());
  48. }
  49. $inputData['user_id'] = $this->getUserId();
  50. $order = $coinsRepository->createCoinsOrder($inputData);
  51. if ($order) {
  52. //去生成支付链接
  53. $order['order_type'] = 2;
  54. $payLink = make(PaymentService::class)->getGateway($order, $inputData['pay_id']);
  55. if ($payLink) {
  56. $data = array('jump' => 'y', 'link' => checkPayUrl($payLink));
  57. return json_success($data);
  58. }
  59. }
  60. return json_fail('亲,请重试');
  61. }
  62. }