lyhzzz 2 月之前
父節點
當前提交
376a411e4e

+ 53 - 0
src/main/java/com/fdkankan/agent/controller/ContactUsController.java

@@ -0,0 +1,53 @@
+package com.fdkankan.agent.controller;
+
+
+import com.fdkankan.agent.common.RequestBase;
+import com.fdkankan.agent.common.ResultData;
+import com.fdkankan.agent.request.ContactUsParam;
+import com.fdkankan.agent.service.IContactUsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2025-10-21
+ */
+@RestController
+@RequestMapping("/agent/contactUs")
+public class ContactUsController {
+
+    @Autowired
+    IContactUsService contactUsService;
+
+    @PostMapping("/list")
+    public ResultData pageList(@RequestBody RequestBase requestBase){
+
+        return ResultData.ok(contactUsService.pageList(requestBase));
+    }
+
+    @GetMapping("/export")
+    public void export(HttpServletRequest req, HttpServletResponse resp,
+                       @RequestParam(required = false,defaultValue = "zh")String lang)  {
+        contactUsService.export(req,resp,lang);
+    }
+
+    @PostMapping("/pointList")
+    public ResultData pointList(@RequestBody ContactUsParam param){
+
+        return ResultData.ok(contactUsService.pointPageList(param));
+    }
+
+    @GetMapping("/exportPoint")
+    public void exportPoint(HttpServletRequest req, HttpServletResponse resp,
+                       @RequestParam(required = false,defaultValue = "zh")String lang)  {
+        contactUsService.exportPoint(req,resp,lang);
+    }
+}
+

+ 66 - 0
src/main/java/com/fdkankan/agent/entity/ContactUs.java

@@ -0,0 +1,66 @@
+package com.fdkankan.agent.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2025-10-21
+ */
+@Getter
+@Setter
+@TableName("t_contact_us")
+public class ContactUs implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("name")
+    private String name;
+
+    @TableField("tel")
+    private String tel;
+
+    @TableField("email")
+    private String email;
+
+    @TableField("company")
+    private String company;
+
+    @TableField("note")
+    private String note;
+
+    @TableField("ip_address")
+    private String ipAddress;
+
+    @TableField("country")
+    private String country;
+
+    @TableField("redirect_url")
+    private String redirectUrl;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A",delval = "I")
+    private String recStatus;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

+ 102 - 0
src/main/java/com/fdkankan/agent/entity/ContactUsPoint.java

@@ -0,0 +1,102 @@
+package com.fdkankan.agent.entity;
+
+import cn.hutool.core.date.DateUnit;
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2025-10-21
+ */
+@Getter
+@Setter
+@TableName("t_contact_us_point")
+public class ContactUsPoint implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("session_id")
+    private String sessionId;
+
+    /**
+     * 页面名称
+     */
+    @TableField("page_name")
+    private String pageName;
+
+    /**
+     * 页面地址
+     */
+    @TableField("page_url")
+    private String pageUrl;
+
+    /**
+     * 来源渠道
+     */
+    @TableField("utm_source")
+    private String utmSource;
+
+    /**
+     * 设备类型
+     */
+    @TableField("device_type")
+    private String deviceType;
+
+    @TableField("ip_address")
+    private String ipAddress;
+
+    @TableField("country")
+    private String country;
+
+    /**
+     * 滚动深度
+     */
+    @TableField("scroll_depth")
+    private String scrollDepth;
+
+
+    /**
+     * 加载时间
+     */
+    @TableField("load_time")
+    private String loadTime;
+
+    /**
+     * 网络类型
+     */
+    @TableField("network_type")
+    private String networkType;
+
+    @TableField("lang")
+    private String lang;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A",delval = "I")
+    private String recStatus;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+
+    @TableField("stop_time")
+    private Long stopTime;
+
+}

+ 1 - 1
src/main/java/com/fdkankan/agent/generate/AutoGenerate.java

@@ -18,7 +18,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir") ;
 
         generate(path,"agent", getTables(new String[]{
-                "t_mail_template"
+                "t_contact_us_point"
         }));
 
 //        generate(path,"goods", getTables(new String[]{

+ 18 - 0
src/main/java/com/fdkankan/agent/mapper/IContactUsMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.agent.mapper;
+
+import com.fdkankan.agent.entity.ContactUs;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2025-10-21
+ */
+@Mapper
+public interface IContactUsMapper extends BaseMapper<ContactUs> {
+
+}

