Api.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. <?php
  2. /**
  3. * @copyright Copyright (c) 2017 https://www.sapixx.com All rights reserved.
  4. * @license Licensed (http://www.apache.org/licenses/LICENSE-2.0).
  5. * @author pillar<ltmn@qq.com>
  6. * 商品前台API扩展控制器
  7. **/
  8. namespace app\fastshop\widget;
  9. use category\Tree;
  10. class Api{
  11. /**
  12. * 读取栏目API
  13. */
  14. public function cateFind(int $miniapp_id,int $id = 0){
  15. return model('Category')->where(['member_miniapp_id' => $miniapp_id])->where('id',$id)->field('id,parent_id,name,picture,sort')->find();
  16. }
  17. /**
  18. * 读取全部分类
  19. */
  20. public function cateSelectAll(int $miniapp_id){
  21. return model('Category')->where(['member_miniapp_id' => $miniapp_id])->cache(true)->field('id,parent_id,name,picture')->order('sort desc,id desc')->select()->toArray();
  22. }
  23. /**
  24. * 读取子栏目
  25. *
  26. */
  27. public function cateSubClass(int $miniapp_id,int $id = 0){
  28. $result = self::cateSelectAll($miniapp_id);
  29. $tree = new Tree(array('id','parent_id','name','title'));
  30. return $tree->getChild($id,$result);
  31. }
  32. /**
  33. * 读取目录树
  34. *
  35. */
  36. public function cateSubTree(int $miniapp_id,int $id = 0){
  37. $result = self::cateSelectAll($miniapp_id);
  38. $tree = new Tree(array('id','parent_id','name','title'));
  39. return $tree->getTree($result,$id);
  40. }
  41. /**
  42. * ####################################################
  43. * 读取当前商品
  44. * @param integer $id 商品ID
  45. * @return void
  46. */
  47. public function itemFind(int $miniapp_id,int $item_id = 0){
  48. //查找商品SPU
  49. $item_spu = model('Item')->cache(true)->where(['is_sale'=>2,'id' =>$item_id,'member_miniapp_id' => $miniapp_id])->field('id,is_shopping,category_id,name,sell_price,market_price,weight,points,repoints,img,imgs,content')->find();
  50. if(empty($item_spu)){
  51. return false;
  52. }
  53. $item_spu['content'] = $item_spu['content'];
  54. $item_spu['market_price'] = money($item_spu['market_price']);
  55. $item_spu['sell_price'] = money($item_spu['sell_price']);
  56. $item_spu['img'] = $item_spu['img'].'?x-oss-process=style/500';
  57. $item_spu['imgs'] = json_decode($item_spu['imgs'],true);
  58. $date['url'] = url('pages/index/item',['id' => $item_id]);
  59. $date['item'] = $item_spu;
  60. $date['imgs'] = $item_spu['imgs'];
  61. return $date;
  62. }
  63. /**
  64. * 最新最新商品
  65. * @param integer $id 栏目ID
  66. * @param integer $n 每页数量
  67. * @return void
  68. */
  69. public function itemNew(int $miniapp_id,int $num = 10){
  70. $result = model('Item')->where(['is_sale'=>2,'member_miniapp_id' => $miniapp_id])
  71. ->field('id,category_id,name,sell_price,market_price,img')
  72. ->order('sort desc,id desc')->paginate($num,true)->toArray();
  73. if(empty($result)){
  74. return [];
  75. }
  76. return $result['data'];
  77. }
  78. /**
  79. * 读取当前栏目下商品
  80. * @param integer $id 栏目ID
  81. * @param integer $n 每页数量
  82. * @return void
  83. */
  84. public function itemSelectList(int $cate_id,int $miniapp_id,int $num = 10){
  85. $result = model('Item')->where(['is_sale'=>2,'category_id' => $cate_id,'member_miniapp_id' => $miniapp_id])
  86. ->field('id,category_id,name,sell_price,market_price,img')
  87. ->order('sort desc,id desc')->paginate($num,true)->toArray();
  88. if(empty($result)){
  89. return [];
  90. }
  91. return $result['data'];
  92. }
  93. /**
  94. * 读取当前栏目下无限极栏目商品
  95. * @param integer $id 栏目ID
  96. * @param integer $n 每页数量
  97. * @return void
  98. */
  99. public function itemSelectAll(int $cate_id,int $miniapp_id,int $num = 10){
  100. $result = model('Item')->where(['is_sale' => 2,'member_miniapp_id' => $miniapp_id])->whereRaw("FIND_IN_SET({$cate_id},category_path_id)")
  101. ->field('id,category_id,name,sell_price,market_price,img')
  102. ->cache(true)
  103. ->order('sort desc,id desc')->paginate($num,true)->toArray();
  104. if(empty($result)){
  105. return [];
  106. }
  107. return $result['data'];
  108. }
  109. /**
  110. * 搜索商品
  111. * @param string $keyword 搜索关键字
  112. * @param string $ida 要搜索的关键词所在商品目录ID
  113. * @param integer $n 每页数量
  114. * @return void
  115. */
  116. public function itemSearch(string $keyword,int $miniapp_id){
  117. $result = model('Item')->where(['is_sale'=>2,'member_miniapp_id' => $miniapp_id])->whereLike('name',"%$keyword%")->field('id,category_id,name,sell_price,market_price,img')
  118. ->order('sort desc,id desc')->paginate(10,true)->toArray();
  119. return $result['data'];
  120. }
  121. /**
  122. * 读取特定条件的商品
  123. * @param string $keyword 搜索关键字
  124. * @param string $ida 要搜索的关键词所在商品目录ID
  125. * @param integer $n 每页数量
  126. * @return void
  127. */
  128. public function itemTop(int $types,int $miniapp_id,int $num = 10){
  129. $result = model('Item')->where(['is_sale'=>2,'types'=>$types,'member_miniapp_id' => $miniapp_id])->field('id,category_id,name,sell_price,market_price,img')
  130. ->order('sort desc,id desc')->paginate($num,true)->toArray();
  131. return $result['data'];
  132. }
  133. /**
  134. * ###################################################
  135. * 格式化产品链接和钱的输出样式
  136. * @param array $data
  137. * @return void
  138. */
  139. public function formartItem(array $param){
  140. $data = [];
  141. foreach ($param as $key => $value) {
  142. $data[$key] = $value;
  143. $data[$key]['market_price'] = money($value['market_price']);
  144. $data[$key]['sell_price'] = money($value['sell_price']);
  145. $data[$key]['url'] = url('pages/item/index',['id' => $value['id']]);
  146. $data[$key]['img'] = $value['img'].'?x-oss-process=style/300';
  147. $data[$key]['tag_ids'] = empty($value['tag_ids']) ? [] : explode(',',$value['tag_ids']);
  148. }
  149. return $data;
  150. }
  151. /**
  152. * 分类接口数据处理
  153. * @param array $cate
  154. * @return array
  155. */
  156. public function wechatCate(array $cate){
  157. $data = [];
  158. if (!empty($cate)) {
  159. foreach ($cate as $key => $value) {
  160. $data[$key]['cate_id'] = $value['id'];
  161. $data[$key]['parent_id'] = $value['parent_id'];
  162. $data[$key]['title'] = $value['title'];
  163. $data[$key]['name'] = $value['name'];
  164. $data[$key]['picture'] = $value['picture'];
  165. }
  166. }
  167. return $data;
  168. }
  169. }