Home.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\controller\Api;
  4. use app\common\model\AnnouncementModel;
  5. use app\common\model\ProductTransfer;
  6. use app\common\model\ProductOrder;
  7. use app\common\model\ProductPopular;
  8. use app\common\model\ProductArea;
  9. use app\common\model\ProductsModel;
  10. use app\common\model\Region;
  11. use app\common\model\UserModel;
  12. use Exception;
  13. /**
  14. * 首页接口
  15. */
  16. class Home extends Api
  17. {
  18. protected array $noNeedLogin = ['*'];
  19. protected string $lan = '';
  20. public function _initialize()
  21. {
  22. parent::_initialize();
  23. $this->lan = $this->request->getLan();
  24. }
  25. /**
  26. * 首页基础数据
  27. */
  28. public function base(AnnouncementModel $announcement, ProductsModel $productsModel)
  29. {
  30. $resp = [
  31. 'system_name' => __("System name"),
  32. 'banner_list' => [],
  33. 'notice_list' => []
  34. ];
  35. // banner
  36. $resp['banner_list'] = $announcement
  37. ->field('id,'.$this->lan.'_title as title,img_url,createtime')
  38. ->where('type_id', $announcement::Banner)
  39. ->where('status', $announcement::NORMAL)
  40. ->limit(0,10)
  41. ->order('id DESC,weigh desc')
  42. ->select();
  43. // 最新公告
  44. $resp['notice_list'] = $announcement
  45. ->field('id,'.$this->lan.'_title as title,img_url,createtime')
  46. ->where('type_id', $announcement::Announ)
  47. ->where('status', $announcement::NORMAL)
  48. ->limit(0,10)
  49. ->order('id DESC,weigh desc')
  50. ->select();
  51. //分类
  52. $resp['type_list'] = $productsModel->where('status', $productsModel::NORMAL)
  53. ->field('id,'.$this->lan.'_title as title')
  54. ->order('sort desc')
  55. ->select();
  56. $this->success('', $resp);
  57. }
  58. /**
  59. * 首页数据
  60. */
  61. public function all(ProductPopular $productPopular, ProductTransfer $productTransfer)
  62. {
  63. //更新库存
  64. $productPopular::setUpdateStatus();
  65. // 热销
  66. $resp['product_list'] = $productPopular->alias('a')
  67. ->join("product_list b", "a.product_id = b.id", "left")
  68. ->field('a.id,'.'b.'.$this->lan.'_name as name,b.thum as img_url,price,cost_price,stock,num,start_time,end_time')
  69. ->limit(2)
  70. ->where('a.status', '<', $productPopular::STOP)
  71. ->order('a.weigh desc')
  72. ->select();
  73. // 转让
  74. $resp['transfer_list'] = $productTransfer->alias('a')
  75. ->join("product_list b", "a.product_id = b.id", "left")
  76. ->join("user u", "a.user_id = u.id", "left")
  77. ->join("products d", "b.type_id = d.id", "left")
  78. ->field('a.id,'.'b.'.$this->lan.'_name as name,b.thum as img_url,price,u.nickname,d.'.$this->lan.'_title as title')
  79. ->where('a.status', $productTransfer::NORMAL)
  80. ->limit(2)
  81. ->order('a.id DESC')
  82. ->select();
  83. //抵押
  84. $resp['mortgage_list'] = array();
  85. $this->success('', $resp);
  86. }
  87. /**
  88. * 热销详情
  89. * @param int $uid
  90. * @param string $fee
  91. * @param string $txHsh
  92. * @return void
  93. */
  94. public function getPopularInfo(ProductPopular $productPopular, ProductOrder $productOrder)
  95. {
  96. try {
  97. $ids = $this->request->post('ids/d', 0);
  98. if(empty($ids)) throw new Exception(__("Parameter error"));
  99. $times = array();
  100. $order = array();
  101. $info = $productPopular->alias('a')
  102. ->join("product_list b", "a.product_id = b.id", "left")
  103. ->field('a.id,a.product_id,'.'b.'.$this->lan.'_name as name,b.images as img_url,price,cost_price,stock,num,start_time,end_time,b.details')
  104. ->where('a.id', $ids)
  105. ->order('a.weigh desc')
  106. ->find();
  107. if(!empty($info)) {
  108. $times = $productPopular
  109. ->where('product_id', $info['product_id'])
  110. ->field('title,price, start_time, end_time, status')
  111. ->order('id desc')->limit(10)->select();
  112. }
  113. if(!empty($info)) {
  114. $order = $productOrder->alias('a')
  115. ->join("user u", "a.user_id = u.id", "left")
  116. ->where('order_id', $ids)->field('u.address, u.avatar, a.create_time')
  117. ->order('a.id desc')->limit(10)->select();
  118. }
  119. } catch (Exception $e) {
  120. $this->error( $e->getMessage());
  121. }
  122. $this->success('', compact('info', 'times', 'order'));
  123. }
  124. /**
  125. * 转让详情
  126. * @param int $uid
  127. * @param string $fee
  128. * @param string $txHsh
  129. * @return void
  130. */
  131. public function getTransferInfo(ProductTransfer $productTransfer)
  132. {
  133. try {
  134. $ids = $this->request->post('ids/d', 0);
  135. if(empty($ids)) throw new Exception(__("Parameter error"));
  136. $info = $productTransfer->alias('a')
  137. ->join("product_list b", "a.product_id = b.id", "left")
  138. ->field('a.id,a.product_id,a.area_id,'.'b.'.$this->lan.'_name as name,b.images as img_url,price,fees,b.details')
  139. ->where('a.id', $ids)
  140. ->find();
  141. } catch (Exception $e) {
  142. $this->error( $e->getMessage());
  143. }
  144. $this->success('', $info);
  145. }
  146. /**
  147. * 获取地址
  148. * @return void
  149. * @throws Exception
  150. */
  151. public function getProductAddres(ProductArea $productarea)
  152. {
  153. $search = $this->request->post('search/s', '');
  154. $pid = $this->request->post('product_id/d', 0);
  155. if(empty($pid)) $this->error(__("Parameter error"));
  156. $map = array();
  157. if(!empty($search)) $map['address'] = ['like', '%'.$search.'%'];
  158. $list = $productarea
  159. ->field('id,province,city,area,county,address')
  160. ->where('product_id', $pid)
  161. ->where('status', $productarea::NORMAL)
  162. ->where($map)
  163. ->paginate($this->pageSize);
  164. // 提交事务
  165. $this->success('', $list);
  166. }
  167. }