|
- <?php
- /**
- * Created by PhpStorm.
- * User: admin
- * Date: 2017/6/1
- * Time: 13:48
- */
-
- namespace backend\modules\zzcs\controllers;
-
- use backend\modules\zzcs\logic\Reparations;
- use common\models\BaseUserAuth;
- use Yii;
- use yii\web\Controller;
- use backend\modules\zzcs\models\BaseUser;
-
- class ReparationsController extends Controller
- {
- public $layout = '@backend/modules/zzcs/views/layouts/zzcs';
- public $enableCsrfValidation = false;
-
-
- public function actionIndex()
- {
- return $this->render('indemnity');
- }
-
- /**
- * Des:获取赔款记录列表
- * Name: actionGetList
- * @return mixed
- * @author 倪宗锋
- */
- public function actionGetList()
- {
-
- /**==========接收参数============**/
- $param = array(
- 'date_type' => \Yii::$app->getRequest()->post('date_type', ''),//时间类型 1、创建时间 2、赔款时间
- 'start_date' => \Yii::$app->getRequest()->post('start_date', ''),//开始时间
- 'end_date' => \Yii::$app->getRequest()->post('end_date', ''),//接收时间
- 'org_id' => \Yii::$app->getRequest()->post('org_id', ''),//渠道商ID
- 're_type' => \Yii::$app->getRequest()->post('re_type', ''),//赔款类型
- 'order_type' => \Yii::$app->getRequest()->post('order_type', ''),//订单类型
- 'more_search' => \Yii::$app->getRequest()->post('more_search', ''),//更多查询条件
- 'current_page' => \Yii::$app->getRequest()->post('current_page', '1'),//当前页
- 'page_size' => \Yii::$app->getRequest()->post('page_size', '10'),//每页展示条数
- );
- $json = $this->getList($param);
- return json_encode($json);
- }
- public function getList($param){
- $user_id = Yii::$app->request->cookies->getValue('user_id', 2);
- $model_user = new BaseUser();
- $user_info = $model_user->getUserInfo($user_id);
- $where = array();
- $where[] = " a.cancel_flag=0 ";
- $dateCol = $param['date_type'] == 1 ? 'a.create_time' : 'a.date';
- if (!empty($param['start_date'])) {
- // $where[] = " {$dateCol} >= {$param['start_date']} ";
- $a = (string)$param['start_date'];
- $where[] = " {$dateCol} >= '{$a}' ";
- }
- if (!empty($param['end_date'])) {
- $where[] = " {$dateCol} < date_add('{$param['end_date']}', INTERVAL 1 day) ";
- }
- if (!empty($param['org_id'])) {
- $where[] = " b.OUTSIDE_SALE_ORG_ID = {$param['org_id']} ";
- }
-
- if (!empty($param['re_type'])) {
- $where[] = " a.reparation_type = {$param['re_type']} ";
- }
-
- if (!empty($param['more_search'])) {
- $where[] = " (a.order_id like '%{$param['more_search']}%' or b.CUSTOMER_MOBILE like '%{$param['more_search']}%' or b.CUSTOMER_NAME like '%{$param['more_search']}%' or b.OUTSIDE_ORDER_NO like '%{$param['more_search']}%')";
- }
- if(!empty($param['order_type'])){
- if($param['order_type']=='-1'){
- $where[] = " b.ORDER_TITLE_ID !=0";
- }else{
- $where[] = " b.ORDER_PROD_TYPE = {$param['order_type']}";
- }
- }
- $where[] = ' b.main_corp_id=' . $user_info[0]["MAIN_CORP_ID"];
-
- // 酒店管理员只能查看酒店, 巴士只能看巴士,( 暂不做限制)
- /*if(Yii::$app->user->identity['USER_ROLE'] == BaseUserAuth::BUS_OPERA_CUS || Yii::$app->user->identity['USER_ROLE'] == BaseUserAuth::BUS_OPERA_ADMIN){
- $where[] = ' b.ORDER_PROD_TYPE<>25';
- }elseif(Yii::$app->user->identity['USER_ROLE'] == BaseUserAuth::HOTEL_OPERATOR || Yii::$app->user->identity['USER_ROLE'] == BaseUserAuth::HOTEL_PURCHASE
- || Yii::$app->user->identity['USER_ROLE'] == BaseUserAuth::HOTEL_CUSTOMER || Yii::$app->user->identity['USER_ROLE'] == BaseUserAuth::HOTEL_CUS_ADMIN
- || Yii::$app->user->identity['USER_ROLE'] == BaseUserAuth::HOTEL_ADMIN){
- $where[] = ' b.ORDER_PROD_TYPE=25';
- }*/
-
- // 用户权限设置查询where条件
- if(Yii::$app->user->identity['USER_ROLE'] == BaseUserAuth::HOTEL_OPERATOR){
- $where[] = ' b.PRINCIPAL_ID=' . Yii::$app->user->id;
- }elseif(Yii::$app->user->identity['USER_ROLE'] == BaseUserAuth::HOTEL_PURCHASE){
- $where[] = ' b.SALES_MAN=' . Yii::$app->user->id;
- }
-
- $whereStr = ' ';
- if (count($where)) {
- $whereStr .= 'where ' . implode(' and ', $where);
- }
- if ($param['current_page'] == 1) {
- $sql = "SELECT count(1) cnt
- FROM order_finance_reparations a
- JOIN order_main b ON a.order_id = b.ORDER_ID and b.CANCEL_FLAG = 0
- JOIN base_supplier c ON b.OUTSIDE_SALE_ORG_ID = c.ID
- {$whereStr}";
- $getTotal = \Yii::$app->getDb()->createCommand($sql)->queryOne();
- $data['page']['total_count'] = $getTotal['cnt'];
- $data['page']['total_page'] = (string)ceil($getTotal['cnt'] / $param['page_size']);
- }
- $offset = ($param['current_page'] - 1) * $param['page_size'];
- $sql2 = "SELECT a.date,a.order_id,c.SUPPLIER_NAME ,a.reparation_type,a.reparations,a.memo,a.create_time,a.memo_title,
- ifnull(d.true_name,'') as true_name,
- ifnull((SELECT CONCAT(b.PARENT_PROD_NAME, '<br />',PROD_START_STATION_RES_NAME,' - ',PROD_END_STATION_RES_NAME) from order_main WHERE PARENT_ORDER_ID = b.ORDER_ID LIMIT 1),b.PARENT_PROD_NAME )'PARENT_PROD_NAME',
- IFNULL((SELECT OUTSIDE_ORDER_NO FROM ORDER_MAIN WHERE PARENT_ORDER_ID=b.ORDER_ID LIMIT 1),'') AS 'outside_order_no',
- (case b.ORDER_PROD_TYPE when 81 then '巴士订单' when 25 then '酒店订单' when 311 then '门票订单' else '其他订单' end) AS 'order_prod_type_desc',
- b.order_title_id
- FROM order_finance_reparations a
- JOIN order_main b ON a.order_id = b.ORDER_ID and b.CANCEL_FLAG = 0
- JOIN base_supplier c ON b.OUTSIDE_SALE_ORG_ID = c.ID
- left join base_user d on a.user_id=d.id and d.cancel_flag=0
- {$whereStr}
- ORDER BY a.create_time DESC limit {$param['page_size']} offset $offset
- ";
- $list = \Yii::$app->getDb()->createCommand($sql2)->queryAll();
- $json['code'] = '0';
- $json['info'] = '获取列表成功';
- $data['order_list'] = $list;
- $data['page']['page_size'] = $param['page_size'];
- $data['page']['current_page'] = $param['current_page'];
- $json['data'] = $data;
- return $json;
- }
-
- /**
- * Function Description:赔款管理列表导出
- * Function Name: actionExportList
- *
- *
- * @author 付泓程
- */
- public function actionExportList(){
- /**==========接收参数============**/
- $param = array(
- 'date_type' => \Yii::$app->getRequest()->get('date_type', ''),//时间类型 1、创建时间 2、赔款时间
- 'start_date' => \Yii::$app->getRequest()->get('start_date', ''),//开始时间
- 'end_date' => \Yii::$app->getRequest()->get('end_date', ''),//接收时间
- 'org_id' => \Yii::$app->getRequest()->get('org_id', ''),//渠道商ID
- 're_type' => \Yii::$app->getRequest()->get('re_type', ''),//赔款类型
- 'order_type' => \Yii::$app->getRequest()->get('order_type', ''),//订单类型
- 'more_search' => \Yii::$app->getRequest()->get('more_search', ''),//更多查询条件
- 'current_page' => \Yii::$app->getRequest()->get('current_page', '1'),//当前页
- 'page_size' => \Yii::$app->getRequest()->get('page_size', ''),//每页展示条数
- );
- $param['page_size']=9999999;
- $json = $this->getList($param);
- $list = $json['data']['order_list'];
-
- $cell_titles = ["添加日期","订单号","预订产品","订单类型","订单渠道","渠道订单号","赔款类型","赔款","赔款日期","赔款原因","操作人"];
- $cell_list = [];
- $total_money = 0;
- foreach($list as $key=>$val){
- $cell_list[$key]['create_time']=$val['create_time'];
- $cell_list[$key]['order_id']=(string)$val['order_id'];
- $cell_list[$key]['PARENT_PROD_NAME']=str_replace('<br />',' ',$val['PARENT_PROD_NAME']);
- $cstr1 = $val['order_title_id']==0?'单一订单':'组合订单';
- $cell_list[$key]['order_prod_type_desc'] = $cstr1.' - '.$val['order_prod_type_desc'];
- $cell_list[$key]['SUPPLIER_NAME']=$val['SUPPLIER_NAME'];
- $cell_list[$key]['outside_order_no']=(string)$val['outside_order_no'];
- $desc = $val['reparation_type']=='2'? "赔入":"赔出";
- $cell_list[$key]['reparation_type_desc']=$desc;
- $cell_list[$key]['reparations']=$val['reparations'];
- $total_money+=$val['reparations']-0;
- $cell_list[$key]['date']=$val['date'];
- $cell_list[$key]['memo']=$val['memo'];
- $cell_list[$key]['true_name']=$val['true_name'];
- }
- $cell_list[]=[
- "create_time"=>"","order_id"=>"","PARENT_PROD_NAME"=>"","order_prod_type_desc"=>"","SUPPLIER_NAME"=>"","outside_order_no"=>"",
- "reparation_type_desc"=>"","reparations"=>$total_money,"date"=>"","memo"=>"","true_name"=>""
- ];
- // echo \GuzzleHttp\json_encode($cell_list);
- // return;
- $reparation = new Reparations();
- $reparation->exportExcel('赔款列表'.date('Y-m-d H i s'),$cell_titles,[],$cell_list);
- }
-
- /**
- * Des:获取订单详情
- * Name: getOrderInfo
- * @return mixed
- * @author 倪宗锋
- */
- public function actionGetOrderInfo()
- {
- $order_id = \Yii::$app->getRequest()->post('order_id', '');
- if (!preg_match('/^[1-9][0-9]{0,10}$/', $order_id)) {
- $json['code'] = '1';
- $json['info'] = 'params error';
- return json_encode($json);
- }
- $sql = "SELECT IFNULL(b.reparations,0) 'reparations',reparation_type,memo_id,
- IFNULL(b.date,'') 'date',IFNULL(b.memo,'') 'memo',ifnull(b.memo_title, '') 'memo_title',
- ifnull((SELECT CONCAT(a.PARENT_PROD_NAME, '<br />',PROD_START_STATION_RES_NAME,' - ',PROD_END_STATION_RES_NAME) from order_main WHERE PARENT_ORDER_ID = a.ORDER_ID LIMIT 1),a.PARENT_PROD_NAME )'PARENT_PROD_NAME'
- from order_main a
- LEFT JOIN order_finance_reparations b on a.order_id = b.order_id
- where a.ORDER_ID= {$order_id} and a.PARENT_ORDER_ID = 0
- ";
- $info = \Yii::$app->getDb()->createCommand($sql)->queryOne();
- if (empty($info)) {
- $json['code'] = '1';
- $json['info'] = '订单不存在!请核对订单号!';
- return json_encode($json);
- }
- $json['code'] = '0';
- $json['info'] = '获取信息成功';
- $json['data'] = $info;
- return json_encode($json);
- }
-
- /**
- * Des:设置订单的赔款
- * Name: setReparations
- * @return mixed
- * @author 倪宗锋
- */
- public function actionSetReparations()
- {
- $cookies = Yii::$app->request->cookies;
- $user_id = $cookies->getValue('user_id', -1);
- $param = array(
- 'order_id' => \Yii::$app->getRequest()->post('order_id', ''),//订单ID
- 'reparations' => \Yii::$app->getRequest()->post('reparations', ''),//金额
-
- 'reparationType' => \Yii::$app->getRequest()->post('reparationType', 1),//赔款类型
-
- 'date' => \Yii::$app->getRequest()->post('date', ''),//赔款日期
- 'memo_id' => \Yii::$app->getRequest()->post('memo_id', ''),//原因ID
- 'memo' => \Yii::$app->getRequest()->post('memo', ''),//赔款备注 原因
- 'memo_title' => \Yii::$app->getRequest()->post('memo_title', ''),//赔款备注 标题
- );
- if (!preg_match('/^[1-9][0-9]{0,10}$/', $param['order_id'])) {
- $json['code'] = '1';
- $json['info'] = '参数错误,请联系开发人员!001';
- return json_encode($json);
- }
- if (empty($param['date']) || empty($param['reparations'])) {
- $json['code'] = '1';
- $json['info'] = '请选择赔款日期或填写赔款金额!';
- return json_encode($json);
- }
- $sql = "REPLACE INTO `order_finance_reparations` ( `order_id`,`reparations`,`reparation_type`,`user_id`, `memo`,`date`,`create_time`,memo_title,memo_id)
- VALUES
- ('{$param['order_id']}','{$param['reparations']}','{$param['reparationType']}',{$user_id},'{$param['memo']}'
- ,'{$param['date']}',now(),'{$param['memo_title']}','{$param['memo_id']}');";
- $flag = \Yii::$app->getDb()->createCommand($sql)->execute();
- if ($flag) {
- $json['code'] = '0';
- $json['info'] = '设置订单赔款金额成功!';
- } else {
- $json['code'] = '1';
- $json['info'] = '设置订单赔款金额失败!';
- }
-
- return json_encode($json);
- }
-
- /**
- * Des:删除订单的赔款记录
- * Name: del
- * @return mixed
- * @author 倪宗锋
- */
- public function actionDel()
- {
- $param = array(
- 'order_id' => \Yii::$app->getRequest()->post('order_id', ''),//订单ID
- );
- if (!preg_match('/^[1-9][0-9]{0,10}$/', $param['order_id'])) {
- $json['code'] = '1';
- $json['info'] = '参数错误,请联系开发人员!001';
- return json_encode($json);
- }
- $sql = "UPDATE order_finance_reparations set cancel_flag=1 WHERE order_id = {$param['order_id']}";
- $flag = \Yii::$app->getDb()->createCommand($sql)->execute();
- if ($flag) {
- $json['code'] = '0';
- $json['info'] = '删除成功!';
- return json_encode($json);
- } else {
- $json['code'] = '0';
- $json['info'] = '删除失败!';
- return json_encode($json);
- }
- }
-
- /**
- * Des:获取赔款原因列表
- * Name: actionGetMemoArr
- * @return mixed
- * @author 倪宗锋
- */
- public function actionGetMemoArr()
- {
- $return = array();
- $return[] = array('memo_id' => 1, 'memo_title' => '漏单', 'memo' => '漏单:目前的紧急处理方案是退客人现场购票的金额。');
- $return[] = array('memo_id' => 2, 'memo_title' => '产品问题', 'memo' => '产品问题:赔付方案需要与运营沟通。');
- $return[] = array('memo_id' => 3, 'memo_title' => '客人问题', 'memo' => '客人问题:包括未收到短信,未找到车,未接到司机电话等。');
- $return[] = array('memo_id' => 4, 'memo_title' => '下错单', 'memo' => '下错单:上下站点问题,时间问题。');
- $return[] = array('memo_id' => 5, 'memo_title' => '汽车晚点', 'memo' => '汽车晚点:');
- $return[] = array('memo_id' => 6, 'memo_title' => '交通管制', 'memo' => '交通管制:');
- $return[] = array('memo_id' => 7, 'memo_title' => '并班原因', 'memo' => '并班原因:');
- $return[] = array('memo_id' => 8, 'memo_title' => '车队原因', 'memo' => '车队原因:');
- $return[] = array('memo_id' => 9, 'memo_title' => '司机原因', 'memo' => '司机原因:');
- $return[] = array('memo_id' => 10000, 'memo_title' => '其他', 'memo' => '其他。');
- $json['code'] = '0';
- $json['info'] = '获取列表成功';
- $json['list'] = $return;
- return json_encode($json);
- }
-
- }
|