场景获客支持拉群

This commit is contained in:
wong
2026-01-08 10:45:41 +08:00
parent b2e84a2259
commit e469537ac5
13 changed files with 1089 additions and 10564 deletions

View File

@@ -124,6 +124,86 @@ class GetAddFriendPlanDetailV1Controller extends Controller
$msgConf = json_decode($plan['msgConf'], true) ?: [];
$tagConf = json_decode($plan['tagConf'], true) ?: [];
// 处理拉群固定成员为数组,并构造下拉 options
if (!empty($plan['groupFixedMembers'])) {
$fixedMembers = json_decode($plan['groupFixedMembers'], true);
$plan['groupFixedMembers'] = is_array($fixedMembers) ? $fixedMembers : [];
} else {
$plan['groupFixedMembers'] = [];
}
// groupFixedMembersOptions参考 workbench 中好友 options 的结构,返回完整好友信息
$groupFixedMembersOptions = [];
if (!empty($plan['groupFixedMembers'])) {
$friendIds = [];
$manualIds = [];
foreach ($plan['groupFixedMembers'] as $member) {
if (is_numeric($member)) {
$friendIds[] = intval($member);
} else {
$manualIds[] = $member;
}
}
// 数字 ID从 s2_wechat_friend 中查询好友信息
if (!empty($friendIds)) {
$friendList = Db::table('s2_wechat_friend')->alias('wf')
->join(['s2_wechat_account' => 'wa'], 'wa.id = wf.wechatAccountId', 'left')
->join(['s2_company_account' => 'ca'], 'ca.id = wf.accountId', 'left')
->where('wf.id', 'in', $friendIds)
->order('wf.id', 'desc')
->field('wf.id,wf.wechatId,wf.nickname,wf.avatar,wf.alias,wf.gender,wf.phone,wa.nickName as accountNickname,ca.userName as account,ca.realName as username,wf.createTime,wf.updateTime,wf.deleteTime,wf.ownerWechatId')
->select();
// 获取群主信息,格式化时间
foreach ($friendList as &$friend) {
if (!empty($friend['ownerWechatId'])) {
$owner = Db::name('wechat_account')
->where('wechatId', $friend['ownerWechatId'])
->field('nickName,alias')
->find();
$friend['ownerNickname'] = $owner['nickName'] ?? '';
$friend['ownerAlias'] = $owner['alias'] ?? '';
} else {
$friend['ownerNickname'] = '';
$friend['ownerAlias'] = '';
}
$friend['isManual'] = '';
$friend['createTime'] = !empty($friend['createTime']) ? date('Y-m-d H:i:s', $friend['createTime']) : '';
$friend['updateTime'] = !empty($friend['updateTime']) ? date('Y-m-d H:i:s', $friend['updateTime']) : '';
$friend['deleteTime'] = !empty($friend['deleteTime']) ? date('Y-m-d H:i:s', $friend['deleteTime']) : '';
}
unset($friend);
$groupFixedMembersOptions = array_merge($groupFixedMembersOptions, $friendList);
}
// 手动 ID仅返回基础结构标记 isManual=1
if (!empty($manualIds)) {
foreach ($manualIds as $mid) {
$groupFixedMembersOptions[] = [
'id' => $mid,
'wechatId' => $mid,
'nickname' => $mid,
'avatar' => '',
'alias' => '',
'gender' => 0,
'phone' => '',
'accountNickname' => '',
'account' => '',
'username' => '',
'ownerNickname' => '',
'ownerAlias' => '',
'ownerWechatId' => '',
'createTime' => '',
'updateTime' => '',
'deleteTime' => '',
'isManual' => 1,
];
}
}
}
$sceneConf['groupFixedMembersOptions'] = $groupFixedMembersOptions;
// 处理分销配置
$distributionConfig = $sceneConf['distribution'] ?? [
'enabled' => false,