103 lines
2.4 KiB
PHP
103 lines
2.4 KiB
PHP
|
<?php
|
||
|
|
||
|
|
||
|
namespace app\api\logic;
|
||
|
|
||
|
|
||
|
use app\common\basics\Logic;
|
||
|
use app\common\model\community\CommunitySearchRecord;
|
||
|
use app\common\model\community\CommunityTopic;
|
||
|
|
||
|
|
||
|
/**
|
||
|
* 种草社区搜索记录
|
||
|
* Class CommunitySearchRecordLogic
|
||
|
* @package app\api\logic
|
||
|
*/
|
||
|
class CommunitySearchRecordLogic extends Logic
|
||
|
{
|
||
|
|
||
|
/**
|
||
|
* @notes 搜索列表
|
||
|
* @param $userId
|
||
|
* @return array
|
||
|
* @throws \think\db\exception\DataNotFoundException
|
||
|
* @throws \think\db\exception\DbException
|
||
|
* @throws \think\db\exception\ModelNotFoundException
|
||
|
* @author 段誉
|
||
|
* @date 2022/5/9 16:57
|
||
|
*/
|
||
|
public static function lists($userId)
|
||
|
{
|
||
|
// 推荐话题
|
||
|
$topic = CommunityTopic::field(['id', 'name'])
|
||
|
->where(['is_show' => 1, 'is_recommend' => 1, 'del' => 0])
|
||
|
->order(['sort' => 'desc', 'id' => 'desc'])
|
||
|
->limit(10)
|
||
|
->select()->toArray();
|
||
|
|
||
|
// 用户历史搜索记录
|
||
|
$history = [];
|
||
|
if ($userId) {
|
||
|
$where = [
|
||
|
'del' => 0,
|
||
|
'user_id' => $userId
|
||
|
];
|
||
|
$sort = [
|
||
|
'update_time' => 'desc',
|
||
|
'id' => 'desc'
|
||
|
];
|
||
|
$history = CommunitySearchRecord::where($where)
|
||
|
->order($sort)
|
||
|
->limit(10)
|
||
|
->column('keyword');
|
||
|
}
|
||
|
|
||
|
return [
|
||
|
'history' => $history,
|
||
|
'topic' => $topic
|
||
|
];
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @notes 清空搜索记录
|
||
|
* @param $userId
|
||
|
* @author 段誉
|
||
|
* @date 2022/5/9 16:58
|
||
|
*/
|
||
|
public static function clear($userId)
|
||
|
{
|
||
|
CommunitySearchRecord::where('user_id', $userId)->update([
|
||
|
'del' => 1,
|
||
|
'update_time' => time()
|
||
|
]);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @notes 搜索记录
|
||
|
* @param $keyword
|
||
|
* @param $user_id
|
||
|
* @return CommunitySearchRecord|mixed|\think\Model
|
||
|
* @author 段誉
|
||
|
* @date 2022/5/9 16:20
|
||
|
*/
|
||
|
public static function recordKeyword($keyword, $user_id)
|
||
|
{
|
||
|
$record = CommunitySearchRecord::where([
|
||
|
'user_id' => $user_id,
|
||
|
'keyword' => $keyword,
|
||
|
'del' => 0
|
||
|
])->findOrEmpty();
|
||
|
|
||
|
if ($record->isEmpty()) {
|
||
|
return CommunitySearchRecord::create([
|
||
|
'user_id' => $user_id,
|
||
|
'keyword' => $keyword,
|
||
|
]);
|
||
|
}
|
||
|
return CommunitySearchRecord::incCount($record['id']);
|
||
|
}
|
||
|
}
|