123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- <?php
- /**
- * Author: luzheng.liu
- * Time: 2019-09-22 16:18
- */
- namespace app\index\service;
- use app\index\model\DakaHoliday;
- class DaKaService {
- public $data = [
- 'ValidYN' => 'Y',
- 'AppToken' => 66778899,
- 'CardTime' => '2019-09-17+09:04',
- 'Address' => '潮州路办公室考勤点',
- 'AppID' => 'A|MI+8+SE-9|2.2.4|11584|862860041542790|',
- 'StaffID' => '796996',
- 'UserID' => '11584',
- 'Dimension' => '31.265277',
- 'Longitude' => '121.414143',
- 'MobileID' => '862860041542790',
- 'CardRemarkSZ' => ''
- ];
- //
- // public $dakaInfo = [
- // "OrderBy" => "",
- // "AppToken" => "66778899",
- // 'StaffID' => '796996',
- // 'pageSize' => '31',
- // 'CardFrom' => '',
- // 'DeptID' => '',
- // 'EndDate' => '2019-09-11',
- // 'pageNum' => '1',
- // "CompanyId" => 10,
- // 'AppID' => 'A|MI+8+SE-9|2.2.4|11584|862860041542790|192.168.31.25',
- // 'BeginDate' => '2019-09-11',
- // 'UserID' => '11584',
- // 'LangID' => '1',
- // ];
- public function __construct() {
- $date = date('Y-m-d');
- $hour = date('H');
- list($year, $month, $day) = explode('-', $date);
- if ($hour >= 6 && $hour <= 12) {
- $min = $day +2;
- $this->data['CardTime'] = $date . '+09:' . $min;
- $makeTime = "$date 09:$min";
- } else {
- $min = $day ;
- $this->data['CardTime'] = $date . '+19:' . $min;
- $makeTime = "$date 19:$min";
- }
- $cronTime = date('Y-m-d H:i');
- var_dump($makeTime, $cronTime);
- if ($cronTime != $makeTime) {
- die();
- }
- var_dump("打卡时间" . date('Y-m-d H:i:s'));
- }
- public function run() {
- list($hour, $min, $sec) = explode(':', date('H:i:s'));
- $date = date('Y-m-d');
- list($year, $month, $day) = explode('-', $date);
- $isHoliday = $this->getHoliday($year, (int)$month);
- if ($isHoliday) {
- var_dump($date . "这天是假期不打卡,退出");
- die();
- }
- var_dump($date . "正常上班");
- if ($hour >= 6 && $hour <= 12) {
- var_dump($date . "上班,打卡");
- $this->data['CardTime'] = $date . '+09:' . random_int(0, 30);
- var_dump('生成上班打卡时间' . $this->data['CardTime']);
- } else {
- var_dump($date . "下班,打卡");
- $this->data['CardTime'] = $date . '+19:' . random_int(0, 30);
- var_dump('生成下班打卡时间' . $this->data['CardTime']);
- }
- $this->data['AppID'] .= '192.168.1.'.random_int(1, 200);
- $this->curlDaka($this->data);
- }
- //获取当月假期
- public function getHoliday($year, $month) {
- $holidayModel = new DakaHoliday();
- $holidayListByDb = $holidayModel::where(['request_date' => date('Y-m')])->column('holiday');
- if (!empty($holidayListByDb)) {
- if (in_array(date('Y-m-d'), $holidayListByDb)) {
- var_dump(date('Y-m-d') . "这天是假期不打卡,退出");
- return true;
- }
- var_dump(date('Y-m-d') . "正常上班");
- return false;
- }
- $holidayFlag = false;
- $returnInfo = file_get_contents("http://v.juhe.cn/calendar/month?year-month={$year}-{$month}&key=3384938f081a4a6338dcc11fdb66252f");
- $data = json_decode($returnInfo, true);
- if ($data['error_code'] !== 0) {
- var_dump("请求假期接口失败--{$returnInfo}");
- die();
- }
- $insertData = [];
- $holidayList = array_column($data['result']['data']['holiday_array'], 'list');
- $holidayList = array_merge(...$holidayList);
- foreach ($holidayList as $k => $v) {
- if ($v['status'] != 1) {
- continue;
- }
- $date = date('Y-m-d', strtotime($v['date']));
- if ($date === date('Y-m-d')) {
- $holidayFlag = true;
- }
- $insertData[] = [
- 'holiday' => date('Y-m-d', strtotime($v['date'])),
- 'request_date' => date('Y-m')
- ];
- }
- $holidayModel->insertAll($insertData, true);
- return $holidayFlag;
- }
- function curlDaka($data) {
- $data = http_build_query($data);
- $curl = curl_init();
- curl_setopt_array($curl, [
- CURLOPT_PORT => "1001",
- CURLOPT_URL => "http://hr.baodao.com.cn:1001/AppWebService/GhrApp.asmx/InsertStaffCardRecord",
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_ENCODING => "",
- CURLOPT_MAXREDIRS => 10,
- CURLOPT_TIMEOUT => 30,
- CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
- CURLOPT_CUSTOMREQUEST => "POST",
- CURLOPT_POSTFIELDS => $data,
- CURLOPT_HTTPHEADER => [
- "Content-Type: application/x-www-form-urlencoded",
- "cache-control: no-cache"
- ],
- ]);
- $response = curl_exec($curl);
- $err = curl_error($curl);
- curl_close($curl);
- if ($err) {
- echo "cURL Error #:" . $err."\n";
- die();
- }
- echo $response."\n";
- }
- public function curlDakaInfo($data) {
- $data = http_build_query($data);
- $curl = curl_init();
- curl_setopt_array($curl, [
- CURLOPT_PORT => "1001",
- CURLOPT_URL => "http://hr.baodao.com.cn:1001/AppWebService/GhrApp.asmx/GetStaffCardRecordPeyDay",
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_ENCODING => "",
- CURLOPT_MAXREDIRS => 10,
- CURLOPT_TIMEOUT => 30,
- CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
- CURLOPT_CUSTOMREQUEST => "POST",
- CURLOPT_POSTFIELDS => $data,
- CURLOPT_HTTPHEADER => [
- "Accept: */*",
- "Accept-Encoding: gzip, deflate",
- "Cache-Control: no-cache",
- "Connection: keep-alive",
- "Content-Type: application/x-www-form-urlencoded",
- "Host: hr.baodao.com.cn:1001",
- "cache-control: no-cache"
- ],
- ]);
- $response = curl_exec($curl);
- $err = curl_error($curl);
- curl_close($curl);
- if ($err) {
- echo "cURL Error #:" . $err . "\n";
- die();
- }
- return $response;
- }
- }
|