| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- <?
- include $_SERVER['DOCUMENT_ROOT'].'/common/lib/comm.php';
- include $_SERVER['DOCUMENT_ROOT'].'/common/lib/biztalk.php';
- exit;
- /*
- 필요 함수 /common/lib/func.php에 정의
- 발송시스템
- 1. 낙찰리스트, 진행중 리스트
- 1차 발송
- 2차 발송
- 3차 발송 후 2일 후 해당 계정 입찰 안되게
- 관리자가 해제 할 수 있음
- 2. 1차 SMS 발송 후 2~3차는 자동발송 처리
- - 미리 다음 단계를 생성
- - 발송전 상태 변견 체크 하여 발송 또는 발송 안되게 처리
- 1차 발송후 5일후 자동으로 2차발송 2차발송후 3일후 3차발송
- /cron/tender_sms_send.php
- 1단게 발송시 2단계 발송 상태는 발송대기로 새롭게 등록
- 스케쥴러가 dt_send < 현재날짜 && ds_send_status = 'A0'
- 1. 낙찰중인건
- ds_status = Z0
- 진행중이나 견적실수로로 넘어갈 경우
- (((s.ds_status_contract is null or s.ds_status_contract = '' or s.ds_status_contract = 'Z0') and s.ds_status_contract_step1 = 'Y')
- or s.ds_status in ('ZE') and (s.ds_status_contract is null or s.ds_status_contract = '') ) 로 변경 됐으면
- //견적실수
- // and s.ds_status in ('ZE') and (s.ds_status_contract is null or s.ds_status_contract = '')
- 현재 데이터는 ds_send_status = B0 발송취소 처리 됨
- 상태 변경이 없을 경우
- 현재 단계 발송처리 ds_send_status = 'Z0'
- 3단계가 아닐 경우 depth는 ++ 되고 tender_sms_master 에 다음단계 SMS 등록
- tender_master 에 현재 발송 단계 업데이트
- 3단계일 경우 ds_lock_status = B0으로 업데이트
- 2. 진행중인건
- ds_status = Z1
- 현재 매물이 Z0 이고 거래완료나, 거래 실패/거래연기, 등으로 변경이 됐으면
- //해약
- // s.ds_status in ('Z0') and s.ds_status_contract in ('C0')
- //거래연기
- // and s.ds_status in ('Z0') and s.ds_status_contract in ('B0')
- //판매완료
- // and s.ds_status in ('ZS')
- 현재 데이터는 ds_send_status = B0 발송취소 처리 됨
- 상태 변경이 없을 경우
- 현재 단계 발송처리 ds_send_status = 'Z0'
- 3단계가 아닐 경우 depth는 ++ 되고 tender_sms_master 에 다음단계 SMS 등록
- tender_master 에 현재 발송 단계 업데이트
- 3단계일 경우 ds_lock_status = B0으로 업데이트
- */
- // $sql = "insert into tender_sms_master_log (nm_content) values('aa') ";
- // mysql_query($sql);
- if($_SERVER['REMOTE_ADDR'] == '220.86.25.88') {
- // echo $sql;
- }
- //단계별 일수
- $sms_period = tender_sms_period();
- //거래상태별 메시지
- $sms_msg = tender_sms_msg();
- $cur_date = date("Y-m-d H:i:s");
- $biztalk = new Biztalk();
- $biztalk->getToken();
- //발송 대기전, 발송시간이 현재 보다 작은 건 취합
- $sql = "select *
- from tender_sms_master
- where ds_send_status = 'A0'
- and dt_send < now()";
- $res = mysql_query($sql);
- while($col = mysql_fetch_array($res)) {
- $cd_tender_sms = $col['cd_tender_sms'];
- $cd_sale = $col['cd_sale'];
- $cd_tender = $col['cd_tender'];
- $depth = $col['depth'];
- $nm_hp = $col['nm_hp'];
- $dt_send = $col['dt_send'];
- $nm_content = $col['nm_content'];
- $ds_status = $col['ds_status'];
- //경매 정보 불러옴
- $r = mysql_query("SELECT
- a.*
- , b.nm_model
- , c.nm_grade
- , d.nm_brand
- , e.nm_model_sub
- , getCode('car_master','ds_type',a.ds_type) as nm_type
- , getCode('car_master','ds_open',a.ds_open) as nm_open
- , getCode('car_master','ds_sales',a.ds_sales) as nm_sales
- , getCode('car_master','ds_transmission',a.ds_transmission) as nm_transmission
- , getCode('member_master','ds_area',s.ds_area) as nm_area
- , getCode('sale_master','ds_status',s.ds_status) as nm_status
- , s.cd_sale
- , f.cd_tender cd_tender
- , s.ds_status as ds_status_sale
- , f.nm_hp tender_nm_hp
- , s.ds_status_contract
- , s.ds_status_contract_step1
- FROM sale_master s
- inner join car_master a on (s.cd_car = a.cd_car)
- left outer join car_model b on (a.cd_model = b.cd_model)
- left outer join car_grade c on (a.cd_grade = c.cd_grade)
- left outer join car_brand d on (a.cd_brand = d.cd_brand)
- left outer join car_model_sub e on (a.cd_model_sub = e.cd_model_sub)
- inner join tender_master f on (s.cd_sale = f.cd_sale and f.ds_status = 'Z0' and f.ds_delind = 'N' and f.cd_tender = '$cd_tender')
- where s.cd_sale = '". $cd_sale . "' and s.ds_delind = 'N' LIMIT 1");
- $sale_col = mysql_fetch_array($r);
- //검색된 경매 정보가 없으면 tender_sms_master 발송취소로 업데이트
- if(empty($sale_col['cd_sale'])) {
- cancel_tender_sms($cd_tender_sms);
- continue;
- }
- $is_cancel = false;
- switch($ds_status) {
- //낙찰중인건
- case 'Z0':
- //진행중으로 변경이 됐거나 ZE 견적실수로 변경 됐을 경우 락 필요치 않음 으로 업데이트
- if((((empty($sale_col['ds_status_contract']) || $sale_col['ds_status_contract'] == 'Z0') && $sale_col['ds_status_contract_step1'] == 'Y')
- || ($sale_col['ds_status_sale'] == 'ZE' && empty($sale_col['ds_status_contract'])))) {
- $is_cancel = true;
- }
- $tender_update_column = " ds_complete_depth = '".$depth."'";
- break;
- //진행중인건
- case 'Z1':
- //해약
- // s.ds_status in ('Z0') and s.ds_status_contract in ('C0')
- //거래연기
- // and s.ds_status in ('Z0') and s.ds_status_contract in ('B0')
- //판매완료
- // and s.ds_status in ('ZS')
- if($sale_col['ds_status_sale'] == 'Z0' && $sale_col['ds_status_contract'] == 'C0') {
- $is_cancel = true;
- }else if($sale_col['ds_status_sale'] == 'Z0' && $sale_col['ds_status_contract'] == 'B0') {
- $is_cancel = true;
- }else if($sale_col['ds_status_sale'] == 'ZS') {
- $is_cancel = true;
- }
- $tender_update_column = " ds_underway_depth = '".$depth."'";
- break;
- default:
- continue;
- break;
- }
- //취소해야 하는 매울이면 취소 처리
- if($is_cancel == true) {
- no_lock_tender_sms($cd_tender_sms);
- cancel_tender_sms($cd_tender_sms);
- continue;
- }
- //변경이 안됐다면
- //SMS 발송
- $SMS_DATA = array();
- $SMS_DATA['message'] = $nm_content; //발신 메시지 내용 (공백 포함2345 1000자로 제한) 가변 영역이 있을 경우 해당 가변 영역의 내용도 실제 보낼 내용으로 치환 되어야 한다.
- $SMS_DATA['recipient'] = $nm_hp; // 수신자
- $SMS_DATA['senderKey'] = '4856a5e128f9289082c884d066f1df198cbb1165'; // 카카오 발신 프로필 키
- $SMS_DATA['tmpltCode'] = 'tender_sms'; // 메시지 템플릿 코드
- $SMS_DATA['resMethod'] = 'PUSH'; // 메시지 템플릿 코드
- // $SMS_DATA['debug'] = "Y"; // 디버그
- // print_r($SMS_DATA);
- // exit;
- $send_reuslt = $biztalk->sendSms($SMS_DATA);
- unset($SMS_DATA);
- //낙찰, 진행중 SMS 단계 업데이트
- $sql="update tender_master set
- $tender_update_column
- , dt_update = now()
- , nm_update = 'admin'
- WHERE cd_sale = $cd_sale and cd_tender = '$cd_tender' ";
- mysql_query($sql,$connect);
- //Tender SMS 업데이트 (현재 단계 발송처리 ds_send_status = 'Z0')
- $tender_sms_sql = "update tender_sms_master set ds_send_status = 'Z0' where cd_tender_sms = '$cd_tender_sms' ";
- mysql_query($tender_sms_sql,$connect);
- //3차 발송일 경우 락 상태로 업데이트
- //lock 은 lock 스케쥴러가 체크
- if($depth == 3) {
- lock_status_tender_sms($cd_tender_sms);
- continue;
- }
- //발송 내용 치환
- $car_info = $sale_col[nm_brand]." ".$sale_col[nm_model].", ".$sale_col[nm_number];
- $nm_content = str_replace("{CAR_INFO}", $car_info, $sms_msg[$ds_status]);
- $nm_content = str_replace("{PERIOD}", $sms_period[($depth+1)], $nm_content);
- //
- $send_date = date("Y-m-d H:i:s", strtotime($dt_send. ' + '.($sms_period[$depth]).' day'));
- //2차 발송일 경우 (1차는 관리자에서 발송 시킴)
- //다음발송건 등록
- $DATA = array();
- $DATA['cd_sale'] = $cd_sale;
- $DATA['cd_tender'] = $cd_tender;
- $DATA['tender_nm_hp'] = $nm_hp;
- $DATA['depth'] = ($depth+1);
- $DATA['ds_send_status'] = 'A0';
- $DATA['nm_content'] = $nm_content;
- $DATA['ds_status'] = $ds_status;
- $DATA['dt_send'] = $send_date;
- $DATA['cd_userid'] = 'admin';
- $result = insert_tender_sms($DATA);
- unset($DATA);
- }
- ?>
|