Browse Source

Merge remote-tracking branch 'origin/master'

master
李可松 4 years ago
parent
commit
1d96dee408
  1. 3
      app/Admin/Controllers/AgentController.php
  2. 4
      app/Admin/Extensions/Grid/MiniProgramAuditStatus.php
  3. 46
      app/Admin/Extensions/Grid/MiniProgramUpload.php

3
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);

4
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();

46
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(),
]);
//获取体验二维码并保存
//获取体验二维码并保存,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']])) {

Loading…
Cancel
Save