cxgj/modules/admin/models/XtOpenForm.php
2023-11-27 09:45:13 +08:00

165 lines
5.1 KiB
PHP

<?php
/**
* @author Any
* @description KISS
* @date 2020-11-5
* @version 1.0.0
*
* _____LOG_____
*
*/
namespace app\modules\admin\models;
use app\components\SiteHelper;
use app\components\XtOpenApi;
use app\models\StoreUser;
use app\models\User;
use app\models\UserLogoutReview;
use app\models\UserOauth;
use app\models\UserToken;
use app\models\Admin;
use Cqrcode\Cqrcode;
class XtOpenForm extends AdminModel
{
public $user_id;
public $page;
public $limit;
public $module;
public $id;
public $data;
public function rules()
{
return [
[['user_id','page','limit','id'], 'integer'],
[['module','data'], 'string'],
];
}
public function actionListData()
{
$obj = new XtOpenApi();
$arr = [
'page' => $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];
}
}