mzeros 0cfae47bab feat(携号转网): 实现携号转网接口并集成到充值系统
- 新增 Baidumnpapi 类处理百度携号转网 API
- 在 Core 中添加携号转网相关的逻辑和接口
- 修改设置页面,增加携号转网配置选项- 新增商户余额监控和预警功能
- 优化订单处理流程,支持携号转网
2024-12-22 17:41:42 +08:00

176 lines
4.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\private_api\controller\robotApi;
use app\channel\service\ChannelService;
use app\gateway\service\RedisService;
use think\exception\HttpResponseException;
use app\robot\controller\WeChatBot as WeChatBotC;
use app\robot\service\WeChatService;
/**
* 接口处理
* Class Handle
* @package app\gateway\api
*/
class WeChatBot extends Core
{
# 是否检测数据
protected bool $check = false;
protected array $robotInfo = [];
# 获取机器人信息
public function getRobotInfo($token)
{
$redisKey = 'wechat_robot_info_' . $token;
$robotInfo = $this->redis->get($redisKey);
if ($robotInfo === false) {
$WeChatService = WeChatService::instance();
// 如果 Redis 连接失败或没有找到机器人信息,从数据库中获取
$robotInfo = $WeChatService->getInfo($token);
if($robotInfo && $robotInfo['status'] == 1){
// 将获取到的信息存入 Redis以便下次快速访问
$this->redis->set($redisKey, json_encode($robotInfo), 3600);
} else {
return false;
}
} else {
$robotInfo = json_decode($robotInfo, true);
}
return $robotInfo;
}
public function Call()
{
$RobotService = new WeChatBotC($this->app);
$data = input();
if(isset($data['token'])){
$robotInfo = $this->getRobotInfo($data['token']);
if($robotInfo){
$this->robotInfo = $robotInfo;
}else{
return $this->response(['code'=>-1,'msg'=>'机器人不存在']);
}
}else{
return $this->response(['code'=>-1,'msg'=>'参数错误']);
}
# 判断是否为群组
if($data['is_group']){
$roomid = $data['roomid'];
if($roomid == '47576792968@chatroom' && str_contains($data['xml'],'wxid_9iv1hha8g3ok29')){
$AllContacts = $RobotService->get_all_contacts();
// var_dump($AllContacts);die;
$Contacts_array = json_decode($AllContacts,true);
$acc = $Contacts_array['data']['contacts'];
// var_dump($acc);die;
$ac = '';
foreach ($acc as $k=>$v){
if($v['wxid'] == $data['sender']){
$ac = $v['name'];
}
}
// var_dump($data['sender']);die;
return $RobotService->send_text('测试自动回复 @'.$ac,$data['roomid'],$data['sender']);
}
if($roomid == '47576792968@chatroom' && str_contains($data['xml'],'wxid_9iv1hha8g3ok29')){
$AllContacts = $RobotService->get_all_contacts();
// var_dump($AllContacts);die;
$Contacts_array = json_decode($AllContacts,true);
$acc = $Contacts_array['data']['contacts'];
// var_dump($acc);die;
$ac = '';
foreach ($acc as $k=>$v){
if($v['wxid'] == $data['sender']){
$ac = $v['name'];
}
}
// var_dump($data['sender']);die;
return $RobotService->send_text('测试自动回复 @'.$ac,$data['roomid'],$data['sender']);
}
$this->response(['code'=>1]);
}
$this->response($data);
}
public function response($result)
{
throw new HttpResponseException(json($result));
}
protected function maketime($v): float|false|int|string
{
if (!$v) {
return '';
}
if (is_numeric($v)) {
return $v;
}
if (is_array($v)) {
$v = $v[1];
}
if (strstr($v, ' ')) {
$t = explode(' ', $v);
$v = $t[0];
$s = explode(':', $t[1]);
} else {
$s = array(0, 0, 0);
}
if (!isset($s[1])) {
$s[1] = 0;
}
if (!isset($s[2])) {
$s[2] = 0;
}
if (strstr($v, '-')) {
$t = explode('-', $v);
} elseif (strstr($v, '/')) {
$u = explode('/', $v);
$t[0] = $u[2];
$t[1] = $u[0];
$t[2] = $u[1];
}
if (!isset($t)) {
$t = array(0, 0, 0);
}
if (!isset($t[1])) {
$t[1] = 0;
}
if (!isset($t[2])) {
$t[2] = 0;
}
$v = mktime($s[0], $s[1], $s[2], $t[1], $t[2], $t[0]);
return $v;
}
}