Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 
 

328 строки
15 KiB

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: admin
  5. * Date: 2017/6/1
  6. * Time: 13:48
  7. */
  8. namespace backend\modules\zzcs\controllers;
  9. use backend\modules\zzcs\logic\Reparations;
  10. use common\models\BaseUserAuth;
  11. use Yii;
  12. use yii\web\Controller;
  13. use backend\modules\zzcs\models\BaseUser;
  14. class ReparationsController extends Controller
  15. {
  16. public $layout = '@backend/modules/zzcs/views/layouts/zzcs';
  17. public $enableCsrfValidation = false;
  18. public function actionIndex()
  19. {
  20. return $this->render('indemnity');
  21. }
  22. /**
  23. * Des:获取赔款记录列表
  24. * Name: actionGetList
  25. * @return mixed
  26. * @author 倪宗锋
  27. */
  28. public function actionGetList()
  29. {
  30. /**==========接收参数============**/
  31. $param = array(
  32. 'date_type' => \Yii::$app->getRequest()->post('date_type', ''),//时间类型 1、创建时间 2、赔款时间
  33. 'start_date' => \Yii::$app->getRequest()->post('start_date', ''),//开始时间
  34. 'end_date' => \Yii::$app->getRequest()->post('end_date', ''),//接收时间
  35. 'org_id' => \Yii::$app->getRequest()->post('org_id', ''),//渠道商ID
  36. 're_type' => \Yii::$app->getRequest()->post('re_type', ''),//赔款类型
  37. 'order_type' => \Yii::$app->getRequest()->post('order_type', ''),//订单类型
  38. 'more_search' => \Yii::$app->getRequest()->post('more_search', ''),//更多查询条件
  39. 'current_page' => \Yii::$app->getRequest()->post('current_page', '1'),//当前页
  40. 'page_size' => \Yii::$app->getRequest()->post('page_size', '10'),//每页展示条数
  41. );
  42. $json = $this->getList($param);
  43. return json_encode($json);
  44. }
  45. public function getList($param){
  46. $user_id = Yii::$app->request->cookies->getValue('user_id', 2);
  47. $model_user = new BaseUser();
  48. $user_info = $model_user->getUserInfo($user_id);
  49. $where = array();
  50. $where[] = " a.cancel_flag=0 ";
  51. $dateCol = $param['date_type'] == 1 ? 'a.create_time' : 'a.date';
  52. if (!empty($param['start_date'])) {
  53. // $where[] = " {$dateCol} >= {$param['start_date']} ";
  54. $a = (string)$param['start_date'];
  55. $where[] = " {$dateCol} >= '{$a}' ";
  56. }
  57. if (!empty($param['end_date'])) {
  58. $where[] = " {$dateCol} < date_add('{$param['end_date']}', INTERVAL 1 day) ";
  59. }
  60. if (!empty($param['org_id'])) {
  61. $where[] = " b.OUTSIDE_SALE_ORG_ID = {$param['org_id']} ";
  62. }
  63. if (!empty($param['re_type'])) {
  64. $where[] = " a.reparation_type = {$param['re_type']} ";
  65. }
  66. if (!empty($param['more_search'])) {
  67. $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']}%')";
  68. }
  69. if(!empty($param['order_type'])){
  70. if($param['order_type']=='-1'){
  71. $where[] = " b.ORDER_TITLE_ID !=0";
  72. }else{
  73. $where[] = " b.ORDER_PROD_TYPE = {$param['order_type']}";
  74. }
  75. }
  76. $where[] = ' b.main_corp_id=' . $user_info[0]["MAIN_CORP_ID"];
  77. // 酒店管理员只能查看酒店, 巴士只能看巴士,( 暂不做限制)
  78. /*if(Yii::$app->user->identity['USER_ROLE'] == BaseUserAuth::BUS_OPERA_CUS || Yii::$app->user->identity['USER_ROLE'] == BaseUserAuth::BUS_OPERA_ADMIN){
  79. $where[] = ' b.ORDER_PROD_TYPE<>25';
  80. }elseif(Yii::$app->user->identity['USER_ROLE'] == BaseUserAuth::HOTEL_OPERATOR || Yii::$app->user->identity['USER_ROLE'] == BaseUserAuth::HOTEL_PURCHASE
  81. || Yii::$app->user->identity['USER_ROLE'] == BaseUserAuth::HOTEL_CUSTOMER || Yii::$app->user->identity['USER_ROLE'] == BaseUserAuth::HOTEL_CUS_ADMIN
  82. || Yii::$app->user->identity['USER_ROLE'] == BaseUserAuth::HOTEL_ADMIN){
  83. $where[] = ' b.ORDER_PROD_TYPE=25';
  84. }*/
  85. // 用户权限设置查询where条件
  86. if(Yii::$app->user->identity['USER_ROLE'] == BaseUserAuth::HOTEL_OPERATOR){
  87. $where[] = ' b.PRINCIPAL_ID=' . Yii::$app->user->id;
  88. }elseif(Yii::$app->user->identity['USER_ROLE'] == BaseUserAuth::HOTEL_PURCHASE){
  89. $where[] = ' b.SALES_MAN=' . Yii::$app->user->id;
  90. }
  91. $whereStr = ' ';
  92. if (count($where)) {
  93. $whereStr .= 'where ' . implode(' and ', $where);
  94. }
  95. if ($param['current_page'] == 1) {
  96. $sql = "SELECT count(1) cnt
  97. FROM order_finance_reparations a
  98. JOIN order_main b ON a.order_id = b.ORDER_ID and b.CANCEL_FLAG = 0
  99. JOIN base_supplier c ON b.OUTSIDE_SALE_ORG_ID = c.ID
  100. {$whereStr}";
  101. $getTotal = \Yii::$app->getDb()->createCommand($sql)->queryOne();
  102. $data['page']['total_count'] = $getTotal['cnt'];
  103. $data['page']['total_page'] = (string)ceil($getTotal['cnt'] / $param['page_size']);
  104. }
  105. $offset = ($param['current_page'] - 1) * $param['page_size'];
  106. $sql2 = "SELECT a.date,a.order_id,c.SUPPLIER_NAME ,a.reparation_type,a.reparations,a.memo,a.create_time,a.memo_title,
  107. ifnull(d.true_name,'') as true_name,
  108. 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',
  109. IFNULL((SELECT OUTSIDE_ORDER_NO FROM ORDER_MAIN WHERE PARENT_ORDER_ID=b.ORDER_ID LIMIT 1),'') AS 'outside_order_no',
  110. (case b.ORDER_PROD_TYPE when 81 then '巴士订单' when 25 then '酒店订单' when 311 then '门票订单' else '其他订单' end) AS 'order_prod_type_desc',
  111. b.order_title_id
  112. FROM order_finance_reparations a
  113. JOIN order_main b ON a.order_id = b.ORDER_ID and b.CANCEL_FLAG = 0
  114. JOIN base_supplier c ON b.OUTSIDE_SALE_ORG_ID = c.ID
  115. left join base_user d on a.user_id=d.id and d.cancel_flag=0
  116. {$whereStr}
  117. ORDER BY a.create_time DESC limit {$param['page_size']} offset $offset
  118. ";
  119. $list = \Yii::$app->getDb()->createCommand($sql2)->queryAll();
  120. $json['code'] = '0';
  121. $json['info'] = '获取列表成功';
  122. $data['order_list'] = $list;
  123. $data['page']['page_size'] = $param['page_size'];
  124. $data['page']['current_page'] = $param['current_page'];
  125. $json['data'] = $data;
  126. return $json;
  127. }
  128. /**
  129. * Function Description:赔款管理列表导出
  130. * Function Name: actionExportList
  131. *
  132. *
  133. * @author 付泓程
  134. */
  135. public function actionExportList(){
  136. /**==========接收参数============**/
  137. $param = array(
  138. 'date_type' => \Yii::$app->getRequest()->get('date_type', ''),//时间类型 1、创建时间 2、赔款时间
  139. 'start_date' => \Yii::$app->getRequest()->get('start_date', ''),//开始时间
  140. 'end_date' => \Yii::$app->getRequest()->get('end_date', ''),//接收时间
  141. 'org_id' => \Yii::$app->getRequest()->get('org_id', ''),//渠道商ID
  142. 're_type' => \Yii::$app->getRequest()->get('re_type', ''),//赔款类型
  143. 'order_type' => \Yii::$app->getRequest()->get('order_type', ''),//订单类型
  144. 'more_search' => \Yii::$app->getRequest()->get('more_search', ''),//更多查询条件
  145. 'current_page' => \Yii::$app->getRequest()->get('current_page', '1'),//当前页
  146. 'page_size' => \Yii::$app->getRequest()->get('page_size', ''),//每页展示条数
  147. );
  148. $param['page_size']=9999999;
  149. $json = $this->getList($param);
  150. $list = $json['data']['order_list'];
  151. $cell_titles = ["添加日期","订单号","预订产品","订单类型","订单渠道","渠道订单号","赔款类型","赔款","赔款日期","赔款原因","操作人"];
  152. $cell_list = [];
  153. $total_money = 0;
  154. foreach($list as $key=>$val){
  155. $cell_list[$key]['create_time']=$val['create_time'];
  156. $cell_list[$key]['order_id']=(string)$val['order_id'];
  157. $cell_list[$key]['PARENT_PROD_NAME']=str_replace('<br />',' ',$val['PARENT_PROD_NAME']);
  158. $cstr1 = $val['order_title_id']==0?'单一订单':'组合订单';
  159. $cell_list[$key]['order_prod_type_desc'] = $cstr1.' - '.$val['order_prod_type_desc'];
  160. $cell_list[$key]['SUPPLIER_NAME']=$val['SUPPLIER_NAME'];
  161. $cell_list[$key]['outside_order_no']=(string)$val['outside_order_no'];
  162. $desc = $val['reparation_type']=='2'? "赔入":"赔出";
  163. $cell_list[$key]['reparation_type_desc']=$desc;
  164. $cell_list[$key]['reparations']=$val['reparations'];
  165. $total_money+=$val['reparations']-0;
  166. $cell_list[$key]['date']=$val['date'];
  167. $cell_list[$key]['memo']=$val['memo'];
  168. $cell_list[$key]['true_name']=$val['true_name'];
  169. }
  170. $cell_list[]=[
  171. "create_time"=>"","order_id"=>"","PARENT_PROD_NAME"=>"","order_prod_type_desc"=>"","SUPPLIER_NAME"=>"","outside_order_no"=>"",
  172. "reparation_type_desc"=>"","reparations"=>$total_money,"date"=>"","memo"=>"","true_name"=>""
  173. ];
  174. // echo \GuzzleHttp\json_encode($cell_list);
  175. // return;
  176. $reparation = new Reparations();
  177. $reparation->exportExcel('赔款列表'.date('Y-m-d H i s'),$cell_titles,[],$cell_list);
  178. }
  179. /**
  180. * Des:获取订单详情
  181. * Name: getOrderInfo
  182. * @return mixed
  183. * @author 倪宗锋
  184. */
  185. public function actionGetOrderInfo()
  186. {
  187. $order_id = \Yii::$app->getRequest()->post('order_id', '');
  188. if (!preg_match('/^[1-9][0-9]{0,10}$/', $order_id)) {
  189. $json['code'] = '1';
  190. $json['info'] = 'params error';
  191. return json_encode($json);
  192. }
  193. $sql = "SELECT IFNULL(b.reparations,0) 'reparations',reparation_type,memo_id,
  194. IFNULL(b.date,'') 'date',IFNULL(b.memo,'') 'memo',ifnull(b.memo_title, '') 'memo_title',
  195. 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'
  196. from order_main a
  197. LEFT JOIN order_finance_reparations b on a.order_id = b.order_id
  198. where a.ORDER_ID= {$order_id} and a.PARENT_ORDER_ID = 0
  199. ";
  200. $info = \Yii::$app->getDb()->createCommand($sql)->queryOne();
  201. if (empty($info)) {
  202. $json['code'] = '1';
  203. $json['info'] = '订单不存在!请核对订单号!';
  204. return json_encode($json);
  205. }
  206. $json['code'] = '0';
  207. $json['info'] = '获取信息成功';
  208. $json['data'] = $info;
  209. return json_encode($json);
  210. }
  211. /**
  212. * Des:设置订单的赔款
  213. * Name: setReparations
  214. * @return mixed
  215. * @author 倪宗锋
  216. */
  217. public function actionSetReparations()
  218. {
  219. $cookies = Yii::$app->request->cookies;
  220. $user_id = $cookies->getValue('user_id', -1);
  221. $param = array(
  222. 'order_id' => \Yii::$app->getRequest()->post('order_id', ''),//订单ID
  223. 'reparations' => \Yii::$app->getRequest()->post('reparations', ''),//金额
  224. 'reparationType' => \Yii::$app->getRequest()->post('reparationType', 1),//赔款类型
  225. 'date' => \Yii::$app->getRequest()->post('date', ''),//赔款日期
  226. 'memo_id' => \Yii::$app->getRequest()->post('memo_id', ''),//原因ID
  227. 'memo' => \Yii::$app->getRequest()->post('memo', ''),//赔款备注 原因
  228. 'memo_title' => \Yii::$app->getRequest()->post('memo_title', ''),//赔款备注 标题
  229. );
  230. if (!preg_match('/^[1-9][0-9]{0,10}$/', $param['order_id'])) {
  231. $json['code'] = '1';
  232. $json['info'] = '参数错误,请联系开发人员!001';
  233. return json_encode($json);
  234. }
  235. if (empty($param['date']) || empty($param['reparations'])) {
  236. $json['code'] = '1';
  237. $json['info'] = '请选择赔款日期或填写赔款金额!';
  238. return json_encode($json);
  239. }
  240. $sql = "REPLACE INTO `order_finance_reparations` ( `order_id`,`reparations`,`reparation_type`,`user_id`, `memo`,`date`,`create_time`,memo_title,memo_id)
  241. VALUES
  242. ('{$param['order_id']}','{$param['reparations']}','{$param['reparationType']}',{$user_id},'{$param['memo']}'
  243. ,'{$param['date']}',now(),'{$param['memo_title']}','{$param['memo_id']}');";
  244. $flag = \Yii::$app->getDb()->createCommand($sql)->execute();
  245. if ($flag) {
  246. $json['code'] = '0';
  247. $json['info'] = '设置订单赔款金额成功!';
  248. } else {
  249. $json['code'] = '1';
  250. $json['info'] = '设置订单赔款金额失败!';
  251. }
  252. return json_encode($json);
  253. }
  254. /**
  255. * Des:删除订单的赔款记录
  256. * Name: del
  257. * @return mixed
  258. * @author 倪宗锋
  259. */
  260. public function actionDel()
  261. {
  262. $param = array(
  263. 'order_id' => \Yii::$app->getRequest()->post('order_id', ''),//订单ID
  264. );
  265. if (!preg_match('/^[1-9][0-9]{0,10}$/', $param['order_id'])) {
  266. $json['code'] = '1';
  267. $json['info'] = '参数错误,请联系开发人员!001';
  268. return json_encode($json);
  269. }
  270. $sql = "UPDATE order_finance_reparations set cancel_flag=1 WHERE order_id = {$param['order_id']}";
  271. $flag = \Yii::$app->getDb()->createCommand($sql)->execute();
  272. if ($flag) {
  273. $json['code'] = '0';
  274. $json['info'] = '删除成功!';
  275. return json_encode($json);
  276. } else {
  277. $json['code'] = '0';
  278. $json['info'] = '删除失败!';
  279. return json_encode($json);
  280. }
  281. }
  282. /**
  283. * Des:获取赔款原因列表
  284. * Name: actionGetMemoArr
  285. * @return mixed
  286. * @author 倪宗锋
  287. */
  288. public function actionGetMemoArr()
  289. {
  290. $return = array();
  291. $return[] = array('memo_id' => 1, 'memo_title' => '漏单', 'memo' => '漏单:目前的紧急处理方案是退客人现场购票的金额。');
  292. $return[] = array('memo_id' => 2, 'memo_title' => '产品问题', 'memo' => '产品问题:赔付方案需要与运营沟通。');
  293. $return[] = array('memo_id' => 3, 'memo_title' => '客人问题', 'memo' => '客人问题:包括未收到短信,未找到车,未接到司机电话等。');
  294. $return[] = array('memo_id' => 4, 'memo_title' => '下错单', 'memo' => '下错单:上下站点问题,时间问题。');
  295. $return[] = array('memo_id' => 5, 'memo_title' => '汽车晚点', 'memo' => '汽车晚点:');
  296. $return[] = array('memo_id' => 6, 'memo_title' => '交通管制', 'memo' => '交通管制:');
  297. $return[] = array('memo_id' => 7, 'memo_title' => '并班原因', 'memo' => '并班原因:');
  298. $return[] = array('memo_id' => 8, 'memo_title' => '车队原因', 'memo' => '车队原因:');
  299. $return[] = array('memo_id' => 9, 'memo_title' => '司机原因', 'memo' => '司机原因:');
  300. $return[] = array('memo_id' => 10000, 'memo_title' => '其他', 'memo' => '其他。');
  301. $json['code'] = '0';
  302. $json['info'] = '获取列表成功';
  303. $json['list'] = $return;
  304. return json_encode($json);
  305. }
  306. }