Goods.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 上海牛之云网络科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
  9. * 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
  10. * =========================================================
  11. */
  12. namespace addon\servicer\servicer\controller;
  13. use addon\servicer\model\Dialogue;
  14. use app\model\goods\Goods as GoodsModel;
  15. use app\model\goods\GoodsBrowse as GoodsBrowseModel;
  16. /**
  17. * 商品相关
  18. * Class Goods
  19. * @package addon\servicer\servicer\controller
  20. */
  21. class Goods extends BaseServicer
  22. {
  23. /**
  24. * 商品列表
  25. */
  26. public function lists()
  27. {
  28. if (request()->isAjax()) {
  29. $page = input('page', 1);
  30. $page_size = input('page_size', PAGE_LIST_ROWS);
  31. $search_text = input('search_text', '');
  32. $goods_state = input('goods_state', '');
  33. $goods_class = input('goods_class', '');
  34. $condition = [['is_delete', '=', 0]];
  35. if (!empty($this->site_id)) {
  36. $condition[] = ['site_id', '=', $this->site_id];
  37. }
  38. if (!empty($search_text)) {
  39. $condition[] = ['goods_name|keywords', 'like', '%' . $search_text . '%'];
  40. }
  41. if ($goods_state !== '') {
  42. $condition[] = ['goods_state', '=', $goods_state];
  43. }
  44. if (!empty($goods_class)) {
  45. $condition[] = ['goods_class', '=', $goods_class];
  46. }
  47. $order_by = 'create_time desc, goods_id desc';
  48. $field = [
  49. 'goods_id, goods_name, goods_stock, sale_num, price, goods_state, sku_id, goods_image'
  50. ];
  51. $goods_model = new GoodsModel();
  52. $res = $goods_model->getGoodsPageList($condition, $page, $page_size, $order_by, $field);
  53. return $res;
  54. }
  55. }
  56. /**
  57. * 商品详情
  58. */
  59. public function detail()
  60. {
  61. if (request()->isAjax()) {
  62. $sku_id = input('sku_id', 0);
  63. $dialogue_id = input('dialogue_id', 0);
  64. $relate_promotion = [];
  65. $goods_model = new GoodsModel();
  66. if (empty($dialogue_id) && empty($sku_id)) {
  67. return $goods_model->error('', 'PARAMETER_ERROR');
  68. }
  69. if (!empty($dialogue_id)) {
  70. $dialogue_model = new Dialogue();
  71. $dialogue_info = $dialogue_model->getInfo([
  72. ['id', '=', $dialogue_id],
  73. ['content_type', '=', Dialogue::CONTENTTYPE_GOODSKU],
  74. ], 'goods_sku_id, relate_data')['data'];
  75. if (empty($dialogue_info)) {
  76. return $goods_model->error('', '消息记录不存在');
  77. }
  78. $sku_id = $dialogue_info['goods_sku_id'];
  79. $relate_promotion = $dialogue_info['relate_data_parse'];
  80. }
  81. if (empty($sku_id)) {
  82. return $goods_model->error('', 'PARAMETER_ERROR');
  83. }
  84. $goods_model = new GoodsModel();
  85. $detail = $goods_model->getGoodsSkuDetail($sku_id)['data'];
  86. // 查询当前商品参与的营销活动信息
  87. $goods_promotion = event('GoodsPromotion', ['goods_id' => $detail['goods_id'], 'sku_id' => $sku_id]);
  88. // 当前咨询的商品活动信息
  89. $curr_promotion = [];
  90. if (!empty($goods_promotion) && !empty($relate_promotion)) {
  91. foreach ($goods_promotion as $val) {
  92. if ($val['promotion_type'] === $relate_promotion['promotion_name']) {
  93. $curr_promotion = $val;
  94. }
  95. }
  96. }
  97. $detail['goods_promotion'] = $goods_promotion;
  98. $detail['curr_promotion'] = $curr_promotion;
  99. $detail['relate_promotion'] = $relate_promotion;
  100. return $goods_model->success($detail);
  101. }
  102. }
  103. /**
  104. * 会员商品浏览记录
  105. */
  106. public function memberGoodsBrowse()
  107. {
  108. if (request()->isAjax()) {
  109. $page = input('page', 1);
  110. $page_size = input('page_size', PAGE_LIST_ROWS);
  111. $search_text = input('search_text', '');
  112. $member_id = input('member_id', 0);
  113. $condition = [['gb.member_id', '=', $member_id]];
  114. if (!empty($this->site_id)) {
  115. $condition[] = ['gb.site_id', '=', $this->site_id];
  116. }
  117. if (!empty($search_text)) {
  118. $condition[] = ['gs.sku_name|gs.keywords', 'like', '%' . $search_text . '%'];
  119. }
  120. $order = 'gb.browse_time desc, gb.id desc';
  121. $field = [
  122. 'gb.browse_time',
  123. 'gs.sku_id, gs.goods_id, gs.sku_name, gs.sku_image, gs.price, gs.goods_state, gs.stock, gs.sale_num'
  124. ];
  125. $alias = 'gb';
  126. $join = [
  127. ['goods_sku gs', 'gs.sku_id = gb.sku_id', 'left']
  128. ];
  129. $goods_browse_model = new GoodsBrowseModel();
  130. return $goods_browse_model->getBrowsePageList($condition, $page, $page_size, $order, $field, $alias, $join);
  131. }
  132. }
  133. }