$this->page, 'limit' => $this->limit, 'keyword' => '', ]; $module = $this->module; if($module == 'getDoor'){ $res = $obj->{$module}($arr)->getData(function($data,$count){ $redis_name = "cxgyc:XtOpenApi:door:list"; foreach ($data as $key=>$val){ $result = [ 'id' => $val['id'], 'villageId' => $val['villageId'], ]; \Yii::$app->redis->hset($redis_name,$val['sn'],json_encode($result)); $body_arr = [ 'path' => "pages/index/scanPage?type=xt&sn={$val['sn']}", ]; $md5 = md5(json_encode($body_arr)); if(!file_exists(\Yii::$app->basePath.'/web/upload/qrcode')){ // 创建目录 @mkdir(\Yii::$app->basePath.'/web/upload/qrcode'); } if(!is_file(\Yii::$app->basePath.'/web/upload/qrcode/'.$md5.'.png')){ // 生成二维码 $qr_res = $this->wxmpQrcode($body_arr); file_put_contents(\Yii::$app->basePath.'/web/upload/qrcode/'.$md5.'.png',$qr_res); } $data[$key]['qr_img'] = "/upload/qrcode/{$md5}.png"; } return ['code'=>0,'data'=>$data,'count'=>$count]; }); }else{ $res = $obj->{$module}($arr)->getData(); } return $res; } //获取小程序二维码 public function wxmpQrcode($body) { $plugin = new \app\models\common\PluginService(); $wxmpService = $plugin->getWxmpService(0); $accessToken = $wxmpService->getAccessToken(); if (empty($accessToken)) { $accessToken = $wxmpService->getAccessToken(true); } $body = json_encode($body); return $wxmpService->Qrcode->getWxappQrcodeLong($accessToken, $body); } public function actionDeleteData() { $obj = new XtOpenApi(); $arr = [ 'id' => $this->id, ]; $module = $this->module; $res = $obj->{$module}($arr)->getData(); return $res; } // 添加數據 public function actionAddSnData(){ $obj = new XtOpenApi(); $arr = json_decode($this->data,true); $module = $this->module; $res = $obj->{$module}($arr)->getData(); return $res; } //获取开门二维码 public function actionGetOpendoorQrcode($params) { if(empty($params['sn'])){ return ['code' => 1,'msg' => '编号不能为空']; } if(empty($params['opendoor_qrcode_endtime'])){ return ['code' => 1,'msg' => '过期时间不能为空']; } $opendoor_qrcode_endtime = strtotime($params['opendoor_qrcode_endtime']); if($opendoor_qrcode_endtime <= time()){ return ['code' => 1,'msg' => '过期时间需大于当前时间']; } $obj = new XtOpenApi(); $obj->user_id = 1; $str_arr = $obj->OpenQr($params['sn'],$opendoor_qrcode_endtime); if($str_arr['code'] != 0){ return ['code' => 1,'msg' => '二维码内容生成失败']; } $str = $str_arr['data']['qr']; $args = [ 'content' => $str, 'width' => 200, 'height' => 200, ]; /** * 初始化参数 * $args = [ * content => '', //二维码内容 * width => '', //二维码宽度 * height => '', //二维码高度 * logo => '', //二维码logo图片 * export_filename => '' //保存路径 * error_correction_level => '', //容错级别 * matrix_point_size => '', //生成图片大小 * ] */ $qrcode = new Cqrcode($args); $data = $qrcode->process(); if($data['code'] != 0){ return ['code' => 1,'msg' => '二维码生成失败']; } $dist = SiteHelper::getFullUrl($data['data']['dist']); return ['code' => 0,'msg' => 'ok','data' => $dist,'str' => $str,'opendoor_qrcode_endtime' => $opendoor_qrcode_endtime]; } }