openzktimeAction.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. <?php
  2. /**
  3. * 对接中控考勤机
  4. * 请求地址如:http://127.0.0.1/app/xinhu/api.php?m=openzktime&a=get
  5. */
  6. class openzktimeClassAction extends openapiAction
  7. {
  8. private $snid = 0;
  9. private $snrs;
  10. private function getsnid()
  11. {
  12. $num = $this->get('sn'); //设备号
  13. $snid = 0;
  14. if(!isempt($num)){
  15. $dbs = m('kqjsn');
  16. $snid = (int)$dbs->getmou('id',"`num`='$num'");
  17. if($snid==0)$snid = $dbs->insert(array(
  18. 'num' => $num,
  19. 'optdt' => $this->rock->now,
  20. 'status' => 1,
  21. 'pinpai' => '1'
  22. ));
  23. $this->snid = $snid;
  24. $this->snrs = $dbs->getone($snid);
  25. }
  26. return $snid;
  27. }
  28. public function testAction()
  29. {
  30. return 'oknew';
  31. }
  32. /**
  33. * 获取列表
  34. */
  35. public function listAction()
  36. {
  37. $rows = m('kqjsn')->getall('status=1 and `pinpai`=1','`num`,`name`,`snip`,`snport`','`sort` asc');
  38. if(!$rows)return '';
  39. return $rows;
  40. }
  41. /**
  42. * 考勤机定时请求命令
  43. */
  44. public function getAction()
  45. {
  46. $snid = $this->getsnid();
  47. if($snid==0)return 'notdata';
  48. $data= m('kqjcmd')->getcmd($snid);
  49. if($data){
  50. $batr = array();
  51. foreach($data as $k=>$bar){
  52. if(!isset($bar['data']))$bar['data']='none';
  53. $bar['atype'] = $bar['do'];
  54. unset($bar['do']);
  55. $batr[] = json_encode($bar, JSON_UNESCAPED_UNICODE);
  56. }
  57. $data = join('ROCKZK', $batr);
  58. }
  59. return $data;
  60. }
  61. /**
  62. * 获取人员关系
  63. */
  64. public function getuserAction()
  65. {
  66. $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');
  67. $batr = array();
  68. foreach($uarr as $k=>$rs){
  69. $cid = $rs['finger'];
  70. if(isempt($cid))$cid=$rs['id'];
  71. $batr[] = '0,'.$cid.','.$rs['name'].','.$rs['id'].'';
  72. }
  73. return join('ROCKZK', $batr);
  74. }
  75. /**
  76. * 命令状态更新
  77. */
  78. public function getcAction()
  79. {
  80. $this->getsnid();
  81. $id = (int)$this->get('id','0');
  82. if($id==0)return;
  83. $status = (int)$this->get('status');
  84. $cmds = m('kqjcmd');
  85. $cmds->update(array(
  86. 'status'=>$status,
  87. 'cjtime'=>$this->rock->now
  88. ), $id);
  89. $cmds->returnchuli($id, $this->snid);
  90. }
  91. /**
  92. * 中控考勤机插件推送提交过来数据
  93. */
  94. public function postAction()
  95. {
  96. $this->getsnid();
  97. $atype = $this->get('atype');
  98. $str = $this->postdata;
  99. if(isempt($str))return 'not data';
  100. $arr = json_decode($str, true);
  101. $fenxiarr = array();
  102. //打卡
  103. if($atype=='daka'){
  104. $db = m('kqdkjl');
  105. $kqcmd = m('kqjcmd');
  106. $kqcmd->getsninfo($this->snid);
  107. $type = 9;
  108. $oi = 0;
  109. $ids = '';
  110. foreach($arr as $k=>$rs){
  111. $barr = $kqcmd->adddkjl($this->snid, $rs, $type, $db, 1);
  112. $oi++;
  113. foreach($barr as $k1=>$v1)$fenxiarr[$k1] = $v1;
  114. $ids .= ','.$rs['id'].'';
  115. }
  116. //考勤分析
  117. if($fenxiarr){
  118. $kqobj = m('kaoqin');
  119. foreach($fenxiarr as $keys=>$uid){
  120. $keysa = explode('|', $keys);
  121. $kqobj->kqanay($uid, $keysa[0]);
  122. }
  123. }
  124. if($ids!='')$ids = substr($ids,1);
  125. return array(
  126. 'msg' => 'upload add('.$oi.')record',
  127. 'ids' => $ids
  128. );
  129. }
  130. //已存在用户Id
  131. if($atype=='user'){
  132. $uids = $arr['uids'];
  133. m('kqjsn')->update(array(
  134. 'userids' => $uids
  135. ), $this->snid);
  136. echo '上传用户id成功';
  137. }
  138. //上传设备信息
  139. if($atype=='info'){
  140. m('kqjsn')->update(array(
  141. 'usershu' => $arr['usershu'],
  142. 'fingerprintshu' => $arr['fingerprintshu'],
  143. 'clockinshu' => $arr['clockinshu'],
  144. ), $this->snid);
  145. echo '上传设备信息成功';
  146. }
  147. //上传指纹模版
  148. if($atype=='fingerprint'){
  149. $kqjdb = m('kqjcmd');
  150. foreach($arr as $k=>$rs){
  151. $kqjdb->savefingerprint($this->snid, $rs['uid'], array($rs['fingerprint1'],$rs['fingerprint2']));
  152. }
  153. echo '上传指纹模版成功';
  154. }
  155. }
  156. }
粤ICP备19079148号