| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- <?php
- namespace addons\BlindBox\api\modules\v1\controllers;
- use addons\BlindBox\common\enums\BlindBoxEnum;
- use addons\BlindBox\common\models\BlindBoxBonusLog;
- use addons\BlindBox\common\models\BlindBoxBonusLogDetail;
- use addons\BlindBox\common\models\BlindBoxCate;
- use addons\BlindBox\common\models\BlindBoxGoods;
- use addons\BlindBox\common\models\BlindBoxNotice;
- use addons\BlindBox\common\models\BlindBoxUser;
- use common\enums\AddonsEnum;
- use common\enums\StatusEnum;
- use common\models\common\AddonsMarketingSetting;
- use common\models\goods\Goods;
- use common\models\user\User;
- use Yii;
- use api\controllers\OnAuthController;
- use common\helpers\ArrayHelper;
- /**
- * 默认控制器
- *
- * Class DefaultController
- * @package addons\BlindBox\api\modules\v1\controllers
- */
- class DefaultController extends OnAuthController
- {
- public $modelClass = '';
- /**
- * 不用进行登录验证的方法
- *
- * 例如: ['index', 'update', 'create', 'view', 'delete']
- * 默认全部需要验证
- *
- * @var array
- */
- protected $authOptional = ['index'];
- /**
- * 装修首页
- * @return string
- */
- public function actionIndex()
- {
- $data = AddonsMarketingSetting::getOne([['mall_id' => $this->mall_id], ['addons_name' => AddonsEnum::ADDONS_NAME_BLIND_BOX], ['status' => StatusEnum::ENABLED]]);
- return $this->success('', $data ?? []);
- }
- public function actionUserData()
- {
- $data = BlindBoxUser::getOne([
- ['mall_id' => $this->mall_id],
- ['user_id' => $this->user_id],
- ['status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]],
- ], true, [], false, 'frozen_commission,total_commission,remaining_pay_money');
- return $this->success('', $data ?? ['frozen_commission'=>0,'total_commission'=>0,'remaining_pay_money'=>0]);
- }
- //奖金明细
- public function actionBonusLog()
- {
- $params = \Yii::$app->request->get();
- $params['where'][] = ['=', 'mall_id', $this->mall_id];
- $params['where'][] = ['=', 'user_id', $this->user_id];
- $params['where'][] = ['in', 'status', [StatusEnum::ENABLED, StatusEnum::DISABLED]];
- $params['where'][] = ['is_feedback'=>BlindBoxEnum::NO_FEEDBACK];
- $params['limit'] = 10;
- $params['order'] = 'id DESC';
- $params['select'] = 'id,mall_id,user_id,order_no,total_times,divided_times,divided_money,created_at,contribution';
- $pageData = BlindBoxBonusLog::listPage($params, false);
- if ($pageData === false) return $this->error(BlindBoxCate::getStaticError());
- if (!empty($pageData['list'])) {
- $user_id = array_column($pageData['list'], 'user_id');
- $user_list = User::lists(['where' => [['id' => $user_id]], 'index' => 'id', 'select' => 'id,nickname,avatar_url,mobile']);
- foreach ($pageData['list'] as &$item) {
- $item['nickname'] = $item['avatar_url'] = $item['mobile'] = '';
- if (isset($user_list[$item['user_id']])) {
- $item['nickname'] = $user_list[$item['user_id']]['nickname'];
- $item['avatar_url'] = $user_list[$item['user_id']]['avatar_url'];
- $item['mobile'] = $user_list[$item['user_id']]['mobile'];
- }
- $item['type'] = $item['order_no']['0'];
- }
- }
- return $this->success('操作成功', $pageData);
- }
- //奖金详情
- public function actionBonusLogDetail()
- {
- $params = \Yii::$app->request->get();
- $res = Yii::$app->services->validate->validate($params, [
- [['bonus_log_id'], 'required', 'message' => '请选择具体分红记录'],
- ]);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $params['where'][] = ['mall_id' => $this->mall_id];
- $params['where'][] = ['bonus_log_id' => $params['bonus_log_id']];
- $params['where'][] = ['in', 'status', [StatusEnum::ENABLED, StatusEnum::DISABLED]];
- $params['where'][] = ['is_feedback'=>BlindBoxEnum::NO_FEEDBACK];
- $params['limit'] = 10;
- $params['order'] = 'id DESC';
- $params['select'] = 'id,mall_id,user_id,order_no,bonus_log_id,total_contribution,contribution,total_bonus,order_bonus,is_settlement,created_at';
- $pageData = BlindBoxBonusLogDetail::listPage($params, false);
- if ($pageData === false) return $this->error(BlindBoxCate::getStaticError());
- if (!empty($pageData['list'])) {
- $user_id = array_column($pageData['list'], 'user_id');
- $user_list = User::lists(['where' => [['id' => $user_id]], 'index' => 'id', 'select' => 'id,nickname,avatar_url,mobile']);
- foreach ($pageData['list'] as &$item) {
- $item['nickname'] = $item['avatar_url'] = $item['mobile'] = '';
- if (isset($user_list[$item['user_id']])) {
- $item['nickname'] = $user_list[$item['user_id']]['nickname'];
- $item['avatar_url'] = $user_list[$item['user_id']]['avatar_url'];
- $item['mobile'] = $user_list[$item['user_id']]['mobile'];
- }
- }
- }
- $pageData['is_settlement_map'] = BlindBoxEnum::getIsSettlementMap();
- return $this->success('操作成功', $pageData);
- }
- //通知列表
- public function actionNoticeList()
- {
- $params = \Yii::$app->request->get();
- $params['where'][] = ['mall_id' => $this->mall_id];
- $params['where'][] = ['=', 'user_id', $this->user_id];
- $params['where'][] = ['in', 'status', [StatusEnum::ENABLED, StatusEnum::DISABLED]];
- $params['limit'] = 10;
- $params['order'] = 'id DESC';
- $params['select'] = 'id,content,created_at';
- $pageData = BlindBoxNotice::listPage($params, false);
- if ($pageData === false) return $this->error(BlindBoxCate::getStaticError());
- return $this->success('操作成功', $pageData);
- }
- //商品列表
- public function actionGoodsList()
- {
- $params = \Yii::$app->request->get();
- $where[] = ['mall_id' => $this->mall_id];
- $where[] = ['status' => StatusEnum::ENABLED];
- if (!empty($params['cate_id'])) $where[] = ['cate_id' => $params['cate_id']];
- $is_bool=false;
- $goods_id = [];
- if(!empty($params['goods_id'])){
- $is_bool = true;
- $goods_id = explode(',',$params['goods_id']);
- if(!empty($goods_id)){
- $list = Goods::lists(['where'=>[['mall_id'=>$this->mall_id],['status'=>StatusEnum::ENABLED],['id'=>$goods_id],['is_on_sale'=>1]]]);
- $goods_id = array_column($list,'id');
- // $where[] = ['goods_id'=>$goods_id];
- }
- }
- if(!empty($params['goods_name'])){
- $list = Goods::lists(['where'=>[['mall_id'=>$this->mall_id],['status'=>StatusEnum::ENABLED],['like','goods_name',trim($params['goods_name'])],['is_on_sale'=>1]]]);
- $goods_ids = array_column($list,'id');
- if($is_bool){
- $goods_id = array_intersect($goods_id,$goods_ids);
- $where[] = ['goods_id'=>$goods_id];
- }else{
- $where[] = ['goods_id'=>$goods_ids];
- }
- }else{
- if($is_bool){
- $where[] = ['goods_id'=>$goods_id];
- }
- }
- $params['where'] = $where;
- $params['select'] = 'id,goods_id';
- $params['with'] = ['goods' => function ($query) {
- $select = 'id,goods_name,price,cover_pic,bannar_pic,is_attr,attr_groups,attr_groups_format,is_on_sale,status';
- $query->select($select)->with(['attr'=>function($query){
- $select = 'id,goods_id ,name,sign_id,stock,price,original_price,goods_no,weight,pic_url';
- $query->select($select);
- }]);
- }];
- $params['order'] = 'id desc';
- $list = BlindBoxGoods::listPage($params, false);
- // 剔除下架和删除的商品
- $goods_list = array_values(array_filter($list['list'], function($item) {
- return $item['goods']['is_on_sale'] && $item['goods']['status'];
- }));
- $list['list'] = $goods_list;
- return $this->success('操作成功', $list);
- }
- }
|