common.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <?php
  2. use AlibabaCloud\SDK\Cloudauth\V20190307\Cloudauth;
  3. use AlibabaCloud\SDK\Cloudauth\V20190307\Models\DescribeFaceVerifyRequest;
  4. use AlibabaCloud\SDK\Cloudauth\V20190307\Models\InitFaceVerifyRequest;
  5. use AlibabaCloud\Tea\Exception\TeaError;
  6. use AlibabaCloud\Tea\Utils\Utils;
  7. use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
  8. use Darabonba\OpenApi\Models\Config;
  9. use think\admin\model\SystemConfig;
  10. use app\common\library\QRcode;
  11. function systemConfig($name,$value=null){
  12. $nameArr=array_filter(explode('.',$name));
  13. if(is_null($value)){
  14. if(count($nameArr)==1) {
  15. $source = SystemConfig::where('type', $nameArr[0])->select();
  16. $data=[];
  17. foreach ($source as $model){
  18. $value=$model['value'];
  19. if($decode=json_decode($value,true)){
  20. $value=$decode;
  21. }
  22. $data[$model['name']]=$value;
  23. }
  24. return $data?:null;
  25. }else{
  26. $model = SystemConfig::where('type', $nameArr[0])->where('name',$nameArr[1])->find();
  27. $value=$model['value'];
  28. if($decode=json_decode($value,true)){
  29. $value=$decode;
  30. }
  31. return $value;
  32. }
  33. }else{
  34. SystemConfig::where('type', $nameArr[0])->delete();
  35. if(count($nameArr)==1) {
  36. if(is_array($value)){
  37. foreach ($value as $key=>$val){
  38. SystemConfig::insert([
  39. 'type'=>$nameArr[0],
  40. 'name'=>$key,
  41. 'value'=>is_array($val)?json_encode($val,256):$val,
  42. ]);
  43. }
  44. }
  45. }else{
  46. SystemConfig::insert([
  47. 'type'=>$nameArr[0],
  48. 'name'=>$nameArr[1],
  49. 'value'=>$value,
  50. ]);
  51. }
  52. }
  53. }
  54. /**
  55. * 生成??位随机数
  56. */
  57. function get32Str($length='32'){
  58. // $str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  59. $str = 'abcdefghijklmnopqrstuvwxyz0123456789';
  60. $len = strlen($str)-1;
  61. $randstr = '';
  62. for ($i=0;$i<$length;$i++) {
  63. $num=mt_rand(0,$len);
  64. $randstr .= $str[$num];
  65. }
  66. return $randstr;
  67. }
  68. /**
  69. * 使用AK&SK初始化账号Client
  70. * @param string $accessKeyId
  71. * @param string $accessKeySecret
  72. * @return Cloudauth Client
  73. */
  74. function createClient($accessKeyId, $accessKeySecret){
  75. $config = new Config([
  76. // 您的 AccessKey ID
  77. "accessKeyId" => $accessKeyId,
  78. // 您的 AccessKey Secret
  79. "accessKeySecret" => $accessKeySecret,
  80. ]);
  81. // 访问的域名
  82. $config->endpoint = "cloudauth.aliyuncs.com";
  83. return new Cloudauth($config);
  84. }
  85. /**
  86. * @param string[] $args
  87. * @return void
  88. */
  89. function main($certName,$certNo,$metaInfo,$ReturnUrl){
  90. $client = createClient("LTAI5tMVT8vs7B1CApqhEgBo", "ESDiEM6zED1vyCMoGc9j5gZ9hWIXkP");
  91. $initFaceVerifyRequest = new InitFaceVerifyRequest([
  92. "sceneId" => '1000006090',
  93. "outerOrderNo" => get32Str(),
  94. // 要接入的认证方案。
  95. "productCode" => "ID_PRO",
  96. "certType" => "IDENTITY_CARD",
  97. "certName" => $certName,
  98. "certNo" => $certNo,
  99. // MetaInfo环境参数,需要通过客户端SDK获取。
  100. "metaInfo" => $metaInfo,
  101. "returnUrl" => $ReturnUrl,
  102. ]);
  103. $runtime = new RuntimeOptions([]);
  104. try {
  105. // 复制代码运行请自行打印 API 的返回值
  106. $res = $client->initFaceVerifyWithOptions($initFaceVerifyRequest, $runtime);
  107. return $res;
  108. } catch (Exception $error) {
  109. if (!($error instanceof TeaError)) {
  110. $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
  111. }
  112. // 如有需要,请打印 error
  113. Utils::assertAsString($error->message);
  114. return '';
  115. }
  116. }
  117. /**
  118. * @param string[] $args
  119. * @return void
  120. */
  121. function check($CertifyId){
  122. $client = createClient("LTAI5tMVT8vs7B1CApqhEgBo", "ESDiEM6zED1vyCMoGc9j5gZ9hWIXkP");
  123. $describeFaceVerifyRequest = new DescribeFaceVerifyRequest([
  124. 'sceneId' => '1000006090',
  125. 'certifyId' => $CertifyId,
  126. ]);
  127. $runtime = new RuntimeOptions([]);
  128. try {
  129. // 复制代码运行请自行打印 API 的返回值
  130. $rs = $client->describeFaceVerifyWithOptions($describeFaceVerifyRequest, $runtime);
  131. return $rs;
  132. }
  133. catch (Exception $error) {
  134. if (!($error instanceof TeaError)) {
  135. $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
  136. }
  137. // 如有需要,请打印 error
  138. Utils::assertAsString($error->message);
  139. return false;
  140. }
  141. }
  142. /**
  143. * 生成二维码
  144. */
  145. function setqrcode($value,$name){
  146. $dir = dirname(realpath(dirname($_SERVER['SCRIPT_FILENAME']))) . '/public/';
  147. if(!file_exists($dir)){
  148. //检查是否有该文件夹,如果没有就创建,并给予最高权限
  149. mkdir($dir, 0700,true);
  150. }
  151. $filename = $dir.'/'.$name.'.png';
  152. QRcode::png($value,$filename,QR_ECLEVEL_L,7);
  153. $url = 'http://'.$_SERVER['SERVER_NAME']."/".$name.'.png';
  154. return $url;
  155. }
  156. //生成邀请二维码
  157. function setappcode($address){
  158. $name = time();
  159. $url = setqrcode($address,$name);
  160. return $url;
  161. }