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

580 lines
20 KiB

<?php
namespace frontend\controllers;
use common\libs\MyLib;
use common\models\AppointmentHistoryT;
use common\models\AppointmentT;
use common\models\CarBT;
use common\models\CarCT;
use common\models\CarDT;
use common\models\CarInvalidT;
use common\models\CarT;
use common\models\MeetT;
use common\models\EmsT;
use common\models\GiftGroupT;
use common\models\GiftT;
use common\models\InsurerTypeT;
use common\models\InvalidT;
use common\models\OrderGiftT;
use common\models\OrderT;
use common\models\UserT;
use Yii;
use yii\data\Pagination;
use yii\db\Exception;
use yii\web\Response;
class RenewalController extends BaseController
{
public $my = null;
public $enableCsrfValidation = false;
public $layout = 'blue-main';
public function init()
{
parent::init();
$cookie = Yii::$app->request->cookies;
$user_id = MyLib::encrypt($cookie->get('aid'),'DECODE');
if($user_id != 0)
{
$this->my = UserT::findOne(['id'=>$user_id]);
} else {
Yii::$app->response->redirect('/common/login')->send();
exit;
}
}
public function actionAjaxNext()
{
Yii::$app->response->format = Response::FORMAT_JSON;
$session = Yii::$app->session;
$request = Yii::$app->request;
$index = $request->get('index');
$type = $request->get('type');
$sql = null;
if($type == 1) {
$sql = $session->get('appointment_first',array());
}
if($type == 2) {
$sql = $session->get('appointment_today',array());
}
if($type == 3) {
$sql = $session->get('appointment_all',array());
}
$car_id = 0;
$item = Yii::$app->db->createCommand($sql.' limit '.$index.',1')
->queryOne();
if($item) {
$car_id = $item['car_id'];
}
$result = array();
$result['success'] = true;
$result['car_id'] = $car_id;
return $result;
}
//首拨
public function actionFirst()
{
$session = Yii::$app->session;
$request = Yii::$app->request;
$car_man = $request->get('car_man');
$phone = $request->get('phone');
$car_no = $request->get('car_no');
$page = $request->get('page',1);
$username = $request->get('username');
$sort_key = $request->get('sort_key','appointment_t.pdate');
$sort_value = $request->get('sort_value','ASC');
$user_id = $request->get('user_id');
$query = AppointmentT::find()
->leftJoin('car_t','`car_t`.`id`=`appointment_t`.`car_id`')
->where('appointment_t.is_first=1 and car_t.location=4');
$user_ids = array();
if($username == '') {
$user_ids = $this->getChildrenUserIDs();
$query = $query->andWhere(['in','appointment_t.user_id',$user_ids]);
}
if($car_man != '') {
$query = $query->andWhere('car_t.car_man like "'.$car_man.'"');
}
if($phone != '') {
$query = $query->andWhere('car_t.phone like "'.$phone.'"');
}
if($car_no != '') {
$query = $query->andWhere('car_t.car_no like "'.$car_no.'"');
}
if($username != '') {
$user_query = UserT::find()
->where('username="'.$username.'"')
->all();
foreach($user_query as $user_info) {
$user_ids[] = $user_info->id;
}
if(count($user_ids) > 0)
$query = $query->andWhere(['in','appointment_t.user_id',$user_ids]);
}
if($sort_key != '') {
$query = $query->orderBy($sort_key.' '.$sort_value.',appointment_t.id '.$sort_value);
}
$sql = $query->createCommand()->rawSql;
// echo $query->createCommand()->rawSql;
$total = $query->count();
$session->remove('appointment_first');
$session->set('appointment_first',$sql);
$pagination = new Pagination(['totalCount' => $total,'pageSize'=>20]);
$pagination->setPage($page-1);
$current_index = $pagination->offset;
$query = $query->offset($pagination->offset)->limit($pagination->limit);
$items = $query->all();
$page_info = MyLib::getPageInfo($pagination);
$invalid_items = InvalidT::getTree();
$user_items = $this->my->getChildren();
return $this->render('first',[
'items' => $items,
'page_info' => $page_info,
'car_man' => $car_man,
'phone' => $phone,
'car_no' => $car_no,
'page' => $page,
'sort_key' => $sort_key,
'sort_value' => $sort_value,
'type' => 1,
'invalid_items' => $invalid_items,
'username' => $username,
'user_items' => $user_items,
'user_id' => $user_id
]);
}
//今日预约
public function actionToday()
{
$session = Yii::$app->session;
$request = Yii::$app->request;
$car_man = $request->get('car_man');
$phone = $request->get('phone');
$car_no = $request->get('car_no');
$page = $request->get('page',1);
$sort_key = $request->get('sort_key','appointment_t.pdate');
$sort_value = $request->get('sort_value','ASC');
$ptype = $request->get('ptype');
$query = AppointmentT::find()
->leftJoin('car_t','`car_t`.`id`=`appointment_t`.`car_id`')
->where('appointment_t.is_first=0 and car_t.location=4')
->andWhere('appointment_t.pdate<="'.date('Y-m-d').'"');
$user_ids = $this->getChildrenUserIDs();
$query = $query->andWhere(['in','appointment_t.user_id',$user_ids]);
if($car_man != '') {
$query = $query->andWhere('car_t.car_man like "'.$car_man.'"');
}
if($phone != '') {
$query = $query->andWhere('car_t.phone="'.$phone.'"');
}
if($ptype > 0) {
$query = $query->andWhere('appointment_t.ptype="'.$ptype.'"');
}
if($car_no != '') {
$query = $query->andWhere('car_t.car_no like "'.$car_no.'"');
}
if($sort_key != '') {
$query = $query->orderBy($sort_key.' '.$sort_value.', appointment_t.id '.$sort_value);
}
$sql = $query->createCommand()->rawSql;
// echo $query->createCommand()->rawSql;
$total = $query->count();
$session->remove('appointment_today');
$session->set('appointment_today',$sql);
$pagination = new Pagination(['totalCount' => $total,'pageSize'=>20]);
$pagination->setPage($page-1);
$query = $query->offset($pagination->offset)->limit($pagination->limit);
$items = $query->all();
$page_info = MyLib::getPageInfo($pagination);
$list = MeetT::getAllData(1);
return $this->render('today',[
'items' => $items,
'list' => $list,
'page_info' => $page_info,
'car_man' => $car_man,
'phone' => $phone,
'ptype' => $ptype,
'car_no' => $car_no,
'page' => $page,
'sort_key' => $sort_key,
'sort_value' => $sort_value,
'type' => 2
]);
}
//全部预约
public function actionAll()
{
$session = Yii::$app->session;
$request = Yii::$app->request;
$car_man = $request->get('car_man');
$phone = $request->get('phone');
$car_no = $request->get('car_no');
$page = $request->get('page',1);
$username = $request->get('username');
$sort_key = $request->get('sort_key','appointment_t.pdate');
$sort_value = $request->get('sort_value','ASC');
$user_id = $request->get('user_id');
$ptype = $request->get('ptype');
$query = AppointmentT::find()
->leftJoin('car_t','`car_t`.`id`=`appointment_t`.`car_id`')
->where('appointment_t.is_first=0 and car_t.location=4');
if($username == '') {
$user_ids = $this->getChildrenUserIDs();
$query = $query->andWhere(['in','appointment_t.user_id',$user_ids]);
}
if($car_man != '') {
$query = $query->andWhere('car_t.car_man like "'.$car_man.'"');
}
if($phone != '') {
$query = $query->andWhere('car_t.phone="'.$phone.'"');
}
if($ptype > 0) {
$query = $query->andWhere('appointment_t.ptype="'.$ptype.'"');
}
if($car_no != '') {
$query = $query->andWhere('car_t.car_no like "'.$car_no.'"');
}
if($username != '') {
$user_ids = array();
$user_query = UserT::find()
->where('username="'.$username.'"')
->all();
foreach($user_query as $user_info) {
$user_ids[] = $user_info->id;
}
if(count($user_ids) > 0)
$query = $query->andWhere(['in','appointment_t.user_id',$user_ids]);
else
$query = $query->andWhere('appointment_t.user_id=-1');
}
if($sort_key != '') {
$query = $query->orderBy($sort_key.' '.$sort_value.',appointment_t.id '.$sort_value);
}
$sql = $query->createCommand()->rawSql;
// echo $query->createCommand()->rawSql;
$total = $query->count();
$session->remove('appointment_all');
$session->set('appointment_all',$sql);
$pagination = new Pagination(['totalCount' => $total,'pageSize'=>20]);
$pagination->setPage($page-1);
$query = $query->offset($pagination->offset)->limit($pagination->limit);
$items = $query->all();
$page_info = MyLib::getPageInfo($pagination);
$invalid_items = InvalidT::getTree();
$user_items = $this->my->getChildren();
$list = MeetT::getAllData(1);
return $this->render('all',[
'items' => $items,
'page_info' => $page_info,
'car_man' => $car_man,
'phone' => $phone,
'list' => $list,
'ptype' => $ptype,
'car_no' => $car_no,
'page' => $page,
'sort_key' => $sort_key,
'sort_value' => $sort_value,
'type' => 3,
'invalid_items' => $invalid_items,
'username' => $username,
'user_items' => $user_items,
'user_id' => $user_id
]);
}
public function actionMyList()
{
$request = Yii::$app->request;
$car_man = $request->get('car_man');
$phone = $request->get('phone');
$car_no = $request->get('car_no');
$page = $request->get('page',1);
if($page < 1) $page = 1;
$query = OrderT::find()
->leftJoin('car_t','`car_t`.`id`=`order_t`.`car_id`')
->where('status_id>1 and car_t.location=4')
->orderBy('submit_date DESC, id DESC');
$user_items = $this->my->getChildren();
$user_ids[] = $this->my->id;
if($user_items) {
foreach($user_items as $user_item) {
$user_ids[] = $user_item->id;
}
}
$query = $query->andWhere(['in','order_t.user_id',$user_ids]);
if($car_man != '') {
$query = $query->andWhere('order_t.car_man="'.$car_man.'"');
}
if($phone != '') {
$query = $query->andWhere('order_t.link_phone="'.$phone.'"');
}
if($car_no != '') {
$query = $query->andWhere('order_t.car_no="'.$car_no.'"');
}
// echo $query->createCommand()->rawSql;
$total = $query->count();
$pagination = new Pagination(['totalCount' => $total,'pageSize'=>20]);
$pagination->setPage($page-1);
$query = $query->offset($pagination->offset)->limit($pagination->limit);
$items = $query->all();
$page_info = MyLib::getPageInfo($pagination);
return $this->render('my-list',[
'items' => $items,
'car_man' => $car_man,
'phone' => $phone,
'car_no' => $car_no,
'page' => $page,
'page_info' => $page_info
]);
}
public function actionMyListInfo()
{
$request = Yii::$app->request;
$id = $request->get('id',0);
$order_info = OrderT::findOne(['id'=>$id]);
$car_info = $order_info->car;
//快递
$ems_items = EmsT::find()
->where(['car_id'=>$car_info->id,'order_id'=>$order_info->id])
->orderBy('id ASC')
->all();
//礼品
$gift_items = GiftT::find()
->where('type_id=1')
->all();
//礼品
$gift_group_items = GiftGroupT::find()->all();
//获取礼品数据
$sel_gifts = array();
$tmp_items = OrderGiftT::find()
->where('order_id='.$order_info->id)
->all();
foreach($tmp_items as $item) {
$sel_gifts[$item->group_id] = $item;
}
$insurer_type_items = InsurerTypeT::find()
->all();
return $this->render('my-list-info',[
'car_info' => $car_info,
'insurer_type_items' => $insurer_type_items,
'order_info' => $order_info,
'ems_items' => $ems_items,
'gift_items' => $gift_items,
'gift_group_items' => $gift_group_items,
'sel_gifts' => $sel_gifts,
]);
}
/**
***********************************
* 续保平移功能
* @author liukangle
***********************************
*/
public function actionAssignOther(){
Yii::$app->response->format = Response::FORMAT_JSON;
$request = Yii::$app->request;
$result = array();
$result['success'] = false;
$result['msg'] = '操作失败';
if($request->isPost) {
$ids = $request->post('ids',array());
$user_id = $request->post('user_id');
if($user_id == 0) {
$result['msg'] = '请选择业务员';
return $result;
}
if(count($ids) == 0) {
$result['msg'] = '请先钩选车辆';
return $result;
}
$user_info = UserT::findOne(['id'=>$user_id]);
$tran = CarT::getDb()->beginTransaction();
try {
foreach($ids as $id) {
$car_info = CarT::findOne(['id'=>$id]);
$old_user_info = '';
if($car_info->location == 2) {
$b_info = CarBT::findOne(['id'=>$car_info->id]);
$old_user_info = $b_info->user;
$b_info->user_id = $user_id;
$b_info->save();
$user = $user_info;
if($user) {
$car_info->op_user1 = $user->getShowName();
}
}
if($car_info->location == 3) {
$c_info = CarCT::findOne(['id'=>$car_info->id]);
$old_user_info = $c_info->user;
$c_info->user_id = $user_id;
$c_info->save();
$user = $user_info;
if($user) {
$car_info->op_user2 = $user->getShowName();
}
}
if($car_info->location == 4) {
$d_info = CarDT::findOne(['id'=>$car_info->id]);
$old_user_info = $d_info->user;
$d_info->user_id = $user_id;
$d_info->save();
$user = $user_info;
if($user) {
$car_info->op_user3 = $user->getShowName();
}
}
//库保存
$car_info->save();
$this->addLog($car_info->id,'从'.$old_user_info->getShowName().' 平移车辆给 '.$user_info->getShowName(),1);
//添加保单
OrderT::deleteAll('car_id='.$car_info->id.' and status_id<2');
$order_row = new OrderT();
$order_row->car_id = $car_info->id;
$order_row->car_no = $car_info->car_no;
$order_row->engine_no = $car_info->engine_no;
$order_row->car_frame_no = $car_info->car_frame_no;
$order_row->car_man = $car_info->car_man;
$order_row->user_id = $user_id;
$order_row->status_id = 1;
$order_row->id_man = $car_info->car_man;
$order_row->link_man = $car_info->car_man;
$order_row->link_phone = $car_info->phone;
$order_row->save();
//添加预约
AppointmentT::deleteAll('car_id='.$car_info->id);
$row = new AppointmentT();
$row->car_id = $car_info->id;
$row->user_id = $user_id;
$row->pdate = date('Y-m-d');
$row->ptime = '09:00';
$row->remark = '首次分配';
$row->is_first = 1;
$row->save();
//添加历史预约
$h_row = new AppointmentHistoryT();
$h_row->car_id = $car_info->id;
$h_row->user_id = $user_id;
$h_row->pdate = date('Y-m-d');
$h_row->ptime = '09:00';
$h_row->remark = '首次分配';
$h_row->save();
}
$result['success'] = true;
$result['msg'] = '操作成功';
$tran->commit();
} catch (\Exception $e) {
$tran->rollBack();
throw $e;
}
}
return $result;
}
//回收数据
public function actionInvalidC(){
Yii::$app->response->format = Response::FORMAT_JSON;
$request = Yii::$app->request;
$result = [
'success' => false,
'msg' => '操作失败',
];
if($request->isPost){
$ids = $request->post('ids', array());
if(count($ids) == 0){
$result['msg'] = '请先勾选车辆';
return $result;
}
$tran = CarDT::getDb()->beginTransaction();
try{
foreach($ids as $id){
$car_info = CarT::findOne(['id'=>$id]);
$car_info->location = 3;
$car_info->op_user3 = '';
$car_info->save();
CarDT::deleteAll('id='.$id);
AppointmentT::deleteAll('car_id='.$id);
$c_info = new CarCT();
$c_info->id = $id;
$c_info->user_id = 0;
$c_info->save();
$this->addLog($car_info->id,'回收车辆数据到C库',1);
}
$tran->commit();
}catch(\Exception $e){
$tran->rollBack();
return $result['msg'] = $e->getMessage();
}
$result = [
'success' => true,
'msg' => '操作成功'
];
return $result;
}
}
}