Goods.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace addon\fenxiao\api\controller;
  11. use addon\fenxiao\model\Config as ConfigModel;
  12. use addon\fenxiao\model\Fenxiao as FenxiaoModel;
  13. use addon\fenxiao\model\FenxiaoGoodsCollect as FenxiaoGoodsCollectModel;
  14. use addon\fenxiao\model\FenxiaoGoodsSku as FenxiaoGoodsSkuModel;
  15. use addon\fenxiao\model\FenxiaoLevel;
  16. use app\api\controller\BaseApi;
  17. /**
  18. * 分销商品
  19. */
  20. class Goods extends BaseApi
  21. {
  22. /**
  23. * 分销商品详情
  24. * @param int $id
  25. * @return false|string
  26. */
  27. public function detail($id = 0)
  28. {
  29. $token = $this->checkToken();
  30. if ($token[ 'code' ] < 0) return $this->response($token);
  31. $sku_id = isset($this->params[ 'sku_id' ]) ? $this->params[ 'sku_id' ] : 0;
  32. if (!empty($id)) {
  33. $sku_id = $id;
  34. }
  35. if (empty($sku_id)) {
  36. return $this->response($this->error('', 'REQUEST_SKU_ID'));
  37. }
  38. $config = new ConfigModel();
  39. $words_config = $config->getFenxiaoWordsConfig($this->site_id);
  40. $words_config = $words_config[ 'data' ][ 'value' ];
  41. $data = [
  42. 'words_account' => $words_config[ 'account' ],
  43. 'commission_money' => 0.00
  44. ];
  45. $fenxiao_model = new FenxiaoModel();
  46. $fenxiao_info = $fenxiao_model->getFenxiaoInfo([ [ 'member_id', '=', $this->member_id ] ], "fenxiao_id,level_id")[ 'data' ];
  47. if (empty($fenxiao_info)) return $this->response($this->error());
  48. $fenxiao_goods_sku_model = new FenxiaoGoodsSkuModel();
  49. $data[ 'commission_money' ] = $fenxiao_goods_sku_model->getSkuFenxiaoCommission($sku_id, $fenxiao_info[ 'level_id' ])[ 'data' ];
  50. $basics = $config->getFenxiaoBasicsConfig($this->site_id);
  51. $data[ 'is_commission_money' ] = $basics[ 'data' ][ 'value' ][ 'is_commission_money' ];
  52. return $this->response($this->success($data));
  53. }
  54. /**
  55. * 分销商品分页列表
  56. */
  57. public function page()
  58. {
  59. $token = $this->checkToken();
  60. if ($token[ 'code' ] < 0) return $this->response($token);
  61. $page = isset($this->params[ 'page' ]) ? $this->params[ 'page' ] : 1;
  62. $page_size = isset($this->params[ 'page_size' ]) ? $this->params[ 'page_size' ] : PAGE_LIST_ROWS;
  63. $keyword = isset($this->params[ 'keyword' ]) ? $this->params[ 'keyword' ] : '';//关键词
  64. $category_id = isset($this->params[ 'category_id' ]) ? $this->params[ 'category_id' ] : 0;//分类
  65. $min_price = isset($this->params[ 'min_price' ]) ? $this->params[ 'min_price' ] : 0;//价格区间,小
  66. $max_price = isset($this->params[ 'max_price' ]) ? $this->params[ 'max_price' ] : 0;//价格区间,大
  67. $is_free_shipping = isset($this->params[ 'is_free_shipping' ]) ? $this->params[ 'is_free_shipping' ] : 0;//是否免邮
  68. $order = isset($this->params[ 'order' ]) ? $this->params[ 'order' ] : "create_time";//排序(综合、销量、价格)
  69. $sort = isset($this->params[ 'sort' ]) ? $this->params[ 'sort' ] : "desc";//升序、降序
  70. $goods_id_arr = isset($this->params[ 'goods_id_arr' ]) ? $this->params[ 'goods_id_arr' ] : '';//goods_id数组
  71. $condition = [
  72. [ 'g.is_fenxiao', '=', 1 ],
  73. [ 'g.goods_state', '=', 1 ],
  74. [ 'g.is_delete', '=', 0 ],
  75. [ 'g.site_id', '=', $this->site_id ]
  76. ];
  77. if (!empty($keyword)) {
  78. $condition[] = [ 'g.goods_name|g.keywords', 'like', '%' . $keyword . '%' ];
  79. }
  80. if (!empty($category_id)) {
  81. $condition[] = [ 'g.category_id', 'like', '%,' . $category_id . ',%' ];
  82. }
  83. if (!empty($goods_id_arr)) {
  84. $condition[] = [ 'g.goods_id', 'in', $goods_id_arr ];
  85. }
  86. if ($min_price != "" && $max_price != "") {
  87. $condition[] = [ 'g.discount_price', 'between', [ $min_price, $max_price ] ];
  88. } elseif ($min_price != "") {
  89. $condition[] = [ 'g.discount_price', '>=', $min_price ];
  90. } elseif ($max_price != "") {
  91. $condition[] = [ 'g.discount_price', '<=', $max_price ];
  92. }
  93. if (!empty($is_free_shipping)) {
  94. $condition[] = [ 'g.is_free_shipping', '=', $is_free_shipping ];
  95. }
  96. // 非法参数进行过滤
  97. if ($sort != "desc" && $sort != "asc") {
  98. $sort = "";
  99. }
  100. // 非法参数进行过滤
  101. if ($order != '') {
  102. if ($order != "sale_num" && $order != "discount_price") {
  103. $order = 'gs.create_time';
  104. } elseif ($order != "sale_num") {
  105. $order = 'gs.' . $order;
  106. } else {
  107. $order = 'sale_sort';
  108. }
  109. $order_by = $order . ' ' . $sort;
  110. } else {
  111. $order_by = 'g.sort desc,g.create_time desc';
  112. }
  113. $fenxiao_model = new FenxiaoModel();
  114. $fenxiao_info = $fenxiao_model->getFenxiaoInfo([ [ 'member_id', '=', $this->member_id ] ], "fenxiao_id,level_id")[ 'data' ];
  115. // $fenxiao_level = new FenxiaoLevel();
  116. // $level_info = $fenxiao_level->getLevelInfo([ [ 'level_id', '=', $fenxiao_info[ 'level_id' ] ] ], 'one_rate')[ 'data' ];
  117. $fenxiao_goods_sku_model = new FenxiaoGoodsSkuModel();
  118. $list = $fenxiao_goods_sku_model->getFenxiaoGoodsSkuPageList($condition, $page, $page_size, $order_by);
  119. $fenxiao_goods_collect_model = new FenxiaoGoodsCollectModel();
  120. // 计算佣金
  121. foreach ($list[ 'data' ][ 'list' ] as $k => $v) {
  122. $collection_info = $fenxiao_goods_collect_model->getCollectInfo([
  123. [ 'member_id', '=', $this->member_id ],
  124. [ 'goods_id', '=', $v[ 'goods_id' ] ],
  125. [ 'fenxiao_id', '=', $fenxiao_info[ 'fenxiao_id' ] ],
  126. ], 'collect_id');
  127. // 查询是否关注该分销商品
  128. $collection_info = $collection_info[ 'data' ];
  129. if (!empty($collection_info)) {
  130. $list[ 'data' ][ 'list' ][ $k ][ 'is_collect' ] = 1;
  131. $list[ 'data' ][ 'list' ][ $k ][ 'collect_id' ] = $collection_info[ 'collect_id' ];
  132. } else {
  133. $list[ 'data' ][ 'list' ][ $k ][ 'is_collect' ] = 0;
  134. }
  135. $sku_commission_info = $fenxiao_goods_sku_model->getSkuFenxiaoCommission($v[ 'sku_id' ], $fenxiao_info[ 'level_id' ]);
  136. $list[ 'data' ][ 'list' ][ $k ][ 'commission_money' ] = $sku_commission_info[ 'data' ];
  137. }
  138. return $this->response($list);
  139. }
  140. }