huangzhiguo 2 éve
szülő
commit
f1a3032d93

+ 2 - 2
src/main/java/com/caimei365/user/controller/CmBehaviorRecordApi.java

@@ -42,8 +42,8 @@ public class CmBehaviorRecordApi {
      */
     @IpSave(saveName="用户行为记录App",saveParams = true)
     @GetMapping("/StatisticsApp")
-    public ResponseJson<String> behaviorRecordApp(Integer userId,String pagePath,String pageType,String pageLabel,Integer productId,String accessDuration){
-        log.info("用户行为记录=========》"+userId+"===="+pagePath+"===="+pageType+"===="+pageLabel+"===="+productId+"===="+accessDuration);
+    public ResponseJson<String> behaviorRecordApp(Integer userId,String pagePath,String pageType,String pageLabel,String behaviorType,Integer productId,String accessDuration){
+        log.info("用户行为记录=========》"+userId+"===="+pagePath+"===="+pageType+"===="+pageLabel+"===="+behaviorType+"===="+productId+"===="+accessDuration);
         return ResponseJson.success("用户行为App端记录完成");
     }
 

+ 62 - 0
src/main/java/com/caimei365/user/controller/RoosInformationApi.java

@@ -0,0 +1,62 @@
+package com.caimei365.user.controller;
+
+import com.caimei365.user.model.ResponseJson;
+import com.caimei365.user.model.dto.RoosInformationDto;
+import com.caimei365.user.service.RoosInformationService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2022/12/9
+ */
+@Slf4j
+@RestController
+@RequestMapping( "/user/information")
+public class RoosInformationApi {
+
+    @Autowired private RoosInformationService roosInformationService;
+
+    /**
+     * 查看用户是否有过弹框,游客当天是否有过弹框
+     * @return
+     */
+    @GetMapping("/isClick")
+    public ResponseJson<Boolean> boolIsClick() {
+
+        // 获取访问ip
+        String ip = roosInformationService.obtainIp();
+        // 查看用户是否有过弹框,游客当天是否有过弹框
+        Boolean isClick = roosInformationService.boolIsClick(ip);
+        return ResponseJson.success(!isClick);
+    }
+
+    /**
+     * 插入填写咨询人基本信息
+     * @param roosInformationDto
+     * @return
+     */
+    @PostMapping("/insertRoos")
+    public ResponseJson<String> insertRoosInformation(RoosInformationDto roosInformationDto) {
+        // 获取访问ip
+        String ip = roosInformationService.obtainIp();
+        roosInformationDto.setIp(ip);
+        roosInformationService.insRoosInformation(roosInformationDto);
+        return ResponseJson.success("咨询信息插入成功");
+    }
+
+    /**
+     * 查看访问者是否浏览过roos相关页面
+     * @return
+     */
+    @GetMapping("/visitRoos")
+    public ResponseJson<Boolean> selVisitRoos (String userId) {
+        // 获取访问ip
+        String ip = roosInformationService.obtainIp();
+        Boolean visitRoos = roosInformationService.selectVisitRoos(userId,ip);
+        return ResponseJson.success(visitRoos);
+    }
+}

+ 40 - 0
src/main/java/com/caimei365/user/mapper/RoosInformationMapper.java

@@ -0,0 +1,40 @@
+package com.caimei365.user.mapper;
+
+import com.caimei365.user.model.dto.BehaviorRecordDto;
+import com.caimei365.user.model.dto.RoosInformationDto;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2022/12/9
+ */
+@Mapper
+public interface RoosInformationMapper {
+    /**
+     * 查看用户是否有过弹框
+     * @param IP
+     * @param createTime
+     * @return
+     */
+   List<Integer> selIsClick(@Param("IP") String IP,@Param("createTime") String createTime);
+
+    /**
+     * 插入填写咨询人基本信息
+     * @param roosInformationDto
+     */
+   void insRoosInformation(RoosInformationDto roosInformationDto);
+
+    /**
+     * 查看访问者是否浏览过roos相关页面
+     * @param userID
+     * @param IP
+     * @param accessDate
+     * @return
+     */
+   List<String> visitRoos(@Param("userID") String userID,@Param("IP") String IP,@Param("accessDate") String accessDate);
+}

+ 10 - 6
src/main/java/com/caimei365/user/model/dto/BehaviorRecordDto.java

@@ -13,25 +13,29 @@ public class BehaviorRecordDto {
     /**
      * 用户id
      */
-    Integer userId;
+    private Integer userId;
     /**
      * 页面路径
      */
-    String pagePath;
+    private String pagePath;
     /**
      * 页面类型
      */
-    String pageType;
+    private String pageType;
     /**
      * 页面标签
      */
-    String pageLabel;
+    private String pageLabel;
+    /**
+     * 用户行为类型1:用户行为记录、2:ROOS页面统计
+     */
+    private String behaviorType;
     /**
      * 商品id
      */
-    Integer productId;
+    private Integer productId;
     /**
      * 访问时长
      */
-    String accessDuration;
+    private String accessDuration;
 }

+ 34 - 0
src/main/java/com/caimei365/user/model/dto/RoosInformationDto.java

@@ -0,0 +1,34 @@
+package com.caimei365.user.model.dto;
+
+import lombok.Data;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2022/12/9
+ */
+@Data
+public class RoosInformationDto {
+
+    /**
+     * 访问人ip
+     */
+    private String ip;
+    /**
+     * 咨询姓名
+     */
+    private String consultName;
+    /**
+     * 咨询手机号码
+     */
+    private String consultMobile;
+    /**
+     * 是否点击关闭弹框 1:有 0:没有
+     */
+    private Integer isClick;
+    /**
+     * 创建时间
+     */
+    private String createTime;
+}

+ 40 - 0
src/main/java/com/caimei365/user/service/RoosInformationService.java

@@ -0,0 +1,40 @@
+package com.caimei365.user.service;
+
+import com.caimei365.user.model.dto.BehaviorRecordDto;
+import com.caimei365.user.model.dto.RoosInformationDto;
+
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2022/12/9
+ */
+public interface RoosInformationService {
+    /**
+     * 查看用户是否有过弹框,游客当天是否有过弹框
+     * @param IP
+     * @return
+     */
+    Boolean boolIsClick(String IP);
+
+    /**
+     * 插入填写咨询人基本信息
+     * @param roosInformationDto
+     */
+    void insRoosInformation(RoosInformationDto roosInformationDto);
+
+    /**
+     * 查看访问者是否浏览过roos相关页面
+     * @param IP
+     * @return
+     */
+    Boolean selectVisitRoos(String userID ,String IP);
+
+    /**
+     * 获取用户访问IP
+     * @return
+     */
+    String obtainIp();
+}

+ 118 - 0
src/main/java/com/caimei365/user/service/impl/RoosInformationServiceImpl.java

@@ -0,0 +1,118 @@
+package com.caimei365.user.service.impl;
+
+import com.caimei365.user.mapper.RoosInformationMapper;
+import com.caimei365.user.model.dto.RoosInformationDto;
+import com.caimei365.user.service.RoosInformationService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.context.request.RequestAttributes;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2022/12/9
+ */
+@Slf4j
+@Service
+public class RoosInformationServiceImpl implements RoosInformationService {
+
+    @Autowired private RoosInformationMapper roosInformationMapper;
+
+    /**
+     * 查看用户是否有过弹框,游客当天是否有过弹框
+     *
+     * @param IP
+     * @return
+     */
+    @Override
+    public Boolean boolIsClick(String IP) {
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        String format = simpleDateFormat.format(new Date());
+        List<Integer> list = roosInformationMapper.selIsClick(IP, format);
+        boolean isClick = false;
+        // 判断是否点击过取消、或者填写过信息
+        for (Integer i: list) {
+            if (i == 1) {
+                isClick = true;
+            }
+        }
+        return isClick;
+    }
+
+    /**
+     * 插入填写咨询人基本信息
+     *
+     * @param roosInformationDto
+     */
+    @Override
+    public void insRoosInformation(RoosInformationDto roosInformationDto) {
+        // 设置创建时间
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format = simpleDateFormat.format(new Date());
+        roosInformationDto.setCreateTime(format);
+        roosInformationMapper.insRoosInformation(roosInformationDto);
+    }
+
+    /**
+     * 查看访问者是否浏览过roos相关页面
+     *
+     * @param userID
+     * @param IP
+     * @return
+     */
+    @Override
+    public Boolean selectVisitRoos(String userID , String IP) {
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        String format = simpleDateFormat.format(new Date());
+        boolean isVisit = false;
+        List<String> list = roosInformationMapper.visitRoos(userID, IP, format);
+        for (String str: list) {
+            if (str.equals("2")) {
+                isVisit = true;
+            }
+        }
+        return isVisit;
+    }
+
+
+    /**
+     * 获取用户访问IP
+     * @return
+     */
+    @Override
+    public String obtainIp() {
+        RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
+        ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) requestAttributes;
+        HttpServletRequest request = servletRequestAttributes.getRequest();
+        // ip
+        String unknown = "unknown";
+        String ip = "";
+        ip = request.getHeader("x-forwarded-for");
+        if (org.apache.commons.lang.StringUtils.isBlank(ip)) {
+            ip = request.getHeader("X-Real-IP");
+        }
+        if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
+            ip = request.getHeader("Proxy-Client-IP");
+        }
+
+        if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
+            ip = request.getHeader("WL-Proxy-Client-IP");
+        }
+
+        if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
+            ip = request.getRemoteAddr();
+        }
+        log.info("获取访问人ip==========="+ip);
+        return ip;
+    }
+}

