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/FixCarCategoryController.php

205 lines
6.3 KiB

5 years ago
<?php
/**
* Created by PhpStorm.
* User: liuyingjie
* Date: 2017/8/30
* Time: 9:14
*/
namespace frontend\controllers;
use common\libs\MyLib;
use common\models\FixCarCategory;
use common\models\FixCarGroup;
use common\models\Message;
use common\models\MiddleGroupCategory;
use common\models\MiddleScaleHour;
use common\models\WorkHour;
use Yii;
use yii\data\Pagination;
use yii\db\Exception;
use yii\helpers\ArrayHelper;
use yii\web\Response;
class FixCarCategoryController extends BaseController
{
/**
*------------------------------------------------------------
* 列表页
* @param int page 分页
* @param int pid item_scale 表 pid
* @param string name item_scale 表 name
* @return view
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionIndex()
{
$session = Yii::$app->session;
$request = Yii::$app->request;
$page = $request->get('page', 1);
$pid = $request->get('pid');
$name = $request->get('name', '');
$parents = FixCarCategory::find()->where('pid=0')->all();
$pid_arr = [];
foreach ($parents as $parent) {
array_push($pid_arr, $parent->id);
}
$parent_key_value = ArrayHelper::index(ArrayHelper::toArray($parents), 'id');
$pids = '';
if (count($pid_arr) > 0) $pids = implode(',', $pid_arr);
$query = FixCarCategory::find();
$query = $query->where('pid IN(' . $pids . ')');
if ($pid > 0) $query = $query->andWhere('pid=' . $pid);
if ('' !== $name) $query = $query->andWhere(['like', 'name', $name]);
$sql = $query->createCommand()->rawSql;
$total = $query->count();
$session->remove('fix-car-category-index');
$session->set('fix-car-category-index', $sql);
$pagination = new Pagination(['totalCount' => $total, 'pageSize' => 20]);
$pagination->setPage($page - 1);
$query = $query->offset($pagination->offset)->limit($pagination->limit);
$sons = $query->all();
$page_info = MyLib::getPageInfo($pagination);
foreach ($sons as &$son) {
$son->name = '/' . $parent_key_value[$son->pid]['name'] . '/' . $son->name;
}
return $this->render('index', [
'sons' => $sons,
'page_info' => $page_info,
'page' => $page,
'parents' => $parents,
'pid' => $pid,
'name' => $name,
'groups' => FixCarGroup::find()->all()
]);
}
/**
*------------------------------------------------------------
* 详情页(编辑、新增)
* @param int id item_scale 表 id
* @return mixed
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionInfo()
{
$request = Yii::$app->request;
if ($request->isAjax) {
Yii::$app->response->format = Response::FORMAT_JSON;
$id = $request->post('id', 0);
$result = [];
$result['success'] = false;
$result['msg'] = '添加失败!';
$model = $id > 0 ? FixCarCategory::findOne($id) : new FixCarCategory;
$tran = Yii::$app->getDb()->beginTransaction();
try {
$model->scenario = 'insert';
$model->attributes = $request->post();
if (!$model->validate()) {
$errors = $model->errors;
$errol = array_values(current($errors));
$result['msg'] = $errol;
return $result;
}
if (!$model->save()) throw new Exception('item_scale表保存失败!');
$result['success'] = true;
$result['msg'] = '添加成功!';
$tran->commit();
} catch (Exception $e) {
$tran->rollBack();
$result['msg'] = $e->getMessage();
}
return $result;
}
$id = $request->get('id');
$item_scale = $hours = $parents = $middles = null;
if ($id > 0) { //编辑
$item_scale = FixCarCategory::findOne($id);
}
//
$it = new FixCarCategory();
$parents = $it->getCategory('pid=0');
return $this->render('info', [
'parents' => $parents,
'item_scale' => $item_scale
]);
}
/**
*------------------------------------------------------------
* 获取二级分类
* @param int pid item_scale 表 pid
* @return json
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionGetMachine()
{
Yii::$app->response->format = Response::FORMAT_JSON;
$request = Yii::$app->request;
$pid = $request->post('pid', 0);
if (!$request->isAjax || $pid < 1) return Message::getMessage();
$model = new FixCarCategory;
$sub_categories = $model->getCategory('pid='.$pid);
return Message::getMessage(true,'操作成功!',$sub_categories);
}
/**
*------------------------------------------------------------
* 分组
* @param int gid fix_car_group表主键;分为钣金、喷漆、机电、美容
* @param arrray category_ids fix_car_category表主键集合
* @return json
* @author liuyingjie
*------------------------------------------------------------
*/
public function actionGrouping(){
Yii::$app->response->format = Response::FORMAT_JSON;
$request = Yii::$app->request;
$gid = $request->post('gid',0);
$category_ids = $request->post('category_id',[]);
if($gid < 1 || empty($category_ids)) return Message::getMessage();
// MiddleGroupCategory::deleteAll(['fix_group_id'=>$gid]);
$insert = [];
foreach($category_ids as $key=>$category_id){
if(MiddleGroupCategory::findOne(intval($gid.$category_id))) continue;
array_push($insert,['id'=>intval($gid.$category_id),'fix_group_id'=>$gid,'fix_car_category_id'=>$category_id]);
}
if(!empty($insert)) Yii::$app->db->createCommand()->batchInsert(MiddleGroupCategory::tableName(),['id','fix_group_id','fix_car_category_id'],$insert)->execute();
return Message::getMessage(true,'操作成功!');
}
}