Open moonsungjun opened 6 years ago
key | value |
---|---|
결제 요청 구분(43 고정) | *Mode |
가맹점 도메인 | *Recordkey |
상점아이디 | *Mrchid |
서비스아이디 | *Svcid |
상품명 | *Prdtnm |
결제요청금액 | *Prdtprice |
자동결제 유저키 | *USERKEY |
가맹점거래번호 | *Tradeid |
자동결제 구분 | *AutoBillFlag |
결제 통보 이메일 보내기 여부 | *Emailflag |
자동결제 KEY | *AutoBillKey |
최초 자동결제 최초일자 | *AutoBillDate |
USERKEY 요청 구분 | ReqOpt |
결제자 이메일 | |
사용자 ID | Userid |
상품코드 | Prdtcd |
아이템 | Item |
리셀러 하위 상점 key | Cpcd |
실판매자명 | Sellernm |
실판매자 연락처 | Sellertel |
이통사 | Commid |
휴대폰번호 | No |
주민번호 | Socialno |
drop table prq_ata_pay;
create table prq_ata_pay(
`ap_no` int unsigned auto_increment,
`st_no` int(11) unsigned NOT NULL comment '상점 번호',
`st_name` varchar(255) NOT NULL DEFAULT '' comment '상점이름',
`prq_fcode` char(18) NOT NULL DEFAULT '' comment '가맹점코드',
`ap_name` int(11) not null comment '상품 이름',
`ap_price` int(11) not null comment '가입금액',
`ap_status` varchar(20) not null default 'join'
comment '정상 join, 정지 stop, 해지 terminate',
`terminate_date` date not null default '1970-01-01'
comment '해지일',
`stop_date` date not null default '1970-01-01' comment '정지일',
`join_date` date not null default '1970-01-01' comment '가입일 혹은 재가입일',
`ap_autobill_YN` char(1) not null default 'Y'
comment '정기 결재 여부 기본값 Y, 일회 사용 N',
`ap_autobill_date` date not null default '1970-01-01'
comment '정기 결재일 결재일 기준으로 전송횟수 초기화',
`ap_datetime` datetime not null default '1970-01-01 09:00:00',
primary key(ap_no)
) comment '2017-11-20 알림톡 결재 리스트';
http://prq.co.kr/prq/store/lists/prq_ata_pay/page/1
리스트 페이지 가안 완성
enum 형태 변경
ALTER TABLE `prq`.`prq_store`
CHANGE COLUMN `st_status` `st_status` VARCHAR(2) NOT NULL DEFAULT 'wa' ;
각 array_helper get_status array_key 형태로 모두 변경
-- 예약 전송건 추가
ALTER TABLE `prq`.`prq_ata_pay`
ADD COLUMN `ap_reserve` INT NOT NULL DEFAULT 0 AFTER `ap_autobill_date`;
-- '271206' 건 대기중이어서 날림
truncate table em_mmt_tran;
각 상점의 설정에 따라 하루 한건 만 전송하도록 설정 및 카운트에 대한 부분 설정.
first log와 같이 ata_log 를 예약 전송, 즉시 전송, 해지 등등 처리하여 쌓이도록 개선 컬럼 추가 할 것!!!
금일 알림톡 관련
어제 /home/biztalk/atasvc start [2017/11/23 14:47:21.195] [ INFO] [main] AtaController readATACF Collector RunTime : [00:00 - 24:00] [2017/11/23 14:47:21.199] [ INFO] [main] AtaController readATACF Sender RunTime : [00:00 - 24:00] .. 중략 기동
SELECT DATE_ADD(SYSDATE(), INTERVAL 0 MINUTE) as '0min'
,DATE_ADD(SYSDATE(), INTERVAL 10 MINUTE) as '10min'
,DATE_ADD(SYSDATE(), INTERVAL 20 MINUTE) as '20min'
,DATE_ADD(SYSDATE(), INTERVAL 30 MINUTE) as '30min'
,DATE_ADD(SYSDATE(), INTERVAL 40 MINUTE) as '40min'
,DATE_ADD(SYSDATE(), INTERVAL 50 MINUTE) as '50min'
,DATE_ADD(SYSDATE(), INTERVAL 60 MINUTE) as '60min';
각 분 추가에 대한 설정
ap_limit 추가
ALTER TABLE `prq`.`prq_ata_pay`
ADD COLUMN `ap_limit` INT NOT NULL DEFAULT 1000 comment '제한건수' AFTER `ap_price`;
-- 제한건수-합계
ALTER TABLE `prq`.`prq_ata_pay`
ADD COLUMN `ap_limit_cnt` INT NOT NULL DEFAULT 1000 comment '제한건수-합계' AFTER `ap_limit`;
트리거 추가
-- 2017-11-27_callerid.cdr.new.trigger
use callerid;
DELIMITER $$
drop TRIGGER IF EXISTS cdr_inserted $$
CREATE TRIGGER cdr_inserted AFTER INSERT ON callerid.cdr FOR EACH ROW
BEGIN
-- 핸드폰 번호인지?
SET @ishp=IF(substr(NEW.callerid,1,2)='01',true,false);
-- kt port 인가?
SET @iskt=IF(NEW.port=0,true,false);
-- 상점 조회 상점이름, 상점번호,매장사장핸드폰
select
st_name,st_tel_1,st_hp_1,st_no,st_status,st_ata_YN
INTO
@st_name,@st_tel,@st_hp,@st_no,@st_status,@st_ata_YN
FROM
prq.prq_store
WHERE
st_port=NEW.port and mb_id=NEW.UserID;
IF(@st_ata_YN='Y')THEN
/* ATA_PAY_LOG */
select
ap_status,ap_autobill_YN,ap_autobill_date,ap_reserve,ap_limit,ap_limit_cnt
INTO
@ap_status,@ap_autobill_YN,@ap_autobill_date,@ap_reserve,@ap_limit,@ap_limit_cnt
from prq.prq_ata_pay where st_no=@st_no;
-- 예약시간
SELECT DATE_ADD(SYSDATE(), INTERVAL @ap_reserve MINUTE) INTO @date_client_req;
-- 가입상태인가?
SET @IS_ATA_JOIN=IF(@ap_status='join',true,false);
-- 정기결재 인가?
SET @IS_AUTOBILL_YN=IF(@ap_autobill_YN='Y',true,false);
-- 정기 결제가 아니라 일시결제인경우 지난 여부 측정
-- 안지났으면 true인 1, 지났으면 false인 0
SET @IS_LAST_ATA=(select date_add(@ap_autobill_date,interval 1 month)>=date(sysdate()));
SET @IS_ATA_SEND=IF(@ap_status="join",true,false);
/* 가입 상태이고 정기 결제 라면 */
IF(@IS_ATA_JOIN=true AND @IS_AUTOBILL_YN=true) THEN
-- 알림톡 발신 대기
insert into prq.prq_ata_log set
`date_client_req`=@date_client_req,
`at_ismms`='false',
`at_receiver`=NEW.callerid,
`at_sender`=NEW.calledid,
`at_date`=date(now()),
`at_month_cnt`=@ap_limit_cnt,
`at_month_limit`=@ap_limit,
`st_no`=@st_no,
`at_status`='0',
`at_result`='',
`at_datetime`=now();
/* 가입 상태이고 일시 결제 라면 기간이 안지났으면 */
ELSEIF(@IS_ATA_JOIN=true AND @IS_AUTOBILL_YN=false AND @IS_LAST_ATA=true) THEN
insert into prq.prq_ata_log set
`date_client_req`=@date_client_req,
`at_ismms`='false',
`at_receiver`=NEW.callerid,
`at_sender`=NEW.calledid,
`at_date`=date(now()),
`at_month_cnt`=@ap_limit_cnt,
`at_month_limit`=@ap_limit,
`st_no`=@st_no,
`at_status`='0',
`at_result`='',
`at_datetime`=now();
END IF;
/* 알림톡이 아닌 경우 와 상점 상태에 따른 대기,해지,설치 실패 처리 여부*/
-- wa 31(대기)
ELSEIF (@st_status='wa') THEN
INSERT INTO prq.prq_cdr_tmp SET
cd_date=NEW.date,
cd_id=NEW.UserID,
cd_state='31',
cd_callerid=NEW.callerid,
cd_port=NEW.port;
-- ca 32(설치실패)
ELSEIF (@st_status='ca') THEN
INSERT INTO prq.prq_cdr_tmp SET
cd_date=NEW.date,
cd_id=NEW.UserID,
cd_state='32',
cd_callerid=NEW.callerid,
cd_port=NEW.port;
-- tm 33 (해지)
ELSEIF (@st_status='tm') THEN
INSERT INTO prq.prq_cdr_tmp SET
cd_date=NEW.date,
cd_id=NEW.UserID,
cd_state='33',
cd_callerid=NEW.callerid,
cd_port=NEW.port;
/* 알림톡이 아닌 경우 처리중, */
/* 1.KT port 핸드폰 전화인 경우 */
ELSEIF (@iskt AND @ishp) THEN
INSERT INTO prq.prq_cdr SET
cd_date=NEW.date,
cd_id=NEW.UserID,
cd_port=NEW.port,
cd_callerid=NEW.callerid,
cd_calledid=NEW.calledid;
/* 2. CID 핸드폰 전화인 경우 */
ELSEIF (@iskt=false AND @ishp) THEN
INSERT INTO prq.prq_cdr SET
cd_date=NEW.date,
cd_id=NEW.UserID,
cd_port=NEW.port,
cd_callerid=NEW.callerid,
cd_name=@st_name,
cd_tel=@st_tel,
cd_hp=@st_hp;
/* 3. KT 일반전화인 경우 */
ELSEIF (@iskt AND @ishp=false) THEN
INSERT INTO prq.prq_cdr SET
cd_date=NEW.date,
cd_id=NEW.UserID,
cd_port=NEW.port,
cd_callerid=NEW.callerid,
cd_calledid=NEW.calledid;
/* 4. CID 일반전화인 경우 */
ELSEIF (@iskt=false AND @ishp=false) THEN
INSERT INTO prq.prq_cdr_tmp SET
cd_date=NEW.date,
cd_id=NEW.UserID,
cd_port=NEW.port,
cd_callerid=NEW.callerid,
cd_name=@st_name,
cd_state='2',
cd_tel=@st_tel,
cd_hp=@st_hp;
END IF;
/* IF (NEW.port=0 AND @ishp) THEN */
END $$
DELIMITER ;
상태 변화
show triggers;
use prq;
select count(*) cnt from prq_cdr_tmp where cd_state='0';
update prq_cdr_tmp set cd_state='2' where cd_state='0';
SELECT count(*) cnt FROM prq_cdr_tmp WHERE date(cd_date)=date(now());
SELECT cd_state,count(*) cnt FROM prq_cdr_tmp WHERE date(cd_date)=date(now()) group by cd_state;
select date(date_sub(now(),interval 16 day));
SELECT cd_state,count(*) cnt FROM prq_cdr_tmp WHERE date(cd_date)=date(date_sub(now(),interval 1 day)) group by cd_state;
SELECT cd_state,count(*) cnt FROM prq_cdr_tmp WHERE date(cd_date)=date(date_sub(now(),interval 2 day)) group by cd_state;
SELECT cd_state,count(*) cnt FROM prq_cdr_tmp WHERE date(cd_date)=date(date_sub(now(),interval 3 day)) group by cd_state;
SELECT cd_state,count(*) cnt FROM prq_cdr_tmp WHERE date(cd_date)=date(date_sub(now(),interval 4 day)) group by cd_state;
SELECT cd_state,count(*) cnt FROM prq_cdr_tmp WHERE date(cd_date)=date(date_sub(now(),interval 5 day)) group by cd_state;
SELECT cd_state,count(*) cnt FROM prq_cdr_tmp WHERE date(cd_date)=date(date_sub(now(),interval 6 day)) group by cd_state;
SELECT cd_state,count(*) cnt FROM prq_cdr_tmp WHERE date(cd_date)=date(date_sub(now(),interval 7 day)) group by cd_state;
SELECT cd_state,count(*) cnt FROM prq_cdr_tmp WHERE date(cd_date)=date(date_sub(now(),interval 8 day)) group by cd_state;
SELECT cd_state,count(*) cnt FROM prq_cdr_tmp WHERE date(cd_date)=date(date_sub(now(),interval 9 day)) group by cd_state;
SELECT cd_state,count(*) cnt FROM prq_cdr_tmp WHERE date(cd_date)=date(date_sub(now(),interval 10 day)) group by cd_state;
SELECT cd_state,count(*) cnt FROM prq_cdr_tmp WHERE date(cd_date)=date(date_sub(now(),interval 11 day)) group by cd_state;
SELECT cd_state,count(*) cnt FROM prq_cdr_tmp WHERE date(cd_date)=date(date_sub(now(),interval 12 day)) group by cd_state;
SELECT cd_state,count(*) cnt FROM prq_cdr_tmp WHERE date(cd_date)=date(date_sub(now(),interval 13 day)) group by cd_state;
SELECT cd_state,count(*) cnt FROM prq_cdr_tmp WHERE date(cd_date)=date(date_sub(now(),interval 14 day)) group by cd_state;
SELECT cd_state,count(*) cnt FROM prq_cdr_tmp WHERE date(cd_date)=date(date_sub(now(),interval 15 day)) group by cd_state;
SELECT cd_state,count(*) cnt FROM prq_cdr_tmp WHERE date(cd_date)=date(date_sub(now(),interval 16 day)) group by cd_state;
SELECT cd_state,count(*) cnt FROM prq_cdr_tmp WHERE date(cd_date)=date(date_sub(now(),interval 17 day)) group by cd_state;
톡톡메세지 기존 문자발송 부분을 옐로우톡 발송도 되도록 개발요청
분류 : 톡톡메세지 발송 , 옐로우톡 발송 2가지 발송방법을 선택해서 보낼 수 있음.
발송제한 : 월 발송건수를 제한 할 수 있는 기능 . (예시: 월 1000건 발송 제한) 발송 단위 조정 가능하도록 개발. 상점별로 발송 제한을 해야됨.
대리점 등급 별로 옐로우아이디 지정 각 대리점마다 옐로우아이디가 다름.
예시 A대리점 -> @배달캐시큐 B대리점 -> @배달톡톡 C대리점 -> @배달장독대