+ 48 - 0
src/main/resources/mapper/RoosInformationMapper.xml

@@ -0,0 +1,48 @@
+<?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.caimei365.user.mapper.RoosInformationMapper">
+    <select id="selIsClick" resultType="integer">
+        SELECT isClick FROM cm_roos_information
+            <where>
+                    AND IP = #{IP} AND createTime LIKE concat('%',#{createTime},'%')
+            </where>
+    </select>
+
+    <insert id="insRoosInformation">
+        INSERT INTO cm_roos_information
+            (
+             IP,
+             <if test="consultName != null and consultName != ''">
+                 consultName,
+             </if>
+             <if test="consultMobile != null and consultMobile != ''">
+                consultMobile,
+             </if>
+             isClick,
+             createTime
+             )
+        VALUES(
+               #{ip},
+               <if test="consultName != null and consultName != ''">
+                #{consultName},
+               </if>
+               <if test="consultMobile != null and consultMobile != ''">
+                #{consultMobile},
+               </if>
+               #{isClick},
+               #{createTime}
+               )
+    </insert>
+
+    <select id="visitRoos" resultType="String">
+        SELECT behaviorType FROM cm_behavior_record
+        <where>
+            <if test="userID != 0">
+                AND userID = #{userID}
+            </if>
+            <if test="userID == 0">
+                AND IP = #{IP} AND accessDate LIKE concat('%',#{accessDate},'%')
+            </if>
+        </where>
+    </select>
+</mapper>