【触客宝】朋友圈采集修改规则(将需要采集的用户先迁移到指定账号后开启采集,完毕后迁移回去)

This commit is contained in:
wong
2025-05-12 17:40:04 +08:00
parent 5ee85f7d7f
commit e0f29c6da7
3 changed files with 123 additions and 12 deletions

View File

@@ -19,12 +19,16 @@ class AutomaticAssign extends BaseController
* 自动分配微信好友
* @return \think\response\Json
*/
public function autoAllotWechatFriend($data = [])
public function autoAllotWechatFriend($data = [],$isInner = false)
{
// 获取授权token
$authorization = trim($this->request->header('authorization', $this->authorization));
if (empty($authorization)) {
return errorJson('缺少授权信息');
if($isInner){
return json_encode(['code'=>500,'msg'=>'缺少授权信息']);
}else{
return errorJson('缺少授权信息');
}
}
try {
@@ -34,7 +38,11 @@ class AutomaticAssign extends BaseController
$isDeleted = !empty($data['isDeleted']) ? $data['isDeleted'] : input('isDeleted', false);
if (empty($toAccountId)) {
return errorJson('目标账号ID不能为空');
if($isInner){
return json_encode(['code'=>500,'msg'=>'目标账号ID不能为空']);
}else{
return errorJson('目标账号ID不能为空');
}
}
$params = [
@@ -73,13 +81,25 @@ class AutomaticAssign extends BaseController
$response = handleApiResponse($result);
if($response){
return successJson([],'微信好友自动分配成功');
if($isInner){
return json_encode(['code'=>200,'msg'=>'微信好友自动分配成功']);
}else{
return successJson([],'微信好友自动分配成功');
}
}else{
return errorJson($response);
if($isInner){
return json_encode(['code'=>500,'msg'=>$response]);
}else{
return errorJson($response);
}
}
} catch (\Exception $e) {
return errorJson('微信好友自动分配失败:' . $e->getMessage());
if($isInner){
return json_encode(['code'=>500,'msg'=>'微信好友自动分配失败:' . $e->getMessage()]);
}else{
return errorJson('微信好友自动分配失败:' . $e->getMessage());
}
}
}
@@ -141,4 +161,73 @@ class AutomaticAssign extends BaseController
return errorJson('微信群聊自动分配失败:' . $e->getMessage());
}
}
/**
* 指定微信好友分配到指定账号
* @param int $wechatFriendId 微信好友ID
* @param int $toAccountId 目标账号ID
* @param string $comment 评论/备注
* @param bool $notifyReceiver 是否通知接收者
* @param int $optFrom 操作来源
* @return \think\response\Json
*/
public function allotWechatFriend($data = [],$isInner = false)
{
// 获取授权token
$authorization = trim($this->request->header('authorization', $this->authorization));
if (empty($authorization)) {
if($isInner){
return json_encode(['code'=>500,'msg'=>'缺少授权信息']);
}else{
return errorJson('缺少授权信息');
}
}
try {
// 获取请求参数
$wechatFriendId = !empty($data['wechatFriendId']) ? $data['wechatFriendId'] : input('wechatFriendId', 0);
$toAccountId = !empty($data['toAccountId']) ? $data['toAccountId'] : input('toAccountId', 0);
$comment = !empty($data['comment']) ? $data['comment'] : input('comment', '');
$notifyReceiver = !empty($data['notifyReceiver']) ? $data['notifyReceiver'] : input('notifyReceiver', false);
$optFrom = !empty($data['optFrom']) ? $data['optFrom'] : input('optFrom', 4); // 默认操作来源为4
// 参数验证
if (empty($wechatFriendId)) {
return errorJson('微信好友ID不能为空');
}
if (empty($toAccountId)) {
return errorJson('目标账号ID不能为空');
}
// 设置请求头
$headerData = ['client:system'];
$header = setHeader($headerData, $authorization, 'json');
// 发送请求
$url = $this->baseUrl . 'api/WechatFriend/allot?wechatFriendId='.$wechatFriendId.'&notifyReceiver='.$notifyReceiver.'&comment='.$comment.'&toAccountId='.$toAccountId.'&optFrom='.$optFrom;
$result = requestCurl($url, [], 'PUT', $header, 'json');
if (empty($result)) {
if($isInner){
return json_encode(['code'=>200,'msg'=>'微信好友分配成功']);
}else{
return successJson([], '微信好友分配成功');
}
} else {
if($isInner){
return json_encode(['code'=>500,'msg'=>$result]);
}else{
return errorJson($result);
}
}
} catch (\Exception $e) {
if($isInner){
return json_encode(['code'=>500,'msg'=>'微信好友分配失败:' . $e->getMessage()]);
}else{
return errorJson('微信好友分配失败:' . $e->getMessage());
}
}
}
}

