GoodsController.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <?php
  2. namespace addons\Purchase\api\modules\v1\controllers;
  3. use addons\Purchase\common\enums\PurchaseEnum;
  4. use addons\Purchase\common\models\PurchaseCart;
  5. use addons\Purchase\common\models\PurchaseCate;
  6. use addons\Purchase\common\models\PurchaseGoodsCateRelate;
  7. use addons\Purchase\common\models\PurchaseManager;
  8. use common\enums\StatusEnum;
  9. use common\models\goods\Goods;
  10. use Yii;
  11. use api\controllers\OnAuthController;
  12. /**
  13. * 商品控制器
  14. *
  15. * Class DefaultController
  16. * @package addons\Purchase\api\modules\v1\controllers
  17. */
  18. class GoodsController extends OnAuthController
  19. {
  20. public $modelClass = '';
  21. /**
  22. * 不用进行登录验证的方法
  23. *
  24. * 例如: ['index', 'update', 'create', 'view', 'delete']
  25. * 默认全部需要验证
  26. *
  27. * @var array
  28. */
  29. protected $authOptional = ['index','goods-cate','cate-goods-list'];
  30. /**
  31. * 首页
  32. *
  33. * @return string
  34. */
  35. public function actionIndex()
  36. {
  37. return 'Hello world';
  38. }
  39. /**
  40. * @notes:商品分类
  41. * @return mixed|null
  42. * @author: lun
  43. * @Time: 2022/10/24 14:43
  44. */
  45. public function actionGoodsCate()
  46. {
  47. $params = \Yii::$app->request->get();
  48. $params['where'] = [['mall_id'=>$this->mall_id,'parent_id'=>empty($params['cate_id'])?0:$params['cate_id'],'is_show'=>1,'status'=>StatusEnum::ENABLED]];
  49. $params['select'] = 'id,name,pic';
  50. $params['order'] = 'sort asc';
  51. $cate_list['list'] = PurchaseCate::lists($params);
  52. return $this->success('操作成功',$cate_list);
  53. }
  54. /**
  55. * 分类商品列表(选到哪个分类就获取哪个分类的商品,不包括子级分类)
  56. * @return mixed|void
  57. */
  58. public function actionCateGoodsList()
  59. {
  60. $params = \Yii::$app->request->get();
  61. $where[] = ['g.mall_id' => $this->mall_id, 'g.is_on_sale' => 1, 'status' => StatusEnum::ENABLED];
  62. if (!empty($params['type']) && $params['type'] == 'all') {
  63. //查询三级的所有
  64. $goods_cate_list = PurchaseCate::findAll(['parent_id' => $params['cate_id'], 'mall_id' => $this->mall_id, 'is_show' => 1]);
  65. $cate_id_arr = array_column($goods_cate_list, 'id');
  66. $cate_id_arr[] = $params['cate_id'];
  67. } else {
  68. if (empty($params['cate_id'])) {//顶级
  69. $goods_cate_list = PurchaseCate::findAll(['parent_id' => 0, 'mall_id' => $this->mall_id, 'is_show' => 1]);
  70. $cate_id_arr = array_column($goods_cate_list, 'id');
  71. } else {
  72. $cate_id_arr = [$params['cate_id']];
  73. }
  74. }
  75. $goods_cate_relate_list = PurchaseGoodsCateRelate::findAll(['cate_id' => $cate_id_arr]);
  76. $goods_id_arr = array_column($goods_cate_relate_list, 'goods_id');
  77. $where[] = ['g.id' => $goods_id_arr];
  78. $params['where'] = $where;
  79. $params['alias'] = 'g';
  80. $params['select'] = 'g.id,g.goods_name,g.cover_pic,g.price,g.stock,g.attr_groups,g.attr_groups_format,g.is_attr,g.is_show_stock,g.unit,g.goods_source';
  81. $params['order'] = 'sort asc';
  82. $params['with'] = ['attr','extra'];
  83. $goods_list = Goods::listPage($params);
  84. $list = PurchaseCart::getCartList($this->user_id);
  85. $goods_num_arr = [];
  86. foreach ($list as $v) {
  87. $row = json_decode($v, true);
  88. if (isset($goods_num_arr[$row['goods_id']])) {
  89. $goods_num_arr[$row['goods_id']] += $row['num'];
  90. } else {
  91. $goods_num_arr[$row['goods_id']] = $row['num'];
  92. }
  93. }
  94. if (!empty($goods_list['list'])) {
  95. foreach ($goods_list['list'] as &$item) {
  96. $item['member_buy_limit_setting'] = empty($item['extra']['member_buy_limit_setting'])?'':json_decode($item['extra']['member_buy_limit_setting'],true);
  97. unset($item['extra']);
  98. $item['commission'] = 0;//最高可赚钱的佣金,预留字段
  99. $item['num'] = !empty($goods_num_arr[$item['id']]) ? $goods_num_arr[$item['id']] : 0;
  100. $item['status'] = empty($item['stock']) ? 0 : 1;
  101. }
  102. }
  103. // 检查用户申请是否通过
  104. $goods_list['qualification'] = PurchaseManager::check($this->user_id) == false ? 0 : 1;// 是否有资格购买商品
  105. // 获取广告弹窗
  106. $config = Yii::$app->services->setting->addons->get($this->mall_id, PurchaseEnum::ADDONS_NAME, 'basic');
  107. $goods_list['picture'] = $config['picture'] ?? '';
  108. return $this->success('操作成功', $goods_list);
  109. }
  110. }