From 03ec88f5c82a36ef980d9e2d50ec6a52ab8b7f0d Mon Sep 17 00:00:00 2001 From: liapples Date: Mon, 27 Sep 2021 23:56:08 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E2=80=9C=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E5=B0=8F=E7=A8=8B=E5=BA=8F=E6=A8=A1=E6=9D=BF=E2=80=9D?= =?UTF-8?q?=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Controllers/AgentController.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/Admin/Controllers/AgentController.php b/app/Admin/Controllers/AgentController.php index 0672cc2..1f11ec5 100644 --- a/app/Admin/Controllers/AgentController.php +++ b/app/Admin/Controllers/AgentController.php @@ -4,6 +4,7 @@ namespace App\Admin\Controllers; use App\Admin\Extensions\Grid\AuditAgent; use App\Admin\Extensions\Grid\MiniProgramAuditStatus; +use App\Admin\Extensions\Grid\MiniProgramPull; use App\Admin\Extensions\Grid\MiniProgramReg; use App\Admin\Extensions\Grid\MiniProgramUpload; use App\Admin\Repositories\Agent; @@ -30,6 +31,8 @@ class AgentController extends AdminController return Grid::make(new Agent(['miniUpload']), function (Grid $grid) { $grid->disableDeleteButton(); + $grid->tools(new MiniProgramPull('更新小程序模板')); + //如果是审核页面,多加where条件判断 if (strpos(Route::current()->uri, 'audit')) { $grid->model()->where('status', UserStatus::UNAUDITED); From 8241f12a4ba3227871f31d9cb07ae2c0ce291f97 Mon Sep 17 00:00:00 2001 From: liapples Date: Tue, 28 Sep 2021 00:38:21 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E5=9F=9F=E5=90=8D=E9=80=BB=E8=BE=91=E5=92=8C30=E5=A4=A9?= =?UTF-8?q?=E5=86=85=E5=8F=AA=E8=8E=B7=E5=8F=96=E4=B8=80=E6=AC=A1=E4=BD=93?= =?UTF-8?q?=E9=AA=8C=E4=BA=8C=E7=BB=B4=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Extensions/Grid/MiniProgramUpload.php | 50 +++++++++++-------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/app/Admin/Extensions/Grid/MiniProgramUpload.php b/app/Admin/Extensions/Grid/MiniProgramUpload.php index ef043bc..e2a60b5 100644 --- a/app/Admin/Extensions/Grid/MiniProgramUpload.php +++ b/app/Admin/Extensions/Grid/MiniProgramUpload.php @@ -10,6 +10,7 @@ use Dcat\Admin\Grid\RowAction; use EasyWeChat\Factory; use EasyWeChat\OpenPlatform\Authorizer\MiniProgram\Code\Client; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Redis; use Illuminate\Support\Facades\Storage; /** @@ -63,24 +64,6 @@ class MiniProgramUpload extends RowAction } $miniProgram = $openPlatform->miniProgram($agent->appid, $refreshToken); - //设置域名 - /** @var \EasyWeChat\OpenPlatform\Authorizer\MiniProgram\Domain\Client $domain */ - $domain = $miniProgram['domain']; - - $host = env('APP_URL'); - $param = [ - "action" => "add", - "requestdomain" => [$host], - "wsrequestdomain" => [str_replace('http', 'ws', $host)], - "uploaddomain" => [$host], - "downloaddomain" => [$host], - ]; - $domain->modify($param); //服务器域名,服务器域名多次设置仅第一次成功,这里不校验返回结果正确性 - $res = $domain->setWebviewDomain([$host]); //业务域名 - if (!isset($res['errcode'], $res['errmsg']) || $res['errcode'] != 0 || $res['errmsg'] != 'ok') { - throw new \Exception("设置业务域名{$host}失败,原因:" . $res['errmsg'] ?? (is_array($res) ? join(',', $res) : '未知')); - } - /** @var Client $code */ $code = $miniProgram['code'] ?? null; if (!$code) { @@ -117,9 +100,34 @@ class MiniProgramUpload extends RowAction 'created_at' => now(), ]); - //获取体验二维码并保存 - $qrcode = $code->getQrCode(); - Storage::put("public/$filename", $qrcode); + //获取体验二维码并保存,30天内只获取一次 + $qrcode_path = Storage::path("mini_program_qrcode/{$agent->id}-{$agent->appid}-demo.jpg"); + if (!file_exists($qrcode_path) || time() - filemtime($qrcode_path) < 86400 * 30) { + $qrcode = $code->getQrCode(); + Storage::put("public/$filename", $qrcode); + } + + //设置域名,如果之前已经设置过了将记录下来,不再设置 + $host = env('APP_URL'); + $redis_key = 'mini_program_set_host:' . $host; + if (!Redis::hget($redis_key, $agent->appid)) { + /** @var \EasyWeChat\OpenPlatform\Authorizer\MiniProgram\Domain\Client $domain */ + $domain = $miniProgram['domain']; + + $param = [ + "action" => "add", + "requestdomain" => [$host], + "wsrequestdomain" => [str_replace('http', 'ws', $host)], + "uploaddomain" => [$host], + "downloaddomain" => [$host], + ]; + $domain->modify($param); //服务器域名,服务器域名多次设置仅第一次成功,这里不校验返回结果正确性 + $res = $domain->setWebviewDomain([$host]); //业务域名 + if (!isset($res['errcode'], $res['errmsg']) || $res['errcode'] != 0 || $res['errmsg'] != 'ok') { + throw new \Exception("设置业务域名{$host}失败,原因:" . $res['errmsg'] ?? (is_array($res) ? join(',', $res) : '未知')); + } + Redis::hset($redis_key, 1); + } return $this->response()->success("上传成功,并已提交审核")->refresh(); } else if (isset($audit_err_code[$res['errcode']])) { From 52a66a624b49595c290be5d7ddb7609d42520906 Mon Sep 17 00:00:00 2001 From: liapples Date: Tue, 28 Sep 2021 00:46:38 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Extensions/Grid/MiniProgramAuditStatus.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/Admin/Extensions/Grid/MiniProgramAuditStatus.php b/app/Admin/Extensions/Grid/MiniProgramAuditStatus.php index 774c946..a98a69d 100644 --- a/app/Admin/Extensions/Grid/MiniProgramAuditStatus.php +++ b/app/Admin/Extensions/Grid/MiniProgramAuditStatus.php @@ -81,10 +81,8 @@ class MiniProgramAuditStatus extends RowAction $releaseArr = [-1 => '系统繁忙', 85019 => '没有审核版本', 85020 => '审核状态未满足发布']; if (isset($res_release['errcode'], $res_release['errmsg']) && $res_release['errcode'] == 0 && $res_release['errmsg'] == 'ok') { return $this->response()->success("模板ID {$log->template_id} 的小程序已审核成功且发布")->refresh(); - } else if (isset($releaseArr[$res_release['errcode']])) { - return $this->response()->warning('审核成功,发布结果为:' . $releaseArr[$res_release['errcode']])->refresh(); } else { - return $this->response()->warning('审核成功,但发布出错:' . join(',', $res_release))->refresh(); + return $this->response()->warning('审核成功,发布结果为:' . ($releaseArr[$res_release['errcode']] ?? join(',', $res_release)))->refresh(); } } else if (isset($statusArr[$res['status']])) { return $this->response()->warning($statusArr[$res['status']])->refresh();