|
|
<?php
|
|
|
/**
|
|
|
* Created by PhpStorm.
|
|
|
* User: ty01
|
|
|
* Date: 2022/3/10
|
|
|
* Time: 14:31
|
|
|
*/
|
|
|
|
|
|
namespace app\api\controller\v1;
|
|
|
|
|
|
use app\admin\model\collection\FocusCollection;
|
|
|
use app\common\helper\HttpHelper;
|
|
|
use think\Db;
|
|
|
use think\Request;
|
|
|
|
|
|
/**
|
|
|
* 角色组
|
|
|
* Class Group
|
|
|
* @package app\api\controller\core
|
|
|
*/
|
|
|
class Group extends Base
|
|
|
{
|
|
|
|
|
|
/**
|
|
|
* 1.管理组及其检索关键词
|
|
|
*/
|
|
|
public function list()
|
|
|
{
|
|
|
$where['searchword'] = ['neq', ''];
|
|
|
$where['id'] = ['gt', 1];
|
|
|
$result = Db::name("auth_group")->where($where)->field("id as group_id,searchword")->select();
|
|
|
if (!empty($result)) {
|
|
|
foreach ($result as $k => $v) {
|
|
|
|
|
|
//所有微信公众号
|
|
|
$w = [];
|
|
|
$w = [
|
|
|
"from" => "微信",
|
|
|
"auth_group_id" => $v['group_id']
|
|
|
];
|
|
|
$collection = Db::name("focus_collection")->where($w)->column("unikey");
|
|
|
// if (empty($collection)) {
|
|
|
// unset($result[$k]);
|
|
|
// continue;
|
|
|
// }
|
|
|
//获取角色组下所有管理员发布的敏感词返回数组
|
|
|
$uids = Db::name("auth_group_access")->where("group_id", $v['group_id'])->column("uid");
|
|
|
if (empty($uids)) {
|
|
|
unset($result[$k]);
|
|
|
continue;
|
|
|
}
|
|
|
$keywords = Db::name("theme_keywords")->where('admin_id', 'in', $uids)->column("name as keywords_name");
|
|
|
if (empty($keywords)) {
|
|
|
unset($result[$k]);
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
$result[$k]['collection'] = $collection;
|
|
|
$result[$k]['keywords'] = $keywords;
|
|
|
}
|
|
|
}
|
|
|
$this->success("数据获取成功", $result);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 2.获取管理组、检索关键词、最新begin数据
|
|
|
*/
|
|
|
public function group_list()
|
|
|
{
|
|
|
$where['searchword'] = ['neq', ''];
|
|
|
$where['id'] = ['gt', 1];
|
|
|
$result = Db::name("auth_group")->where($where)->field("id as group_id,searchword")->select();
|
|
|
if (!empty($result)) {
|
|
|
foreach ($result as $k => $v) {
|
|
|
|
|
|
//所有微信公众号
|
|
|
$w = [];
|
|
|
$w = [
|
|
|
"from" => "微信",
|
|
|
"auth_group_id" => $v['group_id']
|
|
|
];
|
|
|
$begin = Db::name("focus_collection")->where($w)->order("begin desc")->value("begin");
|
|
|
$result[$k]['begin'] = $begin ? $begin : 0;
|
|
|
}
|
|
|
}
|
|
|
$this->success("数据获取成功!", $result);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 2. 一键拉取对应角色组检索关键词的公众号
|
|
|
* @param group_id 角色组id
|
|
|
* @param begin 最新一篇文章的begin值;
|
|
|
*/
|
|
|
public function pullFocusCollection()
|
|
|
{
|
|
|
echo "kevin";
|
|
|
die;
|
|
|
$response = $this->request->param();
|
|
|
if (empty($response['group_id'])) {
|
|
|
return array_callback(false, "角色组id不能为空");
|
|
|
}
|
|
|
|
|
|
if (empty($response['key'])) {
|
|
|
return array_callback(false, "检索关键词不能为空");
|
|
|
}
|
|
|
|
|
|
$params["group_id"] = $response['group_id'];
|
|
|
$params["key"] = $response['key'];
|
|
|
$params["begin"] = $response['begin'] > 0 ? intval($response['begin']) : 0;
|
|
|
|
|
|
$query_string = is_array($params) ? http_build_query($params) : $params;
|
|
|
// $request_url = "http://op.cn/api/v1/group/test";
|
|
|
$request_url = "http://124.71.110.50:8080/getpublic";
|
|
|
$geturl = $query_string ? $request_url . (stripos($request_url, "?") !== false ? "&" : "?") . $query_string : $request_url;
|
|
|
$s = file_get_contents($geturl);
|
|
|
$res = json_decode($s, true);
|
|
|
|
|
|
// $res = json_decode($res, true);
|
|
|
|
|
|
$time = time();
|
|
|
$insert_data = [];
|
|
|
|
|
|
//日志入库
|
|
|
$log = [
|
|
|
"auth_group_id" => $response['group_id'],
|
|
|
"request_url" => $request_url,
|
|
|
"request_method" => "GET",
|
|
|
"request_param" => json_encode($params, JSON_UNESCAPED_UNICODE),
|
|
|
"response_code" => $res['code'],
|
|
|
"createtime" => $time
|
|
|
];
|
|
|
|
|
|
if (!empty($res['data'])) {
|
|
|
foreach ($res['data'] as $k => $v) {
|
|
|
$from = "微信";
|
|
|
$admin_id = Db::name("auth_group_access")->where("group_id", $v['group_id'])->value("uid");
|
|
|
//可以优化成查询最新begin做对比
|
|
|
$count = Db::name("focus_collection")->where("unikey", $v['id'])->count();
|
|
|
if ($count == 0) {
|
|
|
$insert_data[] = [
|
|
|
"from" => $from,
|
|
|
"unikey" => $v['id'],
|
|
|
"name" => $v['name'],
|
|
|
"pinyin" => $v['alias'],
|
|
|
"headavatar" => $v['round_head_img'],
|
|
|
"service_type" => $v['service_type'] ? $v['service_type'] : 1,
|
|
|
"signature" => $v['signature'],
|
|
|
"begin" => $v['begin'],
|
|
|
"createtime" => $time,
|
|
|
"updatetime" => $time,
|
|
|
"admin_id" => $admin_id ? $admin_id : 1,
|
|
|
"auth_group_id" => $v['group_id']
|
|
|
];
|
|
|
}
|
|
|
}
|
|
|
if (!empty($insert_data)) {
|
|
|
// 启动事务
|
|
|
Db::startTrans();
|
|
|
try {
|
|
|
$res = Db::name("focus_collection")->insertAll($insert_data);
|
|
|
if (!$res) {
|
|
|
Db::rollback();
|
|
|
return false;
|
|
|
}
|
|
|
// 执行提交操作
|
|
|
Db::commit();
|
|
|
} catch (\Exception $e) {
|
|
|
// 更新失败 回滚事务
|
|
|
Db::rollback();
|
|
|
Db::name("focus_collection_log")->insert($log);
|
|
|
$this->error("数据更新失败!" . $e->getMessage());
|
|
|
}
|
|
|
$log["upt_num"] = $res;
|
|
|
Db::name("focus_collection_log")->insert($log);
|
|
|
$this->success("数据更新成功【" . $res . "条】");
|
|
|
}
|
|
|
|
|
|
}
|
|
|
Db::name("focus_collection_log")->insert($log);
|
|
|
$this->success("暂无需要更新的数据");
|
|
|
}
|
|
|
|
|
|
public function test()
|
|
|
{
|
|
|
$data = [
|
|
|
[
|
|
|
"id" => "MzA5MDQxNjgyNw==",
|
|
|
"name" => "今日蒙自",
|
|
|
"alias" => "jrmzzx",
|
|
|
"round_head_img" => "https://open.hikvision.com/img/a985847.png",
|
|
|
"service_type" => 1,
|
|
|
"signature" => "发布蒙自人文、旅游、民生、时政最新资讯,关注大事、小事、身边事",
|
|
|
"begin" => 1,
|
|
|
"group_id" => 4
|
|
|
],
|
|
|
[
|
|
|
"id" => "MzI3Nzc5NtcwMg==",
|
|
|
"name" => "蒙自招聘",
|
|
|
"alias" => "jrmzzx",
|
|
|
"round_head_img" => "https://open.hikvision.com/img/a985847.png",
|
|
|
"service_type" => 1,
|
|
|
"signature" => "发布蒙自人文、旅游、民生、时政最新资讯,关注大事、小事、身边事",
|
|
|
"begin" => 2,
|
|
|
"group_id" => 4
|
|
|
],
|
|
|
// [
|
|
|
// "id" => "MzAwNzI2Njk4Mg==",
|
|
|
// "name" => "锡都个旧",
|
|
|
// "alias" => "gjsrmtzx",
|
|
|
// "round_head_img" => "https://open.hikvision.com/img/a985847.png",
|
|
|
// "service_type" => 1,
|
|
|
// "signature" => "发布个旧旅游、民生、时政最新资讯,关注大事、小事、身边事",
|
|
|
// "begin" => 1,
|
|
|
// "group_id" => 5
|
|
|
// ],
|
|
|
// [
|
|
|
// "id" => "MzAxNTMwOTE1Mg==",
|
|
|
// "name" => "早安个旧",
|
|
|
// "alias" => "zaoangejiu",
|
|
|
// "round_head_img" => "https://open.hikvision.com/img/a985847.png",
|
|
|
// "service_type" => 1,
|
|
|
// "signature" => "发布个旧民生、时政最新资讯,关注大事、小事、身边事",
|
|
|
// "begin" => 2,
|
|
|
// "group_id" => 5
|
|
|
// ],
|
|
|
];
|
|
|
$this->success("成功", $data);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 4. 公众号批量入库
|
|
|
*/
|
|
|
public function addFocusCollection()
|
|
|
{
|
|
|
$request = Request::instance();
|
|
|
|
|
|
$response = $this->request->param();
|
|
|
if (!is_array($response)) {
|
|
|
$this->error("请求数据格式异常");
|
|
|
}
|
|
|
$time = time();
|
|
|
$insert_data = [];
|
|
|
|
|
|
if (!empty($response)) {
|
|
|
foreach ($response as $k => $v) {
|
|
|
$from = "微信";
|
|
|
$admin_id = Db::name("auth_group_access")->where("group_id", $v['group_id'])->value("uid");//获取角色组下第一层的某个管理id
|
|
|
$count = Db::name("focus_collection")->where("unikey", $v['id'])->count();//检查unikey是否存在
|
|
|
if ($count == 0) {
|
|
|
//没入过库
|
|
|
$insert_data[] = [
|
|
|
"from" => $from,
|
|
|
"unikey" => $v['id'],
|
|
|
"name" => $v['name'],
|
|
|
"pinyin" => $v['alias'],
|
|
|
"headavatar" => $v['round_head_img'],
|
|
|
"service_type" => $v['service_type'] ? $v['service_type'] : 1,
|
|
|
"signature" => $v['signature'],
|
|
|
"begin" => $v['begin'],
|
|
|
"createtime" => $time,
|
|
|
"updatetime" => $time,
|
|
|
"admin_id" => $admin_id ? $admin_id : 1,
|
|
|
"auth_group_id" => $v['group_id'],
|
|
|
"account_principal"=>$v['themainbody'] //微信号账号主体
|
|
|
];
|
|
|
}
|
|
|
}
|
|
|
if (!empty($insert_data)) {
|
|
|
// 启动事务
|
|
|
Db::startTrans();
|
|
|
try {
|
|
|
$res = Db::name("focus_collection")->insertAll($insert_data);
|
|
|
if (!$res) {
|
|
|
Db::rollback();
|
|
|
return false;
|
|
|
}
|
|
|
// 执行提交操作
|
|
|
Db::commit();
|
|
|
} catch (\Exception $e) {
|
|
|
// 更新失败 回滚事务
|
|
|
Db::rollback();
|
|
|
//日志入库
|
|
|
$log = [];
|
|
|
$log = [
|
|
|
"auth_group_id" => $response[0]['group_id'],
|
|
|
"request_url" => $request->url(true),
|
|
|
"request_method" => $_SERVER['REQUEST_METHOD'],
|
|
|
"request_ip" => $request->ip(),
|
|
|
"request_param" => json_encode($response, JSON_UNESCAPED_UNICODE),
|
|
|
"response_code" => 0,
|
|
|
"upt_num" => 0,
|
|
|
"createtime" => $time
|
|
|
];
|
|
|
Db::name("focus_collection_log")->insert($log);
|
|
|
$this->error("数据更新失败!" . $e->getMessage());
|
|
|
}
|
|
|
|
|
|
$log = [];
|
|
|
$log = [
|
|
|
"auth_group_id" => $response[0]['group_id'],
|
|
|
"request_url" => $request->url(true),
|
|
|
"request_method" => $_SERVER['REQUEST_METHOD'],
|
|
|
"request_ip" => $request->ip(),
|
|
|
"request_param" => json_encode($response, JSON_UNESCAPED_UNICODE),
|
|
|
"response_code" => 0,
|
|
|
"upt_num" => $res,
|
|
|
"createtime" => $time
|
|
|
];
|
|
|
Db::name("focus_collection_log")->insert($log);
|
|
|
$this->success("数据更新成功【" . $res . "条】");
|
|
|
}
|
|
|
|
|
|
}
|
|
|
$log = [];
|
|
|
$log = [
|
|
|
"auth_group_id" => $response[0]['group_id'],
|
|
|
"request_url" => $request->url(true),
|
|
|
"request_method" => $_SERVER['REQUEST_METHOD'],
|
|
|
"request_ip" => $request->ip(),
|
|
|
"request_param" => json_encode($response, JSON_UNESCAPED_UNICODE),
|
|
|
"response_code" => 0,
|
|
|
"upt_num" => 0,
|
|
|
"createtime" => $time
|
|
|
];
|
|
|
Db::name("focus_collection_log")->insert($log);
|
|
|
$this->success("暂无需要更新的数据");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 5. 根据渠道名称获取渠道unikey
|
|
|
*/
|
|
|
public function get_fakeid()
|
|
|
{
|
|
|
|
|
|
//获取渠道数组
|
|
|
$focusCollectionModel = new FocusCollection();
|
|
|
$from_list = $focusCollectionModel->getFromList();
|
|
|
$from_list = array_keys($from_list);
|
|
|
|
|
|
$param = $this->request->param();
|
|
|
$from = $param['from'];//渠道来源
|
|
|
$name = $param['name'];//渠道名称
|
|
|
|
|
|
if (empty($from)) {
|
|
|
return array_callback(false, "请先选择渠道来源");
|
|
|
} elseif (!in_array($from, $from_list)) {
|
|
|
return array_callback(false, "请先选择有效的渠道来源");
|
|
|
}
|
|
|
|
|
|
if (empty($name)) {
|
|
|
return array_callback(false, "请先填写渠道名称");
|
|
|
}
|
|
|
$where = [
|
|
|
"from" => $from,
|
|
|
"name" => $name
|
|
|
];
|
|
|
$count = $focusCollectionModel->where($where)->count();
|
|
|
if ($count > 0) {
|
|
|
return array_callback(false, $param['name'] . "`已存在,请更换渠道名称后重新操作");
|
|
|
}
|
|
|
|
|
|
//请求接口
|
|
|
$url = "http://124.71.110.50:8080/get_fakeid?name=" . $name;
|
|
|
$res = HttpHelper::curl($url,"GET");
|
|
|
$result = json_decode($res,true);
|
|
|
if($result['code']!=1){
|
|
|
return array_callback(false, "接口请求异常".$result['msg']);
|
|
|
}else{
|
|
|
return array_callback(true,"数据获取成功",$result['data']);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
} |
|
|
\ No newline at end of file |
...
|
...
|
|