View File

@@ -196,7 +196,7 @@ class AuthService
// 尝试从缓存获取授权信息
$authorization = Cache::get($cacheKey);
//$authorization = 'mYpVVhPY7PxctvYw1pn1VCTS2ck0yZG8q11gAiJrRN_D3q7KXXBPAfXoAmqs7kKHeaAx-h4GB7DiqVIQJ09HiXVhaQT6PtgLX3w8YV16erThC-lG1fyJB4DJxu-QxA3Q8ogSs1WFOa8aAXD1QQUZ7Kbjkw_VMLL4lrfe0Yjaqy3DnO7aL1xGnNjjX8P5uqCAZgHKlN8NjuDEGyYvXygW1YyoK9pNpwvq-6DYKjLWdmbHvFaAybHf-hU1XyrFavZqcZYxIoVXjfJ5ASp4XxeCWqMCzwtSoz9RAvwLAlNxGweowtuyX9389ZaXI-zbqb2T0S8llg';
//$authorization = '';
// 如果缓存中没有或已过期,则重新获取
if (empty($authorization)) {
try {

View File

@@ -7,6 +7,8 @@ use app\cunkebao\model\ContentItem;
use think\Controller;
use think\Db;
use app\api\controller\WebSocketController;
use think\facade\Env;
use app\api\controller\AutomaticAssign;
/**
* 内容库控制器
@@ -732,7 +734,7 @@ class ContentLibraryController extends Controller
}
// 返回采集结果
return json([
return json_encode([
'code' => 200,
'msg' => '采集任务执行完成',
'data' => [
@@ -760,14 +762,20 @@ class ContentLibraryController extends Controller
}
try {
$toAccountId = '';
$username = Env::get('api.username', '');
$password = Env::get('api.password', '');
if (!empty($username) || !empty($password)) {
$toAccountId = Db::name('users')->where('account',$username)->value('s2_accountId');
}
// 查询好友信息
$friends = Db::table('s2_wechat_friend')
->field('id, wechatAccountId, wechatId')
->field('id, wechatAccountId, wechatId,accountId')
->whereIn('id', $friendIds)
->where('isDeleted', 0)
->select();
if (empty($friends)) {
return [
'status' => 'failed',
@@ -778,8 +786,22 @@ class ContentLibraryController extends Controller
// 从朋友圈采集内容
$collectedData = [];
$totalMomentsCount = 0;
foreach ($friends as $friend) {
if (!empty($username) && !empty($password)) {
//执行切换好友命令
$automaticAssign = new AutomaticAssign();
$automaticAssign->allotWechatFriend(['wechatFriendId' => $friend['id'],'toAccountId' => $toAccountId],true);
//执行采集朋友圈命令
$webSocket = new WebSocketController(['userName' => $username,'password' => $password,'accountId' => $toAccountId]);
$webSocket->getMoments(['wechatFriendId' => $friend['id'],'wechatAccountId' => $friend['wechatAccountId']]);
//采集完毕切换
$automaticAssign->allotWechatFriend(['wechatFriendId' => $friend['id'],'toAccountId' => $friend['accountId']],true);
}
// 从s2_wechat_moments表获取朋友圈数据
$moments = Db::table('s2_wechat_moments')
->where([
@@ -788,7 +810,7 @@ class ContentLibraryController extends Controller
])
->order('createTime', 'desc')
->select();
if (empty($moments)) {
continue;
}