SearchLogServiceImpl.java 4.81 KB
package com.lhcredit.project.business.searchLog.service;

import cn.hutool.core.util.PageUtil;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

import com.lhcredit.common.constant.HttpStatus;
import com.lhcredit.common.utils.DateUtils;
import com.lhcredit.common.utils.PageUtils;
import com.lhcredit.framework.web.page.TableDataInfo;
import com.lhcredit.project.business.enterpriseInfo.domain.EnterpriseInfo;
import com.lhcredit.project.business.searchLog.domain.SearchLog;
import com.lhcredit.project.business.searchLog.mapper.SearchLogMapper;
import org.apache.commons.compress.utils.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * 企业搜索日志Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-06-25
 */
@Service
public class SearchLogServiceImpl implements ISearchLogService
{
    @Autowired
    private SearchLogMapper searchLogMapper;


    /**
     * 查询企业搜索日志列表
     * 
     * @param searchLog 企业搜索日志
     * @return 企业搜索日志
     */
    @Override
    public List<SearchLog> selectSearchLogList(SearchLog searchLog)
    {
        return searchLogMapper.selectSearchLogList(searchLog);
    }

    /**
     * 新增企业搜索日志
     * 
     * @param searchLog 企业搜索日志
     * @return 结果
     */
    @Override
    public int insertSearchLog(SearchLog searchLog)
    {
        searchLog.setCreateTime(DateUtils.getNowDate());
        return searchLogMapper.insertSearchLog(searchLog);
    }


    /**
     *  记录查询企业名称时候的 搜索日志
     * @param enterpriseInfo
     */
    @Override
    public void setSearchLogs(EnterpriseInfo enterpriseInfo) {

        JSONObject param = new JSONObject();
        param.put("ename",enterpriseInfo.getEname());
        //处理 索索类型为 null,改为空串
        enterpriseInfo.setTableType(enterpriseInfo.getTableType() == null ? "" : enterpriseInfo.getTableType());
        //企业类型
        param.put("tableType",enterpriseInfo.getTableType());

        SearchLog searchLog = new SearchLog();
        searchLog.setSearchParams(param.toJSONString());
        searchLog.setCreateBy(enterpriseInfo.getCreateBy());
        //设置 搜索类型 : (科技型中小企业: 1, 高新技术企业:2, 瞪羚企业:3,  独角兽企业:4, 专精特新小巨人企业: 5)
        switch (enterpriseInfo.getTableType()){
            //为空时,为全量企业
            case "" :
                searchLog.setType(SearchLog.SearchType.ENTERPRISE_ALL_SEARCH.getKey());
                break;
            case "1" :
                searchLog.setType(SearchLog.SearchType.ENTERPRISE_TECH_SEARCH.getKey());
                break;
            case "2":
                searchLog.setType(SearchLog.SearchType.ENTERPRISE_HIGH_SEARCH.getKey());
                break;
            case "3":
                searchLog.setType(SearchLog.SearchType.ENTERPRISE_GAZELLE_SEARCH.getKey());
                break;
            case "4":
                searchLog.setType(SearchLog.SearchType.ENTERPRISE_UNICORN_SEARCH.getKey());
                break;
            case "5":
                searchLog.setType(SearchLog.SearchType.ENTERPRISE_GIANT_SEARCH.getKey());
                break;
            default:
                break;
        }

        insertSearchLog(searchLog);
    }


    /**
     * 根据 用户名 和 类型 查询历史记录,默认查询5条
     * @param type
     * @param userName
     * @return
     */
    @Override
    public TableDataInfo getSearchLogs(String type, String userName){
        SearchLog searchLog = new SearchLog();
        searchLog.setType(type);
        searchLog.setCreateBy(userName);
        searchLog.setJsonProperty("ename");
        PageUtils.startPage();
        List<SearchLog> searchLogs = searchLogMapper.getSearchLogs(searchLog);
//        PageHelper.startPage(1,5,"create_time");
//        List<SearchLog> searchLogs = selectSearchLogList(searchLog);

        ArrayList<JSONObject> list = Lists.newArrayList();
//        Optional.ofNullable(searchLogs).filter(logs -> !logs.isEmpty()).map(l -> l.stream().map(SearchLog::getSearchParams).collect(Collectors.toList())).orElseGet(Collections::emptyList);
        for (SearchLog log : searchLogs){
            JSONObject object = JSONObject.parseObject(log.getSearchParams());
            //设置返回的创建时间
            object.put("createTime",log.getCreateTime());
            list.add(object);
        }
        TableDataInfo rspData = new TableDataInfo();
        rspData.setCode(HttpStatus.SUCCESS);
        rspData.setMsg("查询成功");
        rspData.setRows(list);
        rspData.setTotal(new PageInfo(searchLogs).getTotal());
        return rspData;
    }

}