REAPI/app/robot/controller/WeChatBot.php

201 lines
5.4 KiB
PHP
Raw Normal View History

2024-12-04 12:33:47 +08:00
<?php
namespace app\robot\controller;
use app\channel\service\ChannelService;
use app\channel\service\ProductService;
use app\gateway\service\CurlService;
use app\gateway\service\RedisService;
2024-12-04 12:33:47 +08:00
use app\kami\service\LockCardService;
use app\merchant\service\MerchantService;
use app\merchant\service\OrderHistoryService;
use app\merchant\service\OrderLastHistoryService;
use app\merchant\service\OrderService;
use app\merchant\service\OrderTwoHistoryService;
use app\openapi\controller\Coretb;
use app\order\service\AfterSalesOrderService;
use app\robot\controller\api\Qqbot;
use think\admin\Controller;
use think\exception\HttpResponseException;
use think\facade\Db;
use think\facade\Log;
//use app\merchant\service\OrderLastweekHistoryService;
#微信机器人 #
class WeChatBot extends Controller
{
protected array $status_map=array(
-1=>'暂无订单',
-2=>'暂无卡密',
1=>'成功'
);
protected string $host = 'http://111.229.68.136:9999/';
public function initialize(): void
{
#47609e509f946ecbfdba27f16db341c4
parent::initialize();
#获取wechat信息
}
#发送文本
public function send_text($content,$receiver,$aters =false)
{
$url = $this->host.'text';
$request = [
'aters' =>'',
'msg'=>$content,
'receiver'=>$receiver
];
if($aters){
$request['aters'] = $aters;
}
return $this->curl('post', $url,$request,true);
}
public function get_all_contacts()
{
$url = $this->host.'contacts';
return $this->curl('get', $url);
}
public function send_image($content,$receiver,$aters =false)
{
}
public function get_contacts($wx_id)
{
$redis = RedisService::getInstance();
try{
$data = $redis->get('Wechat_all_contacts');
if($data){
foreach ($data as $k=>$v){
if($v['wxid'] == $wx_id){
return $v['name'];
}
}
$all_contacts = $this->get_all_contacts();
$Contacts_array = json_decode($all_contacts,true);
if(!is_array($Contacts_array) || !isset( $Contacts_array['data']['contacts']) )return false;
$acc = $Contacts_array['data']['contacts'];
foreach ($acc as $k=>$v){
if($v['wxid'] == $wx_id){
$redis->delete('Wechat_all_contacts');
$redis->set('Wechat_all_contacts',$Contacts_array['data']['contacts']);
return $v['name'];
}
}
}else{
$all_contacts = $this->get_all_contacts();
$Contacts_array = json_decode($all_contacts,true);
if(!is_array($Contacts_array) || !isset( $Contacts_array['data']['contacts']) )return false;
$acc = $Contacts_array['data']['contacts'];
foreach ($acc as $k=>$v){
if($v['wxid'] == $wx_id){
$redis->set('Wechat_all_contacts',$Contacts_array['data']['contacts']);
return $v['name'];
}
}
}
return false;
}catch (\Exception $e){
try{
$all_contacts = $this->get_all_contacts();
$Contacts_array = json_decode($all_contacts,true);
if(!is_array($Contacts_array) || !isset( $Contacts_array['data']['contacts']) )return false;
$acc = $Contacts_array['data']['contacts'];
foreach ($acc as $k=>$v){
if($v['wxid'] == $wx_id){
return $v['name'];
}
}
return false;
}catch (\Exception $e){
return false;
}
}
}
2024-12-04 12:33:47 +08:00
# 是否检测数据
// protected bool $check = false;
# 查询接口 一般用于查询数据,同步执行
# 提交接口 一般用于提交数据,异步执行
public function send($url, $param)
{
$geturl = 'http://127.0.0.1:7374/' . $url;
return http_post($geturl, $param);
}
public function send_post($notify_url, $post_data, $type): mixed
{
$postdate = json_encode($post_data);
// $postdate = http_build_query($post_data);
$options = array(
'http' => array(
'method' => $type,
'header' => 'Content-type:application/json',
'content' => $postdate,
'timeout' => 15 * 60 // 超时时间(单位:s
)
);
$context = stream_context_create($options);
return file_get_contents($notify_url, false, $context);
}
protected function curl($method, $url, $param = array(), $json = false, $header = false):mixed
{
if ($param) {
$log['type'] = 'request';
$log['url'] = $url;
$log['param'] = $param;
$this->log($log);
}
$curl = CurlService::getInstance($url, $param, $method, $json, $header);
$curl->setTimeOut(3600);
return $curl->result();
}
protected static function log($data, $type = 'request'):void
{
\dever\Log::write('kami91', $type, $data);
// \dever\Log::write('jingdong', $type, $data);
}
}