代码优化

This commit is contained in:
wong
2026-04-29 16:33:23 +08:00
parent edfc21c373
commit 1a28c9ae75
4 changed files with 161 additions and 33 deletions

View File

@@ -73,6 +73,43 @@ class TrafficPoolSource extends Model
return $value ? json_encode($value, JSON_UNESCAPED_UNICODE) : null;
}
/**
* 兼容历史库s2_wechat_friend 早期可能不存在 headImgUrl 列
* @param string $wechatId
* @return string
*/
protected static function getFriendHeadImgUrl(string $wechatId): string
{
$wechatId = trim($wechatId);
if ($wechatId === '') {
return '';
}
static $hasHeadImgUrl = null;
if ($hasHeadImgUrl === null) {
try {
$cols = Db::query("SHOW COLUMNS FROM s2_wechat_friend LIKE 'headImgUrl'");
$hasHeadImgUrl = !empty($cols);
} catch (\Throwable $e) {
$hasHeadImgUrl = false;
}
}
if (!$hasHeadImgUrl) {
return '';
}
try {
$val = Db::table('s2_wechat_friend')
->where('wechatId', $wechatId)
->value('headImgUrl');
return $val ? (string)$val : '';
} catch (\Throwable $e) {
// 兜底:避免因字段缺失导致接口直接 1054
return '';
}
}
/**
* 获取来源类型名称
* @return string
@@ -224,11 +261,10 @@ class TrafficPoolSource extends Model
// 尝试获取好友头像
if (!empty($source['sourceWechatId'])) {
$sourceData['sourceAvatar'] = Db::table('ck_traffic_pool')
$avatar = Db::table('ck_traffic_pool')
->where('wechatId', $source['sourceWechatId'])
->value('avatar') ?: Db::table('s2_wechat_friend')
->where('wechatId', $source['sourceWechatId'])
->value('headImgUrl') ?: '';
->value('avatar');
$sourceData['sourceAvatar'] = $avatar ?: self::getFriendHeadImgUrl((string)$source['sourceWechatId']);
}
} else {
$sourceData['chatroomOwners'] = [];
@@ -448,11 +484,10 @@ class TrafficPoolSource extends Model
$sourceData['chatroomInfo'] = null;
// 尝试获取好友头像
if (!empty($source['sourceWechatId'])) {
$sourceData['sourceAvatar'] = Db::table('ck_traffic_pool')
$avatar = Db::table('ck_traffic_pool')
->where('wechatId', $source['sourceWechatId'])
->value('avatar') ?: Db::table('s2_wechat_friend')
->where('wechatId', $source['sourceWechatId'])
->value('headImgUrl') ?: '';
->value('avatar');
$sourceData['sourceAvatar'] = $avatar ?: self::getFriendHeadImgUrl((string)$source['sourceWechatId']);
}
} else {
$sourceData['chatroomOwners'] = [];

View File

@@ -333,8 +333,9 @@ class WorkbenchGroupPushJob
{
$sendData = [];
// 内容处理
if (!empty($content['content'])) {
// 内容处理(小程序素材 content 为 JSON不能按文本推送
$contentTypeNum = (int)($content['contentType'] ?? 0);
if (!empty($content['content']) && $contentTypeNum !== 5) {
// 京东转链
if (!empty($config['promotionSiteId'])) {
$WorkbenchController = new WorkbenchController();
@@ -430,6 +431,49 @@ class WorkbenchGroupPushJob
];
}
break;
case 5:
// 小程序content 为 JSON与触客宝快捷语 / 存客宝表单一致(可含 body 内容消息)
$mini = json_decode($content['content'] ?? '', true);
if (is_array($mini) && ($mini['type'] ?? '') === 'miniprogram') {
$body = trim((string)($mini['body'] ?? $mini['contentMessage'] ?? $mini['message'] ?? ''));
if ($body !== '') {
if ($type == 'group') {
$sendData[] = [
'content' => $body,
'msgType' => 1,
'wechatAccountId' => $wechatAccountId,
'wechatChatroomId' => $targetId,
];
} else {
$sendData[] = [
'content' => $body,
'msgType' => 1,
];
}
}
$miniPayload = [
'type' => 'miniprogram',
'title' => $mini['title'] ?? '',
'des' => $mini['des'] ?? '',
'gh' => $mini['gh'] ?? '',
'pagepath' => $mini['pagepath'] ?? '',
'previewImage' => $mini['previewImage'] ?? '',
];
if ($type == 'group') {
$sendData[] = [
'content' => $miniPayload,
'msgType' => 49,
'wechatAccountId' => $wechatAccountId,
'wechatChatroomId' => $targetId,
];
} else {
$sendData[] = [
'content' => $miniPayload,
'msgType' => 49,
];
}
}
break;
}
return $sendData;