You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
205 lines
11 KiB
205 lines
11 KiB
<?php
|
|
// +----------------------------------------------------------------------
|
|
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
|
// +----------------------------------------------------------------------
|
|
// | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
|
|
// +----------------------------------------------------------------------
|
|
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
|
// +----------------------------------------------------------------------
|
|
// | Author: CRMEB Team <admin@crmeb.com>
|
|
// +----------------------------------------------------------------------
|
|
|
|
namespace app\jobs;
|
|
|
|
use app\services\other\PosterServices;
|
|
use app\services\other\QrcodeServices;
|
|
use app\services\system\attachment\SystemAttachmentServices;
|
|
use crmeb\basic\BaseJobs;
|
|
use crmeb\services\app\MiniProgramService;
|
|
use app\services\other\UploadService;
|
|
use crmeb\traits\QueueTrait;
|
|
|
|
/**
|
|
* 海报队列
|
|
* Class PosterJob
|
|
* @package crmeb\jobs
|
|
*/
|
|
class PosterJob extends BaseJobs
|
|
{
|
|
use QueueTrait;
|
|
|
|
/**
|
|
* 海报生成
|
|
* @param $user
|
|
* @param $isSsl
|
|
* @return bool
|
|
*/
|
|
public function spreadPoster($user, $isSsl)
|
|
{
|
|
/** @var SystemAttachmentServices $attachment */
|
|
$attachment = app()->make(SystemAttachmentServices::class);
|
|
|
|
/** @var QrcodeServices $qrcodeService */
|
|
$qrcodeService = app()->make(QrcodeServices::class);
|
|
|
|
$rootPath = app()->getRootPath();
|
|
try {
|
|
$resRoutine = true;//小程序
|
|
$resWap = true;//公众号
|
|
$siteUrl = sys_config('site_url');
|
|
$routineSpreadBanner = sys_data('routine_spread_banner');
|
|
if (!count($routineSpreadBanner)) return false;
|
|
//小程序
|
|
$name_routine = $user['uid'] . '_' . $user['is_promoter'] . '_user_routine.jpg';
|
|
$name_wap = $user['uid'] . '_' . $user['is_promoter'] . '_user_wap.jpg';
|
|
$imageInfo_routine = $attachment->getInfo(['name' => $name_routine]);
|
|
$imageInfo_wap = $attachment->getInfo(['name' => $name_wap]);
|
|
if (isset($imageInfo_routine['att_dir']) && strstr($imageInfo_routine['att_dir'], 'http') !== false && curl_file_exist($imageInfo_routine['att_dir']) === false) {
|
|
$imageInfo_routine = null;
|
|
$attachment->delete(['name' => $name_routine]);
|
|
}
|
|
if (isset($imageInfo_wap['att_dir']) && strstr($imageInfo_wap['att_dir'], 'http') !== false && curl_file_exist($imageInfo_wap['att_dir']) === false) {
|
|
$imageInfo_wap = null;
|
|
$attachment->delete(['name' => $name_wap]);
|
|
}
|
|
if (!$imageInfo_routine) {
|
|
$resForever = $qrcodeService->getForeverQrcode('spread', $user['uid']);
|
|
$resCode = MiniProgramService::appCodeUnlimitService($resForever->id, '', 280);
|
|
if ($resCode) {
|
|
$res = ['res' => $resCode, 'id' => $resForever->id];
|
|
} else {
|
|
$res = false;
|
|
}
|
|
if (!$res) return false;
|
|
$uploadType = (int)sys_config('upload_type', 1);
|
|
$upload = UploadService::init();
|
|
$uploadRes = $upload->to('routine/spread/code')->validate()->setAuthThumb(false)->stream($res['res'], $name_routine);
|
|
if ($uploadRes === false) {
|
|
return false;
|
|
}
|
|
$imageInfo_routine = $upload->getUploadInfo();
|
|
$imageInfo_routine['image_type'] = $uploadType;
|
|
$attachment->attachmentAdd($imageInfo_routine['name'], $imageInfo_routine['size'], $imageInfo_routine['type'], $imageInfo_routine['dir'], $imageInfo_routine['thumb_path'], 1, $imageInfo_routine['image_type'], $imageInfo_routine['time'], 2);
|
|
$qrcodeService->setQrcodeFind($res['id'], ['status' => 1, 'url_time' => time(), 'qrcode_url' => $imageInfo_routine['dir']]);
|
|
$urlCode_routine = $imageInfo_routine['dir'];
|
|
} else $urlCode_routine = $imageInfo_routine['att_dir'];
|
|
if ($imageInfo_routine['image_type'] == 1) $urlCode_routine = $siteUrl . $urlCode_routine;
|
|
if (!$imageInfo_wap) {
|
|
$codeUrl = set_http_type($siteUrl . '?spread=' . $user['uid'], $isSsl ? 0 : 1);//二维码链接
|
|
$imageInfo_wap = PosterServices::getQRCodePath($codeUrl, $name_wap);
|
|
if (is_string($imageInfo_wap)) return false;
|
|
$attachment->attachmentAdd($imageInfo_wap['name'], $imageInfo_wap['size'], $imageInfo_wap['type'], $imageInfo_wap['dir'], $imageInfo_wap['thumb_path'], 1, $imageInfo_wap['image_type'], $imageInfo_wap['time'], 2);
|
|
$urlCode_wap = $imageInfo_wap['dir'];
|
|
} else $urlCode_wap = $imageInfo_wap['att_dir'];
|
|
if ($imageInfo_wap['image_type'] == 1) $urlCode_wap = $siteUrl . $urlCode_wap;
|
|
$siteUrl = set_http_type($siteUrl, $isSsl ? 0 : 1);
|
|
$filelink = [
|
|
'Bold' => 'public\statics\font\Alibaba-PuHuiTi-Regular.otf',
|
|
'Normal' => 'public\statics\font\Alibaba-PuHuiTi-Regular.otf',
|
|
];
|
|
if (!file_exists($filelink['Bold'])) return false;
|
|
if (!file_exists($filelink['Normal'])) return false;
|
|
foreach ($routineSpreadBanner as $key => &$item) {
|
|
$posterInfo_routine = '海报生成失败:(';
|
|
$config = array(
|
|
'image' => array(
|
|
array(
|
|
'url' => $urlCode_routine, //二维码资源
|
|
'stream' => 0,
|
|
'left' => 114,
|
|
'top' => 790,
|
|
'right' => 0,
|
|
'bottom' => 0,
|
|
'width' => 120,
|
|
'height' => 120,
|
|
'opacity' => 100
|
|
)
|
|
),
|
|
'text' => array(
|
|
array(
|
|
'text' => $user['nickname'],
|
|
'left' => 250,
|
|
'top' => 840,
|
|
'fontPath' => $rootPath . $filelink['Bold'], //字体文件
|
|
'fontSize' => 16, //字号
|
|
'fontColor' => '40,40,40', //字体颜色
|
|
'angle' => 0,
|
|
),
|
|
array(
|
|
'text' => '邀请您加入' . sys_config('site_name'),
|
|
'left' => 250,
|
|
'top' => 880,
|
|
'fontPath' => $rootPath . $filelink['Normal'], //字体文件
|
|
'fontSize' => 16, //字号
|
|
'fontColor' => '40,40,40', //字体颜色
|
|
'angle' => 0,
|
|
)
|
|
),
|
|
'background' => $item['pic']
|
|
);
|
|
$resRoutine = $resRoutine && $posterInfo_routine = PosterServices::setSharePoster($config, 'routine/spread/poster', $user['uid'] . '_' . $user['is_promoter'] . '_user_routine_poster_' . $key . '.jpg');
|
|
if (!is_array($posterInfo_routine)) return false;
|
|
$attachment->attachmentAdd($posterInfo_routine['name'], $posterInfo_routine['size'], $posterInfo_routine['type'], $posterInfo_routine['dir'], $posterInfo_routine['thumb_path'], 1, $posterInfo_routine['image_type'], $posterInfo_routine['time'], 2);
|
|
if ($resRoutine) {
|
|
if ($posterInfo_routine['image_type'] == 1)
|
|
$item['poster'] = $siteUrl . $posterInfo_routine['dir'];
|
|
else
|
|
$item['poster'] = set_http_type($posterInfo_routine['dir'], $isSsl ? 0 : 1);
|
|
$item['poster'] = str_replace('\\', '/', $item['poster']);
|
|
}
|
|
}
|
|
foreach ($routineSpreadBanner as $key => &$item) {
|
|
$posterInfo_wap = '海报生成失败:(';
|
|
$config = array(
|
|
'image' => array(
|
|
array(
|
|
'url' => $urlCode_wap, //二维码资源
|
|
'stream' => 0,
|
|
'left' => 114,
|
|
'top' => 790,
|
|
'right' => 0,
|
|
'bottom' => 0,
|
|
'width' => 120,
|
|
'height' => 120,
|
|
'opacity' => 100
|
|
)
|
|
),
|
|
'text' => array(
|
|
array(
|
|
'text' => $user['nickname'],
|
|
'left' => 250,
|
|
'top' => 840,
|
|
'fontPath' => $rootPath . $filelink['Bold'], //字体文件
|
|
'fontSize' => 16, //字号
|
|
'fontColor' => '40,40,40', //字体颜色
|
|
'angle' => 0,
|
|
),
|
|
array(
|
|
'text' => '邀请您加入' . sys_config('site_name'),
|
|
'left' => 250,
|
|
'top' => 880,
|
|
'fontPath' => $rootPath . $filelink['Normal'], //字体文件
|
|
'fontSize' => 16, //字号
|
|
'fontColor' => '40,40,40', //字体颜色
|
|
'angle' => 0,
|
|
)
|
|
),
|
|
'background' => $item['pic']
|
|
);
|
|
$resWap = $resWap && $posterInfo_wap = PosterServices::setSharePoster($config, 'wap/spread/poster', $user['uid'] . '_' . $user['is_promoter'] . '_user_wap_poster_' . $key . '.jpg');
|
|
if (!is_array($posterInfo_wap)) return false;
|
|
$attachment->attachmentAdd($posterInfo_wap['name'], $posterInfo_wap['size'], $posterInfo_wap['type'], $posterInfo_wap['dir'], $posterInfo_wap['thumb_path'], 1, $posterInfo_wap['image_type'], $posterInfo_wap['time'], 2);
|
|
if ($resWap) {
|
|
if ($posterInfo_wap['image_type'] == 1)
|
|
$item['wap_poster'] = $siteUrl . $posterInfo_wap['thumb_path'];
|
|
else
|
|
$item['wap_poster'] = set_http_type($posterInfo_wap['thumb_path'], 1);
|
|
}
|
|
}
|
|
if ($resRoutine && $resWap) return true;
|
|
else return false;
|
|
} catch (\Exception $e) {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|