主方法
//导入第三方结果集
public function import()
{
//查询第三方表 rs_other_request_log ->field("id,cloud_platform,module,data,status")
set_time_limit(0); //超时
ini_set('memory_limit', '256M'); //内存
//查询所有
$list = M('OtherRequestLog')
->field("id,data,status,cloud_platform,module")
->where(['status' => 0, 'cloud_platform' => ['in', [0, 2]], 'module' => 2])
->select();
foreach ($list as $value => $key) {
$data = json_decode($key['data'], true);
//调用分词方法,拿到词汇
$result = $this->get_word($key['cloud_platform'], $data, $key['module']);
//循环处理数据库
if(!empty($result)){
foreach ($result as $v => $k) {
$this->deal_sql($k);
}
}
//更新第三方的状态
M('OtherRequestLog')->where(['id' => $key['id']])->save(['status' => 1]);
}
$this->success('操作成功');
}
方法一(第一步:整理数据):
//筛选词汇 将data里边的词汇取出来返回
private function get_word($cloud_platform, $data, $module)
{
if(empty($data)) return false;
//调用通用物体识别 cloud_platform= 0 module=2 status=0(未检索)
if ($cloud_platform == 0 && $module == 2) {
if (!empty($data['log_id'])) { //log_id存在
$arr = $data['result']; //二维数组
foreach ($arr as $v => $k) {
$word[] = $k['keyword'];
}
} else { //login_id 不存在
$barr = $data['Keywords'] ;
foreach ($barr as $v => $k) {
$word[] = $k['Word'];
}
}
//第二种 阿里图像识别接口 cloud_platform= 2 module=2
} elseif ($cloud_platform == 2 && $module == 2) {
$arr = $data['tags']; //二维数组
foreach ($arr as $v => $k) {
$word[] = $k['value'];
}
}
return $word; //数组
}
方法二(第二步:操作数据库):
//处理数据库
private function deal_sql($word)
{
if (empty($word)) return false;
//拿到keyword 判断词库表是否存在 rs_rubbish_keywords
$sys_status = M('RubbishKeywords')
->field("id,txt")
->where(['txt' => $word])
->find();
if (!empty($sys_status)) return false;
//拿到keyword 判断系统记录表是否存在
$record_status = M('KeywordSearchRecord')
->field("id,input_text,count")
->where(['input_text' => $word])
->find();
if (empty($record_status) && !empty($word) ) { //无记录
$arr = [
'input_text' => $word,
'create_user' => session('ADMIN_ID'),
'create_time' => NOW_TIME,
];
$add_ststus = M('KeywordSearchRecord')->add($arr);
if ($add_ststus == false) return false;
} else { //有记录
//记录表搜索次数加1
$record_sts = M('KeywordSearchRecord')->where(['id' => $record_status['id']])->save(['count' => $record_status['count'] + 1]);
if ($record_sts == false) return false;
}
return true;
}