將 \app\controller\admin\v1\application\routine\RoutineTemplate.php 這個(gè)文件的syncSubscribe方法
第一個(gè)大括號(hào)內(nèi)的所有代碼刪除
替換成
{
if (!sys_config('routine_appId') || !sys_config('routine_appsecret')) {
throw new AdminException('請(qǐng)先配置小程序appid、appSecret等參數(shù)');
}
$all = $this->services->getTemplateList(['status' => 1, 'type' => 0]);
$errData = [];
$errMessage = [
'-1' => '系統(tǒng)繁忙,此時(shí)請(qǐng)稍候再試',
'40001' => 'AppSecret錯(cuò)誤或者AppSecret不屬于這個(gè)小程序,請(qǐng)確認(rèn)AppSecret 的正確性',
'40002' => '請(qǐng)確保grant_type字段值為client_credential',
'40013' => '不合法的AppID,請(qǐng)檢查AppID的正確性,避免異常字符,注意大小寫(xiě)',
'40125' => '小程序配置無(wú)效,請(qǐng)檢查配置',
'41002' => '缺少appid參數(shù)',
'41004' => '缺少secret參數(shù)',
'43104' => 'appid與openid不匹配',
'45009' => '達(dá)到微信api每日限額上限',
'200011' => '此賬號(hào)已被封禁,無(wú)法操作',
'200012' => '個(gè)人模版數(shù)已達(dá)上限,上限25個(gè)',
];
if ($all['list']) {
$time = time();
foreach ($all['list'] as $template) {
if ($template['tempkey']) {
if (!isset($template['kid'])) {
return $this->fail('數(shù)據(jù)庫(kù)模版表(template_message)缺少字段:kid');
}
if (isset($template['kid']) && $template['kid']) {
continue;
}
$works = [];
try {
$works = MiniProgramService::getSubscribeTemplateKeyWords($template['tempkey']);
} catch (\Throwable $e) {
$wechatErr = $e->getMessage();
if (is_string($wechatErr)) throw new AdminException($wechatErr);
if (in_array($wechatErr->getCode(), array_keys($errMessage))) {
throw new AdminException($errMessage[$wechatErr->getCode()]);
}
$errData[1] = '獲取關(guān)鍵詞列表失?。? . $wechatErr->getMessage();
}
$kid = [];
if ($works) {
$works = array_combine(array_column($works, 'name'), $works);
$content = is_array($template['content']) ? $template['content'] : explode("\n", $template['content']);
foreach ($content as $c) {
$name = explode('{{', $c)[0] ?? '';
if ($name && isset($works[$name])) {
$kid[] = $works[$name]['kid'];
}
}
}
if ($kid && isset($template['kid']) && !$template['kid']) {
$tempid = '';
try {
$tempid = MiniProgramService::addSubscribeTemplate($template['tempkey'], $kid, $template['name']);
} catch (\Throwable $e) {
$wechatErr = $e->getMessage();
if (is_string($wechatErr)) throw new AdminException($wechatErr);
if (in_array($wechatErr->getCode(), array_keys($errMessage))) {
throw new AdminException($errMessage[$wechatErr->getCode()]);
}
$errData[2] = '添加訂閱消息模版失敗:' . $wechatErr->getMessage();
}
if ($tempid != $template['tempid']) {
$this->services->update($template['id'], ['tempid' => $tempid, 'kid' => json_encode($kid), 'add_time' => $time], 'id');
}
}
}
}
/** @var SystemNotificationServices $systemNotificationServices */
$systemNotificationServices = app()->make(SystemNotificationServices::class);
$systemNotificationServices->clearTemplateCache();
}
$msg = $errData ? implode('\n', $errData) : '同步成功';
return $this->success($msg);
}
可以臨時(shí)同步消息提示,僅限參考,具體以官方修復(fù)方法為準(zhǔn)!