ItemTokenModel.class.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace Api\Model;
  3. use Api\Model\BaseModel;
  4. /**
  5. *
  6. * @author star7th
  7. */
  8. class ItemTokenModel extends BaseModel {
  9. public function createToken($item_id){
  10. $api_key = md5(md5($item_id.microtime().rand()."showdoc")."srffsrfgr".rand()).rand();
  11. $api_token = md5(md5($item_id.microtime().rand()."showdoc")."rgrhbtgd34".rand()).rand();
  12. $data['item_id'] = $item_id ;
  13. $data['api_key'] = $api_key ;
  14. $data['api_token'] = $api_token ;
  15. $data['addtime'] = time() ;
  16. $ret = $this->add($data);
  17. if ($ret) {
  18. return $ret ;
  19. }
  20. return false ;
  21. }
  22. public function getTokenByItemId($item_id){
  23. $item_id = intval($item_id) ;
  24. $item_token = $this->where("item_id='$item_id'")->find();
  25. if (!$item_token) {
  26. $this->createToken($item_id);
  27. $item_token = $this->where("item_id='$item_id'")->find();
  28. }
  29. return $item_token ;
  30. }
  31. public function getTokenByKey($api_key){
  32. $item_token = $this->where("api_key='%s'",array($api_key))->find();
  33. return $item_token ;
  34. }
  35. public function setLastTime($item_id){
  36. $item_id = intval($item_id) ;
  37. return $this->where("item_id='$item_id'")->save(array("last_check_time"=>time()));
  38. }
  39. //检查token。如果检测通过则返回item_id
  40. public function check($api_key , $api_token, $no = ''){
  41. $ret = $this->getTokenByKey($api_key);
  42. if ($ret && $ret['api_token'] == $api_token) {
  43. $item_id = $ret['item_id'] ;
  44. $this->setLastTime($item_id);
  45. return $item_id ;
  46. }else{
  47. return false;
  48. }
  49. }
  50. }