Files
liche/api/controllers/dms/Spider.php
T
xiaoyu c799f38d60 dms
2023-08-17 10:30:18 +08:00

194 lines
13 KiB
PHP

<?php
defined('BASEPATH') or exit('No direct script access allowed');
ini_set('display_errors','On');
error_reporting(E_ERROR);
require_once(APPPATH . "controllers/dms/CurlAutoLogin.php");
class Spider extends HD_Controller
{
public function __construct()
{
parent::__construct();
$this->load->model('dms/dms_clues_model','dms_clues_model');
$this->log_dir = 'dms';
$this->file_name = 'clues.txt';
}
public function get_clues()
{
//登录态缓存文件
$loginResultFile = APPPATH . "cache/loginRes.txt";
$autoLogin = new CurlAutoLogin();
//已有登录态,则直接读取登录态,避免多次重复登录
if (!file_exists($loginResultFile)) {
$resArr = $this->doLogin($autoLogin, $loginResultFile);
} else {
debug_log("有登录态,自动登录...\n", $this->file_name, $this->log_dir);
$resArr = json_decode(file_get_contents($loginResultFile), true);
}
if (empty($resArr['username'])) {
debug_log("未登录成功...\n", $this->file_name, $this->log_dir);
exit("未登录成功\n");
}
$token = $resArr['token'];
$pageIndex = 1;
$pageSize = 100;
$dollor = '$';
$createdDateStart = date("Y-m-d H:i:s", strtotime("-1 minute"));
$createdDateEnd = date("Y-m-d H:i:s", strtotime("now"));
debug_log("开始时间: ".$createdDateStart." ", $this->file_name, $this->log_dir);
debug_log("截止时间: ".$createdDateEnd." ", $this->file_name, $this->log_dir);
$curl = <<<CURL
curl 'http://dms.dna-nev.com.cn/ly/mp/busicen/csc/graphql.do?v=clueServerQueryFromDlr' \
-H 'Accept: application/json, text/plain, */*' \
-H 'Accept-Language: zh-CN,zh;q=0.9' \
-H 'Authorization: $token' \
-H 'Connection: keep-alive' \
-H 'Content-Type: application/json;charset=UTF-8' \
-H 'Cookie: pwRKey=1; token=$token; wadapp.current.curlang=zh-CN; wadapp.current.token=$token; wadapp.current.user{$dollor}dms.dna-nev.com.cn={"username":"FJ0011董凯杰","remember":false,"randomCode":"8333185700157948","token":"$token","usertype":"2","{$dollor}data":{"result":"1","msg":"Success","token":"$token","username":"FJ0011董凯杰","userRealName":null,"userid":"673d16368b50446681537bd955a09d03","usertype":"2","empname":"董凯杰","errnums":null,"timeout":"3600","expires":10,"initstatus":"1","clientid":null,"vcode":null,"wxbind":"1","errorCode":"Success","message":"Success","loginPage":{"type":"None"}}}; orgInfo={"BRAND_CODE":"1","DLR_CODE":"FJ0011","DLR_ID":"86df6b1f8dd44b44a79723afd536b152","DLR_NAME":"福州狸车","DLR_ORG_TYPE":"1","DLR_STATUS":"1","GROUP_CODE":"1","GROUP_ID":"1","OEM_CODE":"1","OEM_ID":"1","ORG_CODE":"01FJ0011","EMP_ID":"d00f13699d514fb09c8029f59b825a2d","ORG_ID":"90436c9dbef845f2a7c0976132831ee6","ORG_NAME":"整车销售部","ORG_TYPE":"1","PARENT_DLR_CODE":"FJ0011","PARENT_DLR_ID":"86df6b1f8dd44b44a79723afd536b152","PARENT_DLR_NAME":"福州狸车","POS_CODE":"COC_XS_CSR_HEADER,COC_XS_CSR,SE-DLR-003,VE0003,SE-004,VE0001","POS_ID":"0011e894a6fd11ea8bfe005056850f88,00173ad3a6fd11ea8bfe005056850f88,003a9a92a6fd11ea8bfe005056850f88,fffbee61a6fc11ea8bfe005056850f88,293af90463a64f7c820472623a222716,ffca8da7a6fc11ea8bfe005056850f88","SOLUTION_ID":"经销商通用岗位,经销商通用岗位,经销商通用岗位,经销商通用岗位,经销商通用岗位,经销商通用岗位","COMPANY_ID":"9b89df77b07b4258b5d83c8b8f6bbc79","UPDATEPWDTIME":"2022-9-22","empName":"董凯杰","userId":"673d16368b50446681537bd955a09d03","userName":"FJ0011董凯杰","usertype":"2"}' \
-H 'Origin: http://dms.dna-nev.com.cn' \
-H 'Referer: http://dms.dna-nev.com.cn/' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36' \
--data-raw '{"query":"query({$dollor}pageIndex: Int, {$dollor}pageSize: Int, {$dollor}dataInfo: InputClueServer){clueServerQueryFromDlr(dataInfo: {$dollor}dataInfo, pageIndex: {$dollor}pageIndex, pageSize: {$dollor}pageSize){msg pageindex pages records result rows{serverOrder custName contactTel carBrandName carSeriesCn clueLevelCode nextDealUserName createdName cantactWayName infoChanMName infoChanDName clueLabel clueActive assignStatusName statusName crruNodeName column6 createdDate remainDataDate isFirstCallbackName firstReviewDate isOneHour isFourHour isTwentyFourHour orderDate deliveryDate nextCallbackDate changeIntentDate nextDealEmpName inteSeriesCode}}}","variables":{"pageSize":$pageSize,"pageIndex":$pageIndex,"dataInfo":{"custName":"","contactTel":"","inteSeriesId":"","clueLevelCode":"","createdDateStart":"$createdDateStart","createdDateEnd":"$createdDateEnd","orderDateStart":"","orderDateEnd":"","status":"","csr":"","serverOrder":"","cantactWayCode":"CS001","infoChanMCode":"","carBrandCode":"","assignStatus":"","crruNode":"","createdName":"","dlrCode":"","handleCode":"1","assignStatusName":"","statusArray":["10","20","21","30","31","40","50"],"nextDealUserId":"","nextDealUserName":"","infoChanDName":"","isQueryHistory":"0"}}}' \
--compressed \
--insecure
CURL;
$content = $autoLogin->execCurl($curl);
$resArr = json_decode($content, true);
if (!$resArr['result']) {
$this->doLogin($autoLogin, $loginResultFile);
}
if(!$resArr['data']['clueServerQueryFromDlr']['rows']){
debug_log("无新增数据\n", $this->file_name, $this->log_dir);
exit;
}else{
debug_log("".$resArr['data']['clueServerQueryFromDlr']['records']." 条新增数据\n", $this->file_name, $this->log_dir);
}
foreach ($resArr['data']['clueServerQueryFromDlr']['rows'] as $k => $v) {
$add = array(
'c_id' => $v['serverOrder'],
'name' => $v['custName'],
'mobile' => $v['contactTel'],
'cfrom1' => $v['infoChanMName'],
'cfrom2' => $v['infoChanDName'],
'jsondata' => json_encode($v, JSON_UNESCAPED_UNICODE),
'c_time' => strtotime($v['createdDate'])
);
$this->dms_clues_model->add($add);
}
}
private function doLogin($autoLogin, $loginResultFile)
{
echo "无登录态,模拟登录...\n";
debug_log("无登录态,模拟登录...\n", $this->file_name, $this->log_dir);
$curl = <<<CURL
curl 'http://dms.dna-nev.com.cn/mp/login/validlogin.do' \
-H 'Accept: application/json, text/plain, */*' \
-H 'Accept-Language: zh-CN,zh;q=0.9' \
-H 'Connection: keep-alive' \
-H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' \
-H 'Cookie: pwRKey=1' \
-H 'Origin: http://dms.dna-nev.com.cn' \
-H 'Referer: http://dms.dna-nev.com.cn/' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36' \
--data-raw 'reuestParas=vrdCxWqmC6nNDXrxEyNCX5sThLElae5I%2FznYqpsieYlTddUJ3hGzCvtSaYuzgDIiFAA3q0F7oHSYjeXfwRppg6lnsHDViByHQ4sJwSXhMWyKZNQ7zrgAZ%2FzR9jd5XQEQYmdcXnNgzjRxZIUaYmOwkAPFBuBOodE58zLpEvWsTFqLQVfQhVUZzE%2FN941hLaRaAHBbSqn21c6TpJyXHprF766eukiB4b5urdLilNsNQimLVcEfW6xQS9dSzAcMQZIR7dWEWQyWGWqPNnfD5yp%2Btw%3D%3D' \
--compressed \
--insecure
CURL;
$content = $autoLogin->execCurl($curl);
$resArr = json_decode($content, true);
file_put_contents($loginResultFile, $content); //存储登录结果
return $resArr;
}
public function mytest()
{
//登录态缓存文件
$loginResultFile = APPPATH . "cache/loginRes.txt";
$autoLogin = new CurlAutoLogin();
//已有登录态,则直接读取登录态,避免多次重复登录
if (!file_exists($loginResultFile)) {
$resArr = $this->doLogin($autoLogin, $loginResultFile);
} else {
debug_log("有登录态,自动登录...\n", $this->file_name, $this->log_dir);
$resArr = json_decode(file_get_contents($loginResultFile), true);
}
if (empty($resArr['username'])) {
debug_log("未登录成功...\n", $this->file_name, $this->log_dir);
exit("未登录成功\n");
}
$token = $resArr['token'];
$pageIndex = 1;
$pageSize = 100;
$dollor = '$';
$createdDateStart = date("Y-m-d 00:00:00", strtotime("today"));
$createdDateEnd = date("Y-m-d H:i:s", strtotime("now"));
debug_log("开始时间: ".$createdDateStart." ", $this->file_name, $this->log_dir);
debug_log("截止时间: ".$createdDateEnd." ", $this->file_name, $this->log_dir);
$curl = <<<CURL
curl 'http://dms.dna-nev.com.cn/ly/mp/busicen/csc/graphql.do?v=clueServerQueryFromDlr' \
-H 'Accept: application/json, text/plain, */*' \
-H 'Accept-Language: zh-CN,zh;q=0.9' \
-H 'Authorization: $token' \
-H 'Connection: keep-alive' \
-H 'Content-Type: application/json;charset=UTF-8' \
-H 'Cookie: pwRKey=1; token=$token; wadapp.current.curlang=zh-CN; wadapp.current.token=$token; wadapp.current.user{$dollor}dms.dna-nev.com.cn={"username":"FJ0011董凯杰","remember":false,"randomCode":"8333185700157948","token":"$token","usertype":"2","{$dollor}data":{"result":"1","msg":"Success","token":"$token","username":"FJ0011董凯杰","userRealName":null,"userid":"673d16368b50446681537bd955a09d03","usertype":"2","empname":"董凯杰","errnums":null,"timeout":"3600","expires":10,"initstatus":"1","clientid":null,"vcode":null,"wxbind":"1","errorCode":"Success","message":"Success","loginPage":{"type":"None"}}}; orgInfo={"BRAND_CODE":"1","DLR_CODE":"FJ0011","DLR_ID":"86df6b1f8dd44b44a79723afd536b152","DLR_NAME":"福州狸车","DLR_ORG_TYPE":"1","DLR_STATUS":"1","GROUP_CODE":"1","GROUP_ID":"1","OEM_CODE":"1","OEM_ID":"1","ORG_CODE":"01FJ0011","EMP_ID":"d00f13699d514fb09c8029f59b825a2d","ORG_ID":"90436c9dbef845f2a7c0976132831ee6","ORG_NAME":"整车销售部","ORG_TYPE":"1","PARENT_DLR_CODE":"FJ0011","PARENT_DLR_ID":"86df6b1f8dd44b44a79723afd536b152","PARENT_DLR_NAME":"福州狸车","POS_CODE":"COC_XS_CSR_HEADER,COC_XS_CSR,SE-DLR-003,VE0003,SE-004,VE0001","POS_ID":"0011e894a6fd11ea8bfe005056850f88,00173ad3a6fd11ea8bfe005056850f88,003a9a92a6fd11ea8bfe005056850f88,fffbee61a6fc11ea8bfe005056850f88,293af90463a64f7c820472623a222716,ffca8da7a6fc11ea8bfe005056850f88","SOLUTION_ID":"经销商通用岗位,经销商通用岗位,经销商通用岗位,经销商通用岗位,经销商通用岗位,经销商通用岗位","COMPANY_ID":"9b89df77b07b4258b5d83c8b8f6bbc79","UPDATEPWDTIME":"2022-9-22","empName":"董凯杰","userId":"673d16368b50446681537bd955a09d03","userName":"FJ0011董凯杰","usertype":"2"}' \
-H 'Origin: http://dms.dna-nev.com.cn' \
-H 'Referer: http://dms.dna-nev.com.cn/' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36' \
--data-raw '{"query":"query({$dollor}pageIndex: Int, {$dollor}pageSize: Int, {$dollor}dataInfo: InputClueServer){clueServerQueryFromDlr(dataInfo: {$dollor}dataInfo, pageIndex: {$dollor}pageIndex, pageSize: {$dollor}pageSize){msg pageindex pages records result rows{serverOrder custName contactTel carBrandName carSeriesCn clueLevelCode nextDealUserName createdName cantactWayName infoChanMName infoChanDName clueLabel clueActive assignStatusName statusName crruNodeName column6 createdDate remainDataDate isFirstCallbackName firstReviewDate isOneHour isFourHour isTwentyFourHour orderDate deliveryDate nextCallbackDate changeIntentDate nextDealEmpName inteSeriesCode}}}","variables":{"pageSize":$pageSize,"pageIndex":$pageIndex,"dataInfo":{"custName":"","contactTel":"","inteSeriesId":"","clueLevelCode":"","createdDateStart":"$createdDateStart","createdDateEnd":"$createdDateEnd","orderDateStart":"","orderDateEnd":"","status":"","csr":"","serverOrder":"","cantactWayCode":"CS001","infoChanMCode":"","carBrandCode":"","assignStatus":"","crruNode":"","createdName":"","dlrCode":"","handleCode":"1","assignStatusName":"","statusArray":["10","20","21","30","31","40","50"],"nextDealUserId":"","nextDealUserName":"","infoChanDName":"","isQueryHistory":"0"}}}' \
--compressed \
--insecure
CURL;
$content = $autoLogin->execCurl($curl);
$resArr = json_decode($content, true);
if (!$resArr['result']) {
$this->doLogin($autoLogin, $loginResultFile);
}
if(!$resArr['data']['clueServerQueryFromDlr']['rows']){
debug_log("无新增数据\n", $this->file_name, $this->log_dir);
exit;
}else{
debug_log("".$resArr['data']['clueServerQueryFromDlr']['records']." 条新增数据\n", $this->file_name, $this->log_dir);
}
print_r($resArr);
// foreach ($resArr['data']['clueServerQueryFromDlr']['rows'] as $k => $v) {
// $add = array(
// 'c_id' => $v['serverOrder'],
// 'name' => $v['custName'],
// 'mobile' => $v['contactTel'],
// 'cfrom1' => $v['infoChanMName'],
// 'cfrom2' => $v['infoChanDName'],
// 'jsondata' => json_encode($v, JSON_UNESCAPED_UNICODE),
// 'c_time' => strtotime($v['createdDate'])
// );
//
// $this->dms_clues_model->add($add);
// }
}
}