| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- <?php
- namespace addons\Purchase\api\modules\v1\controllers;
- use addons\Purchase\common\enums\PurchaseEnum;
- use addons\Purchase\common\models\PurchaseCart;
- use addons\Purchase\common\models\PurchaseCate;
- use addons\Purchase\common\models\PurchaseGoodsCateRelate;
- use addons\Purchase\common\models\PurchaseManager;
- use common\enums\StatusEnum;
- use common\models\goods\Goods;
- use Yii;
- use api\controllers\OnAuthController;
- /**
- * 商品控制器
- *
- * Class DefaultController
- * @package addons\Purchase\api\modules\v1\controllers
- */
- class GoodsController extends OnAuthController
- {
- public $modelClass = '';
- /**
- * 不用进行登录验证的方法
- *
- * 例如: ['index', 'update', 'create', 'view', 'delete']
- * 默认全部需要验证
- *
- * @var array
- */
- protected $authOptional = ['index','goods-cate','cate-goods-list'];
- /**
- * 首页
- *
- * @return string
- */
- public function actionIndex()
- {
- return 'Hello world';
- }
- /**
- * @notes:商品分类
- * @return mixed|null
- * @author: lun
- * @Time: 2022/10/24 14:43
- */
- public function actionGoodsCate()
- {
- $params = \Yii::$app->request->get();
- $params['where'] = [['mall_id'=>$this->mall_id,'parent_id'=>empty($params['cate_id'])?0:$params['cate_id'],'is_show'=>1,'status'=>StatusEnum::ENABLED]];
- $params['select'] = 'id,name,pic';
- $params['order'] = 'sort asc';
- $cate_list['list'] = PurchaseCate::lists($params);
- return $this->success('操作成功',$cate_list);
- }
- /**
- * 分类商品列表(选到哪个分类就获取哪个分类的商品,不包括子级分类)
- * @return mixed|void
- */
- public function actionCateGoodsList()
- {
- $params = \Yii::$app->request->get();
- $where[] = ['g.mall_id' => $this->mall_id, 'g.is_on_sale' => 1, 'status' => StatusEnum::ENABLED];
- if (!empty($params['type']) && $params['type'] == 'all') {
- //查询三级的所有
- $goods_cate_list = PurchaseCate::findAll(['parent_id' => $params['cate_id'], 'mall_id' => $this->mall_id, 'is_show' => 1]);
- $cate_id_arr = array_column($goods_cate_list, 'id');
- $cate_id_arr[] = $params['cate_id'];
- } else {
- if (empty($params['cate_id'])) {//顶级
- $goods_cate_list = PurchaseCate::findAll(['parent_id' => 0, 'mall_id' => $this->mall_id, 'is_show' => 1]);
- $cate_id_arr = array_column($goods_cate_list, 'id');
- } else {
- $cate_id_arr = [$params['cate_id']];
- }
- }
- $goods_cate_relate_list = PurchaseGoodsCateRelate::findAll(['cate_id' => $cate_id_arr]);
- $goods_id_arr = array_column($goods_cate_relate_list, 'goods_id');
- $where[] = ['g.id' => $goods_id_arr];
- $params['where'] = $where;
- $params['alias'] = 'g';
- $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';
- $params['order'] = 'sort asc';
- $params['with'] = ['attr','extra'];
- $goods_list = Goods::listPage($params);
- $list = PurchaseCart::getCartList($this->user_id);
- $goods_num_arr = [];
- foreach ($list as $v) {
- $row = json_decode($v, true);
- if (isset($goods_num_arr[$row['goods_id']])) {
- $goods_num_arr[$row['goods_id']] += $row['num'];
- } else {
- $goods_num_arr[$row['goods_id']] = $row['num'];
- }
- }
- if (!empty($goods_list['list'])) {
- foreach ($goods_list['list'] as &$item) {
- $item['member_buy_limit_setting'] = empty($item['extra']['member_buy_limit_setting'])?'':json_decode($item['extra']['member_buy_limit_setting'],true);
- unset($item['extra']);
- $item['commission'] = 0;//最高可赚钱的佣金,预留字段
- $item['num'] = !empty($goods_num_arr[$item['id']]) ? $goods_num_arr[$item['id']] : 0;
- $item['status'] = empty($item['stock']) ? 0 : 1;
- }
- }
- // 检查用户申请是否通过
- $goods_list['qualification'] = PurchaseManager::check($this->user_id) == false ? 0 : 1;// 是否有资格购买商品
- // 获取广告弹窗
- $config = Yii::$app->services->setting->addons->get($this->mall_id, PurchaseEnum::ADDONS_NAME, 'basic');
- $goods_list['picture'] = $config['picture'] ?? '';
- return $this->success('操作成功', $goods_list);
- }
- }
|