| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- <?php
- namespace app\jobs\notice;
- use app\services\message\TemplateMessageServices;
- use crmeb\basic\BaseJobs;
- use crmeb\exceptions\AdminException;
- use crmeb\services\app\MiniProgramService;
- use crmeb\services\app\WechatService;
- use crmeb\traits\QueueTrait;
- use think\facade\Log;
- class SyncMessageJob extends BaseJobs
- {
- use QueueTrait;
- /**
- * 同步小程序订阅消息
- * @param $template
- * @return bool
- */
- public function syncSubscribe($template)
- {
- $errCode = [-1, 40001, 40002, 40013, 40125, 41002, 41004, 43104, 45009, 200011, 200012, 200014];
- /** @var TemplateMessageServices $templateMessageServices */
- $templateMessageServices = app()->make(TemplateMessageServices::class);
- if ($template['tempkey']) {
- if ($template['tempid']) {
- try {
- MiniProgramService::delSubscribeTemplate($template['tempid']);
- } catch (\Throwable $e) {
- $wechatErr = $e->getMessage();
- if (is_string($wechatErr)) {
- Log::error('删除旧订阅消息模版失败:' . $wechatErr);
- return true;
- }
- if (in_array($wechatErr->getCode(), $errCode)) {
- Log::error('删除旧订阅消息模版失败:' . $wechatErr->getCode());
- return true;
- }
- Log::error('删除旧订阅消息模版失败:' . $wechatErr->getMessage());
- return true;
- }
- }
- try {
- $works = MiniProgramService::getSubscribeTemplateKeyWords($template['tempkey']);
- } catch (\Throwable $e) {
- $wechatErr = $e->getMessage();
- if (is_string($wechatErr)) {
- Log::error('获取关键词列表失败:' . $wechatErr);
- return true;
- }
- if (in_array($wechatErr->getCode(), $errCode)) {
- Log::error('获取关键词列表失败:' . $wechatErr->getCode());
- return true;
- }
- Log::error('获取关键词列表失败:' . $wechatErr->getMessage());
- return true;
- }
- $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) {
- try {
- $tempid = MiniProgramService::addSubscribeTemplate($template['tempkey'], $kid, $template['name']);
- } catch (\Throwable $e) {
- $wechatErr = $e->getMessage();
- if (is_string($wechatErr)) {
- Log::error('添加订阅消息模版失败:' . $wechatErr);
- return true;
- }
- if (in_array($wechatErr->getCode(), $errCode)) {
- Log::error('添加订阅消息模版失败:' . $wechatErr->getCode());
- return true;
- }
- Log::error('添加订阅消息模版失败:' . $wechatErr->getMessage());
- return true;
- }
- $templateMessageServices->update($template['id'], ['tempid' => $tempid, 'kid' => json_encode($kid), 'add_time' => time()], 'id');
- return true;
- }
- }
- return true;
- }
- /**
- * 同步公众号模版消息
- * @param $template
- */
- public function syncWechat($template)
- {
- /** @var TemplateMessageServices $templateMessageServices */
- $templateMessageServices = app()->make(TemplateMessageServices::class);
- try {
- $res = WechatService::addTemplateId($template['tempkey']);
- } catch (\Throwable $e) {
- Log::error('同步模版消息失败:' . $e->getMessage());
- return true;
- }
- if(!$res->errcode && $res->template_id){
- $templateMessageServices->update($template['id'],['tempid'=>$res->template_id]);
- }
- }
- }
|