request->isAjax) { $where[] = ['=', 'mall_id', $this->mall_id]; $where[] = ['in', 'status', [StatusEnum::DISABLED, StatusEnum::ENABLED]]; $params = [ 'where' => $where, 'order' => 'level desc' ]; $page_data = CloudStockBonusPoolLevel::listPage($params, false); if($page_data==false) return $this->error(CloudStockBonusPoolLevel::getStaticError()); return $this->success('操作成功', $page_data); } return $this->render($this->action->id, []); } public function actionEdit() { try { $request = Yii::$app->request; if ($request->isAjax) { if ($request->isGet) { $id = Yii::$app->request->get('id', ''); $data = CloudStockBonusPoolLevel::getOne([['id' => $id], ['mall_id' => $this->mall_id], ['status' => [StatusEnum::DISABLED, StatusEnum::ENABLED]]], true); if (!empty($data)) { $data['checked_condition_values'] = json_decode($data['checked_condition_values'], true); $data['checked_condition_keys'] = json_decode($data['checked_condition_keys'], true); $data['cloud_stock_level'] = json_decode($data['cloud_stock_level'], true); $checked_condition_values = array_column($data['checked_condition_values'],'key'); if(!isset($checked_condition_values[4])){ $data['checked_condition_values'][]=['key'=>4,'value'=>['direct_people'=>'','direct_level'=>''],]; } // 解析被选中的商品 $goods_setting = Json::decode($data['goods_setting'],true) ?? []; if ($goods_setting) { $goods_ids = array_column($goods_setting, 'goods_id'); $goods_list = Goods::lists(['where'=>[['id'=>$goods_ids]],'select'=>'id,cover_pic,goods_name as name,price','index'=>'id']); foreach ($goods_setting as &$item) { if (empty($item['is_percent'])) $item['is_percent'] = 0; $item['goods'] = $goods_list[$item['goods_id']] ?? []; } } $data['goods_setting'] = $goods_setting; $levels = CloudStockBonusPoolLevel::lists([ 'where'=>[ ['mall_id' => $this->mall_id], ['status' => StatusEnum::ENABLED], ['<=','level',$data['level']] ], 'select'=>'level,name' ]); $data['levels'] = $levels; } return $this->success('操作成功', $data); } if ($request->isPost) { $params = Yii::$app->request->post(); $res = Yii::$app->services->validate->validate($params, [ [['level'], 'required','message'=>'请选择权重'], [['name'], 'required','message'=>'级名称不能为空'], [['goods_setting'], 'required','message'=>'计入分红池商品不能为空'], [['id', 'status', 'condition_type', 'upgrade_type_condition', 'checked_condition_keys','cloud_stock_level', 'checked_condition_values','goods_setting'], 'safe'] ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $params['mall_id'] = $this->mall_id; foreach ($params['goods_setting'] as $key => $item) { unset($params['goods_setting'][$key]['goods']); } $params['goods_setting'] = Json::encode($params['goods_setting']); $params['cloud_stock_level'] = Json::encode($params['cloud_stock_level']); $res = CloudStockBonusPoolLevel::setData($params); if ($res === false) return $this->error(CloudStockBonusPoolLevel::getStaticError()); return $this->success('操作成功'); } } } catch (\Exception $e) { return $this->error($e->getMessage(), []); } return $this->render('edit'); } public function actionUpdateStatus() { $params = Yii::$app->request->post(); if (!in_array($params['status'], [StatusEnum::ENABLED, StatusEnum::DISABLED])) { return $this->error('参数不对'); } $params['mall_id'] = $this->mall_id; $res = CloudStockBonusPoolLevel::setData($params); if ($res === false) return $this->error(CloudStockBonusPoolLevel::getStaticError()); return $this->success('操作成功'); } public function actionDel() { $params = Yii::$app->request->post(); $params['mall_id'] = $this->mall_id; $params['status'] = StatusEnum::DELETE; $res = CloudStockBonusPoolLevel::setData($params); if ($res === false) return $this->error(CloudStockBonusPoolLevel::getStaticError()); return $this->success('操作成功'); } //不用验证权限 public function actionGetCanChooseLevelList() { $params = Yii::$app->request->get(); $level = isset($params['level']) ? $params['level'] : null; $can_choose_list = CloudStockBonusPoolLevel::find()->select('level')->where([ 'mall_id' => $this->mall_id, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED], ])->column(); $new_list = []; for ($i = 1; $i <= 10; $i++) { $can_choose = 1; //已经存在的等级为false if (in_array($i, $can_choose_list)) $can_choose = 0; //有指定等级,比指定等级小的等级为false if ($level && $i < $level) $can_choose = 0; //有指定等级,指定等级为true if ($level && $i == $level) $can_choose = 1; $new_list[] = [ 'name' => "等级" . $i, 'level' => $i, 'is_can_choose' => $can_choose, ]; } return $this->success('操作成功', $new_list); } //不用验证权限 public function actionGetLessLevelList() { $params = Yii::$app->request->get(); $level = isset($params['level']) ? $params['level'] : 10; $use_list = CloudStockBonusPoolLevel::find()->select('level')->where([ 'mall_id' => $this->mall_id, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED], ])->column(); $new_list = []; $list = CloudStockBonusPoolLevel::lists( [ 'where' => [ ['mall_id' => $this->mall_id,], ['status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]], ], 'select' => 'name,level', 'index' => 'level' ] ); for ($i = 1; $i <= 10; $i++) { if (in_array($i, $use_list) && $i <= $level) { $is_use = 1; } else { $is_use = 0; } $new_list[] = [ 'name' => $list[$i]['name'] ?? '等级不存在', 'level' => $i, 'is_use' => $is_use, ]; } return $this->success('操作成功', $new_list); } //不用验证权限 public function actionGetCloudStockLevelList() { $level_list = CloudStockLevel::lists(['where'=>[['mall_id'=>$this->mall_id],['status'=>StatusEnum::ENABLED]],'select'=>'level,name']); $data['cloud_stock_level_list'] = $level_list; return $this->success('操作成功', $data); } public function actionGetLevelList() { $data = CloudStockBonusPoolLevel::lists(['where' => [['mall_id' => $this->mall_id], ['status' => StatusEnum::ENABLED]]], true); return $this->success('操作成功', $data); } public function actionSend() { $retuest = Yii::$app->request; if ($retuest->isAjax && $retuest->isGet) { // 检查提交的参数 $get = $retuest->get(); $res = Yii::$app->services->validate->validate($get,[ [['page','limit','level'], 'integer'], ]); if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $where = $list = []; $where[] = ['=', 'mall_id', $this->mall_id]; !empty($get['level']) && $where[] = ['=', 'level', $get['level']]; $where[] = ['=', 'status', StatusEnum::ENABLED]; $order = 'created_at desc'; $params = array('where' => $where, 'order' => $order, 'limit' => $get['limit']); $list = CloudStockBonusPoolLog::listPage($params, false, true); if (empty($list)) return $this->error('获取失败'); foreach ($list['list'] as &$item){ if($item['people']>0){ $item['bonus_money'] = bcdiv($item['money'],$item['people'],2); }else{ $item['bonus_money'] = 0; } if($item['pool_settlement_type']==1){ $item['cycle_type'] = '季度'; }else{ $item['cycle_type'] = '每月'; } } return $this->success('获取成功', $list); } } }