ÿØÿà JFIF ` ` ÿþ
Server : Apache System : Linux ruga7-004.fmcity.com 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 User : tkt_travelbus ( 1137) PHP Version : 7.0.0p1 Disable Function : mysql_pconnect Directory : /tkt_travelbus/www/Lib/ |
Upload File : |
<? /****************************************************************************** * * 티켓 라이브러리 * ******************************************************************************/ // 티켓 목록 가저오기 function TO_list_ticket($rsv_no, $sql_where="") { $table = "TB_TICKET"; $data = array(); if (!$rsv_no) return $data; $sql = "select * from {$table} where rsv_no='{$rsv_no}' and del_flag = 'N'"; $sql .= " {$sql_where} "; // 정렬 $sql .= " order by group_code, field(ti_generation, 'A', 'C', 'B') asc"; $rs = db_query($sql); while($row = db_fetch_array($rs)) { // 티켓 상태 (미사용 / 발송완료 / 사용완료 / 취소) $code_res = base_codec("PRD","TIST",$row['ticket_status']); $row['ticket_status_str'] = _e($code_res[0]['cd_nm']); // 성인/아동/유아/유아 switch($row['ti_generation']) { case "A": $row['generation_str'] = _e("성인"); break; case "C": $row['generation_str'] = _e("아동"); break; case "B": $row['generation_str'] = _e("유아"); break; case "I": $row['generation_str'] = _e("영아"); break; } // 발송방법 switch($row['ti_send_method']) { case "SMS": $row['ti_send_method_str'] = _e("SMS"); break; case "MMS": $row['ti_send_method_str'] = _e("MMS"); break; case "AT": $row['ti_send_method_str'] = _e("알림톡"); break; case "FT": $row['ti_send_method_str'] = _e("친구톡"); break; default : $row['ti_send_method_str'] = ""; break; } $data[] = $row; } return $data; } // 예약건에 티켓 발권처리 function TO_issue_ticket($res_no, $disp_error = 'N', $generation = '', $count = 0) { Log::save(sprintf("%s(%d) TO_issue_ticket START %s", __FILE__, __LINE__, $res_no), '', date('Ym')); // 예약정보 $res_data = res_good_master(" and res_no='{$res_no}' "); $row_res = res_good_master_replace($res_data[0]); $rsv_no = $row_res['rsv_no']; $g_uid = $row_res['g_uid']; if(!$row_res){ error_msg("예약 정보가 없습니다.","end"); } // 행사 정보 $row_package = db_fetch(" select GT.api_item_code_a, GT.api_item_code_a2, GT.api_item_code_c, GT.api_item_code_c2 from TB_RES_GOOD_DATE as GD left join TB_GOOD_DATE_TYPE GT on GT.dtid = GD.dtid where GD.g_uid = '{$g_uid}' and GD.res_no ='{$res_no}' and GT.del_flag = 'N' "); // $sqltb = "select GT.api_item_code_a, GT.api_item_code_a2, GT.api_item_code_c, GT.api_item_code_c2 from TB_RES_GOOD_DATE as GD left join TB_GOOD_DATE_TYPE GT on GT.dtid = GD.dtid where GD.g_uid = '{$g_uid}' and GD.res_no ='{$res_no}' and GT.del_flag = 'N' "; /* if(devCookie()){ p($sqltb); //select GT.api_item_code_a, GT.api_item_code_a2, GT.api_item_code_c, GT.api_item_code_c2 from TB_RES_GOOD_DATE as GD left join TB_GOOD_DATE_TYPE GT on GT.dtid = GD.dtid where GD.g_uid = '1852' and GD.res_no ='T1665548775B2C57D2' and GT.del_flag = 'N' exit; } */ //select GT.api_item_code_a, GT.api_item_code_a2, GT.api_item_code_c, GT.api_item_code_c2 from TB_RES_GOOD_DATE as GD left join TB_GOOD_DATE_TYPE GT on GT.dtid = GD.dtid where GD.g_uid = '2037' and GD.res_no ='T16617489134E69056' and GT.del_flag = 'N' /*$viewTy = "select GT.api_item_code_a, GT.api_item_code_a2, GT.api_item_code_c, GT.api_item_code_c2 from TB_RES_GOOD_DATE as GD left join TB_GOOD_DATE_TYPE GT on GT.dtid = GD.dtid where GD.g_uid = '{$g_uid}' and GD.res_no ='{$res_no}' and GT.del_flag = 'N'"; if(devCookie()){ p($viewTy); exit; }*/ $ticketSQL = " select GT.api_item_code_a, GT.api_item_code_a2, GT.api_item_code_c, GT.api_item_code_c2 from TB_RES_GOOD_DATE as GD left join TB_GOOD_DATE_TYPE GT on GT.dtid = GD.dtid where GD.g_uid = '{$g_uid}' and GD.res_no ='{$res_no}' and GT.del_flag = 'N' "; Log::save(sprintf("%s(%d) 티켓연동코드 호출 SQL {$ticketSQL}", __FILE__, __LINE__), '', date('Ym')); if(!$row_package){ $error_msg = "행사 정보가 없습니다. 1"; if($disp_error=='Y') error_msg($error_msg); } $api_item_code_a = $row_package['api_item_code_a']; // 성인 기본 $api_item_code_a2 = $row_package['api_item_code_a2']; // 성인 복합 $api_item_code_c = $row_package['api_item_code_c']; // 소인 기본 $api_item_code_c2 = $row_package['api_item_code_c2']; // 소인 복합 Log::save(sprintf("%s(%d) 티켓연동코드 %s %s", __FILE__, __LINE__, $api_item_code_a, $api_item_code_c), '', date('Ym')); // 연동코드 있을 경우에만 진행 if($api_item_code_a != '' || $api_item_code_c != ''){ // 상품 정보 $arr_good = good_list(" and g_uid='{$g_uid}' "); $row_good = $arr_good[0]; $producer_id = $row_good['producer_id']; if(!$row_good){ $error_msg = "상품 정보가 없습니다."; if($disp_error=='Y') error_msg($error_msg); } if($generation && $count > 0) { // 지정된수량 강제발권 switch($generation){ case 'A': $adult_inwon = $count; break; case 'C': $child_inwon = $count; break; } } else { // 이미 발행된 티켓 확인 $row_ticket = TO_list_ticket($rsv_no, $sql_where=""); if($row_ticket){ $error_msg = "이미 발행된 바코드가 있습니다."; if($disp_error=='Y') error_msg($error_msg); } // 발권정보 세팅 $adult_inwon = $row_res['adult_inwon']; $child_inwon = $row_res['child_inwon']; } // 성인(대인) if($adult_inwon > 0){ if($api_item_code_a){ $ticket_data[] = array( 'ticket_no' => $api_item_code_a, 'quantity' => $adult_inwon, 'generation' => 'A', ); } if($api_item_code_a2){ $ticket_data[] = array( 'ticket_no' => $api_item_code_a2, 'quantity' => $adult_inwon, 'generation' => 'A', ); } } // 유아(소인) if($child_inwon > 0){ if($api_item_code_c){ $ticket_data[] = array( 'ticket_no' => $api_item_code_c, 'quantity' => $child_inwon, 'generation' => 'C', ); } if($api_item_code_c2){ $ticket_data[] = array( 'ticket_no' => $api_item_code_c2, 'quantity' => $child_inwon, 'generation' => 'C', ); } } Log::save(sprintf("%s(%d) ticket_data : %s", __FILE__, __LINE__, json_encode($ticket_data)), '', date('Ym')); if(!$ticket_data){ $error_msg = "바코드 발권 가능한 인원이 없습니다"; if($disp_error=='Y') error_msg($error_msg); } // 발권 API 연동 (정상 시 0000 리턴) if(!$api) $api = new ApiManager($producer_id); foreach($ticket_data as $k => $v) { $vToJsonData = json_encode($v,JSON_UNESCAPED_UNICODE); Log::save(sprintf("%s(%d) ticketing vToJsonData : {$vToJsonData}", __FILE__, __LINE__), '', date('Ym')); Log::save(sprintf("%s(%d) ticketing argument - res_cust_nm : {$row_res['res_cust_nm']}, ", __FILE__, __LINE__), '', date('Ym')); Log::save(sprintf("%s(%d) ticketing argument - res_cust_hp : {$row_res['res_cust_hp']}, ", __FILE__, __LINE__), '', date('Ym')); Log::save(sprintf("%s(%d) ticketing argument - rsv_no : {$rsv_no}, ", __FILE__, __LINE__), '', date('Ym')); Log::save(sprintf("%s(%d) ticketing argument - ev_start : {$row_res['ev_start']}, ", __FILE__, __LINE__), '', date('Ym')); $voucher = $api->ticketing($v['ticket_no'], $v['quantity'], '', $row_res['res_cust_nm'], $row_res['res_cust_hp'], $rsv_no, $v['generation'], $row_res['ev_start']); if(devCookie()){ p($v['ticket_no']); p($v['quantity']); p(''); p($row_res['res_cust_nm']); p($row_res['res_cust_hp']); p($rsv_no); p($v['generation']); p($row_res['ev_start']); p($voucher); // exit; } Log::save(sprintf("%s(%d) ticketing Result : %s", __FILE__, __LINE__, json_encode($voucher)), '', date('Ym')); if($voucher['resultCode'] != '0000') { $error_msg = "API 연동 오류 : " . $voucher['resultMsg']; if($disp_error=='Y') error_msg($error_msg); } if(count($voucher['data']) != $v['quantity']) { $vd = count($voucher['data']); $vq = $v['quantity']; $error_msg = "일부 티켓을 가저오지 못하였습니다. 티켓을 확인해주세요. {$vd},{$vq} "; if($disp_error=='Y') error_msg($error_msg); } if($result) { $result = array_merge($result, $voucher['data']); } else { $result = $voucher['data']; } } //야놀자 티켓 번호 매칭 //yanolja $b2b_api_data = $row_res['b2b_api_data']; $b2b_voucher = $row_res['b2b_voucher']; $b2b_api_data_arr = json_decode($b2b_api_data,true); $ticketMatchData = ""; if($voucher['resultCode'] == '0000'){ $ticketSeq = 0; foreach($voucher['data'] as $item){ $orderCdYanolja = $b2b_api_data_arr[$b2b_voucher]['passengers'][$ticketSeq]['orderCd']; $ticketMatchData .= $orderCdYanolja.":::".$item['ticket_number'].'||'; $ticketSeq++; } } $sqlTm = "UPDATE TB_RES_GOOD SET api_ticket_match = '{$ticketMatchData}' WHERE res_no = '{$res_no}'"; db_query($sqlTm); Log::save(sprintf("%s(%d) ticketing Match Data : %s", __FILE__, __LINE__, $sqlTm), '', date('Ym')); Log::save(sprintf("%s(%d) ticket_cnt : %s", __FILE__, __LINE__, count($result)), '', date('Ym')); Log::save(sprintf("%s(%d) error_msg : %s", __FILE__, __LINE__, $error_msg), '', date('Ym')); } else { $error_msg = "공급처 연동코드가 설정되어 있지 않습니다."; if($disp_error=='Y') error_msg($error_msg); } return $result; } // 티켓 알림톡 발송 function TO_send_ticket($res_no, $disp_error = 'N') { global $ppurio; Log::save(sprintf("%s(%d) ADMIN TO_send_ticket res_no=%s", __FILE__, __LINE__, $res_no), '', 'ppurio/'.date('Ym')); if(!$res_no) { $error_msg = "예약번호가 없습니다."; if($disp_error=='Y') error_msg($error_msg,"end"); } // 예약정보 $res_data = res_good_master(" and res_no='{$res_no}' "); $res_row = res_good_master_replace($res_data[0]); if(!$res_row) { $error_msg = "예약정보가 없습니다."; if($disp_error=='Y') error_msg($error_msg,"end"); } // 티켓목록 $ticket_data = TO_list_ticket($res_row['rsv_no'], "AND ticket_status != 'C'"); if(!$ticket_data){ $error_msg = "손님에게 배정된 티켓이 없습니다."; if($disp_error=='Y') error_msg($error_msg,"end"); } // 입장권티켓 switch($res_row['g_uid']){ case '1669' : // 소노 비발디파크 스노위랜드 이용권 $templete = "SEND_TICKET_1669"; break; case '1699' : // [특가]비발디파크 리프트 + 장비렌탈PKG 단일권(기간한정 ~12.06 까지) $templete = "SEND_TICKET_1699"; break; case '1708' : // [특가]소노호텔&리조트 워터파크 통합권(대명리조트) - 미사용 $templete = "SEND_TICKET_1708"; break; case '1671' : // 소노 비발디파크 오션월드 입장권(~4월 30일 까지) $templete = "SEND_TICKET_1671"; break; default : $templete = "SEND_TICKET"; break; } //$templete = "SEND_TICKET"; $recever = str_replace("-", "", $res_row['res_cust_hp']); // 수신핸드폰 $keyword = array( '접수번호' => $res_no ); // Macro data $data = to_macro_list(array('mtype'=>$templete,'disp_yn'=>'Y')); $macro = $data[0]; // 알림톡 발송 if(!$ppurio) { include PARTNER_DIR . "/ppurio/class.Ppurio.php"; $ppurio = new Ppurio(); } $result = $ppurio->sendAT($recever, $macro['midx'], $keyword); Log::save(sprintf("%s(%d) at_result : %s", __FILE__, __LINE__, json_encode($result)), '', date('Ym')); Log::save(sprintf("%s(%d) error_msg : %s", __FILE__, __LINE__, $error_msg), '', date('Ym')); return $result; } /** * author : taeyoung * 2022.06.13 * 티켓 초기화 */ function To_del_ticket($seq) { $table = "TB_TICKET"; if (!$seq) return false; $mb_id = $_COOKIE['MemberID']; if(!$mb_id){ $mb_id = ''; } $sql = "SELECT ti_cust_nm, ti_memo FROM {$table} WHERE seq = '{$seq}'"; $rs = db_query($sql); $row = db_fetch_array($rs); $row['ti_memo'] .= '\n'.$row['ti_cust_nm'].' 취소'; $ti_memo = $row['ti_memo']; $sql = "UPDATE {$table} SET ti_memo = '{$ti_memo}', ti_send_hp = '', rsv_no = '', ti_reserve_dt = '',ti_use_dt = '', ti_send_dt = '', ti_cust_nm = '', ti_cust_hp = '', ticket_status = 'W', edit_id = '{$mb_id}', edit_dt = now() WHERE seq = '{$seq}'"; // 티켓 이력관리 추가 TO_ticket_history_ins($seq, "티켓 삭제(취소)"); // 티켓 이력관리2 추가 (삭제 전 기록) TO_ticket_history_status_ins($seq, 'C'); if(db_query($sql)){ return true; }else{ return false; } } /** * author : taeyoung * 2022.06.13 * 티켓 전체 초기화 */ function To_del_total_ticket($rsv_no = ''){ $table = "TB_TICKET"; if (!$rsv_no) return false; $sql = "SELECT * FROM {$table} WHERE rsv_no = '{$rsv_no}'"; $rs = db_query($sql); $mb_id = $_COOKIE['MemberID']; if(!$mb_id){ $mb_id = ''; } $data = array(); while($row = db_fetch_array($rs)) { $ti_memo = '\n'.$row['ti_cust_nm'].' 취소'; $seq = $row['seq']; $ticket_number = $row['ticket_number']; if(!$seq) exit; $sql = "UPDATE {$table} SET ti_memo = CONCAT(ti_memo,'{$ti_memo}'), rsv_no = '', ti_reserve_dt = '',ti_use_dt = '', ti_send_dt = '', ti_cust_nm = '', ti_cust_hp = '', ticket_status = 'W', edit_id = '{$mb_id}', edit_dt = now() WHERE seq='{$seq}'"; // 티켓 이력관리 추가 TO_ticket_history_ins($seq, "티켓 삭제(취소)"); // 티켓 이력관리2 추가 TO_ticket_history_status_ins($seq, 'C'); if(!db_query($sql)){ echo "<script>alert('삭제 실패 관리자문의 티켓 SEQ : {$seq}');</script>"; }else{ array_push($data,$ticket_number); } } return $data; } ?>