Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 
 
 

399 rader
14 KiB

  1. <?php
  2. /**
  3. * Function Description:门票模板
  4. * @author 娄梦宁
  5. */
  6. namespace backend\modules\zzcs\controllers;
  7. use backend\modules\zzcs\logic\ProductManage;
  8. use backend\modules\zzcs\models\BaseUser;
  9. use backend\modules\zzcs\util\Util;
  10. use common\models\Msg;
  11. use common\models\Utils;
  12. use Yii;
  13. use yii\web\Controller;
  14. use backend\modules\zzcs\models\OperaProduct;
  15. use backend\modules\zzcs\models\OperaProductRun;
  16. use backend\modules\zzcs\models\BaseSupplier;
  17. class ProdController extends Controller
  18. {
  19. public $enableCsrfValidation = false;
  20. public $layout = '@backend/modules/zzcs/views/layouts/zzcs';
  21. /**
  22. * Function Description:产品列表
  23. * Function Name: actionAddProd
  24. *
  25. * @return string
  26. *
  27. * @author 娄梦宁
  28. */
  29. public function actionProdList(){
  30. $opera_prod=new OperaProduct();
  31. #region 获取参数
  32. $prod_name = Yii::$app->request->get('prod_name','');//门票编号/门票名称
  33. $is_onsale= Yii::$app->request->get('is_onsale',1);//是否上架
  34. $run_duty_id= Yii::$app->request->get('run_duty_id',0);
  35. $page_size= Yii::$app->request->get('page_size',10);//是否上架
  36. $current_page= Yii::$app->request->get('current_page',1);//是否上架
  37. $data=$opera_prod->getProdList($prod_name,$is_onsale,$run_duty_id,$page_size,$current_page);
  38. #获取供应商列表
  39. $base_supplier = new BaseSupplier();
  40. $supplier_list = $base_supplier->getProductSupplierList();
  41. $supplier_list2 = array();
  42. foreach( $supplier_list as $supplier_info ) {
  43. $supplier_list2[$supplier_info["org_id"]] = $supplier_info;
  44. }
  45. $data["supplier_list"] = $supplier_list2;
  46. // 获取运营商
  47. $base_user = new BaseUser();
  48. $user_id = Yii::$app->request->cookies->getValue('user_id', 0);
  49. $run_duty_list = $base_user->getRunDutyList($user_id);
  50. $data['run_duty_list'] = $run_duty_list;
  51. return $this->render('prod-list', $data);
  52. }
  53. /*
  54. * 产品上架
  55. */
  56. public function actionOnSale(){
  57. $opera_prod=new OperaProduct();
  58. $onsale_id= Yii::$app->request->post('onsale_id','');
  59. $id_str=rtrim($onsale_id,',');
  60. $id_arr=explode(',',$id_str);
  61. $result=$opera_prod->onSale($id_arr);
  62. return json_encode($result);
  63. }
  64. /*
  65. * 产品下架
  66. */
  67. public function actionOffSale(){
  68. $opera_prod=new OperaProduct();
  69. $offsale_id= Yii::$app->request->post('offsale_id','');
  70. $id_str=rtrim($offsale_id,',');
  71. $id_arr=explode(',',$id_str);
  72. $result=$opera_prod->offSale($id_arr);
  73. return json_encode($result);
  74. }
  75. /*
  76. * 新增产品
  77. */
  78. public function actionAddProd(){
  79. $opera_prod=new OperaProduct();
  80. $prod_cate_name= trim(Yii::$app->request->post('prod_cate_name',''));
  81. $prod_price_arr= Yii::$app->request->post('prod_price_arr','');
  82. $prod_price_arr=json_decode($prod_price_arr,true);
  83. $is_refund= Yii::$app->request->post('is_refund',1);
  84. $refund_limit_day= Yii::$app->request->post('refund_limit_day')==''?0:Yii::$app->request->post('refund_limit_day',0);
  85. $refund_limit_time= Yii::$app->request->post('refund_limit_time','23:59');
  86. $remark= Yii::$app->request->post('remark','');
  87. $prod_code= trim(Yii::$app->request->post('prod_code',''));
  88. $run_duty_id = trim(Yii::$app->request->post('run_duty_id',''));
  89. $top_org_id = trim(Yii::$app->request->post('top_org_id',0));
  90. // if (count($prod_price_arr) != count(array_unique($prod_price_arr))){
  91. // $json=[
  92. // 'code'=>2,
  93. // 'info'=>'价格类型重复,请重新添加',
  94. // ];
  95. // return json_encode($json);
  96. // }
  97. $tmp_arr=$prod_price_arr;
  98. foreach($prod_price_arr as $key=>$val){
  99. foreach($tmp_arr as $k=>$v){
  100. if($v['price_type_name']==$val['price_type_name'] && $key!=$k){
  101. $json=[
  102. 'code'=>2,
  103. 'info'=>'价格类型重复,请重新添加',
  104. ];
  105. return json_encode($json);
  106. }
  107. }
  108. }
  109. //简单参数校验
  110. if($prod_cate_name=='' ||$prod_code==''){
  111. $json=[
  112. 'code'=>1,
  113. 'info'=>'参数错误',
  114. ];
  115. return json_encode($json);
  116. }
  117. if(empty($run_duty_id)){
  118. $json=[
  119. 'code'=>1,
  120. 'info'=>'请选择运营负责人',
  121. ];
  122. return json_encode($json);
  123. }
  124. if(empty($prod_price_arr)){
  125. $json=[
  126. 'code'=>1,
  127. 'info'=>'请填写价格类型',
  128. ];
  129. return json_encode($json);
  130. }
  131. $result=$opera_prod->istProd($prod_cate_name,$prod_price_arr,$is_refund,$refund_limit_day,$refund_limit_time,$remark,$run_duty_id,$prod_code);
  132. if($result!=0){
  133. $json=[
  134. 'code'=>$result,
  135. 'info'=>'数据库错误',
  136. ];
  137. }else{
  138. $json=[
  139. 'code'=>0,
  140. ];
  141. }
  142. return json_encode($json);
  143. }
  144. /*
  145. * 获取门票信息
  146. */
  147. public function actionGetProdDetail(){
  148. $opera_prod=new OperaProduct();
  149. $prod_id= Yii::$app->request->post('prod_id','');
  150. $detail=$opera_prod->getDetailForUpt($prod_id);
  151. return json_encode($detail);
  152. }
  153. /**
  154. * Function Description:修改门票信息
  155. * Function Name: actionUptProd
  156. *
  157. *
  158. * @author 娄梦宁
  159. */
  160. public function actionUptProd(){
  161. $opera_prod=new OperaProduct();
  162. $prod_cate_name= trim(Yii::$app->request->post('prod_cate_name',''));
  163. $prod_id= Yii::$app->request->post('prod_id','');
  164. $prod_price_arr= Yii::$app->request->post('prod_price_arr','');
  165. $prod_price_arr=json_decode($prod_price_arr,true);
  166. $is_refund= Yii::$app->request->post('is_refund',1);
  167. $refund_limit_day= Yii::$app->request->post('refund_limit_day')==''?0:Yii::$app->request->post('refund_limit_day',0);
  168. $refund_limit_time= Yii::$app->request->post('refund_limit_time','23:59');
  169. $remark= Yii::$app->request->post('remark','');
  170. $prod_code= trim(Yii::$app->request->post('prod_code',''));
  171. $top_org_id= Yii::$app->request->post('top_org_id',0);
  172. $run_duty_id= Yii::$app->request->post('run_duty_id',0);
  173. //简单参数校验
  174. if($prod_cate_name=='' ||$prod_code==''){
  175. $json=[
  176. 'code'=>1,
  177. 'info'=>'参数错误',
  178. ];
  179. return json_encode($json);
  180. }
  181. //价格类型不能重复
  182. $tmp_arr=$prod_price_arr;
  183. foreach($prod_price_arr as $key=>$val){
  184. foreach($tmp_arr as $k=>$v){
  185. if($v['price_type_name']==$val['price_type_name'] && $key!=$k){
  186. $json=[
  187. 'code'=>2,
  188. 'info'=>'价格类型重复,请重新添加',
  189. ];
  190. return json_encode($json);
  191. }
  192. }
  193. }
  194. if(empty($run_duty_id)){
  195. $json=[
  196. 'code'=>1,
  197. 'info'=>'请选择运营负责人',
  198. ];
  199. return json_encode($json);
  200. }
  201. if(empty($prod_price_arr)){
  202. $json=[
  203. 'code'=>1,
  204. 'info'=>'请填写价格类型',
  205. ];
  206. return json_encode($json);
  207. }
  208. $result=$opera_prod->uptProd($prod_cate_name,$prod_id,$prod_price_arr,$is_refund,$refund_limit_day,$refund_limit_time,$remark,$run_duty_id,$prod_code,$top_org_id);
  209. if($result!=0){
  210. $json=[
  211. 'code'=>$result,
  212. 'info'=>'数据库错误'
  213. ];
  214. }else{
  215. $json=[
  216. 'code'=>0,
  217. 'info'=>'修改成功'
  218. ];
  219. }
  220. return json_encode($json);
  221. }
  222. /**
  223. * Function Description:得到价格日历
  224. * Function Name: actionGetCalendar
  225. *
  226. * @return string
  227. *
  228. * @author 温依莅
  229. */
  230. public function actionGetCalendar()
  231. {
  232. $request = Yii::$app->request;
  233. $prod_id = $request->get('prod_id', -1);
  234. $view_type = $request->get('view_type', 1);
  235. $to_org_id = $request->get('to_org_id',0);
  236. $year = $request->get('year', 0);
  237. $month = $request->get('month',0);
  238. $prod_run = new OperaProductRun();
  239. $final = $prod_run->getRunList($prod_id,$to_org_id, $year, $month);
  240. $final['view_type'] = $view_type;
  241. //取所有的符有售票权限的渠道商
  242. $logic = new ProductManage();
  243. $to_org_list = $logic->getAllToOrg();
  244. $final['to_org_list'] = $to_org_list;
  245. //结合opera_product_fun处理list数组
  246. //print_r($final);exit;
  247. return $this->render('set-prod-price', $final);
  248. }
  249. /**
  250. * Function Description:批量增加修改特定票种价格日历
  251. * Function Name: actionModifyRunInfo
  252. *
  253. * @return array
  254. *
  255. * @author 温依莅
  256. */
  257. public function actionModifyRunInfo()
  258. {
  259. $request = Yii::$app->request;
  260. $to_org_id = $request->post('to_org_id',-1);
  261. $prod_id = $request->post('prod_id', -1);
  262. $date = $request->post('prod_date', 0);
  263. $attribute = $request->post('prod_attribute', 0);
  264. $prod_run = new OperaProductRun();
  265. $res = $prod_run->modifyRunInfo($to_org_id,$prod_id, $date, $attribute);
  266. return json_encode($res);
  267. }
  268. /**
  269. * Function Description:
  270. * Function Name: actionChangeSale
  271. *
  272. * @return array
  273. *
  274. * @author 温依莅
  275. */
  276. public function actionChangeSale()
  277. {
  278. $request = Yii::$app->request;
  279. $prod_id = $request->post('prod_id', -1);
  280. $date = $request->post('prod_date', 0);
  281. $attribute = $request->post('is_onsale', -1);
  282. $to_org_id = $request->post('to_org_id',-1);
  283. $prod_run = new OperaProductRun();
  284. $res = $prod_run->changeSale($prod_id, $date, $attribute,$to_org_id);
  285. return json_encode($res);
  286. }
  287. /**
  288. * Function Description:门票录入获取基础信息
  289. * Function Name: actionFillOrder
  290. *
  291. * @return string
  292. *
  293. * @author 娄梦宁
  294. */
  295. public function actionFillOrder(){
  296. $opera_prod=new OperaProduct();
  297. $prod_list=$opera_prod->getAllProdMain();
  298. $supplier_list=$opera_prod->getSupplierList();
  299. $data=[
  300. 'prod_list'=>$prod_list,
  301. 'supplier_list'=>$supplier_list
  302. ];
  303. $prod_id=Yii::$app->request->get('prod_id','');
  304. $run_date=Yii::$app->request->get('run_date','');
  305. if($prod_id=='' || $run_date==''){
  306. $prod_arr=[];
  307. }else{
  308. $prod_arr=$opera_prod->getProdPriceByDate($prod_id,$run_date);
  309. }
  310. $data['prod_arr']=$prod_arr;
  311. return $this->render('fill-order',$data);
  312. }
  313. /**
  314. * Function Description:填写订单下单接口
  315. * Function Name: actionFillOrderSubmit
  316. *
  317. * @return mixed
  318. *
  319. * @author 娄梦宁
  320. */
  321. public function actionFillOrderSubmit(){
  322. $opera_prod=new OperaProduct();
  323. $cookies = Yii::$app->request->cookies;
  324. $user_id = $cookies->getValue('user_id', -1);
  325. //联系人信息拼接
  326. $customer_info='{'.Yii::$app->request->post('customer_name','').','.Yii::$app->request->post('customer_phone','').','
  327. .Yii::$app->request->post('customer_id_type',150).','.Yii::$app->request->post('customer_id_card','').'}';
  328. //订单状态配置数据
  329. $outside_sale_org_id= Yii::$app->request->post('outside_sale_org_id','');
  330. $outside_sale_order_no= Yii::$app->request->post('outside_sale_order_no','');
  331. //获取业务员
  332. $sales_man=$opera_prod->getSalesMan($outside_sale_org_id);
  333. $order_info_str="{".$user_id.',0,'.$outside_sale_org_id.','.$outside_sale_order_no.',0,275,1,'.$sales_man."}";
  334. $prod_str=Yii::$app->request->post('prod_str','');
  335. $run_date=Yii::$app->request->post('run_date','');
  336. $main_prod_id=Yii::$app->request->post('main_prod_id','');
  337. //调用下单接口
  338. $timer=time();
  339. $send_date=[
  340. 'auth_code' => Util::authCodeForCs($timer),
  341. 'user_key' => 'cs',
  342. 'user' => 'cs_key',
  343. 'request_time' => $timer,
  344. 'action' => 'submit_ticket_order',
  345. 'order_info_str' => $order_info_str,
  346. 'customer_info_str' => $customer_info,
  347. 'run_date'=>$run_date,
  348. 'prod_str'=>$prod_str,
  349. 'main_prod_id'=>$main_prod_id
  350. ];
  351. $return=Utils::httpRequest(CS1_DOMAIN. '/api/submit-order',$send_date);
  352. return $return;
  353. }
  354. /**
  355. * Function Description:门票退票接口
  356. * Function Name: actionCancelOrder
  357. *
  358. * @return string
  359. *
  360. * @author 娄梦宁
  361. */
  362. public function actionCancelOrder(){
  363. $order_id=Yii::$app->request->post('order_id');
  364. $cookies = Yii::$app->request->cookies;
  365. $user_id = $cookies->getValue('user_id', -1);
  366. $cancel_reason=Yii::$app->request->post('cancel_reason','系统退单');
  367. //调用取消单接口
  368. $timer=time();
  369. $send_date=[
  370. 'auth_code' => Util::authCodeForCs($timer),
  371. 'user_key' => 'cs',
  372. 'user' => 'cs_key',
  373. 'request_time' => $timer,
  374. 'action' => 'cancel_ticket_order',
  375. 'order_id' => $order_id,
  376. 'user_id' => $user_id,
  377. 'cancel_reason'=>$cancel_reason
  378. ];
  379. $return=Msg::httpRequest(CS1_DOMAIN.'/api/submit-order',$send_date);
  380. return $return;
  381. }
  382. }