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.
205 lines
6.3 KiB
205 lines
6.3 KiB
<?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,'操作成功!');
|
|
}
|
|
} |