Bladeren bron

新增门户商品搜索日志

xucaiqin 2 maanden geleden
bovenliggende
commit
24826710dc

+ 14 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/dao/KwpSearchLogMapper.java

@@ -0,0 +1,14 @@
+package com.sckw.product.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sckw.product.model.KwpSearchLog;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author xucaiqin
+ * @date 2025-11-13 14:19:42
+ */
+@Mapper
+public interface KwpSearchLogMapper extends BaseMapper<KwpSearchLog> {
+
+}

+ 85 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/KwpSearchLog.java

@@ -0,0 +1,85 @@
+package com.sckw.product.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.sckw.core.model.base.BaseModel;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+import java.time.LocalDateTime;
+
+/**
+ * 搜索记录表
+* @date 2025-11-13 14:19:42
+* @author xucaiqin
+*/
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+@TableName("kwp_search_log")
+public class KwpSearchLog {
+    private Long id;
+
+    /**
+    * 企业id
+    */
+    private Long entId;
+
+    /**
+    * 用户
+    */
+    private Long userId;
+
+    /**
+    * 名称
+    */
+    private String keywords;
+
+    /**
+    * 来源 1-门户
+    */
+    private Integer source;
+
+    /**
+    * 设备信息
+    */
+    private String userAgent;
+
+    /**
+    * IP地址
+    */
+    private String ipAddress;
+
+    /**
+    * 搜索时间
+    */
+    private LocalDateTime searchTime;
+
+    /**
+    * 创建人
+    */
+    private Long createBy;
+
+    /**
+    * 创建时间
+    */
+    private LocalDateTime createTime;
+
+    /**
+    * 更新人
+    */
+    private Long updateBy;
+
+    /**
+    * 更新时间
+    */
+    private LocalDateTime updateTime;
+
+    /**
+    * 删除标识(0正常/1删除)
+    */
+    private Integer delFlag;
+
+}

+ 62 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpSearchLogService.java

@@ -0,0 +1,62 @@
+package com.sckw.product.service;
+
+import java.time.LocalDateTime;
+
+import cn.hutool.extra.servlet.JakartaServletUtil;
+import cn.hutool.extra.servlet.ServletUtil;
+import cn.hutool.http.useragent.UserAgent;
+import cn.hutool.http.useragent.UserAgentUtil;
+import com.sckw.core.utils.IdWorker;
+import com.sckw.core.web.context.LoginUserHolder;
+import jakarta.servlet.http.HttpServletRequest;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+import com.sckw.product.model.KwpSearchLog;
+import com.sckw.product.dao.KwpSearchLogMapper;
+
+/**
+ * @author xucaiqin
+ * @date 2025-11-13 14:19:42
+ */
+@Service
+@RequiredArgsConstructor
+public class KwpSearchLogService {
+
+    private final KwpSearchLogMapper kwpSearchLogMapper;
+
+    private String parseUserAgent(HttpServletRequest request) {
+        String userAgentStr = request.getHeader("User-Agent");
+
+        UserAgent userAgent = UserAgentUtil.parse(userAgentStr);
+
+        // 3. 提取关键信息
+        String browser = userAgent.getBrowser().getName(); // 浏览器名称(如 Chrome、Edge)
+        String browserVersion = userAgent.getVersion(); // 浏览器版本
+        String os = userAgent.getOs().getName(); // 操作系统(如 Windows 10、macOS、iOS)
+        String device = userAgent.getPlatform().getName(); // 设备类型(如 PC、iPhone、Android)
+
+        // 输出示例:Chrome 120.0.0.0 / Windows 10 / PC
+        return String.format("%s %s / %s / %s", browser, browserVersion, os, device);
+    }
+
+    public void saveLog(String keywords, Integer source, HttpServletRequest request) {
+        KwpSearchLog kwpSearchLog = new KwpSearchLog();
+        kwpSearchLog.setId(new IdWorker(1).nextId());
+        kwpSearchLog.setEntId(LoginUserHolder.getEntId());
+        kwpSearchLog.setUserId(LoginUserHolder.getUserId());
+        kwpSearchLog.setKeywords(keywords);
+        kwpSearchLog.setSource(source);
+        kwpSearchLog.setUserAgent(parseUserAgent(request));
+        kwpSearchLog.setIpAddress(JakartaServletUtil.getClientIP(request));
+        kwpSearchLog.setSearchTime(LocalDateTime.now());
+        kwpSearchLog.setCreateBy(LoginUserHolder.getUserId());
+        kwpSearchLog.setCreateTime(LocalDateTime.now());
+        kwpSearchLog.setDelFlag(0);
+        kwpSearchLogMapper.insert(kwpSearchLog);
+    }
+
+
+}

+ 21 - 0
sckw-modules/sckw-product/src/main/resources/mapper/KwpSearchLogMapper.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sckw.product.dao.KwpSearchLogMapper">
+  <resultMap id="BaseResultMap" type="com.sckw.product.model.KwpSearchLog">
+    <!--@mbg.generated-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="ent_id" jdbcType="BIGINT" property="entId" />
+    <result column="user_id" jdbcType="BIGINT" property="userId" />
+    <result column="keywords" jdbcType="VARCHAR" property="keywords" />
+    <result column="source" jdbcType="INTEGER" property="source" />
+    <result column="user_agent" jdbcType="VARCHAR" property="userAgent" />
+    <result column="ip_address" jdbcType="VARCHAR" property="ipAddress" />
+    <result column="search_time" jdbcType="TIMESTAMP" property="searchTime" />
+    <result column="create_by" jdbcType="BIGINT" property="createBy" />
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+    <result column="update_by" jdbcType="BIGINT" property="updateBy" />
+    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
+    <result column="del_flag" jdbcType="INTEGER" property="delFlag" />
+  </resultMap>
+
+</mapper>