将 \app\controller\admin\v1\application\routine\RoutineTemplate.php 这个文件的syncSubscribe方法
第一个大括号内的所有代码删除
替换成
{
if (!sys_config('routine_appId') || !sys_config('routine_appsecret')) {
throw new AdminException('请先配置小程序appid、appSecret等参数');
}
$all = $this->services->getTemplateList(['status' => 1, 'type' => 0]);
$errData = [];
$errMessage = [
'-1' => '系统繁忙,此时请稍候再试',
'40001' => 'AppSecret错误或者AppSecret不属于这个小程序,请确认AppSecret 的正确性',
'40002' => '请确保grant_type字段值为client_credential',
'40013' => '不合法的AppID,请检查AppID的正确性,避免异常字符,注意大小写',
'40125' => '小程序配置无效,请检查配置',
'41002' => '缺少appid参数',
'41004' => '缺少secret参数',
'43104' => 'appid与openid不匹配',
'45009' => '达到微信api每日限额上限',
'200011' => '此账号已被封禁,无法操作',
'200012' => '个人模版数已达上限,上限25个',
];
if ($all['list']) {
$time = time();
foreach ($all['list'] as $template) {
if ($template['tempkey']) {
if (!isset($template['kid'])) {
return $this->fail('数据库模版表(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] = '获取关键词列表失败:' . $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);
}
可以临时同步消息提示,仅限参考,具体以官方修复方法为准!
{{item.user_info.nickname ? item.user_info.nickname : item.user_name}}
作者 管理员 企业
{{itemf.name}}
{{itemc.user_info.nickname}}
{{itemc.user_name}}
回复 {{itemc.comment_user_info.nickname}}
{{itemf.name}}