You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
information-system/webht/third_party/paypal/models/paypal_model.php

494 lines
21 KiB
PHTML

<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Paypal_model extends CI_Model {
private $HT;
function __construct() {
parent::__construct();
$this->HT = $this->load->database('HT', TRUE);
//$this->DEST = $this->load->database('DEST', TRUE);
}
//根据订单号获取外联邮箱
public function get_order($COLI_ID, $orderinfo = false, $ordertype = 'N') {
$result = '';
$fieldsql = $orderinfo == false ? '' : " ,* ";
//先查商务订单B,APP订单A、再查传统订单T
if ($ordertype == 'B' || $ordertype == 'A') {
$sql = "SELECT TOP 1 0 as order_type,COLI_SN,COLI_ID,OPI_Email,OPI_FirstName,OPI_Name,COLI_WebCode,COLI_State $fieldsql from BIZ_ConfirmLineInfo
LEFT JOIN OperatorInfo ON COLI_OPI_ID=OPI_SN
where COLI_ID =?";
$query = $this->HT->query($sql, array($COLI_ID));
$result = $query->result();
}
//后查传统订单的原因是因为传统订单的订单号去掉外联名字首字母后可能会和商务订单的重合。
if (empty($result) && ($ordertype == 'T')) {
$sql = "SELECT TOP 1 1 as order_type, COLI_SN,COLI_ID,OPI_Email,OPI_FirstName,OPI_Name,COLI_WebCode,COLI_State $fieldsql from ConfirmLineInfo
LEFT JOIN OperatorInfo ON COLI_OPI_ID=OPI_SN
where COLI_ID like '%$COLI_ID'";
$query = $this->HT->query($sql);
$result = $query->result();
}
//查传统订单add_code网前实时支付会先生成一个临时订单号存在add_code里如订单45103248
if (empty($result) && ($ordertype == 'M')) {
$sql = "SELECT TOP 1 1 as order_type, COLI_SN,COLI_ID,OPI_Email,OPI_FirstName,OPI_Name,COLI_WebCode $fieldsql from ConfirmLineInfo
LEFT JOIN OperatorInfo ON COLI_OPI_ID=OPI_SN
where COLI_AddCode =? ";
$query = $this->HT->query($sql, array($COLI_ID));
$result = $query->result();
}
if (empty($result) && ($ordertype == 'M')) {
$sql = "SELECT TOP 1 1 as order_type, COLI_SN,COLI_ID,OPI_Email,OPI_FirstName,OPI_Name,COLI_WebCode $fieldsql from ConfirmLineInfo cli
LEFT JOIN OperatorInfo ON COLI_OPI_ID=OPI_SN
where
EXISTS (
SELECT TOP 1 1
FROM ConfirmLineInfoTmp clit
WHERE clit.COLI_ID = ?
AND cli.COLI_AddCode = CAST(clit.COLI_SN AS VARCHAR(10))
)
";
$query = $this->HT->query($sql, array($COLI_ID));
$result = $query->result();
}
//订单号查询不到尝试使用团号查询
if (empty($result) && $ordertype == 'B') {
$sql = "SELECT TOP 1 0 as order_type,COLI_SN,COLI_ID,OPI_Email,OPI_FirstName,OPI_Name,COLI_WebCode,COLI_State $fieldsql from BIZ_ConfirmLineInfo
LEFT JOIN OperatorInfo ON COLI_OPI_ID=OPI_SN
where COLI_GroupCode like '%-$COLI_ID%'";
$query = $this->HT->query($sql);
$result = $query->result();
}
//团号查询不到尝试使用客人邮箱查询(预订多次的老客户得按日期新旧排序,取最新的数据)
if (!empty($result)) {
//print_r($result[0]);
//die();
$result = $result[0];
}
return $result;
}
//获取收款记录(商务订单)
public function get_money_list($GAI_COLI_ID, $GAI_SQJE, $GAI_SQJECurrency) {
$sql = "SELECT GAI_SN,GAI_CusEmail,GAI_Memo
FROM BIZ_GroupAccountInfo bgai
WHERE bgai.GAI_COLI_ID = ? and GAI_SQJE=? and GAI_SQJECurrency=?
ORDER BY bgai.GAI_SN ASC";
$query = $this->HT->query($sql, array($GAI_COLI_ID, $GAI_SQJE, $GAI_SQJECurrency));
$result = $query->result();
return $result;
}
//获取收款记录(传统订单)
public function get_money_list2($COLI_ID, $GAI_SQJE, $GAI_SQJECurrency) {
$sql = "SELECT COLI_ID,GroupAccountInfo.*
from GroupAccountInfo
left join ConfirmLineInfo on GAI_COLI_SN=COLI_SN
where COLI_ID=? and GAI_SQJE=? and GAI_SQJECurrency=?
ORDER BY GAI_SN ASC";
$query = $this->HT->query($sql, array($COLI_ID, $GAI_SQJE, $GAI_SQJECurrency));
$result = $query->result();
return $result;
}
//更新收款记录(商务订单)
public function update_account_info($GAI_CusEmail, $GAI_Memo, $GAI_SN, $GAI_AccreditNo) {
$sql = "UPDATE BIZ_GroupAccountInfo SET GAI_CusEmail=?, GAI_Memo=?,GAI_AccreditNo=? WHERE GAI_SN=?";
$query = $this->HT->query($sql, array($GAI_CusEmail, $GAI_Memo, $GAI_AccreditNo, $GAI_SN));
return $query;
}
//更新收款记录(传统订单)
public function update_account_info2($GAI_CusEmail, $GAI_Memo, $GAI_SN) {
$sql = "UPDATE GroupAccountInfo SET GAI_CusEmail=?, GAI_Memo=? WHERE GAI_SN=?";
$query = $this->HT->query($sql, array($GAI_CusEmail, $GAI_Memo, $GAI_SN));
return $query;
}
//修改订单状态
public function update_biz_coli_state($coli_sn, $coli_state) {
$sql = "
UPDATE BIZ_ConfirmLineInfo
SET COLI_State = ?
WHERE COLI_SN = ?
";
$query = $this->HT->query($sql, array($coli_state, $coli_sn));
return $query;
}
//添加收款记录(商务订单),APP会自动增加记录所以添加前根据金额来判断是否有重复记录
public function add_account_info_forAPP($GAI_COLI_SN, $GAI_COLI_ID, $GAI_SQJE, $GAI_SQDate, $GAI_SQJECurrency, $GAI_SSDate, $GAI_AccountDate, $GAI_SubmitDate, $GAI_CusName, $GAI_CusEmail, $GAI_AccreditNo, $GAI_Memo) {
//先判断是否有这条数据
$sql = "
IF NOT EXISTS(
SELECT TOP 1 1
FROM BIZ_GroupAccountInfo
WHERE GAI_COLI_SN = ? AND GAI_SQJE=?
)
INSERT INTO BIZ_GroupAccountInfo (
GAI_COLI_SN
,GAI_COLI_ID
,GAI_Type
,GAI_SQJE
,GAI_SQDate
,GAI_SQJECurrency
,GAI_SSDate
,GAI_AccountDate
,GAI_SubmitDate
,GAI_CusName
,GAI_CusEmail
,GAI_AccreditNo
,GAI_Memo
,GAI_State
,DeleteFlag
) VALUES (?,?,15010,?,?,?,?,?,?,?,?,?,?,0,0)";
$query = $this->HT->query($sql, array($GAI_COLI_SN, $GAI_SQJE, $GAI_COLI_SN, $GAI_COLI_ID, $GAI_SQJE, $GAI_SQDate, $GAI_SQJECurrency, $GAI_SSDate, $GAI_AccountDate, $GAI_SubmitDate, $GAI_CusName, $GAI_CusEmail, $GAI_AccreditNo, $GAI_Memo));
$insertid = $this->HT->last_id('BIZ_GroupAccountInfo');
return $query;
}
//添加收款记录(商务订单)
public function add_account_info($GAI_COLI_SN, $GAI_COLI_ID, $GAI_SQJE, $GAI_SQDate, $GAI_SQJECurrency, $GAI_SSDate, $GAI_AccountDate, $GAI_SubmitDate, $GAI_CusName, $GAI_CusEmail, $GAI_AccreditNo, $GAI_Memo) {
//先判断是否有这条数据
$sql = "
IF NOT EXISTS(
SELECT TOP 1 1
FROM BIZ_GroupAccountInfo
WHERE GAI_AccreditNo = ? OR GAI_Memo LIKE '%$GAI_AccreditNo%'
)
INSERT INTO BIZ_GroupAccountInfo (
GAI_COLI_SN
,GAI_COLI_ID
,GAI_Type
,GAI_SQJE
,GAI_SQDate
,GAI_SQJECurrency
,GAI_SSDate
,GAI_AccountDate
,GAI_SubmitDate
,GAI_CusName
,GAI_CusEmail
,GAI_AccreditNo
,GAI_Memo
,GAI_State
,DeleteFlag
) VALUES (?,?,15010,?,?,?,?,?,?,?,?,?,?,0,0)";
$query = $this->HT->query($sql, array($GAI_AccreditNo, $GAI_COLI_SN, $GAI_COLI_ID, $GAI_SQJE, $GAI_SQDate, $GAI_SQJECurrency, $GAI_SSDate, $GAI_AccountDate, $GAI_SubmitDate, $GAI_CusName, $GAI_CusEmail, $GAI_AccreditNo, $GAI_Memo));
$insertid = $this->HT->last_id('BIZ_GroupAccountInfo');
return $query;
}
//添加收款记录(传统订单)
public function add_tour_account_info($GAI_COLI_SN, $GAI_SQJE, $GAI_SQDate, $GAI_SQJECurrency, $GAI_SSDate, $GAI_AccountDate, $GAI_SubmitDate, $GAI_CusName, $GAI_CusEmail, $GAI_AccreditNo, $GAI_Memo) {
//先判断是否有这条数据
$sql = "
IF NOT EXISTS(
SELECT TOP 1 1
FROM GroupAccountInfo
WHERE GAI_AccreditNo = ? OR GAI_Memo LIKE '%$GAI_AccreditNo%'
)
INSERT INTO GroupAccountInfo (
GAI_COLI_SN
,GAI_Type
,GAI_SQJE
,GAI_SQDate
,GAI_SQJECurrency
,GAI_SSDate
,GAI_AccountDate
,GAI_SubmitDate
,GAI_CusName
,GAI_CusEmail
,GAI_AccreditNo
,GAI_Memo
,GAI_State
,DeleteFlag
) VALUES (?,15002,?,?,?,?,?,?,?,?,?,?,0,0)";
$query = $this->HT->query($sql, array($GAI_AccreditNo, $GAI_COLI_SN, $GAI_SQJE, $GAI_SQDate, $GAI_SQJECurrency, $GAI_SSDate, $GAI_AccountDate, $GAI_SubmitDate, $GAI_CusName, $GAI_CusEmail, $GAI_AccreditNo, $GAI_Memo));
$insertid = $this->HT->last_id('GroupAccountInfo');
return $query;
}
//更新线路提醒
public function update_coli_introduction($coli_sn, $msg) {
$sql = "
update ConfirmLineInfo
set COLI_Introduction=ISNULL(COLI_Introduction,'')+' '+?
where 1=1
AND ISNULL(COLI_Introduction,'')=''
AND COLI_SN=?
";
// isnull(COLI_Sended,0) in (0,1) 之前判断是新订单或者未分配状态才添加提示的,有些团是后面付款的,所以把限制取消掉
$query = $this->HT->query($sql, array($msg, $coli_sn));
return $query;
}
//存储paypal的实时通知
public function save_paypal_note($pn_txn_id, $pn_invoice, $pn_mc_gross, $pn_item_name, $pn_item_number, $pn_mc_currency, $pn_payment_status, $pn_payer_email, $pn_payment_date, $pn_memo) {
$sql = "
INSERT INTO paypal_note
(
pn_txn_id,pn_invoice, pn_mc_gross, pn_item_name, pn_item_number,pn_mc_currency, pn_payment_status,pn_payer_email,pn_payment_date, pn_memo,pn_datetime
)
VALUES
(
?,?,?,N?,N?,?,?,N?,?, N?, GETDATE()
)
";
$query = $this->HT->query($sql, array($pn_txn_id, $pn_invoice, $pn_mc_gross, $pn_item_name, $pn_item_number, $pn_mc_currency, $pn_payment_status, $pn_payer_email, $pn_payment_date, $pn_memo));
$insertid = $this->HT->last_id('paypal_note');
return $query;
}
public function note_list() {
}
public function save_paypal_msg($pm_transaction_id, $pm_orderid, $pm_item_name, $pm_money, $pm_currency, $pm_payer, $pm_payer_email, $pm_payer_status, $pm_memo, $pm_payment_date, $pm_pay_type) {
$sql = "INSERT INTO paypal_msg (
pm_transaction_id
,pm_orderid
,pm_item_name
,pm_money
,pm_currency
,pm_payer
,pm_payer_email
,pm_payer_status
,pm_memo
,pm_payment_date
,pm_pay_type
,pm_create_date)
VALUES (?,N?,N?,?,N?,N?,N?,?,N?,?,?,getdate())";
$this->HT->query($sql, array($pm_transaction_id, $pm_orderid, $pm_item_name, $pm_money, $pm_currency, $pm_payer, $pm_payer_email, $pm_payer_status, $pm_memo, $pm_payment_date, $pm_pay_type));
$insertid = $this->HT->last_id('paypal_msg');
return $insertid;
}
public function update_paypal_msg($pm_sn, $pm_orderid, $pm_item_name, $pm_payer_email, $pm_payer_status, $pm_memo) {
$sql = "UPDATE paypal_msg
SET
pm_orderid=N?,
pm_item_name=N?,
pm_payer_email=N?,
pm_payer_status=?,
pm_memo=N?
WHERE pm_sn=?";
$query = $this->HT->query($sql, array($pm_orderid, $pm_item_name, $pm_payer_email, $pm_payer_status, $pm_memo, $pm_sn));
return $query;
}
public function get_paypal_msg($pm_transaction_id = '') {
$mapsql = empty($pm_transaction_id) ? " pm_payer_status='' " : " pm_transaction_id='$pm_transaction_id' ";
$sql = "SELECT top 1 * from paypal_msg where $mapsql order by pm_payment_date asc";
$query = $this->HT->query($sql);
$result = $query->result();
return $result;
}
public function last_paypal_msg($filed = 'pm_payment_date') {
$sql = "SELECT top 1 $filed ,pm_create_date from paypal_msg order by pm_payment_date desc";
$query = $this->HT->query($sql);
$result = $query->result();
return $result;
}
public function get_mail_list($top = 30, $mail_sn_string = '', $date = 'all') {
$mapsql = $date == 'all' ? '' : " AND M_AddTime BETWEEN '$date 00:00:00' AND '$date 23:59:59'";
if ($mail_sn_string == '') {
$sql = "SELECT top 360 M_SN FROM Email_AutomaticSend WHERE M_Web='paypal msg' $mapsql ORDER BY M_AddTime desc,M_SN desc";
} else {
$sql = "SELECT *
FROM Email_AutomaticSend
LEFT JOIN paypal_msg ON M_ServiceSN=pm_sn
WHERE M_Web='paypal msg' AND M_SN in($mail_sn_string)
ORDER BY M_AddTime desc,M_SN desc";
}
$query = $this->HT->query($sql);
return $query->result();
}
//根据订单号查询邮件
public function get_search_mails($mail_o_orderno) {
$sql = "SELECT TOP 50 *
FROM Email_AutomaticSend
LEFT JOIN paypal_msg ON M_ServiceSN=pm_sn
WHERE M_Web='paypal msg' AND pm_orderid like '%$mail_o_orderno%' or M_ReplyToEmail like '%$mail_o_orderno%' or pm_transaction_id like '%$mail_o_orderno%'
ORDER BY M_AddTime desc,M_SN desc";
$query = $this->HT->query($sql);
$result = $query->result();
return $result;
}
//我的收款记录
public function get_my_order($mail_to, $mail_to_name, $cn_name) {
$sql = "SELECT top 100 *
from Email_AutomaticSend LEFT JOIN paypal_msg ON M_ServiceSN=pm_sn
where M_Web='paypal msg' and M_ToEmail =? AND (M_ToName=? or M_ToName=?)";
$query = $this->HT->query($sql, array($mail_to, $mail_to_name, $cn_name));
$result = $query->result();
return $result;
}
//获取没有外联信息的邮件(超过一周的不处理)
public function get_unsend_list($top = 30, $mail_sendstate) {
$start_date = date('Y-m-d 00:00:00', time() - 7 * 24 * 60 * 60);
$sql = "SELECT top $top * FROM Email_AutomaticSend LEFT JOIN paypal_msg ON M_ServiceSN=pm_sn WHERE M_Web='paypal msg' AND M_State=? AND M_AddTime>'$start_date' ORDER BY M_AddTime desc,M_SN desc";
$query = $this->HT->query($sql, array($mail_sendstate));
return $query->result();
}
public function update_mail($mail_sn, $mail_to, $mail_to_name, $mail_sendstate = 0) {
$sql = "UPDATE Email_AutomaticSend SET M_ToEmail=N?,M_ToName=N?,M_State=? WHERE M_SN =? ";
$query = $this->HT->query($sql, array($mail_to, $mail_to_name, $mail_sendstate, $mail_sn));
return $query;
}
public function save_automail($fromName, $fromEmail, $toName, $toEmail, $subject, $body, $M_RelatedInfo = '', $M_State = 0, $M_AddTime = '', $frominfo = 'paypal msg', $M_Web = 'paypal msg') {
$sql = "INSERT INTO
Email_AutomaticSend (
M_ReplyToName,
M_ReplyToEmail,
M_ToName,
M_ToEmail,
M_Title,
M_Body,
M_Web,
M_FromName,
M_ServiceSN,
M_State,
M_AddTime
) VALUES (N?, N?, N?, N?, N?, N?, ?, N?, ?,?,getdate()) ";
$query = $this->HT->query($sql, array($fromName, $fromEmail, $toName, $toEmail, $subject, $body, $M_Web, $frominfo, $M_RelatedInfo, $M_State));
return $query;
}
//获取错误信息
public function get_all_error_order($i = "", $lastdate) {
switch ($i) {
case 1:
$sql = "SELECT
M_SN,
M_ReplyToEmail,
pm_currency,
pm_payer,
pm_money,
pm_orderid,
M_ToEmail
FROM Email_AutomaticSend
LEFT JOIN paypal_msg ON M_ServiceSN=pm_sn
WHERE pm_orderid='' AND M_Web='paypal msg' ORDER BY M_SN DESC";
break;
case 2:
$sql = "SELECT
M_SN,
M_ReplyToEmail,
pm_currency,
pm_payer,
pm_money,
pm_orderid,
M_ToEmail
FROM Email_AutomaticSend
LEFT JOIN paypal_msg ON M_ServiceSN=pm_sn
WHERE M_ToEmail='' AND M_Web='paypal msg' ORDER BY M_SN DESC";
break;
default:
$sql = "SELECT
M_SN,
M_ReplyToEmail,
pm_currency,
pm_payer,
pm_money,
pm_orderid,
M_ToEmail,
M_AddTime,
M_State
FROM paypal_msg
LEFT JOIN Email_AutomaticSend ON M_ServiceSN=pm_sn
WHERE pm_orderid='' OR M_ToEmail='' AND M_Web='paypal msg' AND DATEDIFF(m,pm_create_date,'" . $lastdate . "')<=3 ORDER BY M_SN DESC";
}
$query = $this->HT->query($sql);
$result = $query->result();
return $result;
}
//订单号匹配不正确
public function get_unmatch_list($type, $lastdate) {
if ($type == 'BIZ') {
$sql = "SELECT *
FROM (
SELECT COLI_ID,
OPI_Email
FROM BIZ_ConfirmLineInfo
LEFT JOIN OperatorInfo
ON COLI_OPI_ID = OPI_SN
WHERE EXISTS(
SELECT 1 FROM paypal_msg
WHERE paypal_msg .pm_orderid = BIZ_ConfirmLineInfo.COLI_ID)
) T,
(SELECT pm .pm_orderid,
eas.M_ToEmail ,
pm.pm_sn ,
pm.pm_create_date ,eas. M_SN
FROM paypal_msg pm
INNER JOIN Email_AutomaticSend eas
ON eas .M_ServiceSN = pm .pm_sn
AND eas .M_Web = 'paypal msg'
) P
WHERE T.COLI_ID = P.pm_orderid
AND T.OPI_Email <> P.M_ToEmail
AND DATEDIFF(m,p.pm_create_date,'" . $lastdate . "')<=3
ORDER BY
p.pm_sn DESC ";
} else if ($type == 'tradition') {
$sql = "SELECT *
FROM (
SELECT COLI_ID ,OPI_Email from ConfirmLineInfo
LEFT JOIN OperatorInfo ON COLI_OPI_ID =OPI_SN
WHERE EXISTS(
SELECT 1
FROM paypal_msg
WHERE paypal_msg .pm_orderid = ConfirmLineInfo.COLI_ID
)
) T ,
(
SELECT pm .pm_orderid,
eas.M_ToEmail ,
pm.pm_sn ,
pm.pm_create_date ,eas. M_SN
FROM paypal_msg pm
INNER JOIN Email_AutomaticSend eas
ON eas .M_ServiceSN = pm .pm_sn
AND eas .M_Web = 'paypal msg'
) P
WHERE t .COLI_ID = P .pm_orderid
AND t .OPI_Email <> p .M_ToEmail
AND DATEDIFF(m,p.pm_create_date,'" . $lastdate . "')<=3
ORDER BY
p.pm_sn DESC ";
}
$result = $this->HT->query($sql);
$result1 = $result->result();
return $result1;
}
}