Convertor.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 2018/12/12
  6. * Time: 11:13 AM
  7. */
  8. namespace openapi;
  9. class Convertor
  10. {
  11. private $fields = [];
  12. public function __construct($fields)
  13. {
  14. $this->fields = $fields;
  15. //['appid','convert_sn','batch_code','commonid','time','appkey','mobile','convert_type'];
  16. }
  17. public function exist($convert_sn,$appid)
  18. {
  19. $model = Model();
  20. $items = $model->table('goods_convert')->where(['convert_sn' => $convert_sn, 'appid' => $appid])->master(true)->select();
  21. return !empty($items);
  22. }
  23. public function add_user($appid,$convert_sn,$mobile)
  24. {
  25. $data = [];
  26. $data['appid'] = $appid;
  27. $data['convert_sn'] = $convert_sn;
  28. $data['convert_type'] = 'user';
  29. $data['add_time'] = time();
  30. $data['user_mobile'] = $mobile;
  31. $model = Model();
  32. $insertid = $model->table('goods_convert')->insert($data);
  33. return ($insertid > 0);
  34. }
  35. public function add_fcode($appid,$convert_sn,$batch_code,$commonid,$fcode,$mobile)
  36. {
  37. $data = [];
  38. $data['appid'] = $appid;
  39. $data['convert_sn'] = $convert_sn;
  40. $data['convert_type'] = 'fcode';
  41. $data['batch_code'] = $batch_code;
  42. $data['goods_commonid'] = $commonid;
  43. $data['add_time'] = time();
  44. $data['goods_fcode'] = $fcode;
  45. $data['user_mobile'] = $mobile;
  46. $model = Model();
  47. $insertid = $model->table('goods_convert')->insert($data);
  48. return ($insertid > 0);
  49. }
  50. private function presign_body($input)
  51. {
  52. ksort($input);
  53. reset($input);
  54. $params = [];
  55. foreach ($input as $key => $val)
  56. {
  57. if(in_array($key,$this->fields)) {
  58. $params[] = "{$key}={$val}";
  59. }
  60. }
  61. return implode('&',$params);
  62. }
  63. public function verify($input)
  64. {
  65. $signed = $input['signed'];
  66. $appid = $input['appid'];
  67. if(empty($signed) || empty($appid)) return false;
  68. $signed = base64_decode($signed);
  69. $body = $this->presign_body($input);
  70. return KeyManager::instance()->verify($appid,$body,$signed);
  71. }
  72. }