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']); | ||
|  |     } | ||
|  | } |