+ 18 - 0
src/main/java/com/fdkankan/agent/mapper/IContactUsPointMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.agent.mapper;
+
+import com.fdkankan.agent.entity.ContactUsPoint;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2025-10-21
+ */
+@Mapper
+public interface IContactUsPointMapper extends BaseMapper<ContactUsPoint> {
+
+}

+ 30 - 0
src/main/java/com/fdkankan/agent/request/ContactUsParam.java

@@ -0,0 +1,30 @@
+package com.fdkankan.agent.request;
+
+import com.fdkankan.agent.common.RequestBase;
+import com.fdkankan.agent.util.DateUtils;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ContactUsParam extends RequestBase {
+    private String utmSource;
+    private List<String> timeList;
+
+    private String startTime;
+    private String endTime;
+
+    public String getStartTime() {
+        if(timeList != null && timeList.size() >1){
+            return DateUtils.getStartTime(timeList.get(0));
+        }
+        return DateUtils.getStartTime(startTime);
+    }
+
+    public String getEndTime() {
+        if(timeList != null && timeList.size() >1){
+            return DateUtils.getEndTime(timeList.get(1));
+        }
+        return DateUtils.getEndTime(endTime);
+    }
+}

+ 97 - 0
src/main/java/com/fdkankan/agent/response/ContactUsPointVo.java

@@ -0,0 +1,97 @@
+package com.fdkankan.agent.response;
+
+import cn.hutool.core.date.DateUnit;
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2025-10-21
+ */
+@Getter
+@Setter
+public class ContactUsPointVo implements Serializable {
+
+
+    @ExcelProperty("序号")
+    private Integer id;
+
+    @ExcelIgnore
+    private String sessionId;
+
+    /**
+     * 页面名称
+     */
+    @ExcelIgnore
+    private String pageName;
+
+    /**
+     * 页面地址
+     */
+    @ExcelIgnore
+    private String pageUrl;
+
+
+    @ExcelProperty("访问IP")
+    private String ipAddress;
+
+    /**
+     * 来源渠道
+     */
+    @ExcelProperty("来源渠道")
+    private String utmSource;
+
+    /**
+     * 设备类型
+     */
+    @ExcelProperty("设备类型")
+    private String deviceType;
+
+    @ExcelIgnore
+    private Long stopTime;
+
+    @ExcelProperty("页面停留时长(min)")
+    private String stopTimeStr;
+
+    /**
+     * 滚动深度
+     */
+    @ExcelProperty("滚动深度")
+    private String scrollDepth;
+
+    @ExcelProperty("访问时间")
+    private Date createTime;
+
+    @ExcelProperty("访问地址")
+    private String country;
+
+    /**
+     * 加载时间
+     */
+    @ExcelProperty("加载时间(s)")
+    private String loadTime;
+
+    /**
+     * 网络类型
+     */
+    @ExcelProperty("网络类型")
+    private String networkType;
+
+    @ExcelProperty("浏览器语言")
+    private String lang;
+
+    public String getStopTimeStr() {
+        return String.valueOf(stopTime /60);
+    }
+}

+ 81 - 0
src/main/java/com/fdkankan/agent/response/ContactUsPointVoEn.java

@@ -0,0 +1,81 @@
+package com.fdkankan.agent.response;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2025-10-21
+ */
+@Getter
+@Setter
+public class ContactUsPointVoEn implements Serializable {
+
+
+    @ExcelProperty("Sequence")
+    private Integer id;
+
+
+    @ExcelProperty("Visit IP")
+    private String ipAddress;
+
+    /**
+     * 来源渠道
+     */
+    @ExcelProperty("Source Channel")
+    private String utmSource;
+
+    /**
+     * 设备类型
+     */
+    @ExcelProperty("Device Type")
+    private String deviceType;
+
+    @ExcelIgnore
+    private Long stopTime;
+
+    @ExcelProperty("Page Dwell Time")
+    private String stopTimeStr;
+
+    /**
+     * 滚动深度
+     */
+    @ExcelProperty("Scroll Depth")
+    private String scrollDepth;
+
+    @ExcelProperty("Visit Time")
+    private Date createTime;
+
+    @ExcelProperty("Visit Address")
+    private String country;
+
+    /**
+     * 加载时间
+     */
+    @ExcelProperty("Load Time")
+    private String loadTime;
+
+    /**
+     * 网络类型
+     */
+    @ExcelProperty("Network Type")
+    private String networkType;
+
+    @ExcelProperty("Browser Language")
+    private String lang;
+
+
+
+    public String getStopTimeStr() {
+        return String.valueOf(stopTime /60);
+    }
+}

