Index.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. <?php
  2. namespace App\HttpController;
  3. use EasySwoole\Http\AbstractInterface\Controller;
  4. use App\Com\JdSdk;
  5. // 或者使用如下:
  6. /*go(function() {
  7. $index = new Index();
  8. $index->skuState();//状态
  9. $index->skuStock();//有无货
  10. $index->skuPrice();//价格
  11. // 用户可以在这里调用上述协程 API
  12. });
  13. go(function () {
  14. $ret = [];
  15. $wait = new \EasySwoole\Component\WaitGroup();
  16. $wait->add();
  17. // 启动第 1 个协程
  18. go(function () use ($wait, &$ret) {
  19. // 模拟耗时任务 1
  20. \co::sleep(0.1);
  21. $ret[] = time();
  22. $wait->done();
  23. });
  24. $wait->add();
  25. // 启动第 2 个协程
  26. go(function () use ($wait, &$ret) {
  27. // 模拟耗时任务 2
  28. \co::sleep(2);
  29. $ret[] = time();
  30. $wait->done();
  31. });
  32. // 挂起当前协程,等待所有任务完成后恢复
  33. $wait->wait();
  34. // 这里 $ret 包含了 2 个任务执行结果
  35. var_dump($ret);
  36. });*/
  37. class Index extends Controller
  38. {
  39. protected $JdSdk;
  40. protected $response;
  41. public function index()
  42. {
  43. $file = EASYSWOOLE_ROOT.'/vendor/easyswoole/easyswoole/src/Resource/Http/welcome.html';
  44. if(!is_file($file)){
  45. $file = EASYSWOOLE_ROOT.'/src/Resource/Http/welcome.html';
  46. }
  47. $this->response()->write(file_get_contents($file));
  48. }
  49. /**
  50. * 3.5 商品上下架状态接口
  51. *
  52. * @param $skuArr
  53. *
  54. * @return array|bool
  55. */
  56. public function skuState()
  57. {
  58. $wait = new \EasySwoole\Component\WaitGroup();
  59. $wait->add();
  60. // 启动第 1 个协程
  61. go(function () use ($wait) {
  62. // 获取 `POST` 或者 `GET` 提交的所有参数
  63. $data = $this->request()->getRequestParam();
  64. $skuArr = $data['skuArr'];
  65. $this->JdSdk = new JdSdk();
  66. $this->response = $this->JdSdk->api_product_sku_state($skuArr);
  67. //$response = json_decode($response, true);
  68. // =====$response=====
  69. // { "success": true, "resultMessage": "操作成功", "resultCode": "0000", "result": [ { "state": 0, "sku": 5729524 } ], "code": 200 }
  70. //return $response;
  71. $wait->done();
  72. });
  73. $this->response()->write($this->response . PHP_EOL);
  74. }
  75. /**
  76. * 6.2 批量获取库存接口(建议订单详情页、下单使用)
  77. *
  78. * @param $skuNums
  79. * @param $area
  80. * $skuNums商品和数量 此是个String 再重构吧 [{skuId: 569172,num:101}], $area格式:1_0_0 (分别代表1、2、3级地址)
  81. * @return mixed
  82. */
  83. public function skuStock()
  84. {
  85. $wait = new \EasySwoole\Component\WaitGroup();
  86. $wait->add();
  87. // 启动第 1 个协程
  88. go(function () use ($wait) {
  89. // 获取 `POST` 或者 `GET` 提交的所有参数
  90. $data = $this->request()->getRequestParam();
  91. $skuNums = $data['skuNums'];
  92. $area = $data['area'];
  93. $this->JdSdk = new JdSdk();
  94. $response = $this->JdSdk->api_stock_get_new_stock_by_id($skuNums, $area);
  95. //return $response;
  96. $wait->done();
  97. });
  98. $this->response()->write($this->response . PHP_EOL);
  99. }
  100. /**
  101. * TODO 待测 5.2 批量查询协议价价格
  102. * HTTPS请求方式:POST
  103. *
  104. * @return string
  105. */
  106. function skuPrice()
  107. {
  108. $wait = new \EasySwoole\Component\WaitGroup();
  109. $wait->add();
  110. // 启动第 1 个协程
  111. go(function () use ($wait) {
  112. // 获取 `POST` 或者 `GET` 提交的所有参数
  113. $data = $this->request()->getRequestParam();
  114. $skuStr = $data['skuStr'];
  115. $this->JdSdk = new JdSdk();
  116. $response = $this->JdSdk->api_price_get_price($skuStr);
  117. //$this->response()->write($response . PHP_EOL);
  118. //return $response;
  119. $wait->done();
  120. });
  121. $this->response()->write($this->response . PHP_EOL);
  122. }
  123. function test()
  124. {
  125. $this->response()->write('this is test');
  126. }
  127. protected function actionNotFound(?string $action)
  128. {
  129. $this->response()->withStatus(404);
  130. $file = EASYSWOOLE_ROOT.'/vendor/easyswoole/easyswoole/src/Resource/Http/404.html';
  131. if(!is_file($file)){
  132. $file = EASYSWOOLE_ROOT.'/src/Resource/Http/404.html';
  133. }
  134. $this->response()->write(file_get_contents($file));
  135. }
  136. }