主方法
//導入第三方結果集
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;
}