Files
xinhu/webmain/task/openapi/openzktimeAction.php
2022-08-14 16:47:40 +08:00

162 lines
3.6 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* 对接中控考勤机
* 请求地址如http://127.0.0.1/app/xinhu/api.php?m=openzktime&a=get
*/
class openzktimeClassAction extends openapiAction
{
private $snid = 0;
private $snrs;
private function getsnid()
{
$num = $this->get('sn'); //设备号
$snid = 0;
if(!isempt($num)){
$dbs = m('kqjsn');
$snid = (int)$dbs->getmou('id',"`num`='$num'");
if($snid==0)$snid = $dbs->insert(array(
'num' => $num,
'optdt' => $this->rock->now,
'status' => 1,
'pinpai' => '1'
));
$this->snid = $snid;
$this->snrs = $dbs->getone($snid);
}
return $snid;
}
public function testAction()
{
return 'oknew';
}
/**
* 考勤机定时请求命令
*/
public function getAction()
{
$snid = $this->getsnid();
if($snid==0)return 'notdata';
$data= m('kqjcmd')->getcmd($snid);
if($data){
$batr = array();
foreach($data as $k=>$bar){
if(!isset($bar['data']))$bar['data']='none';
$bar['atype'] = $bar['do'];
unset($bar['do']);
$batr[] = json_encode($bar, JSON_UNESCAPED_UNICODE);
}
$data = join('ROCKZK', $batr);
}
return $data;
}
/**
* 获取人员关系
*/
public function getuserAction()
{
$uarr = $this->db->getall('select a.`id`,a.`name`,b.`finger` from `[Q]admin` a left join `[Q]userinfo` b on a.`id`=b.`id` where a.`status`=1');
$batr = array();
foreach($uarr as $k=>$rs){
$cid = $rs['finger'];
if(isempt($cid))$cid=$rs['id'];
$batr[] = '0,'.$cid.','.$rs['name'].','.$rs['id'].'';
}
return join('ROCKZK', $batr);
}
/**
* 命令状态更新
*/
public function getcAction()
{
$this->getsnid();
$id = (int)$this->get('id','0');
if($id==0)return;
$status = (int)$this->get('status');
$cmds = m('kqjcmd');
$cmds->update(array(
'status'=>$status,
'cjtime'=>$this->rock->now
), $id);
$cmds->returnchuli($id, $this->snid);
}
/**
* 中控考勤机插件推送提交过来数据
*/
public function postAction()
{
$this->getsnid();
$atype = $this->get('atype');
$str = $this->postdata;
if(isempt($str))return 'not data';
$arr = json_decode($str, true);
$fenxiarr = array();
//打卡
if($atype=='daka'){
$db = m('kqdkjl');
$kqcmd = m('kqjcmd');
$kqcmd->getsninfo($this->snid);
$type = 9;
$oi = 0;
$ids = '';
foreach($arr as $k=>$rs){
$barr = $kqcmd->adddkjl($this->snid, $rs, $type, $db, 1);
$oi++;
foreach($barr as $k1=>$v1)$fenxiarr[$k1] = $v1;
$ids .= ','.$rs['id'].'';
}
//考勤分析
if($fenxiarr){
$kqobj = m('kaoqin');
foreach($fenxiarr as $keys=>$uid){
$keysa = explode('|', $keys);
$kqobj->kqanay($uid, $keysa[0]);
}
}
if($ids!='')$ids = substr($ids,1);
return array(
'msg' => 'upload add('.$oi.')record',
'ids' => $ids
);
}
//已存在用户Id
if($atype=='user'){
$uids = $arr['uids'];
m('kqjsn')->update(array(
'userids' => $uids
), $this->snid);
echo '上传用户id成功';
}
//上传设备信息
if($atype=='info'){
m('kqjsn')->update(array(
'usershu' => $arr['usershu'],
'fingerprintshu' => $arr['fingerprintshu'],
'clockinshu' => $arr['clockinshu'],
), $this->snid);
echo '上传设备信息成功';
}
//上传指纹模版
if($atype=='fingerprint'){
$kqjdb = m('kqjcmd');
foreach($arr as $k=>$rs){
$kqjdb->savefingerprint($this->snid, $rs['uid'], array($rs['fingerprint1'],$rs['fingerprint2']));
}
echo '上传指纹模版成功';
}
}
}