+ 51 - 0
src/main/java/com/fdkankan/agent/response/ContactUsVo.java

@@ -0,0 +1,51 @@
+package com.fdkankan.agent.response;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2025-10-21
+ */
+@Getter
+@Setter
+public class ContactUsVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ExcelIgnore
+    private Integer id;
+
+    @ExcelProperty("用户名称")
+    private String name;
+
+    @ExcelProperty("用户邮箱")
+    private String email;
+
+    @ExcelProperty("电话")
+    private String tel;
+
+    @ExcelProperty("公司名称")
+    private String company;
+
+    @TableField("提交时间")
+    private String createTime;
+
+    @TableField("提交地点")
+    private String country;
+
+    @TableField("备注")
+    private String note;
+
+
+
+}

+ 52 - 0
src/main/java/com/fdkankan/agent/response/ContactUsVoEn.java

@@ -0,0 +1,52 @@
+package com.fdkankan.agent.response;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2025-10-21
+ */
+@Getter
+@Setter
+public class ContactUsVoEn implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ExcelIgnore
+    private Integer id;
+
+    @ExcelProperty("User Name")
+    private String name;
+
+    @ExcelProperty("User Email")
+    private String email;
+
+    @ExcelProperty("User Phone Number")
+    private String tel;
+
+    @ExcelProperty("Company Name")
+    private String company;
+
+    @TableField("Submission Time")
+    private String createTime;
+
+    @TableField("Submission Location(Country/Address)")
+    private String country;
+
+    @TableField("Remarks")
+    private String note;
+
+
+
+}

+ 16 - 0
src/main/java/com/fdkankan/agent/service/IContactUsPointService.java

@@ -0,0 +1,16 @@
+package com.fdkankan.agent.service;
+
+import com.fdkankan.agent.entity.ContactUsPoint;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2025-10-21
+ */
+public interface IContactUsPointService extends IService<ContactUsPoint> {
+
+}

+ 28 - 0
src/main/java/com/fdkankan/agent/service/IContactUsService.java

@@ -0,0 +1,28 @@
+package com.fdkankan.agent.service;
+
+import com.fdkankan.agent.common.RequestBase;
+import com.fdkankan.agent.entity.ContactUs;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.agent.request.ContactUsParam;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2025-10-21
+ */
+public interface IContactUsService extends IService<ContactUs> {
+
+    Object pageList(RequestBase requestBase);
+
+    void export(HttpServletRequest req, HttpServletResponse resp, String lang);
+
+    Object pointPageList(ContactUsParam param);
+
+    void exportPoint(HttpServletRequest req, HttpServletResponse resp, String lang);
+}

+ 20 - 0
src/main/java/com/fdkankan/agent/service/impl/ContactUsPointServiceImpl.java

@@ -0,0 +1,20 @@
+package com.fdkankan.agent.service.impl;
+
+import com.fdkankan.agent.entity.ContactUsPoint;
+import com.fdkankan.agent.mapper.IContactUsPointMapper;
+import com.fdkankan.agent.service.IContactUsPointService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2025-10-21
+ */
+@Service
+public class ContactUsPointServiceImpl extends ServiceImpl<IContactUsPointMapper, ContactUsPoint> implements IContactUsPointService {
+
+}

+ 136 - 0
src/main/java/com/fdkankan/agent/service/impl/ContactUsServiceImpl.java

