178 lines
5.0 KiB
PHP
178 lines
5.0 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @author Any
|
|
* @description KISS
|
|
* @date 2020-11-5
|
|
* @version 1.0.0
|
|
*
|
|
* _____LOG_____
|
|
*
|
|
*/
|
|
|
|
namespace app\modules\store\models\dev;
|
|
|
|
use app\components\FlashStorage;
|
|
use app\components\SiteHelper;
|
|
use app\components\ZipFile;
|
|
use app\models\auth\RoleUser;
|
|
use app\models\BallCart;
|
|
use app\models\Coach;
|
|
use app\models\Dev;
|
|
use app\models\District;
|
|
use app\models\Model;
|
|
use app\models\Store;
|
|
use app\models\StoreUser;
|
|
use app\models\User;
|
|
use app\models\Admin;
|
|
use app\modules\store\models\AdminModel;
|
|
use app\models\common\CommonUserEditForm;
|
|
use app\modules\api\components\Mqtt;
|
|
use app\modules\api\models\StoreCityForm;
|
|
use PHPQRCode\QRcode;
|
|
|
|
class DevActionForm extends AdminModel
|
|
{
|
|
public $ids;
|
|
|
|
|
|
private $url = 'https://app.3dxh.h5.dev.1nww.com/#/White';
|
|
|
|
|
|
public function rules()
|
|
{
|
|
return [
|
|
[['ids'], 'required'],
|
|
[['ids'], 'safe'],
|
|
];
|
|
}
|
|
|
|
public function attributeLabels()
|
|
{
|
|
return [
|
|
'ids' => '选择项',
|
|
];
|
|
}
|
|
|
|
|
|
public function getBallQrcode()
|
|
{
|
|
$ball = Dev::findOne($this->ids);
|
|
if ($ball == null) {
|
|
return ['code' => 1, 'msg' => '该设备不存在'];
|
|
}
|
|
$store = Store::findOne($ball->store_id);
|
|
if ($store == null) {
|
|
return ['code' => 1, 'msg' => '该设备所在门店不存在'];
|
|
}
|
|
|
|
return $this->getQrcode($store, $ball);
|
|
}
|
|
|
|
|
|
/**
|
|
* @param $store
|
|
* @param $ball
|
|
* @return array
|
|
*/
|
|
public function getQrcode($store, $ball)
|
|
{
|
|
|
|
$path = 'qrcode/';
|
|
if (!is_dir($path)) {
|
|
mkdir($path, 0777, true);
|
|
}
|
|
|
|
$hostname = $this->url;
|
|
$filename = 'qrcode/' . $ball->dev_number . '.png';
|
|
|
|
|
|
if (!file_exists($filename)) {
|
|
|
|
|
|
$qr_data = $hostname . "?dev_id={$ball->id}&store_id={$ball->store_id}&time={$ball->created_at}&path=basicsInfo";
|
|
$errorCorrectionLevel = 'L'; //容错级别
|
|
$matrixPointSize = 5; //生成图片大小
|
|
|
|
|
|
|
|
QRcode::png($qr_data, $filename, $errorCorrectionLevel, $matrixPointSize, 2, true);
|
|
|
|
$url = \Yii::$app->request->getHostInfo() . '/' . $filename;
|
|
if (!file_exists($filename)) {
|
|
return ['code' => 1, 'msg' => '生成二维码失败'];
|
|
} else {
|
|
return ['code' => 0, 'msg' => 'ok', 'data' => $url];
|
|
}
|
|
// if (!file_exists($filename)) {
|
|
// return [
|
|
// 'code' => 1,
|
|
// 'msg' => 'Failed to generate QR code.'
|
|
// ];
|
|
// } else {
|
|
|
|
|
|
// $url = $hostname . '/' . $filename;
|
|
|
|
// $file = fopen($filename, "w");//打开文件准备写入
|
|
// fwrite($file, $url);//写入,$res为图片二进制内容
|
|
// fclose($file);//关闭
|
|
|
|
|
|
// //图片是否存在
|
|
// if (!file_exists($filename)) {
|
|
// return ['code' => 1, 'msg' => '生成二维码失败'];
|
|
// } else {
|
|
// return ['code' => 0, 'msg' => 'ok', 'data' => $url];
|
|
// }
|
|
// }
|
|
} else {
|
|
return ['code' => 0, 'msg' => 'ok', 'data' => \Yii::$app->request->getHostInfo() . '/' . $filename];
|
|
}
|
|
}
|
|
|
|
//获取小程序二维码
|
|
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->getWxappQrcode($accessToken, $body);
|
|
}
|
|
|
|
public function BatchQrcode()
|
|
{
|
|
$ball = Dev::find()->select('id,store_id,name,dev_number,created_at')->where(['is_delete' => 0])->all();
|
|
if ($ball == null) {
|
|
return ['code' => 1, 'msg' => '该设备不存在'];
|
|
}
|
|
|
|
$path = 'qrcode/dev_qrcode_zip';
|
|
if (!is_dir($path)) {
|
|
mkdir($path, 0777, true);
|
|
}
|
|
$paths = [];
|
|
foreach ($ball as $value) {
|
|
$store = Store::findOne($value->store_id);
|
|
if ($store == null) {
|
|
return $value->dev_number . '编号设备所在门店不存在';
|
|
}
|
|
$r = $this->getQrcode($store, $value);
|
|
if ($r['code'] != 0) {
|
|
return $r['msg'];
|
|
}
|
|
$name = $store->name . '_' . $value->dev_number . '.png';
|
|
array_push($paths, ['name' => $name, 'path' => $r['data']]);
|
|
}
|
|
if (empty($paths)) {
|
|
return '无下载数据';
|
|
}
|
|
$zipName = '设备二维码_' . date('Y年m月d日') . '下载' . '.zip'; // 压缩包文件名
|
|
return (new ZipFile())->downloadZipImg($zipName, $path, $paths);
|
|
}
|
|
|
|
} |