You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
simple-yewu/frontend/controllers/CarModelController.php

180 lines
5.3 KiB

6 years ago
<?php
/**
* Created by PhpStorm.
* User: liuyingjie
* Date: 2017/8/28
* Time: 17:10
*/
namespace frontend\controllers;
use common\libs\MyLib;
use common\models\DisplacementT;
use common\models\FixCarPart;
use common\models\Message;
use common\models\SDYMiddle;
use common\models\SeriesT;
use Yii;
use common\models\BrandT;
use common\models\YearT;
use yii\base\Controller;
use yii\data\Pagination;
use yii\db\Exception;
use yii\helpers\ArrayHelper;
use yii\web\Response;
class CarModelController extends Controller
{
/**
*------------------------------------------------------------
* 列表
* @param void
* @return view
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionIndex()
{
$request = Yii::$app->request;
$session = Yii::$app->session;
$page = $request->get('page');
$query = FixCarPart::find();
$render = [];
$this->getQuery($request, $query, $render);
$sql = $query->createCommand()->rawSql;
$total = $query->count();
$session->remove('car-model-index');
$session->set('car-model-index', $sql);
$pagination = new Pagination(['totalCount' => $total, 'pageSize' => 20]);
$pagination->setPage($page - 1);
$query = $query->offset($pagination->offset)->limit($pagination->limit);
$render['SDY'] = $query->all();
$render['page_info'] = MyLib::getPageInfo($pagination);
$render['page'] = $page;
$this->getCarModel($render);
return $this->render('index', $render);
}
/**
*------------------------------------------------------------
* 详情、编辑、保存
* @param int id
* @return mixed
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionInfo()
{
$request = Yii::$app->request;
//编辑、保存
if ($request->isPost) {
Yii::$app->response->format = Response::FORMAT_JSON;
$id = $request->post('id');
try{
$SDY = $id > 0 ? FixCarPart::findOne($id) : new FixCarPart();
$SDY->attributes = $request->post();
if (!$SDY->validate()) {
$errors = array_values($SDY->errors);
return Message::getMessage(false,$errors[0]);
}
if(!$SDY->save()) throw new Exception('操作失败!');
return Message::getMessage(true,'操作成功!');
}catch(Exception $e){
return Message::getMessage();
}
}
$render = [];
$this->getCarModel($render);
//详情
$id = $request->get('id',0);
if($id > 0 ){
$render['info'] = ($SDY = SDYMiddle::findOne($id)) ? $SDY : [];
$render['series'] = ($series = SeriesT::findAll($SDY->series_id)) ? $series : [];
$render['displacements'] = ($displacement = DisplacementT::findAll($SDY->displacement_id)) ? $displacement : [];
}
return $this->render('info', $render);
}
private function getCarModel(&$render)
{
//品牌
$render['brands'] = ($brands = BrandT::find()->all()) ? $brands : [];
//年份
$render['years'] = ($years = YearT::find()->all()) ? $years : [];
}
public function actionRemove(){
Yii::$app->response->format = Response::FORMAT_JSON;
$request = Yii::$app->request;
$id = $request->post('id');
$result = [];
$result['success'] = false;
$result['msg'] = '删除失败!';
if(!$request->isAjax || $id <= 0) return $result;
SDYMiddle::findOne($id)->delete();
$result['success'] = true;
$result['msg'] = '删除失败!';
return $result;
}
/**
*------------------------------------------------------------
* 查询条件
* @param object $request ; 引用 $query,$render
* @return void
* @author liuyingjie
*------------------------------------------------------------
*/
private function getQuery($request, &$query, &$render)
{
$op = $request->get('op');
$brand_id = $request->get('brand_id', 0);
$series_id = $request->get('series_id', 0);
$displacement_id = $request->get('displacement_id', 0);
$year_id = $request->get('year_id', 0);
if ('0' === $op) $query = $query->andWhere('id=-1');
if ($brand_id > 0) {
$query = $query->joinWith('seriesT')->andWhere(['series_t.brand_id'=>$brand_id]);
}
$render['series'] = $render['displacements'] = [];
if ($series_id > 0) {
$query = $query->andWhere(['s_d_y_middle.series_id'=>$series_id]);
$render['series'] = SeriesT::findAll(['brand_id'=>$brand_id]);
}
if ($displacement_id > 0){
$query = $query->andWhere(['s_d_y_middle.displacement_id'=>$displacement_id]);
$render['displacements'] = DisplacementT::findAll(['series_id'=>$series_id]);
}
if ($year_id > 0) $query = $query->andWhere(['s_d_y_middle.year_id'=>$year_id]);
$render['brand_id'] = $brand_id;
$render['series_id'] = $series_id;
$render['displacement_id'] = $displacement_id;
$render['year_id'] = $year_id;
}
}