Modules_Api_Controllers_VipController.proxy.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. /**
  3. * VIP套餐控制器.
  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\Service\PaymentService;
  10. use App\Repositories\VipRepository;
  11. use Hyperf\Validation\Contract\ValidatorFactoryInterface;
  12. use App\Repositories\UserRepository;
  13. class VipController 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. * VIP套餐信息
  26. * @param VipRepository $vipRepository
  27. * @return mixed
  28. */
  29. public function lists(VipRepository $vipRepository)
  30. {
  31. $userInfo = make(UserRepository::class)->getUserInfoFromCache($this->getUserId());
  32. $result = ['plans' => [], 'ad' => []];
  33. $packages = $vipRepository->getVipPackage($userInfo['coins'], $userInfo['device_type']);
  34. $result['plans'] = $packages;
  35. return json_success($result);
  36. }
  37. /**
  38. * 购买vip套餐
  39. * @param VipRepository $vipRepository
  40. * @return mixed
  41. */
  42. public function buyvip(VipRepository $vipRepository)
  43. {
  44. $inputData = $this->getJsonData();
  45. $rules = ['vip_id' => 'required|integer', 'pay_id' => 'required|integer', 'pay_type' => 'required|integer'];
  46. $validator = make(ValidatorFactoryInterface::class)->make($inputData, $rules);
  47. if ($validator->fails()) {
  48. // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
  49. return json_fail($validator->errors()->first());
  50. }
  51. $inputData['user_id'] = $this->getUserId();
  52. $inputData['order_type'] = 1;
  53. if ($inputData['pay_type'] == 4) {
  54. $order = $vipRepository->createCoinVipOrder($inputData);
  55. if ($order) {
  56. return json_success('vip购买成功');
  57. }
  58. } else {
  59. $order = $vipRepository->createVipOrder($inputData);
  60. if ($order) {
  61. //去生成支付链接
  62. $payLink = make(PaymentService::class)->getGateway($order, $inputData['pay_id']);
  63. if (!empty($payLink)) {
  64. $data = array('jump' => 'y', 'link' => checkPayUrl($payLink));
  65. return json_success($data);
  66. }
  67. }
  68. }
  69. return json_fail('亲,请重试');
  70. }
  71. /**
  72. * VIP结构的jdata独立给android的接口
  73. * @return mixed
  74. */
  75. public function vipJdata()
  76. {
  77. $vipRepo = make(VipRepository::class);
  78. $userInfo = make(UserRepository::class)->getUserInfoData($this->getUserId());
  79. $packages = $vipRepo->getVipPackage($userInfo['coins']);
  80. $result = [];
  81. if (!empty($packages)) {
  82. foreach ($packages as $item) {
  83. $result[] = $item['jdata'];
  84. }
  85. }
  86. return json_success($result);
  87. }
  88. }