@@ -0,0 +1,136 @@
+package com.fdkankan.agent.service.impl;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.agent.common.PageInfo;
+import com.fdkankan.agent.common.RequestBase;
+import com.fdkankan.agent.entity.ContactUs;
+import com.fdkankan.agent.entity.ContactUsPoint;
+import com.fdkankan.agent.mapper.IContactUsMapper;
+import com.fdkankan.agent.request.ContactUsParam;
+import com.fdkankan.agent.response.*;
+import com.fdkankan.agent.service.IContactUsPointService;
+import com.fdkankan.agent.service.IContactUsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.agent.service.IExcelService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2025-10-21
+ */
+@Service
+public class ContactUsServiceImpl extends ServiceImpl<IContactUsMapper, ContactUs> implements IContactUsService {
+
+
+    @Autowired
+    IExcelService excelService;
+    @Autowired
+    IContactUsPointService contactUsPointService;
+
+
+    @Override
+    public Object pageList(RequestBase requestBase) {
+        LambdaQueryWrapper<ContactUs> wrapper = new LambdaQueryWrapper<>();
+        wrapper.orderByDesc(ContactUs::getId);
+        Page<ContactUs> page = this.page(new Page<>(requestBase.getPageNum(), requestBase.getPageSize()),wrapper);
+        return PageInfo.PageInfo(page);
+    }
+
+    @Override
+    public void export(HttpServletRequest req, HttpServletResponse resp, String lang) {
+        List<ContactUs> list = this.list();
+        ExcelWriter excelWriter = null;
+        try {
+            if("en".equals(lang)){
+                List<ContactUsVoEn> listen = new ArrayList<>();
+                for (ContactUs entity : list) {
+                    ContactUsVoEn en = new ContactUsVoEn();
+                    BeanUtils.copyProperties(entity,en);
+                    listen.add(en);
+                }
+                excelWriter = EasyExcel.write(resp.getOutputStream(), ContactUsVoEn.class).build();
+                excelService.commonExport(req,resp,"user",listen,excelWriter);
+            }else {
+                List<ContactUsVo> listVo = new ArrayList<>();
+                for (ContactUs entity : list) {
+                    ContactUsVo en = new ContactUsVo();
+                    BeanUtils.copyProperties(entity,en);
+                    listVo.add(en);
+                }
+                excelWriter = EasyExcel.write(resp.getOutputStream(), ContactUsVo.class).build();
+                excelService.commonExport(req,resp,"意向用户",listVo,excelWriter);
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }finally {
+            if(excelWriter != null){
+                excelWriter.finish();
+            }
+        }
+    }
+
+
+    @Override
+    public Object pointPageList(ContactUsParam param) {
+        LambdaQueryWrapper<ContactUsPoint> wrapper = new LambdaQueryWrapper<>();
+        if(StringUtils.isNotBlank(param.getUtmSource())){
+            wrapper.like(ContactUsPoint::getUtmSource,param.getUtmSource());
+        }
+        if(StringUtils.isNotBlank(param.getStartTime())){
+            wrapper.ge(ContactUsPoint::getCreateTime,param.getStartTime());
+        }
+        if(StringUtils.isNotBlank(param.getEndTime())){
+            wrapper.le(ContactUsPoint::getCreateTime,param.getEndTime());
+        }
+        Page<ContactUsPoint> page = contactUsPointService.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
+        return PageInfo.PageInfo(page);
+    }
+
+    @Override
+    public void exportPoint(HttpServletRequest req, HttpServletResponse resp, String lang) {
+        List<ContactUsPoint> list = contactUsPointService.list();
+        ExcelWriter excelWriter = null;
+        try {
+            if("en".equals(lang)){
+                List<ContactUsPointVoEn> listen = new ArrayList<>();
+                for (ContactUsPoint entity : list) {
+                    ContactUsPointVoEn en = new ContactUsPointVoEn();
+                    BeanUtils.copyProperties(entity,en);
+                    listen.add(en);
+                }
+                excelWriter = EasyExcel.write(resp.getOutputStream(), ContactUsPointVoEn.class).build();
+                excelService.commonExport(req,resp,"page",listen,excelWriter);
+            }else {
+                List<ContactUsPointVo> listVo = new ArrayList<>();
+                for (ContactUsPoint entity : list) {
+                    ContactUsPointVo en = new ContactUsPointVo();
+                    BeanUtils.copyProperties(entity,en);
+                    listVo.add(en);
+                }
+                excelWriter = EasyExcel.write(resp.getOutputStream(), ContactUsPointVo.class).build();
+                excelService.commonExport(req,resp,"页面分析",listVo,excelWriter);
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }finally {
+            if(excelWriter != null){
+                excelWriter.finish();
+            }
+        }
+    }
+}

+ 5 - 0
src/main/resources/mapper/agent/ContactUsMapper.xml

@@ -0,0 +1,5 @@
+<?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.fdkankan.agent.mapper.IContactUsMapper">
+
+</mapper>

+ 5 - 0
src/main/resources/mapper/agent/ContactUsPointMapper.xml

@@ -0,0 +1,5 @@
+<?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.fdkankan.agent.mapper.IContactUsPointMapper">
+
+</mapper>